Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

getch() под winapi

51K
05 августа 2009 года
Apxdesu
1 / / 05.08.2009
Доброго времени суток. Стоит следующая задача. Необходимо, создать функцию аналогичную getch() getchar(), но чтобы она считывала символ не из консоли, а во время работы моего окна, ну тобишь ловить сообщения виндоуз, и доставать из них код нажатой клавиши.
Сам способ я уже придумал. мне осталось только понять, как получить коды любой нажатой клавиши.
Код:
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;
       
}


Таким путём я могу получить код и символ любой не системной клавиши. Если WM_CHAR заменить любым другим например WM_KEYDOWN или ещё каким то, то в результате получаю лабуду вида:
1) обычные буквы считываются только Заглавными вне зависимости от капс лока или Шифта.
2) на прочих системных клавишах расположена раскладка маленьких букв. Ну и парочка каких то левых символов как и положено =)

Также буду непротив если мне преложат доставание символа из буффера клавиатуры, хотя мне кажется что так я могу получить символы которые набрал и в другом приложении что не совсем корректно, но с этой точки зрения к вопросу я не пододил, так что буду рад выслушать какие либо предложения по этому поводу
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог