基于对话框的两个按钮类中LButtonDown和其它的消息响应为什么不一样???

jimmy109283 2012-05-02 02:49:44
本人初学阶段还望赐教!

1 对话框中置两个按钮OPEN和CLOSE,添加基于CButton的派生类CBtn的两个按钮的成员变量m_btn1和m_btn2。

2 在CBtn类中添加LButtonDown,OnLButtonDblClk,OnMouseMove的消息响应。

3 单击按钮后void CBtn::OnLButtonDown(UINT nFlags, CPoint point)响应,为什么再单击对话框的其它地方它仍然响应?如果开始先单击对话框的其他地方的话它不会响应。

4 为什么MouseMove和LButtonDblClk的消息响应函数不会出现这种情况?



void CBtn::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// MessageBox("OnLButtonDown"); //测试
CButton::OnLButtonDown(nFlags, point);
}

void CBtn::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// MessageBox("OnMouseMove"); //测试
CButton::OnMouseMove(nFlags, point);
}

void CBtn::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
MessageBox("OnLButtonDblClk"); //测试
CButton::OnLButtonDblClk(nFlags, point);
}
...全文
69 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimmy109283 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 2 楼 的回复:
我想了解出现这个问题的原因是messagebox的问题吗?不是LButtonDown,OnLButtonDblClk,OnMouseMove这三个消息不同导致的。

是的,MessageBox有自己的消息循环,会阻塞父窗口的部分消息,你或者把MessageBox放到CButton::OnLButtonDown(...);的下面调用而不是之前调用。
[/Quote]
第一次求助,非常感谢了!
Eleven 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
我想了解出现这个问题的原因是messagebox的问题吗?不是LButtonDown,OnLButtonDblClk,OnMouseMove这三个消息不同导致的。
[/Quote]
是的,MessageBox有自己的消息循环,会阻塞父窗口的部分消息,你或者把MessageBox放到CButton::OnLButtonDown(...);的下面调用而不是之前调用。
jimmy109283 2012-05-02
  • 打赏
  • 举报
回复
我想了解出现这个问题的原因是messagebox的问题吗?不是LButtonDown,OnLButtonDblClk,OnMouseMove这三个消息不同导致的。
Eleven 2012-05-02
  • 打赏
  • 举报
回复
void CBtn::OnLButtonDown(UINT nFlags, CPoint point)  
{
// TODO: Add your message handler code here and/or call default
MessageBox("OnLButtonDown"); //测试
// 加上
PostMessage(WM_CANCELMODE);

CButton::OnLButtonDown(nFlags, point);
}

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧