summary6_PropertyGrid

本文详细介绍了在MFC中使用CMFCPropertyGridCtrl控件的方法,包括静态和动态创建,调整控件样式,添加响应事件,以及如何添加不同类型的属性如颜色、文件路径和字体选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.youkuaiyun.com/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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值