奇怪:OnLButtonUp事件里弹出的对话框还能触发主窗口的OnLButtonUp事件?

guixian310 2008-01-10 12:06:49
我在OnLButtonUp事件里弹出个对话框,但是点击这个对话框,主窗口还会获取鼠标点击信息再次触发OnLButtonUp事件,为什么?怎么解决?
Void CView::OnLButtonUp(nFlags, point)
{
CView::OnLButtonUp(nFlags, point);
CDialog dlg;
}
第一次点击后弹出个对话框,此时焦点应该已经落在对话框上,主窗口不再获取消息,可是点对话框的任何地方都还会触发OnLButtonUp事件导致再弹出个对话框,怪啊
...全文
176 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lczhou 2008-07-15
  • 打赏
  • 举报
回复
改成这样就可以了吧,跟代码的位置也有关系的
void CView::OnLButtonUp(UINT nFlags, CPoint point)
{

CDialog dlg;
dlg.DoModal();
CDialog::OnLButtonUp(nFlags, point);

}
这样是直接响应鼠标的左键的按下和弹起吧?可不可以响应某个按钮的按下和弹起啊?
zhoujianhei 2008-01-10
  • 打赏
  • 举报
回复
看一下,是否有问题
Void CDialog ::OnLButtonUp(nFlags, point)
junheng 2008-01-10
  • 打赏
  • 举报
回复
呵呵,从你这几句代码看出应该没有你说的那个问题,不过我很纳闷你没有写dlg.DoModal()对话框是怎么弹出的呢?
至于WM_LBUTTONUP的响应问题,这里看不出猫腻,问题只可能是在其他地方。
最大的可能性是你把对话框的WM_LBUTTONUP消息也给改写了。也就是说,你编写程序时,一时疏忽,改写了两次OnLButtonUp,一次在视图类,一次在对话框类。
如果有其它问题,我就不清楚了。
Joyfulmath 2008-01-10
  • 打赏
  • 举报
回复
void CView::OnLButtonUp(UINT nFlags, CPoint point)
{
CView::OnLButtonUp(nFlags, point);
CDialog dlg;
dlg.DoModal();
}

同7楼, 没明白.

是不是改为:
void CView::OnLButtonUp(UINT nFlags, CPoint point)
{

CDialog dlg;
dlg.DoModal();
CDialog::OnLButtonUp(nFlags, point);

}
shakaqrj 2008-01-10
  • 打赏
  • 举报
回复
??
只定义两个指针,没有对其操作?
那就没影响才对
guixian310 2008-01-10
  • 打赏
  • 举报
回复
就把这两句话加到你那个LBUP事件里你试试
shakaqrj 2008-01-10
  • 打赏
  • 举报
回复
没看到你的代码,不知道
guixian310 2008-01-10
  • 打赏
  • 举报
回复
呵呵,谢谢关注
CMainFrame *pMainWnd = (CMainFrame *)AfxGetApp()->m_pMainWnd;
CChildFrame *pChildWnd = (CChildFrame *)pMainWnd->MDIGetActive();
这两句话出的毛病
为什么呢?
shakaqrj 2008-01-10
  • 打赏
  • 举报
回复
..还是没碰到
void CTableView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CInqueryDlg dlg;
dlg.DoModal(this);
CFormView::OnLButtonUp(nFlags, point);
}
一切正常
guixian310 2008-01-10
  • 打赏
  • 举报
回复
发现了更奇怪的现象,很有意思,你们可以试下
void CView::OnLButtonUp(UINT nFlags, CPoint point)
{
CView::OnLButtonUp(nFlags, point);
CDialog dlg;
dlg.DoModal();
}
第一次弹出对话框,一切正常,点OK退出对话框,再点VIEW,又弹出个对话框,这时候在对话框上点一下也会弹出对话框(你可以想办法区分下先弹出的对话框)
shakaqrj 2008-01-10
  • 打赏
  • 举报
回复
试过了
没问题
你运行一下,不用调试
guixian310 2008-01-10
  • 打赏
  • 举报
回复
弹出对话框后,点对话框没问题。。额,我再仔细查下后面
guixian310 2008-01-10
  • 打赏
  • 举报
回复
对,是手写的,我只是想列举下关键的语句
你们可以试下嘛,在OnLButtonUp事件里写个弹出对话框,然后在OnLButtonUp第一句设个断点调试下
shaxing 2008-01-10
  • 打赏
  • 举报
回复
Void CView::OnLButtonUp(nFlags, point)
{
CView::OnLButtonUp(nFlags, point);

AfxMessageBox("");//加了这句后就一切正常了
CDialog dlg;
dil.DoModal();
}
这段代码是手写得吧。怎么两句是一样的?
shaxing 2008-01-10
  • 打赏
  • 举报
回复
鉴定完毕,没这个问题。估计是不小心在哪加了东西。仔细看看
shakaqrj 2008-01-10
  • 打赏
  • 举报
回复
Void CView::OnLButtonUp(nFlags, point)
{

CDialog dlg;
dil.DoModal();
CView::OnLButtonUp(nFlags, point);
}
我不懂这句为什么要放在开头
guixian310 2008-01-10
  • 打赏
  • 举报
回复
没有Void CDialog ::OnLButtonUp(nFlags, point)

有个很奇怪的现象
Void CView::OnLButtonUp(nFlags, point)
{
CView::OnLButtonUp(nFlags, point);
AfxMessageBox("");//加了这句后就一切正常了
CDialog dlg;
dil.DoModal();
}
而且调试的时候也正常
实在分析不出来为什么会这样

16,473

社区成员

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

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

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