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

whiterabbit 2000-02-14 06:33:00
在基于对话框的应用中给对话框添加了响应LBUTTONDOWN消息的函数,但是发现
这样做在点击对话框的按钮时也会进入LBUTTONDOWN的函数,而且消息处理似乎到此为止.
ONOK函数不再被调用.现在只能在LBUTTONDOWN函数中检查点击点是否在BUTTON的窗口中,
如果否才进行处理.
请问又什么简单(或者标准)方法吗?
...全文
363 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
forgettor 2000-02-15
  • 打赏
  • 举报
回复
设置标志行不行?如果Dialog已处理过设置标志为true,在按钮的事件里判断一下标志?最好还是用yb的建议吧
yb 2000-02-15
  • 打赏
  • 举报
回复
对于这个问题,在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;
...
}
Hover 2000-02-15
  • 打赏
  • 举报
回复
派生CButton类,在处理LBUTTONDOWN消息的函数中,不调用基类函数即可
whiterabbit 2000-02-15
  • 打赏
  • 举报
回复
我找到问题了,原来是我在DLG里用了SetCapture(),这样所有的消息都由DLG来处理了.我用了dragonex建议的方法.yb的建议也给了我很多启发.
感谢大家的帮忙.
sintony 2000-02-14
  • 打赏
  • 举报
回复
重载这个消息不就行了。
用Class Wizard很容易的。
qiujoe 2000-02-14
  • 打赏
  • 举报
回复
不会吧,我用的时候怎么没出现你说的情况
写出你的代码来看看
你用的是SDK还是MFC?
dragonex 2000-02-14
  • 打赏
  • 举报
回复
在pretranslatemessage里面判断,如果是鼠标左键就做你想做的事,然后返回就行了。在pretranslatemessage里要用相应的FLAG哈,就是说处理之后直接删除该消息,不往队列里送了。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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