Zeichenkette und LPCWSTR
-
Hallo,
beim Erstellen eines Fensters erscheint ne Fehlermeldung, wenn eine const char
Zeichenkette als Parameter eingesetzt wird :"cannot convert parameter 4 from 'const char [26]' to 'LPCWSTR'"
Durch Casten (LPCWSTR)textkonstantenname sind nur Striche und Punkte zu sehen
anstatt den Text.Wie kann man Zeichenketten nutzen, ohne sie casten zu müssen ?
Im Code : Zeile 9 und 12.
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_PAINT: { PAINTSTRUCT ps; HDC hDC; //Handle auf Zeichenbereich const char szText[] = "Hallo, dies ist der Text."; hDC = BeginPaint(hWnd, &ps); { TextOut(hDC, 50, 50,(LPCWSTR)szText , sizeof(szText) - 1); } EndPaint(hWnd, &ps); return 0; } case WM_DESTROY: { PostQuitMessage(0); return 0; }break; } return DefWindowProc(hWnd, message, wParam, lParam); }
VIELEN DANK im Voraus
-
mach mal aus
const char szText[] = "Hallo, dies ist der Text.";
einfach
const wchar_t szText[] = L"Hallo, dies ist der Text.";
du solltest dir mal ansehen, was der unterschied zwischen LPCWSTR und LPCTSTR, etc. ist.
beziehungsweise der unterschied zwischen unicode- und multibyte-chars
-
hi,
mach besser so:TCHAR text = _T("Hallo, hier auch Text wa ey." );
es sei denn du machst ganz spezielle, nicht einheitliche geschichten.
grüeßlie.
-
TCHAR text = _T("Hallo, hier auch Text wa ey." );
TextOut(hDC, 50, 50,text , sizeof(text) - 1);
error C3861: '_T': identifier not found.
error C2664: 'TextOutW' : cannot convert parameter 4 from 'TCHAR' to 'LPCWSTR'.Bei Deklaration mit wchar_t erscheint der Text, aber auch unerwünschte Zeichen
dahinter.
-
Ich hab doch gesagt, du sollst dich zu Unicode informieren.. sizeof(text) funktioniert bei einem wchar_t nicht mehr unbedingt richtig..
-
_countof statt sizeof verwenden:
BTW: Interssante Implementierung:
/* _countof helper */ #if !defined(_countof) #if !defined(__cplusplus) #define _countof(_Array) (sizeof(_Array) / sizeof(_Array[0])) #else extern "C++" { template <typename _CountofType, size_t _SizeOfArray> char (*__countof_helper(UNALIGNED _CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray]; #define _countof(_Array) sizeof(*__countof_helper(_Array)) } #endif #endif
-
Consideration schrieb:
Bei Deklaration mit wchar_t erscheint der Text, aber auch unerwünschte Zeichen
dahinter.sorry, hab den index-operator vergessen:
TCHAR text**[]** = _T("Hallo, ich bin ein Array, kein einzelnes Zeichen!" );TCHAR text[] = _T("Hallo, ich bin ein Array, kein einzelnes Zeichen!" ); TextOut (hDC, 0,0,text, sizeof(text)/sizeof(TCHAR) ); MessageBox ( NULL, text, text, MB_OK );
-
sizeof(text)/sizeof(TCHAR) -1