zoukankan      html  css  js  c++  java
  • VS2008下使用 CMFCPropertyGridCtrl 转载

    http://blog.csdn.net/sunnyloves/article/details/5655575

    在DLG中的基本应用 。

    首先在Cxxdlg.h文件中加入

    public:
     CMFCPropertyGridCtrl  m_MFCPGCtrl;
     CMFCPropertyGridProperty* pGroup1;
     CMFCPropertyGridProperty* pGroup2;

    然后Cxxdlg.cpp中的OnInitDialog()中

    CRect rc;
     GetClientRect(rc);
     rc.bottom -= 50;
     rc.left += 50;
     rc.right -= 50;

     m_MFCPGCtrl.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,rc,this,IDC_CMFCPGCTRL);
     m_MFCPGCtrl.EnableHeaderCtrl(true,_T("参数"),_T("值"));
     m_MFCPGCtrl.EnableDescriptionArea();
     m_MFCPGCtrl.SetVSDotNetLook();
     m_MFCPGCtrl.MarkModifiedProperties();

     m_MFCPGCtrl.SetAlphabeticMode(false);
     
     m_MFCPGCtrl.SetShowDragContext();

    pGroup1 = new CMFCPropertyGridProperty(_T("参数组1"));
     pGroup2 = new CMFCPropertyGridProperty(_T("参数组2"));
     pGroup3 = new CMFCPropertyGridProperty(_T("参数组3"));

     pGroup1->AddSubItem(new CMFCPropertyGridProperty(_T("参数1"),_T("2.5"),_T("这是参数1的说明")));
     pGroup1->AddSubItem(new CMFCPropertyGridProperty(_T("参数2"),_T("3.5"),_T("这是参数2的说明")));
     pGroup2->AddSubItem(new CMFCPropertyGridProperty(_T("参数3"),_T("4.5"),_T("这是参数3的说明")));
     pGroup2->AddSubItem(new CMFCPropertyGridProperty(_T("参数4"),_T("5.5"),_T("这是参数4的说明")));
     pGroup3->AddSubItem(new CMFCPropertyGridFileProperty(_T("选择文件"), TRUE, _T("D://defaule.csv"), _T("csv"), NULL, _T("csv Files(*.csv)|*.csv|All Files(*.*)|*.*||"), _T("选择csv文件")));//选择文件按钮

     m_MFCPGCtrl.AddProperty(pGroup1);
     m_MFCPGCtrl.AddProperty(pGroup2);
     m_MFCPGCtrl.AddProperty(pGroup3);


     m_MFCPGCtrl.ExpandAll();

    就ok了 

    下面说下 通过消息活动输入值和输入的位置

    .h中加入

    afx_msg LRESULT OnPropertyChanged(WPARAM,LPARAM);

    .cpp中加入红色

    BEGIN_MESSAGE_MAP(CCMFCPGCtrlDlg, CDialog)
     ON_WM_SYSCOMMAND()
     ON_WM_PAINT()
     ON_WM_QUERYDRAGICON()
     //}}AFX_MSG_MAP
     ON_REGISTERED_MESSAGE(AFX_WM_PROPERTY_CHANGED, OnPropertyChanged)
    END_MESSAGE_MAP()

    然后添加函数

    LRESULT CCMFCPGCtrlDlg::OnPropertyChanged (WPARAM,LPARAM lParam)
    {
     CMFCPropertyGridProperty* pProp = (CMFCPropertyGridProperty*) lParam;
     
     int i = (int) pProp->GetData ();
     
     CString s = pProp->GetName();  //被改变的参数名
     COleVariant t = pProp->GetValue(); //改变之后的值
     t = pProp->GetOriginalValue();  //改变之前的值
     CString d;
     
     d = t.bstrVal;      //从COleVariant到CString

     return 0;
    }

    选项里添加ComboBox 也很方便

     CMFCPropertyGridProperty* pProp = new CMFCPropertyGridProperty(_T("边框"), _T("Dialog Frame"), _T("其中之一: 无(None)、细(Thin)、可调整大小(Resizable)、对话框外框(Dialog Frame)"));
     pProp->AddOption(_T("None"));
     pProp->AddOption(_T("Thin"));
     pProp->AddOption(_T("Resizable"));
     pProp->AddOption(_T("Dialog Frame"));

     pProp->AllowEdit(FALSE);

     pGroup1->AddSubItem(pProp);

    就可以有combox出来了

  • 相关阅读:
    worker与redis网络中断后,worker不再接受任务的异常问题
    Pyecharts 绘制动态流线地图
    MySql存储过程知识了解
    Pyecharts配置项使用
    Pandas一个需求:存在一个列表,需要在一个DataFrame中取到以该列表为索引的数据
    mysql时间与字符串之间相互转换
    map + apply + applymap
    pandas——read_csv
    Python 原生协程------asyncio(选自公众号)
    一道记数题
  • 原文地址:https://www.cnblogs.com/kex1n/p/3254496.html
Copyright © 2011-2022 走看看