Возникла проблема с вводом с клавиатуры под виндой в винапи, не могу вкурить как получить, что нажали.
WM_KEYDOWN\UP возвращают виртуальный код и какието параметры и для управления подходят более нини.
нашол WM_CHAR\UNICHAR но
WM_CHAR никак не реагирует на русский язык
WM_UNICHAR вообще не как не срабатывает
в MSDN ничего толкового не нашел или не понял
в гуглах инфа а том как послать код в приложение а не получить =\
окно создаю через CreateWindowExW
Итак вопрос: как получить нажатый символ, желательно юникод в WinApi.
#define UNICODE тоже пробовал, результат никакой
toUnicode дает тоже что и WM_CHAR, тоесть латиница без русского языка =(
Здравствуйте, De-Bugger, Вы писали:
DB>Здравствуйте, Аноним, Вы писали:
А>>Возникла проблема с вводом с клавиатуры под виндой в винапи, не могу вкурить как получить, что нажали.
DB>Цикл обработки сообщений какой?
Создание окна
WNDCLASSEX wc = {
sizeof(WNDCLASSEX),
CS_HREDRAW|CS_VREDRAW,
WindowProc,
0,
0,
GetModuleHandle(NULL),
0,
LoadCursor(NULL, IDC_ARROW),
0,
0,
class_name,
0
};
if (!RegisterClassEx(&wc))
return 1;
gex_system.screen_width=640;
gex_system.screen_height=480;
RECT rect = {0,0,gex_system.screen_width,gex_system.screen_height};//подгоняем размер окна так, чтобы ширина и высота зоны OpenGL была такая как мы задали
AdjustWindowRect(&rect,WS_OVERLAPPEDWINDOW,0);
hWnd = CreateWindowExW (
0,
class_name,
window_title,
WS_OVERLAPPEDWINDOW,
0,
0,
rect.right-rect.left,
rect.bottom-rect.top,
0,
0,
GetModuleHandle(NULL),
0);
if (!hWnd)
return 2;
hdc = GetDC(hWnd);
if (!hdc)
return 3;
// если создать контекст не получилось или он не устанавливается для нашего окна
if (!hRC || !wglMakeCurrent(hdc, hRC))
return 5;
glewExperimental=GL_TRUE; //<<-- иначе не будет работать половина функций
if (glewInit()!=GLEW_OK)
return 6;
ShowWindow(hWnd, SW_SHOW); //показываем окно
Главный цикл
while (!close_game_engine){
active_scene->draw();
SwapBuffers(hdc);//выводим буфер на экран
//опрос соощений
while (PeekMessage(&msg,hWnd,0,0,PM_REMOVE)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}