CMFCPropertyGridCtrlをリソースエディタを使って、ボタン, エディットボックス, コンボボックス
などのようにダイアログに追加する方法がわからなかったので、いつも、直接コードを記述している
のですが、「この事で煮詰まってる人もいるかな?」っと思いまとめてみました。
それではCMFCPropertyGridCtrlを追加した下のダイアログを作成してみましょう。

最初に、CMFCPropertyGridCtrlを追加したいダイアログに変数m_PGCを追加します。
この変数は、OnInitDialogで初期化します。
class Dlg1 : public CDialogEx {
public:
CMFCPropertyGridCtrl m_PGC;
virtual BOOL OnInitDialog();
}
OnInitDialogでは、以下のことを行います。
1.プロパティグリッドコントロールを作成します。
ウィンドウサイズは後から設定するので適当な値を指定しています。
子ウィンドウのIDにはGetDlgItemを使わずにm_PGCでアクセスできるので、IDC_STATICを指定しています。
2.表示するプロパティを追加します。
3.ダイアログのレイアウトを調整します。
今回はサイズを変更できないダイアログなのでOnInitDialogに直接記述しています。
BOOL Dlg1::OnInitDialog()
{
CDialogEx::OnInitDialog();
//プロパティグリッドコントロールの初期化
if(!m_PGC.Create(WS_CHILD | WS_VISIBLE, CRect(0,0,1,1), this, IDC_STATIC)){
return FALSE;
}
m_PGC.EnableDescriptionArea();
m_PGC.SetVSDotNetLook();
//表示するプロパティの追加
CMFCPropertyGridProperty *pPGP = new CMFCPropertyGridProperty(
_T("文字列のプロパティ"), _T("文字列を設定できます。"), 0);
m_PGC.AddProperty(pPGP);
//ダイアログのレイアウトの調整
CRect rc;
GetClientRect(&rc);
m_PGC.SetWindowPos(0, 0, 0, rc.Width(), rc.Height(), SWP_NOACTIVATE | SWP_NOZORDER);
return TRUE;
}
ここまでできれば、自分でコードをいじりながら動作を確認できます。
設定を変更してみたり、新しいプロパティを追加したりして遊んで見て下さい。