Ввод с русской раскладкой
От: Kamal  
Дата: 13.01.06 20:33
Оценка:
Вот делал простенькую прогу и столкнулся с такой проблемой. У меня в custom control реализован ввод, ну по отдельности обрабатываются WM_KEYDOWN. Так вот, при вводе с русской раскладки пишется полная галиматья, причем ошибка еще на стадии чтения. Код такой

LRESULT OnKeyDown(WPARAM wParam, LPARAM lParam)
...
BYTE state[256];
WCHAR c; 
GetKeyboardState(state);
ToUnicodeEx(wParam, 0, state, &c, 1, 0, LoadKeyboardLayout("00000419", KLF_ACTIVATE|KLF_SUBSTITUTE_OK));

В пееменной с после этого чушь. То есть раскладка не воспринимается (изначально я принудительно раскладку не грузил, а делал GetKeyboardLayout(0), но картины это, очевидно, не меняет). Подскажите ошибку. Заранее спасибо.
Re: Ввод с русской раскладкой
От: Аноним  
Дата: 14.01.06 21:20
Оценка:
Здравствуйте, Kamal, Вы писали:

K>Вот делал простенькую прогу и столкнулся с такой проблемой. У меня в custom control реализован ввод, ну по отдельности обрабатываются WM_KEYDOWN. Так вот, при вводе с русской раскладки пишется полная галиматья, причем ошибка еще на стадии чтения. Код такой


K>
K>LRESULT OnKeyDown(WPARAM wParam, LPARAM lParam)
K>...
K>BYTE state[256];
K>WCHAR c; 
K>GetKeyboardState(state);
K>ToUnicodeEx(wParam, 0, state, &c, 1, 0, LoadKeyboardLayout("00000419", KLF_ACTIVATE|KLF_SUBSTITUTE_OK));
K>

K>В пееменной с после этого чушь. То есть раскладка не воспринимается (изначально я принудительно раскладку не грузил, а делал GetKeyboardLayout(0), но картины это, очевидно, не меняет). Подскажите ошибку. Заранее спасибо.

Попробуйте обрабатывать WM_CHAR.
Re[2]: Ввод с русской раскладкой
От: Kamal  
Дата: 15.01.06 11:24
Оценка:
Здравствуйте, Аноним, Вы писали:

A>Попробуйте обрабатывать WM_CHAR.

Это конечно можно, но в чем ошибка в коде выше? Ведь virtual-key code получаю верный, даю вроде верные параметры функции ToUnicodeEx, а она неправильно переводит русские символы (с английскими, повторюсь, все в порядке).
Re[3]: Ввод с русской раскладкой
От: AlexDav Россия  
Дата: 16.01.06 12:31
Оценка:
А если в свойствах проекта поставить что место — Россия?
Re[4]: Ввод с русской раскладкой
От: Kamal  
Дата: 16.01.06 22:22
Оценка:
Здравствуйте, AlexDav, Вы писали:

AD>А если в свойствах проекта поставить что место — Россия?

В смысле culture (язык ресурсов) ? Не катит. Да и вообще — а если пользователь захочет вводить на венгерском, скажем? В конце коцов черт его знает с его раскладкой. Это же юникод! Но нет, не воспринимает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.