Hello Feixy

这是我的原创!

用一堆的编辑框下拉框做配置界面,很是繁琐,还要对齐排版……
用这个属性控件 CMFCPropertyGridCtrl 就可以统一风格了。

 1 //初始化
 2 CMFCPropertyGridCtrl m_propGrid;    //属性控件
 3 m_pPropName = new CMFCPropertyGridProperty(_T("名称"), _T(""), _T("描述")); //属性项
 4 m_pPropBuy = new CMFCPropertyGridProperty(_T("占比(%)"), (float)0.1, _T("")); //这里必须强制指定类型,否则取值会乱
 5 m_propGrid.AddProperty(m_pPropBuy);    //控件中加入一个属性项
 6 //可以添加的属性有4类
 7 CMFCPropertyGridProperty
 8 CMFCPropertyGridColorProperty
 9 CMFCPropertyGridFileProperty
10 CMFCPropertyGridFontProperty
11 
12 //添加下拉选项
13 prop->AddOption("yes");
14 prop->AddOption("no");
15 prop->AllowEdit(FALSE);
16 
17 //取值
18 COleVariant v = m_pPropName->GetValue();    //这回的是这种万用值,是union实现的
19 CString name;
20 name = v.bstrVal;    //字符串要这样转
21 float f = m_pPropBuy->GetValue().fltVal;    //小数,取值类型要与设置值的类型完全一致
22 
23 //事件通知
24 AFX_WM_PROPERTY_CHANGED    //用类向导添加这个消息响应,通知来的就是属性项的指针了
25 
26 //缺点
27 对于bool类型,不能显示为CheckBox,看起来不好

 

posted on 2019-02-11 16:35  飞翔雨  阅读(2380)  评论(0编辑  收藏  举报