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;
}
}
Смотрите также: