Maus Events (Hover und leave?)
-
moin,
ich habe ein callback für ein Static/Label Control, nun möchte ich abfragen wenn die Maus auf dem Static ist und wenn die Maus den Static verlässt ...
doch wie mache ich das?
WM_MOUSEHOVER geht nicht
-
no one schrieb:
ich habe ein callback für ein Static/Label Control [...]
Du willst sagen, du hast eine Window Procedure!?
Greetz, Swordfish
-
Bei einem Label muss aber der Stil SS_NOTIFY gesetzt sein!
-
TrackMouseEvent( ) funktioniert nicht

hButton = CreateWindow("STATIC", "", WS_VISIBLE|WS_CHILD|SS_NOTIFY|SS_BITMAP, 530, 5, 20, 20, hwnd, (HMENU)444, GetModuleHandle (NULL), 0); PrevWndProcClose = SetWindowLongPtr (hButton, GWLP_WNDPROC, (LONG_PTR) CloseWndProc); hBitmap= LoadImage (GetModuleHandle (NULL), "close.bmp", IMAGE_BITMAP,0, 0,LR_DEFAULTCOLOR | LR_LOADFROMFILE); hBitmap2= LoadImage (GetModuleHandle (NULL), "close2.bmp", IMAGE_BITMAP,0, 0,LR_DEFAULTCOLOR | LR_LOADFROMFILE); if(hBitmap == NULL) { MessageBox(NULL, "Konnte Bitmap net laden!", "ERROR!", MB_OK); } SendMessage (hButton, STM_SETIMAGE, (WPARAM) IMAGE_BITMAP,(LPARAM)(HANDLE) hBitmap); me.cbSize = sizeof (me); me.hwndTrack = hButton; me.dwFlags = TME_HOVER|TME_LEAVE; me.dwHoverTime = HOVER_DEFAULT; TrackMouseEvent(&me);und der callback
LRESULT CALLBACK CloseWndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { //TrackMouseEvent(&me); switch (message) { case WM_MOUSEHOVER: { SendMessage (hButton, STM_SETIMAGE, (WPARAM) IMAGE_BITMAP,(LPARAM)(HANDLE) hBitmap2); TrackMouseEvent(&me); break; } case WM_MOUSELEAVE: { SendMessage (hButton, STM_SETIMAGE, (WPARAM) IMAGE_BITMAP,(LPARAM)(HANDLE) hBitmap); TrackMouseEvent(&me); break; } } return CallWindowProc ((WNDPROC) PrevWndProcClose, hwnd, message, wParam, lParam); }