MFC实现光标移动到button控件上时,怎么屏蔽控件的连续响应,让控件只响应一次
MFC实现光标移动到button控件上时,如何屏蔽控件的连续响应,让控件只响应一次?
我用的是OnSetCursor函数
BOOL CmyDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
if(pWnd == GetDlgItem(IDC_Internet)) //获得IDC_Internet控件的区域,当光标在控件上时,打开网页。
{
SetCursor(LoadCursor(NULL, IDC_HAND));///当光标在控件上时,光标形状发生变化
ShellExecute(0, NULL, _T("http://hao.360.cn"), NULL, NULL, SW_NORMAL);///打开一个网页
return TRUE;
}
return CDialogEx::OnSetCursor(pWnd, nHitTest, message);
}
执行的结果是控件会连续响应,怎么才能让控件只响应一次,也就是只打开一次网页。我试了加一个bool型的变量,执行后变为false,但是还是不行,一样会响应很多次。强调一下,整个过程不用鼠标的点击,只有移动,并且实现只响应一次。
------解决思路----------------------
我觉得你将操作放到WM_MOUSEHOVER/WM_MOUSELEAVE/WM_MOUSEMOVE中比较好,设置标记,MOUSEHOVE中set,MOUSELEAVE中reset标记。
------解决思路----------------------
那你需要响应MOUSELEAVE消息等而不是点击事件
我用的是OnSetCursor函数
BOOL CmyDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
if(pWnd == GetDlgItem(IDC_Internet)) //获得IDC_Internet控件的区域,当光标在控件上时,打开网页。
{
SetCursor(LoadCursor(NULL, IDC_HAND));///当光标在控件上时,光标形状发生变化
ShellExecute(0, NULL, _T("http://hao.360.cn"), NULL, NULL, SW_NORMAL);///打开一个网页
return TRUE;
}
return CDialogEx::OnSetCursor(pWnd, nHitTest, message);
}
执行的结果是控件会连续响应,怎么才能让控件只响应一次,也就是只打开一次网页。我试了加一个bool型的变量,执行后变为false,但是还是不行,一样会响应很多次。强调一下,整个过程不用鼠标的点击,只有移动,并且实现只响应一次。
------解决思路----------------------
我觉得你将操作放到WM_MOUSEHOVER/WM_MOUSELEAVE/WM_MOUSEMOVE中比较好,设置标记,MOUSEHOVE中set,MOUSELEAVE中reset标记。
------解决思路----------------------
那你需要响应MOUSELEAVE消息等而不是点击事件