VC++4.0のMFCを使わないプロジェクトにおいてダイアログを使用する方法。
#include <windows.h> #include "resource.h" BOOL CALLBACK DlgTestProc(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam) { switch(uiMsg) { case WM_INITDIALOG: グローバル変数等の値をダイアログの初期値としてセット … return TRUE; case WM_COMMAND: if(LOWORD(wParam) == IDOK) { //OKボタンが押されたときの処理 ダイアログから値を取得し、グローバル変数やiniファイル等へセット … EndDialog(hWnd, IDOK); return TRUE; } else if(LOWORD(wParam) == IDCANCEL) { EndDialog(hWnd, IDCANCEL); return TRUE; } break; default: break; } return FALSE; }
//ウィンドウプロシージャ LRESULT CALLBACK WndProc(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam) { switch(uiMsg) { 〜 case WM_LBUTTONUP: DialogBox(NULL, MAKEINTRESOURCE(IDD_DLG_TEST), hWnd, (DLGPROC)DlgTestProc); return 0; 〜 } return DefWindowProc(hWnd, uiMsg, wParam, lParam); }
リソースエディタでダイアログにテキストボックス等を貼り付けてIDを付けると、ソースからはそのIDを使って値の設定・取得が出来る。
値の設定・取得には、ダイアログ用のAPIが用意されている。
MFCのCWndのクラスメンバのヘルプで「ダイアログ ボックス項目関数」の項にある関数が使える。
関数名は同じで、第1引数にダイアログのHWNDを追加してやればよい。
コントロール | 設定 | 取得 | 更新日 |
---|---|---|---|
テキストボックス | char *val = "値"; |
char val[サイズ]; |
|
チェックボックス | BOOL val = 値; |
BOOL val; |
2007-10-31 |
ラジオボタン | BOOL CheckRadioButton( |
2007-10-31 |
この辺りを自動的にやってくれるMFCのDDEは、やはり便利だなぁ。