系统环境:Windows 7
软件环境:Visual Studio 2008 SP1
本次目的:建立一个CDialogEx的对话框

我们知道在VS2008SP1引进了BCG第三方控件,可以使MFC界面编程容易些,但是关于这方面的资料并不多。可能是我使用的系统因素,在建立对话框时,选择“生成的类”基于CDialogEx后,发现代码并没有把创建的对话框派生CDialogEx ,而还是派生自CDialog。所以我们只能手动改之。对于一个新建立的对话框,这里我建立的名字为Test 工程,我们开始进行以下步骤:
1. 在TestDlg.h 中,修改以下地方:

class CTestDlg : public CDialogEx    //原本为CDialog
{····};

2. 在TestDlg.cpp 中,修改以下地方:

CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)
    : CDialogEx (CTestDlg::IDD, pParent)       //原本为CDialog(CTestDlg::IDD, pParent)
{
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx ::DoDataExchange(pDX);    //原本为CDialog::DoDataExchange(pDX); 
}

BEGIN_MESSAGE_MAP(CTestDlg, CDialogEx )         //原本为BEGIN_MESSAGE_MAP(CTestDlg, CDialog)    
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CTestDlg::OnInitDialog()
{
    CDialogEx ::OnInitDialog();         //原本为CDialog::OnInitDialog()
     ····
}

void CTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
    ·······
    else
    {
        CDialogEx ::OnSysCommand(nID, lParam);       //原本为CDialog::OnSysCommand(nID, lParam);
    }
}

void CTestDlg::OnPaint()
{
   ········
    else
    {
        CDialogEx ::OnPaint();        //原本为CDialog:::OnPaint();
    }
}

3.一共修改七个地方,现在编译运行,就可以正常使用了。

在MSDN中,CDialogEx 有两个比较经常用到的方法,SetBackgroundColor 和SetBackgroundImage ,分别是设置背景颜色和背景图片。一个函数就可以搞定背景颜色了,就不必像上次 我写的那么麻烦了。例如,背景颜色,只要在对话框初始化函数OnInitDialog() 中添加以下代码就行了:

SetBackgroundColor(RGB(255,0,255));

效果如下:

对于背景图片SetBackgroundImage 的设置,MSDN上定义的是:

void SetBackgroundImage(
HBITMAP hBitmap,
BackgroundLocation location=BACKGR_TILE,
BOOL bAutoDestroy=TRUE,
BOOL bRepaint=TRUE
);
BOOL SetBackgroundImage(
UINT uiBmpResId,
BackgroundLocation location=BACKGR_TILE,
BOOL bRepaint=TRUE
);

有两种方法可以设置,这里举例第二种。导入一张Bmp位图资源,假设其ID号为IDB_BITMAP1 ,如果我们要让图片铺满(TILE )窗口,即直接使用以下代码:

SetBackgroundImage(IDB_BITMAP1);

对于第二个参数,风格有 BACKGR_TILE, BACKGR_TOPLEFT, BACKGR_TOPRIGHT, BACKGR_BOTTOMLEFT, 和 BACKGR_BOTTOMRIGHT。可以设置图片的位置,但是却没有拉伸和居中功能,我们只能自己重载,或者使用别人已经实现的类(http://www.codeproject.com/KB/dialog/bmpdlg01.aspx )

默认风格如下:

VS2008SP1中CDialogEx的使用问题及解决的更多相关文章

  1. sql server 还原数据库后,删除用户,提示数据库主体在该数据库中拥有架构,无法删除解决方法

    将另一台服务器上的数据库备份文件,在现在用的这台服务器上还原之后,再创建相同的用户名,提示用户已存在 想将之前的用户先删除掉,却提示“数据库主体在该数据库中拥有架构,无法删除解决方法” 在网上找到方法 ...

  2. iphone中button按钮显示为圆形解决

    iphone中button按钮显示为圆形解决: 添加样式: -webkit-appearance:button; 如果需要为直角: border-radius:0 在源码中添加如:style=&quo ...

  3. Storm编译打包过程中遇到的一些问题及解决方法

    作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2013/11/30/som ...

  4. IIS关于“ 配置错误 不能在此路径中使用此配置节”的解决办法

    IIS关于“ 配置错误 不能在此路径中使用此配置节”的解决办法 原文链接:http://www.cnblogs.com/200325074/p/3679316.html 今天刚安装好IIS8.5, 我 ...

  5. 转 Android学习笔记: 学习过程中碰到的一些问题及解决方法

    在学习Android开发的过程中遇到了不少的问题,所幸的是最终经过上网查询都得到了解决.现在将我在学习Android开发过程中遇到的一些问题及解决的方法整理如下. 1.R.java不能实时更新 问题描 ...

  6. 在 sys.servers 中找不到服务器的解决办法,自己解决的

    一开始提示,在服务器中找不到在 sys.servers 中找不到服务器 'QPAccountsDBLink',先用select * from sys.servers  ,发现只能查到一个服务器名称,后 ...

  7. jquery中checkbox全选失效的解决方法

    这篇文章主要介绍了jquery中checkbox全选失效的解决方法,需要的朋友可以参考下     如果你使用jQuery 1.6 ,代码if ( $(elem).attr(“checked”) ),将 ...

  8. Excel在任务栏中只显示一个窗口的解决办法

     Excel在任务栏中只显示一个窗口的解决办法  以前朋友遇到过这个问题,这次自己又遇到了,习惯了以前的那种在任务栏中显示全部窗口,方便用Alt+Tab键进行切换. 如果同时打开许多Excel工作簿, ...

  9. [转]Hibernate中property-ref的应用,常用来解决遗留数据库One To Many关系

    [转]Hibernate中property-ref的使用,常用来解决遗留数据库One To Many关系 1.如表Class(ClassID,Class_No,ClassName)与Student(S ...

随机推荐

  1. VC6集成开发环境使用参考

    VC6集成开发环境使用参考 1.VC6的常用菜单命令项 (1)File菜单 New:打开“new”对话框,以便创建新的文件.工程或工作区. Close Workspace:关闭与工作区相关的所有窗口. ...

  2. 1104--DNA排序

    问题描述: 逆序数可以用来描述一个序列混乱程度的量.例如,“DAABEC”的逆序数为5,其中D大于它右边的4个数·,E大于它右边的1的个数,4+1=5,又如,“ZWQM”的逆序数为3+2+1+0=6. ...

  3. (收藏)KMP算法的前缀next数组最通俗的解释

    我们在一个母字符串中查找一个子字符串有很多方法.KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度. 当然我们可以看到这个算法针对的是子串有对称属性, ...

  4. 2014ACM/ICPC亚洲区鞍山赛区现场赛1009Osu!

    鞍山的签到题,求两点之间的距离除以时间的最大值.直接暴力过的. A - Osu! Time Limit:1000MS     Memory Limit:262144KB     64bit IO Fo ...

  5. 1298 The Hardest Problem Ever

    题目链接:http://poj.org/problem?id=1298 思路分析:水题,字符偏移求解,注意字符串输入问题即可. 代码如下: #include <iostream> #inc ...

  6. 关于FTP操作的功能类

    自己在用的FTP类,实现了检查FTP链接以及返回FTP没有反应的情况. public delegate void ShowError(string content, string title); // ...

  7. [转]Java Code Examples for android.util.JsonReader

    [转]Java Code Examples for android.util.JsonReader The following are top voted examples for showing h ...

  8. CURL基础

    下载单个文件: #下载单个文件,默认将输出打印到标准输出中(STDOUT)中curl http://www.centos.org # 将文件下载到本地并命名为mygettext.html curl - ...

  9. 关于ios下录音

    http://blog.csdn.net/silencetq/article/details/8447400 我是采用的AVAudioRecorder这个框架来进行录音 这个录音跟官方网站上的spea ...

  10. ASP.NET MVC 5 学习教程:修改视图和布局页

    原文 ASP.NET MVC 5 学习教程:修改视图和布局页 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 ...