Главная / FAQ по Builder'у / 176 Как "перехватывать" нажатие клавиш...

176 Как "перехватывать" нажатие клавиш курсора (со стрелками), и обрабатывать их нажатие?


  События генерируются, но отфильтровываются vcl-ем, для перехвата нужно
поймать сообщение CM_WANTSPECIALKEY и там вернуть 1 для тех кнопок, которые
нужно перехватывать...

  В хидере пишем:

protected:
  virtual void __fastcall CMWantSpecialKey(TCMWantSpecialKey& msg);
BEGIN_MESSAGE_MAP
  VCL_MESSAGE_HANDLER(CM_WANTSPECIALKEY, TCMWantSpecialKey, CMWantSpecialKey)
END_MESSAGE_MAP(inherited)

  В коде:
void __fastcall TDesignWindow::CMWantSpecialKey(TCMWantSpecialKey& msg)
{
  inherited::Dispatch(&msg);
  //!nb catch this message if we want to process special keys
  switch (msg.CharCode) {
    case VK_LEFT:
    case VK_RIGHT:
    case VK_UP:
    case VK_DOWN:
      msg.Result = 1;
      break;
  }
}

Vladislav V Kornienko 2:5000/170.6

Предыдущий вопрос   |  Список вопросов   |   Следующий вопрос

источник      На главную      by jenyok
Copyright © 2003 JTSOFT
Сайт управляется системой uCoz