最終更新:2015-03-31 (火) 15:46:40 (3306d)
PeekMessage
Top / PeekMessage
プログラムにメッセージが送られているか調べる
スレッドのメッセージキューにポスト済みメッセージが存在するかどうかをチェックし、存在する場合は、指定された構造体にそのメッセージを格納します。
BOOL PeekMessage( LPMSG lpMsg, // メッセージ情報 HWND hWnd, // ウィンドウのハンドル UINT wMsgFilterMin, // 最初のメッセージ UINT wMsgFilterMax, // 最後のメッセージ UINT wRemoveMsg // 削除オプション );
wRemoveMsg?
- メッセージの処理方法を指定します。
// メッセージの処理方法オプション private enum PeekMsgOption { PM_NOREMOVE = 0, // 処理後、メッセージをキューから削除しない PM_REMOVE // 処理後、メッセージをキューから削除する }
メモ
- メッセージが送られていたら、後はメッセージループと同様にGetMessageでメッセージを取得(同時にメッセージキューからメッセージを削除)
while (1) { /* メインループ */ if (PeekMessage (&msg,NULL,0,0,PM_NOREMOVE)) { if (!GetMessage (&msg,NULL,0,0)) /* メッセージ処理 */ return msg.wParam ; TranslateMessage(&msg); DispatchMessage(&msg); }
System.Windows.Forms.Application.DoEvents
bool peeked = UnsafeNativeMethods.PeekMessage(ref msg, NativeMethods.NullHandleRef, 0, 0, NativeMethods.PM_NOREMOVE);