DN_CONTROLINPUT

Programming Far Manager plugins

DN_CONTROLINPUT

Обработчик диалога получает событие DN_CONTROLINPUT, когда пользователь нажал клавишу клавиатуры или мыши.

Param1

ID элемента (обычно элемент, имеющий фокус ввода) диалога. -1 для случая, если пользователь кликнул клавишей мыши вне диалога.

Param2

Указатель на структуру INPUT_RECORD описывающую клавишу.

Return

TRUE - клавишу обработали сами.
FALSE - пусть обрабатывает клавишу стандартный внутренний обработчик диалога.

Элементы

ЭлементОписание
Все Все элементы диалога, кроме скрытых и недоступных.

Замечания

  1. По умолчанию для открытого DI_COMBOBOX событие DN_CONTROLINPUT в диалоговую процедуру не приходит. Воспользуйтесь сообщением DM_SETCOMBOBOXEVENT, чтобы включить режим посылки нажатий клавиш в диалоговую процедуру.
  2. Для элемента DI_USERCONTROL координаты курсора (0,0) мыши начинаются с левого-верхнего угла этого элемента. Для остальных элементов - относительно левого верхнего угла экрана.
  3. Если пользователь кликнул клавишей мыши вне диалога, то:
    • левая клавиша рассматривается как нажатие клавиши 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;
    }
  }
Смотрите также: