您的位置:首页 > 运维架构

CMFCPropertyGridCtrl的使用

2015-01-31 21:23 375 查看
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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: