C++ による Windows プログラミングの学習 1-2 ウィンドウメッセージ

MSDN ライブラリ>Windows 開発>C++ による Windows プログラミングの学習>モジュール 1. 初めての Windows プログラム>ウィンドウメッセージ
https://msdn.microsoft.com/ja-jp/library/ff381405(v=vs.85).aspx

GetMessage()
https://msdn.microsoft.com/ja-jp/library/cc364699.aspx

TranslateMessage()
https://msdn.microsoft.com/ja-jp/library/cc364841.aspx

DispatchMessage()
https://msdn.microsoft.com/ja-jp/library/cc410766.aspx

// メッセージ ループを実行する
MSG msg = {};
while (GetMessage(&msg, NULL, 0, 0))
{
	TranslateMessage(&msg);
	DispatchMessage(&msg);
}

GUI アプリケーションはユーザーとオペレーティング システムによるさまざまなイベントに応答しなければなりません。

  • ユーザーによるイベント:
  • マウス クリック、キー操作、タッチスクリーン ジェスチャ,etc…

  • オペレーティング システムによるイベント:
  • プログラムの “外部” から行われ、プログラムの動作に影響を与えるすべてのイベント。
    ハードウェアデバイスの接続、スリープ、休止状態、etc…

Windows ではオペレーティング システムは、メッセージを用いてアプリケーションとの対話を行います。
ウィンドウを作成するスレッドごとに,メッセージ用のキューが作成されます。
このキューが、そのスレッドで作成されるすべてのウィンドウに向けられるメッセージを保持します。

GetMessage()メソッドで呼び出したスレッドのキューからメッセージを取り出し
DispathMessage()メソッドは、そのメッセージを処理するため、
適切なウィンドウのウィンドウプロシージャを呼び出します。
TransMessage()メソッドはキーボード入力に関連付けられており、これがキー操作 (キーを押す、キーを離す) を文字に変換します。DispatchMessage の直前に呼び出すということだけ覚えておけば、この関数の実際の処理を理解する必要はありません。

GetMessage()はキューにメッセージがなかった場合、メッセージが追加されるまで待機してから
そのメッセージを取り出します、
またメッセージが WM_QUIT の時0を返しwhileループを抜けます
それメッセージの値がそれ以外の時0以外の値を返し、ループが続きます。

広告

akatukisiden について

フリーランスプログラマ 使用言語はC++,C#とそのつなぎのC++/CLI 専門はクライアントアプリ開発
カテゴリー: C++, WinAPI タグ: , , , , パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中