複製鏈接
請複製以下鏈接發送給好友

IsIdleMessage

鎖定
IsIdleMessage是一種函數,功能是若要避免在產生指定的消息後調用OnIdle函數,應重載該函數 [1] 
中文名
IsIdleMessage
語    法
virtual BOOL IsIdleMessage
參    數
pMsg 指向當前被處理的消息
功    能
避免在產生指定的消息後調用函數

目錄

IsIdleMessage主要介紹

語法:
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消息可以改善使用短定時器的應用程序的性能。

IsIdleMessage示例

/************************************************************
演示函數原型: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;
}
參考資料
  • 1.    MSDN windows高級編程指南