-
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;
}
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:7次歷史版本
- 最近更新: cfl506540191