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

Ваш аккаунт

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

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

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

MouseHover

9.6K
14 января 2005 года
mDK
3 / / 14.01.2005
Кто нибудь знает,какое сообщение генерерирует Виндовз при выходе/попадании мыши из области окна?

в Winuser.h написано:
#if(_WIN32_WINNT >= 0x0400)
#define WM_MOUSEHOVER 0x02A1
#define WM_MOUSELEAVE 0x02A3
...

А вот в 98-й этот макрос не определен,прямая подстановка не действует:(

Так что не понятно,есть ли в ранних версиях вообще такое сообщение.
Может можно узнать о выходе мыши за пределы окна как-нибудь подругому?
301
14 января 2005 года
lord Kelvin
897 / / 08.11.2004
Эти сообщения получил контрол, когда над ним оказался указатель:
0x00000084
0x00000020
0x000000A0
0x00000200
0x00000085
0x0000BD33
Это сообщение (скорее всего и часть предыдущих) контрол получил, когда мышь ушла:
0x000002A3
9.6K
17 января 2005 года
mDK
3 / / 14.01.2005
0x00000085 От мыши не зависит,а 0x0000BD33 и 0x000002A3 98-я не посылает.Код 0x000002A3 в windows.h определен как код уходы мыши с окна,но только для более поздних версий Windows.А как определить это в 98-й и ниже?Очени надо чтоб под них работало.
Заранее благодарю за помощь.
301
17 января 2005 года
lord Kelvin
897 / / 08.11.2004
Цитата:
Originally posted by mDK
0x00000085 От мыши не зависит,а 0x0000BD33 и 0x000002A3 98-я не посылает.Код 0x000002A3 в windows.h определен как код уходы мыши с окна,но только для более поздних версий Windows.А как определить это в 98-й и ниже?Очени надо чтоб под них работало.
Заранее благодарю за помощь.


Я тут подумал... А почему бы тебе не сделать программу, которая будет выводить все сообщения в, скажем, ListBox?
То что я написал выше я узнал именно так.

9.6K
19 января 2005 года
mDK
3 / / 14.01.2005
Спасибо.Теперь работает
Я сделал подключаемый файл hover.h:

#if(_WIN32_WINNT < 0x0400)
#define WM_MOUSEHOVER 0x02A1
#define WM_MOUSELEAVE 0x02A3

BOOL Is_Mouse_In=false;
VOID ResetMouseHover(HWND hwnd,BOOL mess,WPARAM wP,LPARAM lP) {
if(Is_Mouse_In) {
Is_Mouse_In=false;
if(mess)
SendMessage(hwnd,WM_MOUSELEAVE,wP,lP);
}
}

VOID MouseHover(HWND hwnd,WPARAM wP,LPARAM lP) {
if(!Is_Mouse_In) {
SetCapture(hwnd);
Is_Mouse_In=true;
SendMessage(hwnd,WM_MOUSEHOVER,wP,lP);
}
else {
RECT r;
GetClientRect(hwnd,&r);
if(GET_X_LPARAM(lP)>r.right||GET_X_LPARAM(lP)<r.left||
GET_Y_LPARAM(lP)>r.bottom||GET_Y_LPARAM(lP)<r.top) {
ReleaseCapture();
Is_Mouse_In=false;
SendMessage(hwnd,WM_MOUSELEAVE,wP,lP);
}
}
}
#endif

А в конной функции писал:

...
case WM_MOUSEMOVE:
MouseHover(hwnd,wP,lP); return 0;
case WM_CAPTURECHANGED:
ResetMouseHover(hwnd,true,wP,lP);
return 0;
case WM_MOUSEHOVER:
GetClientRect(hwnd,&r);
strcpy(s,"Mouse In!.......");
DrawText(GetDC(hwnd),s,-1,&r,
DT_LEFT|DT_TOP);
return 0;
case WM_MOUSELEAVE:
GetClientRect(hwnd,&r);
strcpy(s,"Mouse Leave!");
DrawText(GetDC(hwnd),s,-1,&r,
DT_LEFT|DT_TOP);
...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог