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设置表头的列(注意:只应该是两列,多于两列貌似不能显示多于的部分)。
例子:
例子:
例子:
添加消息映射:
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。
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。
相关文章推荐
- MFC CMFCPropertyGridCtrl控件使用问题:刷新后底部出现黑边
- CMFCPropertyGridCtrl 使用简记
- C++ 关于 CMFCPropertyGridCtrl 的使用方法 之二 (原创)
- CMFCPropertyGridCtrl 使用简记
- 属性窗口开发--CMFCPropertyGridCtrl的使用
- CMFCPropertyGridCtrl 使用简记
- VS2008下使用 CMFCPropertyGridCtrl 转载
- 使用CMFCPropertyGridCtrl及CMFCPropertyGridProperty控件的心得体会
- CMFCPropertyGridCtrl 使用简记
- C++ 关于 CMFCPropertyGridCtrl 的使用方法
- CMFCPropertyGridCtrl 使用简记
- C++ 关于 CMFCPropertyGridCtrl 的使用方法 之一 (原创)
- CMFCPropertyGridCtrl的简单教程
- Accelerators processing before CMFCPropertyGridCtrl
- CMFCPropertyGridCtrl的属性改变事件代码
- CMFCPropertyGridCtrl
- 关于CMFCPropertyGridProperty 选件类的使用
- CMFCPropertyGridCtrl 的简单教程
- MFC Feature Pack CMFCPropertyGridCtrl 控件的例子
- CMFCPropertyGridCtrl: How to Validate and Update Data?