summary6_PropertyGrid

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

猜你喜欢

转载自blog.csdn.net/weixin_40236507/article/details/86749078