山本ワールド
Windowsプログラミング
アルゴリズム Vitual C++ 2008/2013によるWin32/Win64 APIレベルのプログラム 基礎 Vitual C++ 2008/2013によるAPIレベルのプログラム(32/64bit) Wix3でインストーラーを作る Visual C++ 2008 Standard Editonによるフォームアプリケーションのプログラム(32/64bit) Vitual C++ 2008 Standard EditonによるAPIレベルのプログラム(32/64bit) Windows 7対応 Visual C++ 2008 ExpressによるAPIレベルのプログラム Visual C++ 2005 ExpressによるAPIレベルのプログラム Visual C++ Versiosn 5 BORLAND C++ Windowsプログラム全般 Excel VBA その他メッセージループ
概要
Windowsは入力等のイベントが発生するとアプリケーションにメッセージを送付します。
メッセージはキューに保管されます。アプリケーションはメッセージを取り出し、該当ウィンドウにメッセージを配信します。
メッセージの取り出しから配信までループで処理を行いウィンドウから終了メッセージが届くと、ループを抜けるように記述します。 これらの一連の処理は、通常にCreateWindow APIの後に記述しこれをメッセージループと呼んでいます。
以下の記述がメッセージループの処理です。
TranslateMessage APIは仮想キーメッセージを実際の文字メッセージへ変換します
仮想キーコードは、キーボードをそのまま定数に置き換えたイメージです。例えばShiftキーと同時に押した場合の大文字・小文字の変換やCtrlキーを同時に押した場合などの処理などがされていない状態です。例として以下にいくつかの定数を示します。
メッセージはキューに保管されます。アプリケーションはメッセージを取り出し、該当ウィンドウにメッセージを配信します。
メッセージの取り出しから配信までループで処理を行いウィンドウから終了メッセージが届くと、ループを抜けるように記述します。 これらの一連の処理は、通常にCreateWindow APIの後に記述しこれをメッセージループと呼んでいます。
以下の記述がメッセージループの処理です。
MSG lpMsg;
while (GetMessage(&lpMsg, NULL, 0, 0)) {
TranslateMessage(&lpMsg);
DispatchMessage(&lpMsg);
}
GetMessage APIはスレッドへのメッセージが発生するまで待機し、メッセージが発生したときにlpMsgにメッセージを格納して制御を返します。TranslateMessage APIは仮想キーメッセージを実際の文字メッセージへ変換します
仮想キーコードは、キーボードをそのまま定数に置き換えたイメージです。例えばShiftキーと同時に押した場合の大文字・小文字の変換やCtrlキーを同時に押した場合などの処理などがされていない状態です。例として以下にいくつかの定数を示します。
VK_BACK 0x08 BackSpaceキー VK_TAB 0x09 Tabキー VK_RETURN 0x0D Enterキー VK_SHIFT 0x10 Shiftキー VK_CONTROL 0x11 Ctrlキー VK_MENU 0x12 Altキー VK_CAPITAL 0x14 Caps Lockキー VK_KANA 0x15 英数カナキー VK_UP 0x26 ↑キー VK_RIGHT 0x27 →キー VK_DOWN 0x28 ↓キー VK_3 0x33 3キー VK_NUMPAD0 0x60 テンキーの0キー VK_F1 0x70 F1キーDispatchMessage APIはウィンドウプロシージャーへメッセージを送ります。
Copyright (C) 2012 山本ワールド All Rights Reserved.