Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отлов сообщений клавы. не получается. 
V
    Опции темы
bilbobagginz
Дата 16.2.2007, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: нет
Всего: 317



ок. опять проблемз.

есть класс-сын CDialog.
он имеет несколько графических элементов: кнопочек, рюшечек и т.д.
нужно, чтобы кроме мышки программой можно было управлять при помощи клавиатуры.
что я сделал ?

допустим этот класс зовется CMyDlg.

добавил в public:
Код

afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);

реализовал их всех одинаково:
Код

void CMyDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    // TODO: Add your message handler code here and/or call default
    AfxMessageBox("Wa Wa Wee Wa, OnKeyDown!!!",MB_OK,0);
}

void CMyDlg::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    // TODO: Add your message handler code here and/or call default
    AfxMessageBox("Wa Wa Wee Wa, OnKeyUp!!!",MB_OK,0);
}
void CMyDlg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    // TODO: Add your message handler code here and/or call default
    AfxMessageBox("Wa Wa Wee Wa, OnChar!!!",MB_OK,0);
}


добавил, ессно в MESSAGE_MAP:
Код

    ON_WM_KEYUP()
    ON_WM_KEYDOWN()
    ON_WM_CHAR()


собрал проект, запустил, нажал на клавиатуру, и ничего не поймал. 

что сделано не так ?
как ловить ? 
что прочитать ?




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
bilbobagginz
Дата 16.2.2007, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: нет
Всего: 317



добавления:

запустил Spy++. при нажатии на клавиатуру и отслеживание сообщений диалога получаю, что диалог получает сообщения 

WM_KICKIDLE

часть сообщений получают сами кнопки.

Но я хочу, чтобы не кнопки, а диалог ловили сообщения клавиатуры.
как этого достигнуть ?


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
zkv
Дата 16.2.2007, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



bilbobagginz, не знаю как сделать стратегически правильно, но вот работающий вариант:
Код

//в хидере
virtual BOOL PreTranslateMessage(MSG* pMsg);
//в реализации
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
    // TODO: Add your specialized code here and/or call the base class
    if( WM_KEYDOWN == pMsg->message )
        TRACE( "OnKeyDown" );
    if( WM_KEYUP == pMsg->message )
        TRACE( "OnKeyUp" );
    if( WM_CHAR == pMsg->message )
        TRACE( "OnChar" );

    return CDialog::PreTranslateMessage(pMsg);
}

PM MAIL   Вверх
Greeen
Дата 16.2.2007, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: 10
Всего: 18



bilbobagginz, как вариант использование акселераторов


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
bilbobagginz
Дата 16.2.2007, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: нет
Всего: 317



Цитата

но вот работающий вариант:

получил лося!!! smile
Супер. Спасибо огромное!
+1



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.