1、静态创建:在MFC中拖一个CMFCPropertyGridCtrl进去,调整好大小。
更改控件的一些属性:
Notify: notifies the parent window if the control has been clicked or double-clicked.
Description Rows Count:指的是下面的描述部分有几行。
Enable Description Area:表示是否启动下面的描述功能
Enable Header:表示是否启动表头
Mark Modified Properties:表示是否着重显示更改项
CMFCPropertyGridProperty *pProp1 = new CMFCPropertyGridProperty(_T(" "),_T(" "),_T(" "));
//传入的三个参数分别是 条目名称、默认选项、描述文字。
m_propertyGrid.AddProperty(pProp1);//将pProp1添加到propertyGrid中,m_propertyGrid是关联变量
调整propertyGrid的样式:
HDITEM item;
item.cxy=120;
item.mask=HDI_WIDTH;
m_propertyGrid.GetHeaderCtrl().SetItem(0, new HDITEM(item));
CMFCPropertyGrid支持下拉菜单:
pProp1->AddOption(_T(" "));//添加选项
pProp1->AllowEdit(FALSE); //不允许对选项进行编辑
选择颜色:
CMFCPropertyGridColorProperty * pProp3 = new CMFCPropertyGridColorProperty( _T("颜色"), RGB(0, 111, 200));
选择文件路径:
CMFCPropertyGridFileProperty * pProp4 = new CMFCPropertyGridFileProperty(_T("打开文件"), TRUE, _T("D:\\test.txt"));
选择字体:
LOGFONT font = {NULL};
CMFCPropertyGridFontProperty * pProp5 = new CMFCPropertyGridFontProperty(_T("选择字体"), font);
设置分组:
CMFCPropertyGridProperty * group1 = new CMFCPropertyGridProperty(_T("分组1"));
CMFCPropertyGridProperty * group2 = new CMFCPropertyGridProperty(_T("分组2"));
分组里面添加项目:
group1->AddSubItem(pProp1);
向propertyGrid中添加分组:
m_propertyGrid.AddProperty(group1);
https://blog.csdn.net/fyzs19891124/article/details/72963563
2、动态创建
3、如何改变propertyGrid中字体大小?
4、给PropertyGrid添加响应事件:
在.h文件中:
public:
CMFCPropertyGridCtrl m_propertyGrid;
afx_msg LRESULT OnChangeProperty(WPARAM wparam, LPARAM lparam);
.cpp文件MESSAGE_MAP中:
ON_REGISTERED_MESSAGE(AFX_WM_PROPERTY_CHANGED, &CpropertyGridDlg::OnChangeProperty)
LRESULT CpropertyGridDlg::OnChangeProperty(WPARAM wparam, LPARAM lparam)//id,property item
{
CMFCPropertyGridProperty* pProp = (CMFCPropertyGridProperty*)lparam;
int i = (int)pProp->GetData();
CString s = pProp->GetName(); //被改变的参数名(属性)
if (s.Compare(L"Opration") == 0)
{
COleVariant t = pProp->GetValue(); //改变之后的属性值
CString d;
d = t.bstrVal; //从COleVariant到CString
if (d.Compare(L"Add") == 0)
{
MessageBox(L"Add");
}
else if (d.Compare(L"Sub") == 0)
{
MessageBox(L"Sub");
}
else
{
MessageBox(L"no change");
}
}
// t = pProp->GetOriginalValue(); //改变之前的值
return 0;
}
https://www.cnblogs.com/kex1n/archive/2013/08/13/3254496.html