OnMouseDown Event
-
Wie kann ich es erreichen, dass die Caption eines Buttons beim Eintreten des MouseDownEvent dieses Buttons verändert wird (z.b. auf "Release me!"?
-
In etwa so...
In der OnLButtonDown() für den Button
SetDlgItemText(IDC_BUTTON, "Release me!");
In der WM_LBUTTONUP Message Funktion
SetDlgItemText(IDC_BUTTON, "Text Wie er normal auf dem Button zu sehen ist");
Hoffe das hilft Dir weiter
MfG veganza
-
schon klar, das OnLButtonDown Event soll aber dann ausgelöst werden, wenn sich die maus über dem button befindet.
-
Ok... da habe ich Dich etwas falsch verstanden !!!
Ob der Maus-Zeiger gerade über den Button ist würde ich wie folgt realisieren:
In die OnMouseMove() //WM_MOUSEMOVE
CRect rect; m_cButton.GetWindowRect(&rect); //m_cButton ist ein Control des zu überprüfenden Buttons ClientToScreen(&point); if(rect.PtInRect(point)) AfxMessageBox("Mauszeiger ist über dem Button");
Sollte funktionieren...
MfG veganza
[ Dieser Beitrag wurde am 03.08.2002 um 17:44 Uhr von veganza editiert. ]
-
also, ich habe das problem mal mit einem activex-button realisiert, das ergebnis sieht folgendermaßen aus. wie kann ich dasselbe mit einem stinknormalem mfc-button realisieren?
void CTest2Dlg::MouseDownCommandbutton1(short Button, short Shift, float X, float Y) { m_cButton.put_Caption("Release me!"); }
-
momentan sieht meine mfc-version des problems folgendermßen aus:
void CTestDlg::OnLButtonDown(UINT nFlags, CPoint point) { CRect Rect; Button1.GetWindowRect(Rect); //<-- Breakpoint gesetzt ClientToScreen(&point); if (Rect.PtInRect(point)) Button1.SetWindowText("Release me!"); CDialog::OnLButtonDown(nFlags, point); }
Wenn ich das Button-Down-Event nicht in der auf dem Button sonder irgendwo anders auf dem Dialog auslöse, dann hört der Programmablauf beim Breakpoint auf, wird allerdings das Event auf dem Button getriggert dann passiert gar nix. Why???