【问题标题】:How does the MFC PropertyGrid control work in the dialog editor in visual studio?MFC PropertyGrid 控件在 Visual Studio 的对话框编辑器中如何工作?
【发布时间】:2020-08-25 15:01:31
【问题描述】:

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

这是 Visual Studio 对话框编辑器的图片,以及位于 dailog 中间的 MFC 属性控制网格,其中的内容我不知道如何更改。

【问题讨论】:

    标签: c++ windows visual-studio dialog desktop


    【解决方案1】:

    CMFCPropertyGridCtrl简单教程:

    1.创建一个基于对话框的MFC项目,将CMFCPropertyGridCtrl拖入其中,并调整大小。然后将控件的 ID 更改为 IDC_MFCPROPERTYGRID_TEST,并使用 Add Varible 将变量 m_propertyGrid 添加到控件。将通知的设置更改为True

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

    Enable Description Area表示是否开启以下描述功能。

    Enable Header表示是否启动header。

    Mark Modified Properties 表示是否突出显示更改。

    2.设置界面 在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

    另外,您可以添加下拉菜单:

    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);
    

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

    【讨论】:

    • 它不会让我初始化 HCnd,当我尝试包含所需的标头时,它说找不到它。
    • 能否提供MFC Property Grid控件的相关代码和属性设置?因为它有助于重现问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 2010-09-05
    • 2012-07-11
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多