コントロール

ボタンは、CreateWindowEx関数で作ります。 これは、メインウィンドウの時と同じです。 このとき、CREATESTRUCT構造体を使いました。 そして、これを継承して、MyCreateStructクラスを作りました。 ですから、これをそのまま使うことができます。 しかし、継承することにします。

MyControl クラス

MyCreateStructクラスを継承して、MyControlクラスを作ります。

#ifndef	___MYCONTROL
#define	___MYCONTROL

/*
	コントロール
*/


class MyControl : public MyCreateStruct{
public:
	// コンストラクタ
	MyControl(LPCTSTR className) : MyCreateStruct(className){
		style = WS_CHILD | WS_VISIBLE;
		hwndParent = hWnd;
		Location(0, 0);
		Size(100, 100);
	
	// 生成前のメソッド
	void ID(int id){
		hMenu = (HMENU)id;
	}
	// 生成後のメソッド
	HWND SetID(int id){
		hwnd = GetDlgItem(hWnd, id);
		return hwnd;
	}

	// キャプション
	void GetText(LPTSTR txt){
		GetWindowText(hwnd, txt, GetWindowTextLength(hwnd) + 1);
	}

	// キャプション
	void SetText(LPCTSTR txt){
		SetWindowText(hwnd, txt);
	}

	void Move(int x, int y, int cx, int cy){
		MoveWindow(hwnd, x, y, cx, cy, TRUE);
	}	}
};


#endif

解説

MyCreateStruct のままでは、メインウィンドウ用ですから、コントロール用のクラスを作ります。 メソッドも追加します。

使用例(win634)

//
//	MyApp.h
//

#include	<MyControl.h>
#include	<MyMessageBox.h>


#define	ID_BUTTON		1000 	// ボタンID

class MyApp : public MyMainWnd{
public:
	// WM_CREATE
	void wmCreate(){
		
		MyControl btn(TEXT("BUTTON"));
		
		btn.Text(TEXT("ボタン"));
		btn.ID(ID_BUTTON);
		
		CreateWindowEx(btn);
	}
	// WM_COMMAND
	void wmCommand(WPARAM wp){
		int wmId = LOWORD(wp);
		
		switch(wmId){
		case ID_BUTTON:				// ボタンID
			MyMessageBox(TEXT("ボタンが押されました!") , "確認");
			break;
		}
	}	
};

実行画面です。

解説

特に、解説はありません。 次回は、ボタンクラスを作ります。


[前] [目次] [次]