Шаг 82 - Отключение клавиш из PreTranslateMessage

В функции PreTranslateMessage можно обработать вообще все сообщения. Отключим обработку акселераторов и напишем код.

BOOL CTestMessageDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	if (pMsg->message==WM_KEYDOWN) 
	{
		if (pMsg->wParam == VK_ESCAPE) return TRUE;
		if (pMsg->wParam == VK_RETURN) return TRUE;
		if (pMsg->wParam == VK_SPACE) return TRUE;
	}
	return CDialog::PreTranslateMessage(pMsg);
}

Вся идея заключается в изучении структуры MSG. Сначала мы определяем, что нажата клавиша, а потом какая нажата. Вот и все. Кстати можно прямо отсюда вызывать всякие функции при необходимости. Кстати перехватил я и пробел, так как если фокус на кнопке, то пробел действует как Enter.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 08.07.2002