ボタンは、CreateWindowEx関数で作ります。 これは、メインウィンドウの時と同じです。 このとき、CREATESTRUCT構造体を使いました。 そして、これを継承して、MyCreateStructクラスを作りました。 ですから、これをそのまま使うことができます。 しかし、継承することにします。
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 のままでは、メインウィンドウ用ですから、コントロール用のクラスを作ります。 メソッドも追加します。
// // 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; } } };
実行画面です。
特に、解説はありません。 次回は、ボタンクラスを作ります。