ボタンは、リソースだけでなく、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; } } };
実行画面です。
特に、解説はありません。 次回は、ボタンクラスを作ります。