「ボタン」を作成するときに、
「CreateWindow」関数「CreateWindowEx」関数の
「メニューハンドル」の引数の所に、識別のための「値」を記述しておきます。
「CreateWindow」関数「CreateWindowEx」関数の「メニューハンドル」の記述場所
CreateWindow(
wc.lpszClassName, // ウィンドウクラス名
_T("Sample Program"), // タイトルバーに表示する文字列
WS_OVERLAPPEDWINDOW, // ウィンドウの種類
CW_USEDEFAULT, // ウィンドウを表示する位置(X座標)
CW_USEDEFAULT, // ウィンドウを表示する位置(Y座標)
CW_USEDEFAULT, // ウィンドウの幅
CW_USEDEFAULT, // ウィンドウの高さ
NULL, // 親ウィンドウのウィンドウハンドル
NULL, // メニューハンドル
hInst, // インスタンスハンドル
NULL // その他の作成データ
);
「メニューハンドル」に「値」を指定した
「ボタン」が押されると、
「メニューハンドル」の所に記述した「値」が、
ユーザーの行動を見張っている
「ウィンドウプロシージャ」関数に伝えられ、
伝えられた「値」を条件分岐で認識することで、
それぞれの「ボタン」を押された時の反応を
プログラミングすることができる。
「ウィンドウプロシージャ」関数の「ボタン」「行動」を識別する書式
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_COMMAND:
{
int wmId = LOWORD(wParam);
switch (wmId)
{
case 1:
{
「ボタン」を押された時の反応を指示するプログラムコードを記述するエリア
「ボタン」を押されたら、どうするかを、ここに記述します。
}
break;
}
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
「ウィンドウプロシージャ」関数の中で、
ユーザーの行動の区分が保存されていて、
「ユーザーのアクション」を示す「WM_COMMAND」を
「switch」構文などで、認識し条件分岐することで、
各ボタンへの対応を記述することが可能になる。
「WM_COMMAND」まで区分ができ、
どの「ボタン」「行動」かを区分するには、
押された「ボタン」の「メニューハンドル」が保存されている
「LOWORD(wParam)」の値を条件分岐し、
ボタンへの反応を記述することができる。
上記のサンプルコードでは、
「メニューハンドル」に「1」を指定したので、
「case 1:」と条件を絞ることで、
「ボタン」を押された時の反応を指示するプログラムコードを、
記述することが可能となる。
Back