启动MSDN Libray 并切换到要查看的函数信息页
面上。
2.3.2 Run()函数
应用程序的大部分时间都是在应用程序类的Run()成员函数中进行处理。WinMain()函数
在初始化应用程序实例后,就调用Run()函数来处理消息循环。
图2-16 Run 成员函数的消息循环
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·22·
Run()成员函数不断执行消息循环,检查消息队列中有没有消息。如果有消息,Run()函
数将其派遣,jiāo由框架去处理,然后返回继续消息循环。如果没有消息,Run()函数将调用
OnIdle()函数来执行用户或框架在空闲时要执行的工作,如用户接口更新消息处理等。如果既
没有消息要处理,也没有空闲时的处理工作要做,则应用程序将一直等待,直到有事件发生。
应用程序结束时,Run()函数将调用ExitInstance()函数使应用程序退出。消息循环的流程图如
图2-16 所示。
Run()函数很少被重载,但是也可以重载它以提供特殊的功能,HelloMFC 中的默认Run()
函数定义如下:
int CHelloMFCApp::Run()
{
return CWinApp::Run();
}
2.3.3 ExitInstance()函数
ExitInstance()函数是在用户退出应用程序的运行实例时由Run()函数调用的。
框架在Run()成员函数内部调用这个函数以退出应用程序的实例。此函数只能在Run()
成员函数内部调用。这个函数的默认实现将框架的选项写入应用程序的.ini 文件。重载这个
函数可以在应用程序退出的时候执行一些清除cāo作。
HelloMFC 中默认的ExitInstance()函数定义如下:
int CHelloMFCApp::ExitInstance()
{
return CWinApp::ExitInstance();
}
返回值表示应用程序的退出码,0 表示没有错误,大于0 的值表示有错误。这个值被用
作WinMain 的返回值。
2.3.4 OnIdle()函数
OnIdle()函数是在应用程序的消息队列中没有消息时由Run()函数调用的。
如果要执行空闲时处理,则必须重载这个成员函数。当应用程序的消息队列为空时,
OnIdle 就在默认的消息循环中被调用,可以重载这个函数来调用后台空闲处理任务。
HelloMFC 中默认的OnIdle()函数定义如下:
BOOL CHelloMFCApp::OnIdle(LONG lCount)
{
return CWinApp::OnIdle(lCount);
}
其中lCount 参数是一个计数值,当应用程序的消息队列为空,OnIdle()函数被调用时,
该计数值就增加1。每当一条新消息被处理时,该计数值就被复位