int get_ch(int iSwitch=0)
{
while( PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE) )
{
if (msg.message==WM_KEYDOWN)
{
TranslateMessage(&msg);
}
if (msg.message==WM_CHAR)
{
switch(iSwitch)
{
default: break;
case 1: cout<<(int)msg.wParam; break;
case 2: cout<<(char)msg.wParam; break;
}
break;
}
}
return (int)msg.wParam;
}
getch() под winapi
Сам способ я уже придумал. мне осталось только понять, как получить коды любой нажатой клавиши.
Код:
Таким путём я могу получить код и символ любой не системной клавиши. Если WM_CHAR заменить любым другим например WM_KEYDOWN или ещё каким то, то в результате получаю лабуду вида:
1) обычные буквы считываются только Заглавными вне зависимости от капс лока или Шифта.
2) на прочих системных клавишах расположена раскладка маленьких букв. Ну и парочка каких то левых символов как и положено =)
Также буду непротив если мне преложат доставание символа из буффера клавиатуры, хотя мне кажется что так я могу получить символы которые набрал и в другом приложении что не совсем корректно, но с этой точки зрения к вопросу я не пододил, так что буду рад выслушать какие либо предложения по этому поводу