如果SetTimer的时间间隔为t,其响应事件OnTimer代码执行一遍的时间为T,且T>t。
这样,一次未执行完毕,下一次定时到,这时候程序会如何执行?

可能的情况:
1、丢弃还未执行的代码,开始新的执行;
2、不丢弃,Timer消息进入消息队列排队,等到原来的代码执行完毕后,马上开始新的执行;
3、重入,就是原来的还继续执行,同时又开始一个新的执行;

答案:第二个,或者,第一个丢弃。不过丢弃的情况是, 消息队列满了, 第二次的消息没进去。

void COnTimer1Dlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CString str = "";
str.Format(" %d",i);
for(int k = 0;k<100;k++)
{
TRACE(str);
}
i++;
CDialog::OnTimer(nIDEvent);
}

不是的,你可以这样想,每一个窗口有一个消息队列,收到的消息就存在这里

然后winmain中的那个getmessage循环从队列中取得消息,然后dispatchmessage(其实,

可以认为她就是以消息为参数,调用窗口过程。)然后在去取下一个消息。

所以,第二个wm——timer来了,也只能在队列里面呆着, 等它前面的所有消息

都被处理完毕才会被处理。

另外,wm——timer消息有一个特点,只要消息队列中还有wm——timer(同一个定时器),
那么这个wm——timer就会被丢弃。也就是说,消息队列中最多只有一个wm——timer
(同一个定时器)

DoModal和MessageBox的自身代码里面有消息循环(负责消息取出和处理),当一个MessageBox还存在的时候,CPU还在处理MessageBox内部的代码,当你有任何消息的时候到来,MessageBox内部的代码会负责将之处理掉。

你要是不明白我给你讲!这里只有一个线程,当然只有一个消息循环,只是当你弹出对话框的时候,对话框阻塞了主线程的消息循环,而接替过来了消息循环,因为它的内部也是一个无限的消息接收,派发机制。而你再弹出另一个对话框b的时候,对话框b又会接替过来消息循环,而把第一个对话框阻塞掉。这也是你为什么弹出第2个对话框后第一个对话框变得点击无效了的原因。

http://bbs.csdn.net/topics/110151804

http://bbs.csdn.net/topics/370257632

最新文章

  1. 优先队列实现Huffman编码
  2. html/css基础篇——link和@inport详解以及脚本执行顺序探讨
  3. EasyUI使用tree方法生成树形结构加载两次的问题
  4. 反射IsGenericType
  5. 使用eclipse远程调试Tomcat的方法
  6. vmware安装 ios10.8 过程
  7. 加解密算法二:非对称加解密及RSA算法的实现
  8. Struts2返回Json数据(使用Struts2插件)
  9. hdu 4741 Save Labman No.004 [2013年杭州ACM网络赛]
  10. 通过openssh远程登录时的延迟问题解决
  11. 【JAVAWEB学习笔记】29_文件的上传------commons-fileupload
  12. VB6之借助zlib实现gzip解压缩
  13. jmeter系列------参数关联
  14. 解决Jqyery的Trigger事件中两个按钮相互触发至死循环问题
  15. RTMP规范协议
  16. FFmpeg的H.264解码器源代码简单分析:解码器主干部分
  17. 2.8 hashlib模块
  18. python3读文件时报错UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0x9f in position 2: illegal multibyte sequence
  19. 查看WEB服务器的连接数
  20. java部分基础知识整理----百度脑图版

热门文章

  1. PHP进阶知识
  2. java log4j 日志文件
  3. TP框架---thinkphp基础知识
  4. TCP/IP状态详解
  5. linux rz sz命令
  6. c++中的基本知识点
  7. BZOJ3878: [Ahoi2014&amp;Jsoi2014]奇怪的计算器
  8. 3款Linux网络监视工具
  9. 怎样拆分View Controller进而实现轻量级的View Controller[UIKit]
  10. 一步步玩pcDuino3--mmc下的裸机流水灯