Здравствуйте.
Пишу программу на Visual C++.
Программа на русском (все надписи на кнопках, меню и т.п.), но иногда нужно выводить и некоторые греческие символы наряду с русскими/английскими (мю, дельта, омега).
Например, так:
"Конденсатор C1 = 0,100 ?F"
"?f = 5 Hz"
(извините, но, кажется, форум не поддерживает юникод. В первой строке вместо вопроса "мю", во второй — "дельта")
Как такой текст отобразить в контроле Edit?
Искал в MSDN, в интернете, но ничего похожего не нашёл.
Unicode в Windows 98 не поддерживается.
Я преобразовал UNICODE-значения этих символов в кодировку UTF-8 (с помощью WideSharToMultiByte, используя CP_UTF8)
wchar_t ws[3];
char mbs[6];
const unsigned char s_m[] = {0xBC,0x03,0,0}; // 0x03BC - это символ мю в Unicode
UINT CodePage = CP_UTF8;
memcpy((void*)ws , s_m,sizeof(s_m));
WideCharToMultiByte(
CodePage,
0,
(wchar_t*)s_m,
-1,
mbs,
6,
NULL,
NULL);
SendMessage(::GetDlgItem(hDlg,IDC_EDIT_RESULTS),WM_SETTEXT,0,(LPARAM)mbs);
В результате mbs содержит {0xCE,0xBC,0}, но текст отображается как байты CE и BC в кодировке 1251 (что неудивительно).
Как я понимаю, надо как-то сменить CHARSET, но не понял, как установить именно UTF8.
Хотел использовать CreateFont, но в MSDN в описании параметра
DWORD fdwCharSet этой функции UTF8_CHARSET нету.
там только такие
[msdn] ANSI_CHARSET
BALTIC_CHARSET
CHINESEBIG5_CHARSET
DEFAULT_CHARSET
EASTEUROPE_CHARSET
GB2312_CHARSET
GREEK_CHARSET
HANGUL_CHARSET
MAC_CHARSET
OEM_CHARSET
RUSSIAN_CHARSET
SHIFTJIS_CHARSET
SYMBOL_CHARSET
TURKISH_CHARSET
Korean Windows:
JOHAB_CHARSET
Middle-Eastern Windows:
HEBREW_CHARSET
ARABIC_CHARSET
Thai Windows:
THAI_CHARSET[/msdn]
Установить тодлько греческую кодировку я не могу, так как надо использовать и руссие буквы
Может ли как-то Windows вообще отображать multibyte-строки?
Подскажите, пожалуйста, с помощью каких функций это можно реализовать?
Спасибо.