CMFCPropertyGridCtrl的使用

来源:互联网 发布:ios9屏幕录制软件 编辑:程序博客网 时间:2024/05/28 16:03

1、概述

       CMFCPropertyGridCtrl显示一个Property Grid Ctrl控件,该控件内部可以包含从CMFCPropertyGridProperty类派生的可编辑属性,比如,CMFCPropertyGridProperty、CMFCPropertyGridColorProperty、CMFCPropertyGridFileProperty、CMFCPropertyGridFontProperty。 每种可编辑属性还可以包含子项;另外Property Grid Ctrl控件在底部还包含一个大小可变的区域,用来显示当前选择的Porperty的描述。

       除了设置属性值,用户还可以选择对话框,比如Color对话框、File对话框、Font对话框。

2、设置Property Grid Ctrl表头

       1*、通过成员方法 EnableHeaderCtrl(); 可以启用/禁用表头。

       2*、通过HDITEM设置表头的列(注意:只应该是两列,多于两列貌似不能显示多于的部分)。

例子:

        CRect r;m_PropertyGridCtrl.GetHeaderCtrl().GetClientRect(&r);HDITEM a;a.cxy = r.Width()/3;a.mask = HDI_WIDTH;   m_PropertyGridCtrl.GetHeaderCtrl().SetItem(0,&a);a.pszText = _T("材质属性");a.mask = HDI_TEXT;m_PropertyGridCtrl.GetHeaderCtrl().SetItem(0,&a);a.pszText = _T("值");a.mask = HDI_TEXT;m_PropertyGridCtrl.GetHeaderCtrl().SetItem(1,&a);
3、向Property Grid Ctrl控件中添加Property

     例子:

        CMFCPropertyGridProperty* pNewProp = NULL;pNewProp = new CMFCPropertyGridProperty(_T("系数2"),(_variant_t)(int)1, _T(""));pNewProp->EnableSpinControl(true, -10, 10);//设置滑动按钮pNewProp->SetData(5);//设置标识,一般是枚举类型pNewProp->SetValue((_variant_t)(int)10);m_PropertyGridCtrl.AddProperty(pNewProp);
     也可以向Property中添加子项sub1, 或者继续向sub1中添加子项sub11;添加的顺序是先将sub11添加到sub1中,然后再将sub1添加到Property中,最后再把Property添加到Property Grid Ctrl中;

    例子:

        CMFCPropertyGridProperty* pProp9 = NULL;pProp9 = new CMFCPropertyGridProperty( _T("Property") );CMFCPropertyGridProperty* pProp10 = NULL;pProp10 = new CMFCPropertyGridProperty( _T("sub1"));CMFCPropertyGridProperty* pProp11 = NULL;pProp11 = new CMFCPropertyGridProperty( _T("sub11"), (_variant_t)(float)2.0, _T("") );pProp11->SetData( 11000);pProp11->SetValue( (_variant_t )(float)100.0);pProp10->AddSubItem( pProp11);pProp9->AddSubItem( pProp10 );m_PropertyGridCtrl.AddProperty( pProp9 );
4、通过OnPropertyChanged消息响应函数使用设置的属性值

     添加消息映射:

            afx_msg LRESULT OnPropertyChanged (WPARAM wParam ,LPARAM lParam);

            ON_REGISTERED_MESSAGE(AFX_WM_PROPERTY_CHANGED, OnPropertyChanged)

            LRESULT MeshPropertyMaterialSet::OnPropertyChanged (WPARAM,LPARAM lParam)
            {

                    ...

            } 

     在消息响应函数中拣选属性信息

           参数:WPARAM :标识PropertyGridCtrl控件的ID,与GetDlgCtrlID(xxx)得到的相同;

                      LPARAM:标识PropertyGridCtrl控件的当前属性值改变的PropertyGridProperty。

     

0 0
原创粉丝点击