読者です 読者をやめる 読者になる 読者になる

CWinApp::OnIdle

MFC

CWinApp::OnIdleは、アイドル状態の時の処理を記述するためのメンバ関数・・・。

CWinApp::OnIdle

WindowsAPIのPeekMessageの頁で、アイドル状態の時にTextOutでウィンドウメッセージが来なかった回数(アイドル処理の回数)を表示した・・・。
MFCにおいてCWinApp::OnIdleは、このアイドル処理の部分である・・・。
ここに処理を書くと、アイドル状態時に実行される・・・。
で、引数にはアイドル処理の回数lCountが自動的に渡される・・・。
lCountは、マウスを動かすなどして、ウィンドウメッセージを発生させ、アイドル状態から抜けると0にリセットされる・・・。

今回はその回数lCountを表示する・・・。

CWinApp_.hで、

InitInstanceとともにOnIdleもオーバーライド・・・。

CWinApp_.cppのOnIdleの定義は、

OnPaint以外での描画なので、m_pMainWndをCClientDCのオブジェクトdcに渡している・・・。

lCountをcstrLCountに文字列としてセットし、dcのTextOutメンバ関数で描画・・・。

今回はlCountが50000以上なら、FALSEを返して、次からアイドル処理が実行されないようにした・・・。
マウスを動かすなどして、ウィンドウメッセージを発生させると、再びアイドル処理が実行されるようになっている・・・。
もちろん、TRUEを返すと、次のアイドル処理も実行される・・・。

実行すると、

f:id:BG1:20150426110756p:plain

lCountが増える・・・。
マウスを動かすと、再び0からスタートとなる・・・。

50000以上になると、

f:id:BG1:20150426110940p:plain

lCountは止まる・・・。
マウスを動かすと、再び0からスタートとなる・・・。

Sample/CWinApp_.h at master · bg1bgst333/Sample · GitHub
Sample/CWinApp_.cpp at master · bg1bgst333/Sample · GitHub
Sample/CFrameWnd_.h at master · bg1bgst333/Sample · GitHub
Sample/CFrameWnd_.cpp at master · bg1bgst333/Sample · GitHub