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++ — ©...
  Update World C++: Сборник GPL QT исходников
  Весь сайт целиком можно загрузить по ссылкам из раздела Скачать

 381 - Диалоговые окна, настройка обработки клавиш / MFC шаг за шагом / Visual C++

Шаг 381 - Диалоговые окна, настройка обработки клавиш

Создав диалоговое окно и попробовав обрабатывать сообщения от клавиатуры:

void CTestDialogDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	MessageBeep(-1);
	CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}

Вы тут же убедитесь, что стрелки не обрабатываются. Хотя это возможно. Вам необходимо перегрузить обработку сообщения GetDlgCode.

381_1.gif (11825 b)

А в функции обработки вернуть свои настройки:

UINT CTestDialogDlg::OnGetDlgCode() 
{
	// TODO: Add your message handler code here and/or call default
	return DLGC_WANTARROWS|DLGC_WANTALLKEYS|DLGC_WANTCHARS;
}

Одна тонкость. Элементы управления нужно убрать с диалогового окна, так как в этом случае стрелки будут менять фокус элементов. Вопрос зачем ? Например, для приложений DirectDraw или GDI, когда нет необходимости показывать элементы, а окно используется как контекст вывода.

381_2.gif (1379 b)


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