C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 82 - Отключение клавиш из PreTranslateMessage / Диалоговые окна / Visual C++

Шаг 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.


| |
Автор Каев Артем.
[AD]