How to capture MouseMove event in a MFC Dialog Bas

2019-05-23 19:39发布

My application is a VC6 MFC dialog based application with multiple property pages.

I have to capture a mousemove event over a control, for example Checkbox.

How can I capture the mousemove events over a checkbox in MFC?

3条回答
做个烂人
2楼-- · 2019-05-23 20:07

I found in @raj's OnSetCursor() code, that the associated Member variable for IDC_STATIC_TOOLTIP is that variable to which you assign the desired tool tip text. For example, if the associated variable is m_strToolTip, assign the desired text to display during the hovering event as follows:

m_strToolTip.Format("%s", "Tool tip text goes here");

I also found that UpdateData() was required upon entry into the event handler and UpdateData(FALSE) was required before the return. The SetCursor() call seems to have no effect when commented.

查看更多
放荡不羁爱自由
3楼-- · 2019-05-23 20:09

A checkbox is a button control (eg. CWnd). Derive your own class from CCheckBox and handle the OnMouseMove event.

Per request...assuming a class derived from CButton...

BEGIN_MESSAGE_MAP(CMyCheckBox, CButton)
    ON_WM_MOUSEMOVE()
END_MESSAGE_MAP()


void CMyCheckBox::OnMouseMove(UINT nFlags, CPoint point)
    {
    // TODO: Add your message handler code here and/or call default

    CButton::OnMouseMove(nFlags, point);
    }
查看更多
Lonely孤独者°
4楼-- · 2019-05-23 20:12

Thanks for your replies.. I found a way to get the mousemove event for my app.

WM_SETCURSOR windows message gets the mouse move. It returns the Cwnd pointer for a control and the dialog.

Find my code below.

BOOL CMyDialog::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
CWnd* pWndtooltip = GetDlgItem(IDC_STATIC_TOOLTIP); 

if (pWnd != this)
{
    if  (IDC_SN_START_ON == pWnd->GetDlgCtrlID())
        pWndtooltip->ShowWindow(SW_SHOW);

}
else
    pWndtooltip->ShowWindow(SW_HIDE);   

SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));


return true;

}

查看更多
登录 后发表回答