ボタンは、リソースだけでなく、CreateWindowEx関数で作ることができます。 これは、メインウィンドウの時と同じです。 このとき、CREATESTRUCT構造体を使いました。 そして、継承して、MyCreateStructクラスを作りました。 ですから、これをそのまま使います。
MyCreateStructクラスを継承して、MyControlクラスを作ります。
#pragma once
/*
コントロール
*/
#include <windowsx.h>
class MyControl : public MyCreateStruct{
public:
// 生成後のメソッド
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);
}
};
MyCreateStruct のままでは、メインウィンドウ用ですから、コントロール用のクラスを作ります。 メソッドも追加します。
//
// MyApp.h
//
class MyApp : public MyMainWnd{
public:
// WM_COMMAND
void wmCommand(WPARAM wp){
int wmId = LOWORD(wp);
switch(wmId){
case IDC_BUTTON1: // ボタンID
MyControl btn;
btn.SetID(IDC_BUTTON1);
static int i = 0;
if(i == 0){
btn.SetText(L"1");
i = 1;
}else{
btn.SetText(L"0");
i = 0;
}
break;
}
}
};
実行画面です。
特に、解説はありません。 次回は、ボタンクラスを作ります。