DN_CONTROLINPUT
Обработчик диалога получает событие
DN_CONTROLINPUT
, когда пользователь нажал клавишу клавиатуры или мыши.
Param1
ID элемента (обычно элемент, имеющий фокус ввода) диалога.
-1
для случая, если пользователь кликнул клавишей мыши вне диалога.
Param2
Указатель на структуру INPUT_RECORD описывающую клавишу.
Return
TRUE
- клавишу обработали сами.FALSE
- пусть обрабатывает клавишу стандартный внутренний обработчик диалога.
Элементы
Элемент | Описание |
---|---|
Все | Все элементы диалога, кроме скрытых и недоступных. |
Замечания
- По умолчанию для открытого DI_COMBOBOX событие
DN_CONTROLINPUT
в диалоговую процедуру не приходит. Воспользуйтесь сообщением DM_SETCOMBOBOXEVENT, чтобы включить режим посылки нажатий клавиш в диалоговую процедуру. - Для элемента DI_USERCONTROL координаты курсора (0,0) мыши начинаются с левого-верхнего угла этого элемента. Для остальных элементов - относительно левого верхнего угла экрана.
- Если пользователь кликнул клавишей мыши вне диалога, то:
- левая клавиша рассматривается как нажатие клавиши Esc;
- правая клавиша рассматривается как нажатие клавиши Enter;
- прочие клавиши (для многокнопочной мыши) не имеют никакого эффекта.
- если функция диалога не обрабатывает событие с
Param1 = -1
, то диалог будет закрыт.
Пример
Пример обработки сообщения:
// вызвать контекстную справку case DN_CONTROLINPUT: const INPUT_RECORD* record=(const INPUT_RECORD *)Param2; if (record->EventType==KEY_EVENT && record->Event.KeyEvent.bKeyDown) { WORD Key=record->Event.KeyEvent.wVirtualKeyCode; if (Key==VK_F1) { Info.ShowHelp(Info.ModuleName, 0, 0); return true; } }
Смотрите также: