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出来了

VS2008下使用 CMFCPropertyGridCtrl 转载的更多相关文章

  1. 在VS2008环境下编写C语言DLL,并在C++和C#项目下调用 (转载)

    1.编写DLL a)文件--打开--新建项目--Win32,右侧Win32项目,填写好项目名称,点击"下一步", 应用程序类型选择:"DLL(D)",附加选项: ...

  2. TrueCrypt简介及TrueCrypt 7.1a Source.zip源码在VS2008下的编译过程

    转载:http://blog.csdn.net/cncrypt/article/details/51565493 转载:http://www.cnblogs.com/shenjieblog/p/521 ...

  3. VS2008下,aspx页面设计模式消失,只有黑白字体

    版权声明:本文为博主原创文章,未经博主允许不得转载. RT,在工具选项里面重新设定的时候,报错,说一部分文件无法安装. 寻找一晚上,终于有了解决方案,供以后参考. luanwey(大陆响尾蛇)(不做温 ...

  4. CentOS下安装JDK7 转载

    转载地址:http://www.cnblogs.com/rilley/archive/2012/02/02/2335395.html CentOS下安装JDK7 下载地址:http://www.ora ...

  5. IIS Express 及 vs2008下使用IIS Express

    介绍 IIS Express 开发 ASP.NET 的应用程序是我的主要工作.当然我会选择最适合的开发环境.客户多属于企业用户,我的开发的选择,多半是 ASP.NET Web Application ...

  6. ffmpeg基础与编译_在VS2008下调试output_example.c(详细步骤)

    注意:这个是编译Debug版本的.必要资源:FFMPEG SDK 3.2(已经编译好的,可以去http://www.bairuitech.com/html/ruanjianxiazai/ffmpeg/ ...

  7. 【流媒體】live555—VS2008 下live555编译、使用及测试

    [流媒體]live555—VS22008 下live555编译.使用及测试 Ⅰ live555简介 Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如R ...

  8. vs2008下使用libcurl

    网上找了半天,总算找到一个比较好用的C++ 网络库,老实说,完全用Socket操作网络对于需要开发网络应用程序的人员来说还是很蛋疼很繁琐的.好在有这么一个给力的库.这个库的介绍可以自己百度一下,就我所 ...

  9. 闲来瞎扯 -- 在vs2008下编写linux程序

    虽说vim很强大,但是个人感觉器代码提示功能不如visual assist来的强大.如何使用visual assist来实现代码的提示功能呢? 首先说明我的环境 : 宿主机是xp(O(∩_∩)O~还是 ...

随机推荐

  1. vitrualbox虚拟机64位安装报错解决

    1 NtCreateFile(\Device\VBoxDrvStub) failed: 0xc0000034 STATUS_OBJECT_NAME_NOT_FOUND (0 retries) 解决办法 ...

  2. C#获取网页中的验证码图片(转载)

    有时候我们需要获得网页上的图片,尤其是向验证码这样的图片.这个方法就是将网页上的图片获取到PictureBox中.效果入下图所示. 右边是使用Webbrowser控件装载的某网站的注册页面,其中包括了 ...

  3. Topcoder Srm627 DIV 2

    A,B:很水,注意边界,话说HACK都是这些原因. C: R[I][J]:表示反转I-J能改变冒泡排序的次数: DP方程:dp[i][k]=max(dp[j][k],dp[j][k-1]+dp[j][ ...

  4. 深入理解asp.net SessionState

    web Form 网页是基于HTTP的,它们没有状态, 这意味着它们不知道所有的请求是否来自同一台客户端计算机,网页是受到了破坏,以及是否得到了刷新,这样就可能造成信息的丢失. 于是, 状态管理就成了 ...

  5. JS获取节点方法

    1. 通过顶层document节点获取:(1) document.getElementById(elementId):该方法通过节点的ID,可以准确获得需要的元素,是比较简单快捷的方法.如果页面上含有 ...

  6. 浅谈MySQL索引背后的数据结构及算法【转】

    摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...

  7. Chapter 3

    1.序列类型可以使用成员操作符in,大小计算函数(len()),分片([]),都可以迭代.Python内置的序列类型:str,list,tuple,bytearray,bytes.标准库中的序列类型: ...

  8. POJ 3243 Clever Y (求解高次同余方程A^x=B(mod C) Baby Step Giant Step算法)

    不理解Baby Step Giant Step算法,请戳: http://www.cnblogs.com/chenxiwenruo/p/3554885.html #include <iostre ...

  9. HDU 1548 A strange lift (Dijkstra)

    A strange lift http://acm.hdu.edu.cn/showproblem.php?pid=1548 Problem Description There is a strange ...

  10. 为jquery qrcode生成的二维码嵌入图片

    在一次微信项目中,需要实现通过扫描二维码来进行会议签到,二维码的生成选择了qrcode.js的版本,然后使用jquery.qrcode.js插件来绘制二维码. <script type=&quo ...