CWinThread::IsIdleMessage
更新 : 2007 年 11 月
特定のメッセージが生成された後で OnIdle が呼び出されないようにするには、この関数をオーバーライドします。
virtual BOOL IsIdleMessage(
MSG* pMsg
);
パラメータ
- pMsg
処理される現在のメッセージへのポインタ。
戻り値
メッセージを処理した後に OnIdle を呼び出す必要がある場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
既定の実装では、冗長なマウス メッセージや点滅するカレットが生成するメッセージの後では OnIdle を呼び出していません。
アプリケーションが短いタイマを使っていると頻繁に OnIdle が呼び出され、パフォーマンスに問題が生じます。このようなアプリケーションの性能を向上させるには、アプリケーションの CWinApp の派生クラスで IsIdleMessage をオーバーライドして次のように WM_TIMER メッセージを調べます。
BOOL CMyWinApp::IsIdleMessage(MSG* pMsg)
{
if (!CWinApp::IsIdleMessage(pMsg) || pMsg->message == WM_TIMER)
return FALSE;
else
return TRUE;
}
この方法で WM_TIMER を処理すると、短いタイマを使っているアプリケーションのパフォーマンスを向上させることができます。
必要条件
ヘッダー : afxwin.h