在单文档界面(SDI)或多文档界面(MDI)MFC应用程序中,我在视图中创建了一个应用程序范围的定时器。只要应用程序正在运行并且触发一些定期操作,计时器就会打勾。使用基于Dialog的MFC应用程序应用宽周期性任务
如何在基于Dialog的MFC应用程序中执行相同操作?
- 我应该创建线程的定时器(SetTimer与NULL HWND)并传递回调函数吗?
- 我应该创建工作线程吗?我对其他项目的经验是当我尝试从非GUI /工作线程显示一些反馈GUI时,我需要推出自己的“委托”/命令模式和“委托调用者”/命令调用器。工作线程将发送消息(我认为在跨线程边界CMIIW处理消息比直接函数调用安全)到UI线程。而UI线程将成为“委托”/命令调用者。如果没有做到这一点,并确保窗口/对话框有正确的父母会导致bizzare行为,如应用程序突然消失在后台;窗口/对话框显示在当前窗口/对话框的后面,导致当前窗口无响应/不可点击。可能我做错了什么,但是在处理线程时遇到了很多问题。
是否有最佳做法呢?
我知道计时器在基于对话框工作,但我应该把它放在哪里?如果我把它放在对话框中,当对话框被销毁时它会被杀死。我是否应该保持1个对话框始终打开,作为定时器的利基? – 2010-01-29 06:18:43