次の方法で共有


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

参照

参照

CWinThread クラス

階層図

その他の技術情報

CWinThread のメンバ