IsIdleMessage

IsIdleMessage是一種函式,功能是若要避免在產生指定的訊息後調用OnIdle函式,應重載該函式。

基本介紹

  • 中文名:IsIdleMessage
  • 語法:virtual BOOL IsIdleMessage
  • 參數:pMsg 指向當前被處理的訊息
  • 功能:避免在產生指定的訊息後調用函式
介紹,示例,

介紹

語法:
virtual BOOL IsIdleMessage(MSG * pMsg);
參數:
pMsg 指向當前被處理的訊息
返回值:
若在處理訊息後調用了OnIdle,返回非零值;否則返回零。
說明:
當產生重複的滑鼠訊息和閃爍游標訊息後,該函式的默認實現並不調用OnIdle。
若應用程式創建了一個短的定時器,OnIdle將被頻繁調用,導致性能上的問題。
為改善這種應用程式的性能,重載應用程式的CWinApp派生類中的IsIdleMessage訊息,
按如下方式檢測WM_TIMER訊息:
BOOL CMyApp::IsIdleMessage(MSG * pMsg)
{
if (!CMyApp::IsIdleMessage(pMsg)||pMsg->message==WM_TIMER)
return FALSE;
else
return true;
}
這種方式處理WM_TIMER訊息可以改善使用短定時器的應用程式的性能。

示例

/************************************************************
演示函式原型:CWinApp::IsIdleMessage( pMsg);
程式功能說明:調用setTimer函式後避免頻繁調用OnIdle以改善性能。
************************************************************/
BOOL CMyApp::IsIdleMessage(MSG * pMsg)
{
//判斷信息pMsg是空閒信息還是setTimer函式發出的信息
if (!CMyApp::IsIdleMessage(pMsg)||pMsg->message==WM_TIMER)
return FALSE;
else
return true;
}

相關詞條

熱門詞條

聯絡我們