Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не работает WM_MOUSEWHEEL в приложении на базе WTL

563
21 августа 2007 года
MrLinker
249 / / 17.09.2006
Создаю приложение при помощи WTL AppWizard в среде VC++ 6.0

Как и раньше:
 
Код:
#define WM_MOUSEWHEEL   0x020A


Назначаю обработчик:
 
Код:
MESSAGE_HANDLER(WM_MOUSEWHEEL, OnMouseWheel)


Но сообщение WM_MOUSEWHEEL не приходит.
При обычном Win32 приложении на чистом WinAPI все работает.

Кто-нибудь может сталкивался с такой проблемой?
563
21 августа 2007 года
MrLinker
249 / / 17.09.2006
Забавно. Проблему я решил, однако, это странно.

На codeproject.com нашел вот что:

Цитата:
In WTL, you can use the MSG_WM_MOUSEWHEEL message map macro to handle WM_MOUSEWHEEL. The handler should have this prototype:

LRESULT OnMouseWheel(UINT uKeys, short nDistance, CPoint pt);
WTL does not yet have support for WM_MOUSEHWHEEL, but creating a message map macro for it is simple:

#define WM_MOUSEHWHEEL 0x020E
#define MSG_WM_MOUSEHWHEEL(func) \
if (uMsg == WM_MOUSEHWHEEL) \
{ \
SetMsgHandled(TRUE); \
lResult = func((UINT)LOWORD(wParam), (short)HIWORD(wParam), \
CPoint(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam))); \
if(IsMsgHandled()) \
return TRUE; \
}
The WM_MOUSEHWHEEL handler should have the same prototype as OnMouseWheel() above. Note that I haven't tried the sample code on Vista, but hopefully it will all work!



Ну думаю здорово, однако, все равно не заработало.

А прикол в том, что после диалога открытия файла фокус оставался на mainframe, а не на доченьке её :)
Хотя Spy++ показывает, что сообщения в дочернее окно приходят(!)

В общем, после диалога открытия файла(или любого другого) нужно сделать SetFocus() на нужное окно.

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

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог