关于OnTIMER消息(求助)

tanling_zero 2010-03-27 01:56:35
void CCZkvodDlg::OnTimer(UINT_PTR nIDEvent)
{
//我在这里弹出对话框
m_Digle=new CDigle();
m_Digle->DoModal();
KillTimer(m_timer);
CDialog::OnTimer(nIDEvent);
}
上面的代码有个死循环 它会不停的调用这两句
m_Digle=new CDigle();
m_Digle->DoModal();
我把这两句话删除之后
里面的代码都能实现 也不会造成死循环

这是为什么呢?

补充 vc基于对话框 我为了实现:先弹出主对话框后自动再弹出一个小对话框
至于OnCreate()和OnInitDialog() 都是初始化的地方,我也试过了 这样会造成先弹出小对话框


希望各位大虾,指教一下新手小弟! 谢谢
...全文
132 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
BinboWang1987 2010-03-28
  • 打赏
  • 举报
回复
进入后先KillTimer
shuice 2010-03-28
  • 打赏
  • 举报
回复
因为GetMessage是以线程相关的
弹出来的对话框消息线程和主对话框线程是同一个
当弹出来的对话框消息通过GetMessage得到主窗口消息
得到WM_TIMER的时候,又可以执行OnTimer了,
可以在第N次弹出来的时候下断点看看栈
taotao714 2010-03-27
  • 打赏
  • 举报
回复
先执行KillTimer(m_timer);
笨笨仔 2010-03-27
  • 打赏
  • 举报
回复
1、先关定时器
2、如果你想实现用DoModal()打开一个窗口做提示,可以在窗口中设置一个定时器,延时后关闭该窗口。
3、使用其它方式实现
hacici 2010-03-27
  • 打赏
  • 举报
回复
Killtimer要先执行!
ccpaishi 2010-03-27
  • 打赏
  • 举报
回复
你在定时器里搞,每次进入之后就会起来无数的对话框。。。。
tanling_zero 2010-03-27
  • 打赏
  • 举报
回复
先KillTimer 以前弹出来的窗口还是在运行中!谢谢![Quote=引用 4 楼 arong1234 的回复:]
因为你的KillTimer只有等那个Dialog.DoModal返回(也就是你关闭那个窗口后)才执行,而你很可能很长时间都不关闭那个窗口

2. 你如果domodal弹出对话框,你后弹出的窗口会使得以前弹出的窗口无法工作,所以最好还是重新思考一下自己的设计,为什么你需要它自动弹出来?


引用 2 楼 tanling_zero 的回复:
在线等 两个问题


1.为什么在OnTi……
[/Quote]
arong1234 2010-03-27
  • 打赏
  • 举报
回复
因为你的KillTimer只有等那个Dialog.DoModal返回(也就是你关闭那个窗口后)才执行,而你很可能很长时间都不关闭那个窗口

2. 你如果domodal弹出对话框,你后弹出的窗口会使得以前弹出的窗口无法工作,所以最好还是重新思考一下自己的设计,为什么你需要它自动弹出来?

[Quote=引用 2 楼 tanling_zero 的回复:]
在线等 两个问题


1.为什么在OnTimer中弹出对话框 会造成弹出无限个Dialog?

2.在那里调用 Dialog.DoModal 会实现在主对话框弹出来之后 ,再自动弹出来
[/Quote]
tanling_zero 2010-03-27
  • 打赏
  • 举报
回复
谢谢![Quote=引用 1 楼 wxhxj0268 的回复:]
进入后先KillTimer()定时器
[/Quote]
tanling_zero 2010-03-27
  • 打赏
  • 举报
回复
在线等 两个问题


1.为什么在OnTimer中弹出对话框 会造成弹出无限个Dialog?

2.在那里调用 Dialog.DoModal 会实现在主对话框弹出来之后 ,再自动弹出来
笨笨仔 2010-03-27
  • 打赏
  • 举报
回复
进入后先KillTimer()定时器

16,472

社区成员

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

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

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