Doppel-/Rechtsklick auf Button
-
Hallo,
mein Anliegen ist Folgendes: Ich möchte gerne einen Rechtsklick bzw. einen Doppelklick auf einen Button machen.
Der Rechtsklick bzw. Doppelklick soll eine anderen Funktion als der Linksklick auslösen. z.B Rechtsklick: Messagebox, Linksklick: Nichts, Doppelklick: Programm beendet sichAllerdings komme ich zu keiner funktionierenden Lösung.
Einen Rechtsklick bzw. Doppelklick auf eine "leere" Fläche ist kein Problem, allerdings funktioniert nichts dergleichen wenn ich es auf den Buttons versuche.
Ich hoffe irgendwer konnte mein Problem nachvollziehen und hat eine Lösung/Tipp für mich
-
wenn du den klick auf einen butten abfangen willst ist subclassing die beste lösung. Scroll im text ein bischen runter bis du zum codesnip kommst.
andere möglichkeit wäre noch, eine von dem WM_RBUTTONDOWN / UP... nachrichten abzufangen. dort bekommst du ja die x & y position der Maus in lParam übergeben. bzw. in wParam den MausButton der gedrückt wurde.
setzt lParam in eine POINT Strucktur und übergib das ganze an WindowFromPoint. die funktion gibt dir das Handel von dem Fenster zurück das sich unter dem übergebenen punkt befindet. das vergleichst du dann mit dem Handle von dem Button. Danach kannst du wparam abfragen welcher mausbutton gedrückt wurde.
-
danke für deine antwort. das subclassing funktioniert bei mir leider nicht und anscheinend reichen meine kenntnisse nicht aus, um die zweite variante nachzuvollziehen. trotzdem danke für dein bemühen
-
code ist nicht compilertcase WM_RBUTTONDOWN: { if(wParam & MK_RBUTTON) { POINT pt; pt.x = LOWORD(lParam); pt.y = HIWORD(lParam); if(::WindowFromPoint(pt) == hWndButton) { } } } break;