Probleme mit char array und unicode
-
Hallo.
Ich versuche gerade MFC Anwendungen für WinCE zu schreiben.
Nun habe ich aus eine Tutorial folgenden Quelltext
// Hier Fehler beim Erstellen der Stifte abfangen catch (CResourceException& CEx) { char acErrText[128]; CEx.GetErrorMessage( acErrText, sizeof(acErrText)); MessageBox (acErrText,"FEHLER"); }
Dieser ergibt bei mir folgenden Fehler:
1>.\GDIFuncView.cpp(77) : error C2664: 'CSimpleException::GetErrorMessage': Konvertierung des Parameters 1 von 'char [128]' in 'LPTSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>.\GDIFuncView.cpp(78) : error C2664: 'CWnd::MessageBoxW': Konvertierung des Parameters 1 von 'char [128]' in 'LPCTSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.Nun konnte ich einen Fehler beheben indem ich das array bei GetErrorMessage caste:
// Hier Fehler beim Erstellen der Stifte abfangen catch (CResourceException& CEx) { char acErrText[128]; CEx.GetErrorMessage((LPTSTR)acErrText, sizeof(acErrText)); MessageBox(acErrText,"FEHLER"); }
Wenn ich das allerdings bei der MessageBox auch mache bekomme ich folgenden Fehler
1>.\GDIFuncView.cpp(81) : error C2664: 'CWnd::MessageBoxW': Konvertierung des Parameters 2 von 'const char [7]' in 'LPCTSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.Wie mache ich das hier richtig?
Vielen Dank.
-
Verwende die TCHAR Notation...
TCHAR acErrText[128]; CEx.GetErrorMessage( acErrText, _countof(acErrText)); MessageBox (acErrText,_T("FEHLER"));
Wieder mal eine Frage die mindestens 1000mal in diesem Forum schon beantwortet wurde...
-
Martin Richter schrieb:
Verwende die TCHAR Notation...
TCHAR acErrText[128]; CEx.GetErrorMessage( acErrText, _countof(acErrText)); MessageBox (acErrText,_T("FEHLER"));
Funktioniert! Danke!
Martin Richter schrieb:
Wieder mal eine Frage die mindestens 1000mal in diesem Forum schon beantwortet wurde...
Entschuldigung.
Die Suchbegriffe die ich verwendet hatte brachten mir nicht die Lösung.