2010-12-04 5 views
4

Я хочу, чтобы перехватить ключи, которые нажаты, когда один из моих диалогов отображаютсяКак справиться с нажатием клавиши в MFC?

+0

Более подробную информацию требуется – Craig 2010-12-04 07:20:29

+0

@Craig: Какая информация? – Casebash 2010-12-04 07:32:01

+0

Язык, платформа и т. Д. MVC является общим и используется в Интернете, Windows, мобильных устройствах. Я могу легко дать вам ответ и ответить за ASP.NET MVC, но понятия не имею, если это то, что вы хотите. – Craig 2010-12-04 07:41:44

ответ

4

Либо установите некоторые ускорители, которые отправляют соответствующую WM_COMMAND, либо отвечают на сообщения WM_KEYDOWN/UP и следят за нажатиями клавиш.

Больше информации здесь:

http://www.codeproject.com/KB/dialog/pretransdialog01.aspx

И полезный код из этой статьи:

BOOL CPreTransTestDlg::PreTranslateMessage(MSG* pMsg) 
{ 
    if(pMsg->message==WM_KEYDOWN) 
    { 
     if(pMsg->wParam==VK_RETURN) 
      pMsg->wParam=VK_TAB; 
    } 
    return CDialog::PreTranslateMessage(pMsg); 
} 
1

Вы должны смотреть на hooking keyboard events. Это ссылка CodeGuru, но есть много, много ресурсов доступны, когда вы Google для How to hook keyboard events with MFC.

Что вы В этих статьях можно найти, что клавиатура и/или привязка событий являются терминологией выбора. «Перехват» используется для описания процесса. И еще одно примечание: будьте осторожны, когда вы зацепите! Вы можете подключиться к вашему диалоговому окну или на нескольких других уровнях. (Btw, keylogger - известные трояны, которые используют эту тактику. Просто FYI.)

Смежные вопросы