怎样让对话框的按钮不响应LBUTTONDOWN消息 在pretranslatemessage里面判断,如果是鼠标左键就做你想做的事,然后返回就行了。在pretranslatemessage里要用相应的FLAG哈,就是说处理之后直接删除该消息,不往队列里送了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不会吧,我用的时候怎么没出现你说的情况写出你的代码来看看你用的是SDK还是MFC? 重载这个消息不就行了。用Class Wizard很容易的。 对于这个问题,在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; ...} 设置标志行不行?如果Dialog已处理过设置标志为true,在按钮的事件里判断一下标志?最好还是用yb的建议吧 我找到问题了,原来是我在DLG里用了SetCapture(),这样所有的消息都由DLG来处理了.我用了dragonex建议的方法.yb的建议也给了我很多启发.感谢大家的帮忙. 派生CButton类,在处理LBUTTONDOWN消息的函数中,不调用基类函数即可 怎么在标题栏显示菜单 如何销毁Popupmenu 【【罕见,奇怪的树控件问题】】设置根节点与叶子节点风格! 文本框控件数组事件 菜鸟问题 请问:这句话是什么意思? CMapPtrToPtr::GetValueAt是哪儿问到的,我的程序总在这儿报错! 一直在调内存泄漏,无意间在debug窗口发现了其他的信息,那位大侠解释一下是什么意思??(关键词: 调试) 如何重载CMenu的DrawItem()?(高分相送!) Dll中调用非标准控件在C程序中如何使用? 怎样Enable/Disable对话框的按钮? 关于对话框的小问题,急!
写出你的代码来看看
你用的是SDK还是MFC?
用Class Wizard很容易的。
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;
...
}
感谢大家的帮忙.