PeekMessageA 関数 (winuser.h)
キューに登録されていない受信メッセージをディスパッチし、スレッド メッセージ キューでポストされたメッセージを確認し、メッセージ (存在する場合) を取得します。
構文
BOOL PeekMessageA(
[out] LPMSG lpMsg,
[in, optional] HWND hWnd,
[in] UINT wMsgFilterMin,
[in] UINT wMsgFilterMax,
[in] UINT wRemoveMsg
);
パラメーター
[out] lpMsg
型: LPMSG
メッセージ情報を受信する MSG 構造体へのポインター。
[in, optional] hWnd
型: HWND
メッセージを取得するウィンドウへのハンドル。 ウィンドウは現在のスレッドに属している必要があります。
hWnd
[in] wMsgFilterMin
型: UINT
調べるメッセージの範囲内の最初のメッセージの値。 WM_KEYFIRST (0x0100) を使用して、最初のキーボード メッセージを指定するか、WM_MOUSEFIRST (0x0200) を使用して最初のマウス メッセージを指定します。
wMsgFilterMin と wMsgFilterMax の両方が 0 の場合、PeekMessage は使用可能なすべてのメッセージを返します (つまり、範囲のフィルター処理は実行されません)。
[in] wMsgFilterMax
型: UINT
調べるメッセージの範囲内の最後のメッセージの値。 WM_KEYLAST を使用して、最後のキーボード メッセージを指定するか、最後のマウス メッセージを指定する WM_MOUSELAST を使用します。
wMsgFilterMin と wMsgFilterMax の両方が 0 の場合、PeekMessage は使用可能なすべてのメッセージを返します (つまり、範囲のフィルター処理は実行されません)。
[in] wRemoveMsg
型: UINT
メッセージの処理方法を指定します。 このパラメーターには、次の値のうち 1 つ以上を指定できます。
価値 | 意味 |
---|---|
PM_NOREMOVE0x0000 |
PeekMessageによる処理後、キューからメッセージ |
PM_REMOVE0x0001 |
PeekMessageで処理した後、キューからメッセージ |
PM_NOYIELD0x0002 |
呼び出し元がアイドル状態になるまで待機しているスレッドをシステムが解放できないようにします (waitForInputIdle |
既定では、すべてのメッセージの種類が処理されます。 特定のメッセージのみを処理するように指定するには、次の 1 つ以上の値を指定します。
価値 | 意味 |
---|---|
PM_QS_INPUT(QS_INPUT << 16) |
マウスとキーボードのメッセージを処理します。 |
PM_QS_POSTMESSAGE((QS_POSTMESSAGE \| QS_HOTKEY \| QS_TIMER) << 16) |
タイマーやホットキーなど、投稿されたすべてのメッセージを処理します。 |
PM_QS_PAINT(QS_PAINT << 16) |
描画メッセージを処理します。 |
PM_QS_SENDMESSAGE(QS_SENDMESSAGE << 16) |
送信されたすべてのメッセージを処理します。 |
一覧表示されている QS_
フラグとメッセージの種類の詳細については、GetQueueStatus ドキュメント 参照してください。
戻り値
型: BOOL
メッセージが使用可能な場合、戻り値は 0 以外です。
使用可能なメッセージがない場合、戻り値は 0 です。
備考
PeekMessage は、IsChild 関数で指定された、hWnd パラメーターまたはその子によって識別されたウィンドウに関連付けられたメッセージを取得します。また、wMsgFilterMin および wMsgFilterMax パラメーターによって指定されたメッセージ値の範囲内で取得されます。 アプリケーションでは、
PeekMessage
この呼び出し中に、システムは保留中
PeekMessage 関数は、通常、キューから WM_PAINT メッセージを削除しません。
WM_PAINT メッセージは、処理されるまでキューに残ります。 ただし、
最上位のウィンドウが数秒間以上メッセージへの応答を停止した場合、システムはウィンドウが応答していないと見なし、同じ z オーダー、位置、サイズ、およびビジュアル属性を持つゴースト ウィンドウに置き換えます。 これにより、ユーザーはそれを移動したり、サイズを変更したり、アプリケーションを閉じたりすることができます。 ただし、アプリケーションが実際に応答しないため、これらは唯一のアクションを使用できます。 アプリケーションがデバッグ中の場合、システムはゴースト ウィンドウを生成しません。
DPI 仮想化
この API は DPI 仮想化には参加しません。 出力は、メッセージが対象としているウィンドウのモードです。 呼び出し元のスレッドは考慮されません。例
例については、「メッセージ キューのを調べる
手記
winuser.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして PeekMessage を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | winuser.h (Windows.h を含む) |
ライブラリ | User32.lib |
DLL | User32.dll |
API セットの | ext-ms-win-ntuser-message-l1-1-0 (Windows 8 で導入) |
関連項目
概念
GetMessage の
IsChild の
その他のリソース を
リファレンス
WaitForInputIdle の
WaitMessage の