editbox (проблема-йероглифы)
копирую текст (кирилица) из своего editbox'a, а когда куда-нить вставляю - вместо того что было появляются йероглифы. в чем проблема, подскажите.
Проверь, типы для кирилицы TCHAR при сообщениях WM_GETTEXT, WM_SETTEXT, LB_GETTEXTEX і т.д и т.п.
Проверь, типы для кирилицы TCHAR при сообщениях WM_GETTEXT, WM_SETTEXT, LB_GETTEXTEX і т.д и т.п.
по-подробней, если можно.
по-подробней, если можно.
Во-первых: проверь флажки стиля твоего EditBox. Может быть, что там выставлен ES_OEMCONVERT.
Во-вторых: можно использовать функцию SendDlgItemMessage(HWND hDlg, int nIDDlgItem, UINT Msg, WPARAM wParam, LPARAM lParam), кокая будет иметь такой вид :
SendDlgItemMessage(
hDlg,//твой хендл на окно-отец
IDC_EDIT1,//твой контрол - он же edit-сорец
EM_GETLINE,//message на прием строки
null, // если edit-свойсво single, иначе - номер строки, с которой вытянуть текст
&buff);// где buff - TCHAR buff[512];
все - в buff - строка юникод или ансі.
запихать в EDIT так:
SendDlgItemMessage(hDlg, IDC_EDIT1, WM_SETTEXT, wparam, lparam);
одним словом, суть такова, что буфер-приемник должен быть TCHAR-массивом...
и все операции над буфером должны быть исполнены функциями, что поддержывают как UNICODE, так и ANSI. Почитай MSDN - там все напИсано. если совсем ничего не получиться - кидай на мыло - помогу... ;)
P.S: убедись, что приемник - тоже может раюотать с UNICODE-ANSI.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
@="c_1251.nls"
"1250"="c_1251.nls"
"1252"="c_1251.nls"
усе заработало :)
как оказалось, проблема заключалась в виндовском баге. после запксуа файла .reg с текстом
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
@="c_1251.nls"
"1250"="c_1251.nls"
"1252"="c_1251.nls"
усе заработало :)
пути виндозы неисповедимы :)
пути виндозы неисповедимы :)
эх Билли, Билли...если-бы его заставили платить за каждый виндозный баг по баксу, он-бы пожалуй обанкротился, да еще и в долги-бы влез немалые :D