CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

怎样让对话框的按钮不响应LBUTTONDOWN消息

楼主whiterabbit()2000-02-14 18:33:00 在 VC/MFC / 基础类 提问

在基于对话框的应用中给对话框添加了响应LBUTTONDOWN消息的函数,但是发现  
  这样做在点击对话框的按钮时也会进入LBUTTONDOWN的函数,而且消息处理似乎到此为止.  
  ONOK函数不再被调用.现在只能在LBUTTONDOWN函数中检查点击点是否在BUTTON的窗口中,  
  如果否才进行处理.  
  请问又什么简单(或者标准)方法吗? 问题点数:50、回复次数:7Top

1 楼dragonex(dragonex)回复于 2000-02-14 18:43:00 得分 20

在pretranslatemessage里面判断,如果是鼠标左键就做你想做的事,然后返回就行了。在pretranslatemessage里要用相应的FLAG哈,就是说处理之后直接删除该消息,不往队列里送了。Top

2 楼qiujoe(迷糊)回复于 2000-02-14 21:52:00 得分 5

不会吧,我用的时候怎么没出现你说的情况  
  写出你的代码来看看  
  你用的是SDK还是MFC?Top

3 楼sintony()回复于 2000-02-14 23:47:00 得分 0

重载这个消息不就行了。  
  用Class   Wizard很容易的。Top

4 楼yb()回复于 2000-02-15 10:21:00 得分 20

对于这个问题,在MFC中有两种解决方法:  
  1.从CButton继承一个你自己的Button类,然后重载OnLButtonDown消息响应函数,在OnLButtonDown中  
  自己返回TRUE,不要调用它的缺省处理函数。这种方法比较麻烦,但是具有良好的程序结构,程序的  
  扩展性也很好,在这种方法中,Button实际上响应了WM_LBUTTONDOWN消息,但是你可以把它做的就像没  
  有响应一样,就是说,它的响应就是没有响应:  
  class   CYourButton:public   CButton{  
  ...  
  }  
  void   CYourDlg::OnLButtonDown(UINT   nFlags,   CPoint   point)  
  {  
          ...  
          return   TRUE;  
  }  
   
  2.在你的Dialog的WM_LBUTTONDOWN消息响应函数OnLButtonDown中对Mouse的坐标进行判断,如果在你要  
  处理的Button中,就返回TRUE。这种方法简单易用,但是扩展性很差,在这种方法中,你的Button根本就  
  不会收到WM_LBUTTONDOWN消息:  
  BOOL   CYourDlg::PreTranslateMessage(MSG*   pMsg)    
  {  
  CRect rButtonRect;  
  CButton   *pButton   =   (CButton*)GetDlgItem(   IDC_YOURID   );  
  pButton->GetClientRect(   &rButtonRect   );  
  pButton->ClientToScreen(   &rButtonRect   );  
  ClientToScreen(   &point   );  
  if(   rButtonRect.PtInRect(point)   )  
  return   TRUE;  
  ...  
  }  
  Top

5 楼forgettor()回复于 2000-02-15 11:05:00 得分 5

设置标志行不行?如果Dialog已处理过设置标志为true,在按钮的事件里判断一下标志?最好还是用yb的建议吧Top

6 楼whiterabbit()回复于 2000-02-15 16:05:00 得分 0

我找到问题了,原来是我在DLG里用了SetCapture(),这样所有的消息都由DLG来处理了.我用了dragonex建议的方法.yb的建议也给了我很多启发.  
  感谢大家的帮忙.Top

7 楼Hover(翔)回复于 2000-02-15 18:01:00 得分 0

派生CButton类,在处理LBUTTONDOWN消息的函数中,不调用基类函数即可Top

相关问题

  • 对话框中的按钮响应??
  • 还有什么别的办法响应对话框上的按钮事件吗??
  • 请高手指教:怎么为对话框上的按钮加上键盘响应!
  • 为何对话框上添加的button按钮双击无法添加响应事件
  • 请问怎样响应保存对话框中的保存按钮的单击事件啊?
  • 请问我的主对话框无法响应tab contol 里面的按钮消息?
  • 对话框如何响应按键消息?我想用来做按钮快捷键(在线等)
  • 对话框上我放了个按钮和编辑框,为何编辑框有焦点时候,能响应:ON_COMMAND(IDOK,OnNewEnter),而按钮有焦点
  • 对话框上有一个 ListCtrl,怎么在上面响应鼠标左键按下的消息(WM_LBUTTONDOWN)
  • 怎样Enable/Disable对话框的按钮?

关键词

  • 函数
  • 消息
  • lbuttondown
  • 响应
  • 对话框
  • rbuttonrect
  • 按钮
  • cbutton
  • pbutton
  • onlbuttondown

得分解答快速导航

  • 帖主:whiterabbit
  • dragonex
  • qiujoe
  • yb
  • forgettor

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo