WM_MOUSEHOVER / WM_MOUSELEAVE ( TRACKMOUSEEVENT )
-
Ich bekomme das mit dem Mousehover und dem Mouseleave einfach nicht hin.
Wenn ich mein Programm starte kommt die MessageBox vom Mouseleave aber mehr auch nicht. Sonst passiert überhaupt nichts wenn ich mit der Maus über das Fenster fahre.Hier ist meine Fensterfunktion, ich hoffe einer von euch kennt sich mit sowas aus.
Danke im Voraus!!!
TRACKMOUSEEVENT MouseEvent; BOOL CALLBACK DlgProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_MOUSEHOVER: SetWindowText(hwndDlg,"hover"); MessageBox(hwndDlg,"hover","ok",MB_OK); MouseEvent.dwFlags = TME_LEAVE|TME_HOVER; _TrackMouseEvent(&MouseEvent); return 0; case WM_MOUSELEAVE: SetWindowText(hwndDlg,"leave"); MessageBox(hwndDlg,"leave","ok",MB_OK); MouseEvent.dwFlags = TME_HOVER; _TrackMouseEvent(&MouseEvent); return 0; case WM_INITDIALOG: MouseEvent.cbSize= sizeof(TRACKMOUSEEVENT); MouseEvent.dwFlags = TME_HOVER|TME_LEAVE; MouseEvent.dwHoverTime = 1; MouseEvent.hwndTrack= hwndDlg; _TrackMouseEvent(&MouseEvent); return true; case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL: EndDialog(hwndDlg, wParam); return true; } switch (HIWORD(wParam)) { case BN_CLICKED: CheckDlgButton(hwndDlg, lParam, BST_CHECKED); return true; }return true; } return false; }
-
Willst du das für den ganzen Dialog
-
afaik muss man _TrackMouseEvent bei WM_MOUSEMOVE aufrufen, damit die Nachrichten WM_MOUSEHOVER und WM_MOUSELEAVE gesendet werden...