Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

OnMouseDown event for a button

MartinSMartinS Posts: 2Member
i have a dialog with a button placed on it. when the programm is running i want to trigger the WM_LBUTTONDOWN-Message on the button, that's why i've implemented the following function:
void CTestDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
CRect Rect;
Button1.GetWindowRect(Rect);//Breakpt
ClientToScreen(&point);
if (Rect.PtInRect(point))
Button1.SetWindowText("Release me!");

CDialog::OnLButtonDown(nFlags, point);
}
The curios thing about that function is that it is being called when i perform the mouse-down event ontop of the window. but when i perform the mouse-down event ontop of the button, then it is not called, because there is no break at the breakpoint.
does anyone know how to fix that???

Comments

  • SpookySpooky Posts: 53Member

    Hi.

    This is just a suggestion as I didn't try it out, but it might help:
    The WM_LBUTTONDOWN is sent to the button, not to your dialog, that's why your dialog doesn't recieve it. Add a message handler for the button too and you have solved the problem.
    If you still want your main window to get the WM_LBUTTONDOWN message even if it's on the button, you can send this message from the button's message handler to it's parent window.
    Hope this helps.

    : i have a dialog with a button placed on it. when the programm is running i want to trigger the WM_LBUTTONDOWN-Message on the button, that's why i've implemented the following function:
    : void CTestDlg::OnLButtonDown(UINT nFlags, CPoint point)
    : {
    : CRect Rect;
    : Button1.GetWindowRect(Rect);//Breakpt
    : ClientToScreen(&point);
    : if (Rect.PtInRect(point))
    : Button1.SetWindowText("Release me!");
    :
    : CDialog::OnLButtonDown(nFlags, point);
    : }
    : The curios thing about that function is that it is being called when i perform the mouse-down event ontop of the window. but when i perform the mouse-down event ontop of the button, then it is not called, because there is no break at the breakpoint.
    : does anyone know how to fix that???
    :

  • QuantumcatQuantumcat Posts: 1Member
    A button sends a BN_CLICKED message to its owner when it is clicked. Use that.
Sign In or Register to comment.