Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Как словить WM_MOUSEMOVE для Static.


Автор: devmstr 4.1.2006, 09:39
WM_MOUSEMOVE вызывается только для формы. Когда же мышь оказывается над Static форма уже MouseMove не получает.
А мне необходимо, когда мышь находится над контролом поменять курсор.

Автор: crizunhor 4.1.2006, 10:11
А отловить MOUSEMOVE отдельно в Static'e ?

Автор: devmstr 4.1.2006, 11:18
Нет, отловить то в оконной процедуре, но по движению мыши по Static

Автор: _hunter 4.1.2006, 11:32
кажется оно:
http://cboard.cprogramming.com/archive/index.php/t-38045

Автор: crizunhor 4.1.2006, 11:38
Можно еще послать сообщение Static'y WM_SETCURSOR.

Автор: devmstr 4.1.2006, 13:48
Решение проблемы:
Код

WNDPROC old = (WNDPROC) SetWindowLong(hwndStatic,GWL_WNDPROC,(LONG)YourProc);

LRESULT CALLBACK YourProc(HWND hWnd,UINT msg,WPARAM wp,LPARAM lp){
 //Здесь все сообщения льются от Static
 //А потом вызови оригинальную версию proc для static
 if(msg == WM_MOUSEMOVE){
   //делай с курсором всё что надо;}
 return CallWindowProc(old,hWnd,msg,wp,lp);
}

Может кому пригодится!
Добавлено @ 13:48
Влюбом случае всем спасибо!

Автор: GremlinProg 5.1.2006, 21:57

Остается тока сделать акцент на верном решении crizunhor!

devmstr, внимательнее читай вопросы!!! О подклассинге речь не идет.

Автор: Nastya 10.1.2006, 11:29
Не забуть поставить статику стиль SS_Notify - или что-то типа того не увереан в первых двух буквах smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)