Есть класс наследник от htmlayout::event_handler.
Переопределяю virtual BOOL handle_key(HELEMENT he, KEY_PARAMS& params);
Фильтрую сообщения с помощью PreTranslateMessage(MSG* pMsg) в WTL. Вызываю ::DispatchMessage(pMsg).
Но не зависимо от того, что возвращает handle_key(), ::DispatchMessage(pMsg) возвращает 0.
Как получить мне нужное значение?
Здравствуйте, Jukier, Вы писали:
J>Есть класс наследник от htmlayout::event_handler.
J>Переопределяю virtual BOOL handle_key(HELEMENT he, KEY_PARAMS& params);
J>Фильтрую сообщения с помощью PreTranslateMessage(MSG* pMsg) в WTL. Вызываю ::DispatchMessage(pMsg).
J>Но не зависимо от того, что возвращает handle_key(), ::DispatchMessage(pMsg) возвращает 0.
J>Как получить мне нужное значение?
Я не понял вопрос если честно.
Про WM_KEYDOWN читаем:
An application should return zero if it processes this message.
Про DispatchMessage читаем:
LRESULT
The return value specifies the value returned by the window procedure.
т.е. как бы всё by design...
Ты лучше опиши задачу которую пытаешься решить — может быть другое решение.
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, Jukier, Вы писали:
J>>Есть класс наследник от htmlayout::event_handler.
J>>Переопределяю virtual BOOL handle_key(HELEMENT he, KEY_PARAMS& params);
J>>Фильтрую сообщения с помощью PreTranslateMessage(MSG* pMsg) в WTL. Вызываю ::DispatchMessage(pMsg).
J>>Но не зависимо от того, что возвращает handle_key(), ::DispatchMessage(pMsg) возвращает 0.
J>>Как получить мне нужное значение?
CS>Я не понял вопрос если честно.
CS>Про WM_KEYDOWN читаем:
CS>CS>An application should return zero if it processes this message.
CS>Про DispatchMessage читаем:
CS>CS>LRESULT
CS>The return value specifies the value returned by the window procedure.
CS>т.е. как бы всё by design...
CS>Ты лучше опиши задачу которую пытаешься решить — может быть другое решение.
Мне надо ловить горячие клавиши. Например, по F1 вывести окно с помощью. Но в редактируемом поле, например, редактируемый combobox, этого делать не надо.
В handle_key() могу определить, где была нажата кнопка.
Мне надо, чтобы the window procedure возвращала, то, что возвращает handle_key(). А она всегда возвращает 0.
У меня:
PreTranslateMessage(MSG* pMsg)
{
::TranslateMessage(pMsg);
::DispatchMessage(pMsg);
}
Заходит в handle_key() в процессе DispatchMessage, я возвращаю значение в handle_key() (TRUE или FALSE), а DispatchMessage всегда 0.
Спасибо.