我在哪里放置我的MFC程序的逻辑?

时间:2010-05-16 02:16:41

标签: c++ mfc logic

我用C ++创建了一个应用程序核心,我在Visual Studio中编译成了一个静态库。我现在正在为它编写GUI。 我正在使用MFC来做到这一点。我想出了如何映射按钮以执行我的应用程序核心主类的某些方法(即按钮启动和停止)。 然而,核心类应该始终每隔一两秒从外部源采样数据。然后,GUI应在每个样本拍摄后填充一些字段。我似乎无法在像CDialog这样的MFC对象中找到一个位置,我可以不断检查我的类是否已经抓取了数据..然后它是否已将数据放入某些文本框中。

一位朋友建议我在OnInit()例程中创建一个可以解决这个问题的线程,但是这个解决方案并不适合我。

在程序退出之前,是否没有可以放置if语句的地方?

if( coreapp.dataSampleReady() ) {
  // put coreapp.dataItem1() in TextBox1
  // set progress bar to coreapp.dataItem2()
  // etc.
  // reset dataSampleReady
}

2 个答案:

答案 0 :(得分:1)

我猜你可以把它放在OnIdle

最好使用事件驱动的范例,因为轮询系统会过度地吸收CPU功率。因此,您有一个位于WaitForSingleObject的线程。设置dataSampleReady时,您需要做的就是触发线程正在等待的事件。这样你就不会不断地吸收CPU能力来检查某些东西。它将把时间花在其他进程和线程上,直到需要为止。

答案 1 :(得分:1)

你提到“每隔一两秒”,而另一个回答建议“使用事件驱动的范例”。如何在对话框中设置定时器以及定时器触发时,从外部源采样数据。您表明您已经找到了如何映射按钮的事件处理程序,因此将处理程序映射到计时器应该是您的自然扩展。