小弟最近无聊,想写个俄罗斯方块玩玩,中途遇到几个问题,很是困惑,忘大侠指点~~
1、一直以为ShowDialog是重新开了个线程,但刚才测试了下,新弹出的窗体还是在原先的线程上运行。看了ShowDialog的源码,发现其是用SendMessage来完成的,但是看了网上的其他帖子又说ShowDialog是利用PostMessage来完成,哪种说法正确呢?
2、ShowDialog后虽然原先的窗体被挂起了,但如果原先窗体上有一个定时器,ShowDialog之后定时器事件依然会继续执行,Timer的实现原理是什么?
1、一直以为ShowDialog是重新开了个线程,但刚才测试了下,新弹出的窗体还是在原先的线程上运行。看了ShowDialog的源码,发现其是用SendMessage来完成的,但是看了网上的其他帖子又说ShowDialog是利用PostMessage来完成,哪种说法正确呢?
2、ShowDialog后虽然原先的窗体被挂起了,但如果原先窗体上有一个定时器,ShowDialog之后定时器事件依然会继续执行,Timer的实现原理是什么?
解决方案 »
- 请求高手支援(索引超出了数组界限。)
- 最简单的label和Button
- 兄弟们呀,给帮帮忙啊,关键插入flash的问题,再加100分啦!
- 请问要完成这个任务需要哪些知识
- asp.net和winform程序调用同样的接口问题
- C#如何操作SQLServer中float类型字段
- 子窗体如何向父窗体传值?
- 我编的一个学习小程序,需要用到 Webbrowser显示网页,但是显示乱码
- ASP.NET、C#Windows窗体与web窗体、ActiveX控件、客户端下载、数据输入的易用性■■■■■
- 在水晶报表里如何将一页里分成两个半页(左右两个半页)来显示查询信息啊?
- 有没有好的.net winform自动更新工具
- 如何返回不同类型的值?
WinForm的timer是靠WM_TIMER消息的,也就是说你跟系统注册一个timer,系统每隔一定时间将一个
WM_TIMER消息放到窗口的消息队列中。2.关于ShowDialog()
其实就是个模态对话框,其实模态对话框用的就是父对话框的消息队列,模态对话框的窗口函数(WndProc)会去处理父窗口消息队列中的消息包括WM_TIMER
所以,就算父窗体被挂起,父窗体的消息依然会被处理