Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение кода клавиши, в зависимости от shift и CapsLock 
:(
    Опции темы
NewLine
Дата 23.10.2006, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 19.5.2006

Репутация: нет
Всего: нет



Привет всем.
В своем MDI приложении я с помощью события OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
Отлавливаю коды клавиш.
Как я понял коды клавиши не меняются в зависимости от того, нажаты ли клавиши Shift или CapsLock или нет???
Я конечно могу это фиксировать с помощью GetKeyState(),
Код

void app::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
   bool is_shift = (GetKeyState(VK_LSHIFT) & 0x8000 || GetKeyState(VK_RSHIFT) & 0x8000);
}

 но проблемма в том, что мне необходимо код этой клавиши отправить на другой компьютер и соответсвенно там отобразить.
Поэтому нужно как-то сразу фиксировать большой и маленький регистр.
Подскажите кто знает, как это зафиксировать?
Спасибо.

Добавлено @ 13:52 
Я так понял, что нужно отдельно для управляющих клавиш типа (Shift, up_down и.т.д)
OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
и отдельно для  символов???
OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
--------------------
Компания NewLineStudio - Разработка программного обеспеченияOn-CRM.ru - интернет CRM система
PM MAIL   Вверх
Earnest
Дата 23.10.2006, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Да

Добавлено @ 14:14 
Если тебе все равно, какой SHIFT нажат - лучше проверять GetKeyState (VK_SHIFT).


--------------------
...
PM   Вверх
NewLine
Дата 23.10.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 19.5.2006

Репутация: нет
Всего: нет



Скажите пожалуйста.
Если от OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
UINT nChar Я обрабатывал с помощью
ToAscii(nChar, MapVirtualKey(nChar, 0), keyboardState,&BufChar, 0);

А как обрабатывать от 
OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
UINT nChar
ToAscii работает, но как-то не так.
А что-то другие функции я не нашел.

Это наверное не правильно, но тупое преобразование CString(nChar) работает.

Спасибо.




Это сообщение отредактировал(а) NewLine - 23.10.2006, 16:31
--------------------
Компания NewLineStudio - Разработка программного обеспеченияOn-CRM.ru - интернет CRM система
PM MAIL   Вверх
Earnest
Дата 23.10.2006, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(NewLine @  23.10.2006,  17:18 Найти цитируемый пост)
ToAscii работает, но как-то не так.

ToAscii преобразует виртуальный код в код символа. Так что в случае OnChar тебе просто ничего не надо делать. 

Цитата(NewLine @  23.10.2006,  17:18 Найти цитируемый пост)
Это наверное не правильно, но тупое преобразование CString(nChar) работает.

Ну почему неправильно, CString имеет в том числе и конструктор от char...
Дело скорее в том, что есть и менее "тупые" пути. Вопрос в том, что ты хочешь получить. Если строку из символа - то сойдет и твой метод. А можно, например, так (всего-то):
Код

TCHAR str[2];
str[0] = nChar;
str[1] = 0;

И получается ровно то же самое, только без конструирования строки (выделения динамической памяти, etc).



--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0408 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.