這是我的原創!
用一堆的編輯框下拉框做配置界面,很是繁瑣,還要對齊排版……
用這個屬性控件 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,看起來不好