ボタンが押されたことを知るには、ボタンに番号を付けます。
// // MyApp.h // #define ID_BUTTON 1000 // ボタンID class MyApp : public MyMainWnd{ public: // WM_CREATE void wmCreate(){ CreateWindowEx( NULL, // 拡張スタイル TEXT("BUTTON"), // クラス名 TEXT("ボタン"), // キャプション WS_CHILD | WS_VISIBLE, // スタイル 10, 10, // 位置 100, 100, // サイズ hWnd, // 親ハンドル (HMENU)ID_BUTTON, // メニュー hInst, // インスタンス NULL); } // WM_COMMAND void wmCommand(WPARAM wp){ int wmId = LOWORD(wp); switch(wmId){ case ID_BUTTON: // ボタンID MessageBox(hWnd, TEXT("ボタンが押されました!") , TEXT("確認"), MB_OK); break; } } };
実行画面です。
ボタンが押されたことを知る方法です。 まず、ボタン用の番号を用意します。 ボタンごとに異なる数値にします。
#define ID_BUTTON 1000 // ボタンID
これを、CreateWindowEx関数の、メニューの所へ代入します。 変な感じですが、HMENU 型変数へキャストします。 メインウィンドウのときは、メニューの名前をいれます。
CreateWindowEx(
NULL, // 拡張スタイル
TEXT("BUTTON"), // クラス名
TEXT("ボタン"), // キャプション
WS_CHILD | WS_VISIBLE, // スタイル
10, 10, // 位置
100, 100, // サイズ
hWnd, // 親ハンドル
(HMENU)ID_BUTTON, // メニュー
hInst, // インスタンス
NULL);
そして、ボタンが押されると Windows から WM_COMMANDメッセージが送られてきます。そして、LOWORD(wp) に番号が入っているので、それを調べればボタンが押されたことがわかります。
switch(wmId){
case ID_BUTTON: // ボタンID
MessageBox(hWnd, TEXT("ボタンが押されました!") , TEXT("確認"), MB_OK);
break;
}
今回は、ボタンを押した結果をみるため、MessageBox関数を使いました。