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!?

    ➡ TrackMouseEvent( )

    Greetz, Swordfish


  • Mod

    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);
    }
    

Anmelden zum Antworten