MFC PropertyGrid 控件如何在visual studio 的对话框编辑器中工作?

How does the MFC PropertyGrid control work in the dialog editor in visual studio?

在 visual studio 对话框编辑器中,我可以将 MFC 属性 网格控件添加到 dailog。我如何自定义它的内容,并设置选项,比如允许用户在使用它的程序为 运行 时编辑它的内容,或者我如何使用 C++ 更改它的内容? 当我添加按钮或编辑控件之类的东西时,当程序为 运行 时,它会显示在 dailog 框中,而当我添加 MFC 属性 Grid 时,dailog 甚至不会显示。

这是 visual studio 对话框编辑器的图片和 dailog 中间的 MFC 属性 控件网格,其中的内容我不知道如何更改。

CMFCPropertyGridCtrl简单教程:

1.Create一个dialog-basedMFC工程,拖一个CMFCPropertyGridCtrl进去,调整大小。然后将控件的 ID 更改为 IDC_MFCPROPERTYGRID_TEST,并使用添加变量向控件添加一个变量 m_propertyGrid。将通知的设置更改为 True

Description Rows Count refers 到下面描述部分的行数。

Enable Description Area表示是否开启后面的描述功能

Enable Header表示是否开始表头。

Mark Modified Properties表示是否高亮修改。

2.Set界面 在OnInitDialog()

中添加如下代码
HDITEM item; 
item.cxy=120; 
item.mask=HDI_WIDTH; 
m_propertyGrid.GetHeaderCtrl().SetItem(0, new HDITEM(item)); 
  1. 添加内容

OnInitDialog()

中添加如下代码
CMFCPropertyGridProperty* pProp2 = new CMFCPropertyGridProperty(
        _T("choose"),
        _T("select"),
        _T(""));
pProp2->AddOption(_T("1"));
pProp2->AddOption(_T("2"));
pProp2->AddOption(_T("3"));
pProp2->AllowEdit(FALSE);  //Editing of options is not allowed

m_propertyGrid.AddProperty(pProp2);

调用构造函数时传入的三个参数分别是item namedefault optionsdescription text.

此外,您可以添加 drop-down 菜单:

CMFCPropertyGridProperty* pProp2 = new CMFCPropertyGridProperty(
        _T("choose"),
        _T("select"),
        _T(""));
    pProp2->AddOption(_T("1"));
    pProp2->AddOption(_T("2"));
    pProp2->AddOption(_T("3"));
    pProp2->AllowEdit(FALSE);  //Editing of options is not allowed

    m_propertyGrid.AddProperty(pProp2);

另外还有三个类似的项目:

CMFCPropertyGridColorProperty * pProp3 = new CMFCPropertyGridColorProperty(
    _T("colour"), RGB(0, 111, 200));
m_propertyGrid.AddProperty(pProp3);

CMFCPropertyGridFileProperty * pProp4 = new CMFCPropertyGridFileProperty(
    _T("open file"), TRUE, _T("D:\test.txt"));
m_propertyGrid.AddProperty(pProp4);

LOGFONT font = { NULL };
CMFCPropertyGridFontProperty * pProp5 = new CMFCPropertyGridFontProperty(
    _T("select font"), font);
m_propertyGrid.AddProperty(pProp5);

最后,这是最终的程序运行界面: