看到了一个例子(NewControls),该例子中使用了按钮图片等特效(哈哈,个人觉得挺高端),但是仔细看它的工程,没有xxxDlg.cpp就觉得奇诡了,难道不是基于对话框完成的?最终查阅居然是这样的。

1、新建一个MFC的对话框工程;

2、加入两个对话框资源,资源类型是IDD_PROPPAGE,ID为IDD_PROPPAGE1和IDD_PROPPAGE2;

3、增加两个类CPage1和Cpage2,基类是CPropertyPage,和刚才我们的对话框资源关联起来。这里基类为什么不选择CMFCPropertyPage呢,因为IDE对CMFCPropertyPage类的支持不是很好,在添加类的时候基类选CMFCPropertyPage的话无法关联对话框。。。。

4、查找所有CPropertyPage,替换为CMFCPropertyPage,这样,我们自己的两个对话框类就是从CMFCPropertyPage继承来的了。

5、新建一个类CMySheet,基类是CMFCPropertySheet,增加两个成员变量,分别是CPage1和Cpage2的对象

6、增加CMySheet类的带参构造函数为CMySheet (LPCTSTR pszCaption, CWnd* pParentWnd = NULL);为什么呢?因为类向导生成构造函数是无参的,而我们需要第一个参数pszCaption来改变属性表单对话框的标题,因此这里要修改一下。构造函数定义如下:

CMySheet::CMySheet(LPCTSTR pszCaption, CWnd* pParentWnd ):CMFCPropertySheet(pszCaption,pParentWnd )
{
//m_psh该结构体成员变量中保存了propertysheet的外观样式,一定要在domodal之前调用
m_psh.dwFlags &=~PSH_HASHELP;
m_psh.dwFlags|=PSH_NOAPPLYNOW;
//如果要去掉帮助按钮,一定要每个属性页都去掉该按钮
m_Page1.m_psp.dwFlags&= ~PSP_HASHELP;
m_Page2.m_psp.dwFlags&= ~PSP_HASHELP; BOOL b32BitIcons = TRUE; if (afxGlobalData.m_nBitsPerPixel < )
{
b32BitIcons = FALSE;
} //在这里设置属性表单的外观为PropSheetLook_OutlookBar
SetLook(CMFCPropertySheet::PropSheetLook_OutlookBar ); //如果设置outlook外观,则必须提供图标资源
SetIconsList(b32BitIcons ? IDB_ICONS32 : IDB_ICONS, ); //将我们设计好的属性页加进属性表单中
AddPage(&m_Page1);
AddPage(&m_Page2);
}

7、如果我们要直接运行该属性表单对话框,则需要修改窗口类的InitInstance函数,去掉MFC向导产生的对话框的调用,然后添加以下代码:

    CMySheet ps1(L"HELLO ");//对话框标题
m_pMainWnd = &ps1;
INT_PTR nResponse=ps1.DoModal(); //如果要让你的对话框显的更漂亮,可以增加以下代码
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));

8、注意:MFC向导添加的CMySheet::CMySheet中,没有重载OnInitDialog();我们必须手动添加,从类向导中,选择虚函数,找到OnInitDialog,添加,同样,为我们的属性页类也添加OnInitDialog函数

按照这个步骤完成以后,我将里面的xxxDlg对话框和xxxDlg.cpp一并都删除了,重新清理整个工程,然后重新编译,居然生成了应用程序,这就是证明已经成功!

         

但是,本人一直纳闷,这个“确定”“取消”按钮这一块是如何完成的,在整个工程中查找的时候(本人已将IDD_XXXDlG删除),并未查找到是何处绘制了这2个操作按钮……

Visual C++2012中CMFCPropertySheet的用法的更多相关文章

  1. 如何在Visual Studio 2012中发布Web应用程序时自动混淆Javascript

    同Java..NET实现的应用程序类似,Javascript编写的应用程序也面临一个同样的问题:源代码的保护.尽管对大多数Javascript应用公开源代码不算是很严重的问题,但是对于某些开发者来说, ...

  2. 在Visual Studio 2012中使用VMSDK开发领域特定语言(二)

    本文为<在Visual Studio 2012中使用VMSDK开发领域特定语言>专题文章的第二部分,在这部分内容中,将以实际应用为例,介绍开发DSL的主要步骤,包括设计.定制.调试.发布以 ...

  3. 在Visual Studio 2012中使用VMSDK开发领域特定语言(一)

    前言 本专题主要介绍在Visual Studio 2012中使用Visualization & Modeling SDK进行领域特定语言(DSL)的开发,包括两个部分的内容.在第一部分中,将对 ...

  4. [开发笔记]-Visual Studio 2012中为创建的类添加注释的模板

    为类文件添加注释,可以让我们在写代码时能够方便的查看这个类文件是为了实现哪些功能而写的. 一:修改类文件模板 找到类模版的位置:C:\Program Files (x86)\Microsoft Vis ...

  5. 【转载】在 Visual Studio 2012 中创建 ASP.Net Web Service

    在 Visual Studio 2012 中创建 ASP.Net Web Service,步骤非常简单.如下: 第一步:创建一个“ASP.Net Empty Web Application”项目 创建 ...

  6. 在Visual Studio 2012中使用VMSDK开发领域特定语言1

    在Visual Studio 2012中使用VMSDK开发领域特定语言(一)   前言 本专题主要介绍在Visual Studio 2012中使用Visualization & Modelin ...

  7. 在Visual Studio 2012中使用ASP.NET MVC5

    去年11月,.NET团队发布了用于 Visual Studio 2012 的 ASP.NET 和 Web 工具 2013.1 您可以从下面提供的链接下载该更新:  下载用于 Visual Studio ...

  8. Cocos2d-x 3.0- 在Visual Studio 2012中执行測试项目

    Cocos2d-x - 怎样在Win32执行cpp-tests 2014年4月30日 星期三 小雨 微凉 稍显疲惫 注:本篇文章来自Cocos2d-x官网,小巫仅仅是粗略翻译眼下最新版本号的,教大家怎 ...

  9. Visual Studio 2012中Visual Assist破解办法

    本工具有两种破解方式 1.破解方式一:Visual_Assist_X_DiE.exe 运行Visual_Assist_X_DiE.exe,勾选安装的VC版本,点击“Patch”按钮即可. 2.破解方式 ...

随机推荐

  1. 关于vue.js的计算属性练习代码

    参照官网联系如下: <!DOCTYPE html><html lang="en"><head> <meta charset="U ...

  2. EHcache缓存框架详解

    EhCache是一个纯Java的进程内缓存框架,具有快速.精干等特点,也是Hibernate中默认的CacheProvider. 归纳一下它大概具有一下几个特点: 1. 快速. 2. 简单. 3. 多 ...

  3. DBA-mysql-表

    create table  student( id int(4) not null, name char(20) not null, age int(3) not null default '0', ...

  4. nodemon配置文件简单整理

    文件名称nodemon.json 内容如下: { "restartable":"rs",//重启的命令,默认是 rs "ignore":[& ...

  5. windows 自带的 端口映射 端口转向功能

    安装IPV6 netsh interface ipv6 install查看 netsh interface portproxy show all添加 netsh interface portproxy ...

  6. 安装zabbix,make的时候报错

    CDPATH= && /bin/bash /install/Mesa-/bin/missing aclocal-1.14 -I m4 /install/Mesa-/bin/missin ...

  7. uml和模式01

    // */ // ]]> uml和模式01 1. UML 2. 用例图 3. 用例和类的关系 4. 类图 1 UML 模型语言(Modeling Language 检查ML)是一种设计语言,人们 ...

  8. [经验交流] Mesos-dns 和 Marathon-lb 简要使用方法

    Mesos-dns 和 Marathon-lb 是mesosphere 官网提供的两种服务发现和负载均衡工具.官方的文档主要针对DCOS,针对其它系统的相关中文文档不多,下面是我在Centos7上的安 ...

  9. .pyc是个什么鬼?

    1. Python是一门解释型语言? 我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在.如果是解释型语言, ...

  10. PICT安装与使用

    一.PICT简介 PICT工具是在微软公司推出的一款成对组合的命令行生成工具,下载地址http://download.microsoft.com/download/f/5/5/f55484df-849 ...