Создав диалоговое окно и попробовав обрабатывать сообщения от клавиатуры:
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.
А в функции обработки вернуть свои настройки:
UINT CTestDialogDlg::OnGetDlgCode() { // TODO: Add your message handler code here and/or call default return DLGC_WANTARROWS|DLGC_WANTALLKEYS|DLGC_WANTCHARS; }
Одна тонкость. Элементы управления нужно убрать с диалогового окна, так как в этом случае стрелки будут менять фокус элементов. Вопрос зачем ? Например, для приложений DirectDraw или GDI, когда нет необходимости показывать элементы, а окно используется как контекст вывода.