McAffey Temat założony przez niniejszego użytkownika |
[WinAPI] Polskie znaki w oknie » 2012-12-21 17:55:46 Witam. Potrzebuję zrobić zwykłe okno winapi, które wyświetla podany tekst, ale generalnie słabo znam winapi i mam problem (i dość mało czasu, więc nie zdążę ogarnąć winapi, za jakiś czas zamierzam przerobić kurs, bo często odczuwam brak znajomości tej biblioteki, ale obecnie nie dam już rady czasowo ). Tzn ogólnie okno zrobiłem, tekst się wyświetla, tylko bez polskich znaków (zamiast tego są krzaczki). Trochę wertuję google, ale nie potrafię sprostać. Natrafiłem nawet na lekcję w kursie Unicode w WinAPI, ale wciąż mi nie wychodzi. Mógłby ktoś poradzić, co zrobić aby polskie znaki się wyświetlały ? Żeby np. po napisaniu czegoś takiego : hEdit = CreateWindowEx( WS_EX_CLIENTEDGE, WC_EDIT, "ąęć, WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL, 0, 0, 500, 500, hwnd, 0, * hInst, 0 ); na ekranie poprawnie wyświetliło się "ąęć". Z góry dzięki wielkie za pomoc :) |
|
xevuel |
» 2012-12-21 17:57:26 Wersja W funkcji i przedrostek L przy stringu :) //edit: Czyli najprawdopodobniej coś takiego: hEdit = CreateWindowExW( WS_EX_CLIENTEDGE, WC_EDIT, L"ąęć, WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL, 0, 0, 500, 500, hwnd, 0, * hInst, 0 ); |
|
kubawal |
» 2012-12-21 17:59:22 Czyli: hEdit = CreateWindowExW( , L"ąść", );
Lub w VC++ 2010: Project->Properties->Configuration Properties->General->Character Set->Use Unicode Character Set. |
|
McAffey Temat założony przez niniejszego użytkownika |
» 2012-12-21 19:07:05 A jak to przedstawić jako WCHAR ? Kod : hEdit = CreateWindowExW( WS_EX_CLIENTEDGE, WC_EDIT, L"ąęć", WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL, 0, 0, 500, 500, hwnd, 0, * hInst, 0 ); Błąd kompilacji : error: cannot convert 'const char*' to 'const WCHAR*' for argument '2' to 'HWND__* CreateWindowExW(DWORD, const WCHAR*, const WCHAR*, DWORD, int, int, int, int, HWND__*, HMENU__*, HINSTANCE__*, void*)'| |
|
DejaVu |
» 2012-12-21 19:08:32 WC_EDITW #define WC_EDITA "Edit" #define WC_EDITW L"Edit"
#ifdef UNICODE #define WC_EDIT WC_EDITW #else #define WC_EDIT WC_EDITA #endif
|
|
kubawal |
» 2012-12-21 19:09:44 Lub jako styl dać L"EDIT" |
|
McAffey Temat założony przez niniejszego użytkownika |
» 2012-12-21 19:59:21 A jak zamiast tekstu w cudzysłwiu podać stringa ? Bo gdy sobie przekonwertowałem stringa na wchar_t, to tekst się wyświetla, ale bez polskich znaków (które znów są krzakami). Konwertuję w ten sposób : wchar_t * zmienna_wchar = new wchar_t[ str.size() ];
for( string::size_type i = 0; i < str.size(); i++ ) zmienna_wchar[ i ] = str[ i ];
hEdit = CreateWindowExW( WS_EX_CLIENTEDGE, WC_EDITW, zmienna_wchar, WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL, 0, 0, 500, 500, hwnd, 0, * hInst, 0 ); |
|
Elaine |
» 2012-12-21 21:09:45 Jesteś pewien, że chcesz konwertować ISO-8859-1 do UTF-16? Ta pętla właśnie to robi. |
|
« 1 » 2 |