Ontimer问题求教!
设置一个定时器,比如2秒,在Ontimer里弹出一个对话框,如果弹出的对话框不关闭,也会连续的弹出。
我的理解是程序本身是单线程的,一个ontimer消息处理还没有结束,为什么会有新的ontimer的消息进行处理呢?
另外,如果我在ontimer里调用一个函数f(),这个f()函数执行的时间很长,超过了定时器的周期,那会不会出现f()函数被进入多次呢?谢谢!
[解决办法]
现在我把自己总结的说下!
当你在主消息循环的消息处理函数中弹出一个模态对话框!
他阻塞了主消息循环!
然后他自己创建一个消息循环来继续当前线程的消息处理!
你这时可以把主窗口关闭了!
但是因为这个弹出的模态对话框还在!它阻塞了winmain这个主消息循环!
所以程序不会退出!
说的应该没有错吧!
[解决办法]
刚上线,cymvp()的例子肯定是下面的先弹出,不过因为Sleep(3000)的缘故,所以先后很不明显,基本区分不出来。
To LS,zhejiang9(Why not?)总结的很对阿,“你这时可以把主窗口关闭了!”这句话没有问题,确实可以关闭主对话框,而且程序不会退出的,不信你可以试试关不关的掉。另外LS说的递归的理解方式可以说跟我是不谋而合,个人感觉就是一种“变相”的递归
[解决办法]
我觉得是这样,有时候眼睛看到的弹出对话框的顺序可能会不太准,建议楼主用断点跟踪一下再看一下顺序,我也拿不准