Вот делал простенькую прогу и столкнулся с такой проблемой. У меня в 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), но картины это, очевидно, не меняет). Подскажите ошибку. Заранее спасибо.
Здравствуйте, 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.