术语 | CWinApp::OnIdle | ||||||||||
释义 | CWinApp::OnIdle virtual BOOL OnIdle( LONG lCount ); 返回值:如果要接收更多的空闲处理时间,则返回非零值;如果不需要更多的空闲时间则返回0。 参数:
说明: 如果要执行空闲时处理,则重载这个成员函数。当应用程序的消息队列为空时,OnIdle就在缺省的消息循环中被调用。你可以用重载函数来调用自己的后台空闲处理任务。 OnIdle应返回0以表明不需要更多的空闲处理时间。当消息队列为空时,OnIdle每被调用一次lCount参数就增加,而每处理一条新消息lCount就被复位为0。你可以根据这个计数值调用不同的空闲处理例程。 下面总结了空闲循环处理:
注意: OnIdle的缺省实现更新命令用户接口对象,如菜单项和工具条等,还实现了内部数据结构的清理。因此,如果你重载了OnIdle,你必须用重载版本中使用的lCount值来调用CWinApp::OnIdle。首先调用所有基类的空闲处理(即直到基类的OnIdle返回0)。如果你需要在基类处理完成之前进行一些工作,则应回顾基类的实现以在自己的工作期间选择一个合适的lCount值。 示例: 下面的两个例子演示了OnIdle的用法。 第一个例子处理两个空闲任务,用lCount参数来排列这些任务的优先权。第一个任务优先权较高,一旦可能你就应当执行此任务。第二个任务不十分重要,只有当用户输入有一个较长时间的间歇的时候才应执行此任务。注意其中对基类的OnIdle的调用。第二个例子管理着一组具有不同优先权的空闲任务。 BOOL CMyApp::OnIdle(LONG lCount) { BOOL bMore = CWinApp::OnIdle(lCount); if (lCount == 0) { TRACE("App idle for short period of time\"); bMore = TRUE; } else if (lCount == 10) { TRACE("App idle for longer amount of time\"); bMore = TRUE; } else if (lCount == 100) { TRACE("App idle for even longer amount of time\"); bMore = TRUE; } else if (lCount == 1000) { TRACE("App idle for quite a long period of time\"); // bMore 没有被设为TRUE, 不在需要空闲 // 重要:bMore 没有被设为 FALSE,因为 CWinApp::OnIdle可能还有其它空闲任务要完成。 } return bMore; // 返回TRUE,只要还有其它空闲任务 } 第二个示例: // 在这个例子中,有四个空闲循环任务,它们被赋予 // 不同的优先权,运行的机会不同: // Task1在空闲时总能运行,要求在框架处理它自己的空闲循环任务时没有消息在等候。(lCount为0或1) // Task2 仅当Task1以及运行时才能运行,要求当Task1运行时没有消息在等候。 // Task3和Task4仅当Task1和Task2都运行之后才能运行, // 并且在此期间没有消息在等候。如果Task3能够运行, // 则Task4总是在Task3之后立即运行。 BOOL CMyApp::OnIdle(LONG lCount) { // 在这个例子中,像多数应用程序一样,你应该让基类 // 的CWinApp::OnIdle在你试图进行任何附加的空闲循环 // 过程之前完成它的处理。 if (CWinApp::OnIdle(lCount)) return TRUE; // 基类的CWinApp::OnIdle为lCount保留0和1给框架自己的 // 空闲处理使用。如果你希望与框架平等地共享空闲处理 // 时间,则应替换上面的if语句,直接调用CWinApp::OnIdle, // 然后为lCount的值0和/或1加入一个case语句。首先应当研 // 究基类的实现以理解你的空闲循环任务将会如何与框架的 // 空闲循环处理竞争。 switch (lCount) { case 2: Task1(); return TRUE; // 下一次给 Task2 一个机会 case 3: Task2(); return TRUE; // 下一次给Task3和Task4一个机会 case 4: Task3(); Task4(); return FALSE; // 再次回到空闲循环任务 } return FALSE; } |
||||||||||
随便看 |
|
MFC类库中文详解手册包含4274条MFC类库参考词条,基本涵盖了Microsoft基本类库中的类、全局函数、全局变量和宏的内容,是计算机编程的有利工具。