![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Подскажите как изменить кодировку в Edit WINAPI. Вместо русских букв отображается всякая чушь. А английские все нормально.
|
|
#2
|
|||
|
|||
|
Цитата:
|
|
#3
|
|||
|
|||
|
Цитата:
|
|
#4
|
|||
|
|||
|
НУ тогда выстави ES_OEMCONVERT.
|
|
#5
|
||||
|
||||
|
На самом деле, там, наверное, шрифт правильный не выставлен, и используется умолчательный System, оставленный в XP для совместимости с Windows 3.x. Нужно разобраться и выставить через API правильный шрифт, вроде Tahoma.
А по большому счету, в ситуации на 2015-й год все приложения нужно создавать в юникоде, если нет противопоказаний. Даже в Delphi 7. Код же вручную пишется? Явно вызываем CreateWindowW и вперед! |
|
#6
|
|||
|
|||
|
Цитата:
я так понимаю ES_OEMCONVERT это стиль, и по этому его нужно записывать при создании самого Edit Верно? |
|
#7
|
|||
|
|||
|
Цитата:
Именно. (10 символов). |
|
#8
|
|||
|
|||
|
не погло
Код:
Edit_1:= CreateWindowEx(WS_EX_CLIENTEDGE,
'Edit',
nil,
WS_CHILD or WS_VISIBLE or ES_WANTRETURN or ES_OEMCONVERT,
50, 33, 100, 30,
hWindow,
Edit__1,
hInstance,
nil); |
|
#9
|
||||
|
||||
|
Как понимаю, весь сыр-бор из-за желания использовать моноширинный текст? Так ведь на шрифте "Terminal" свет клином не сошёлся. Можно использовать "Lucida Console".
Код:
Edit := CreateWindowEx(WS_EX_CLIENTEDGE, 'Edit', nil,
WS_CHILD or WS_VISIBLE or WS_VSCROLL or ES_AUTOHSCROLL or ES_MULTILINE or ES_WANTRETURN,
10, 10, 300, 100,
Wnd, 100, hInstance, nil);
SendMessage(Edit, EM_REPLACESEL, 0, Integer(PChar('Сообщение: '#13#10)));
Font := CreateFont(-12, 0, 0, 0, 0, 0, 0, 0,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH or FF_DONTCARE, 'Lucida Console');
SendMessage(Edit, WM_SETFONT, Font, 0); |