コントロール

ボタンが押されたことを知る(win632)

ボタンが押されたことを知るには、ボタンに番号を付けます。

//
//	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関数を使いました。


[前] [目次] [次]