分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

系统环境: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)

默认风格如下:

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

VS2008SP1中CDialogEx的使用问题及解决相关推荐

  1. 把myeclipse中的web项目导入eclipse中不能编程web项目的解决办法

    title: 把myeclipse中的web项目导入eclipse中不能编程web项目的解决办法 tags: grammar_cjkRuby: true --- 右键单击项目,properties-- ...

  2. jquery.ajax的url中传递中文乱码问题的解决方法

    jquery.ajax的url中传递中文乱码问题的解决方法 JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQuer ...

  3. 使用webpack打包后,vscode中vue代码变白色的解决办法

    使用webpack打包后,vscode中vue代码变白色的解决办法 卸载vetur,重装vetur

  4. Pentaho部署文档校验过程中遇到的一些问题和解决对策

    为什么80%的码农都做不了架构师?>>>    Pentaho部署文档校验过程中遇到的一些问题和解决对策 1.quartz.EmbeddedQuartzSystemListener发 ...

  5. php中隐藏网址,是否隐藏前台网址中的index.php文件名 解决方法

    是否隐藏前台网址中的index.php文件名,解决方法如下: 第一步:先在网站后台设置隐藏前台网址中的index.php文件名(如图所示). 如果空间不支持,就要按下面步骤操作. 第二步:可以通过UR ...

  6. 在一个有返回值的方法中,用block回传的解决方法

    在一个有返回值的方法中,用block回传的解决方法 参考文章: (1)在一个有返回值的方法中,用block回传的解决方法 (2)https://www.cnblogs.com/dsp-ios/p/64 ...

  7. 开发chrome 插件, background.js中 console log 看不到解决方法

    开发chrome 插件, background.js中 console log 看不到解决方法 参考文章: (1)开发chrome 插件, background.js中 console log 看不到 ...

  8. Button中command后面函数添加参数解决方法

    Button中command后面函数添加参数解决方法 参考文章: (1)Button中command后面函数添加参数解决方法 (2)https://www.cnblogs.com/smart-ziha ...

  9. 【培训】 项目实训中遇到的问题 总结 跟解决方法

    [培训] 项目实训中遇到的问题 总结 跟解决方法 参考文章: (1)[培训] 项目实训中遇到的问题 总结 跟解决方法 (2)https://www.cnblogs.com/TwilightSnow/p ...

最新文章

  1. vivado的ip核使用-pll
  2. python __file__ 与相对路径
  3. poj 3797(状态压缩dp)
  4. jsp设置背景图片并使得图片扩大到整个屏幕
  5. java 图片组合 分解_切分和组合图片(二)
  6. MySQL数据分析-(1) 数据库前言
  7. 35.5. array route
  8. Hyperledger fabric 区块结构、交易结构
  9. python修改app定位_5种萌新技巧定位APP_SIGN代码
  10. Springboot毕设项目房屋租赁系统4yvi2(java+VUE+Mybatis+Maven+Mysql)
  11. 在ROS中创建工作区时出现错误
  12. Hive left semi join ,select 和 where中不能出现右表字段/不会生成笛卡尔积
  13. Python爬虫入门教程07:腾讯视频弹幕爬取
  14. 找回孩子丢失的阅读时光(转自中国文明网)
  15. PHP语言实现网站登录功能
  16. Blink/Flink作业 性能优化配置及原理
  17. Windbg MESC.dll 加载问题 The call to LoadLibrary(winext/MSEC.dll) failed, Win32 error 0n126
  18. 谷粒商城商品规格数据结构学习笔记(SPUSKU)
  19. 创建并运行 EMR on EKS 集群
  20. 2016,解密百度排名规则与算法

热门文章

  1. kubernetes(五)二进制安装-安装docker服务
  2. 深入Redis客户端(redis客户端属性、redis缓冲区、关闭redis客户端)
  3. c语言 年月日比较大小
  4. 【Day07】v-model 是如何实现的,语法糖实际是什么?
  5. 如何使用Puppeteer从任何网站创建自定义API
  6. 计算机考研英语词汇书,考研英语词汇参考书推荐
  7. java bean转string_Json、JavaBean、String等互转
  8. 手机usb无法被电脑识别_6种方法解决电脑无法识别移动硬盘
  9. markdown 入门1--标题目录代码图片
  10. 用Python一键生成炫酷九宫格图片,火了朋友圈