VS2008SP1中CDialogEx的使用问题及解决

简介: 系统环境:Windows 7软件环境:Visual Studio 2008 SP1本次目的:建立一个CDialogEx的对话框       我们知道在VS2008SP1引进了BCG第三方控件,可以使MFC界面编程容易些,但是关于这方面的资料并不多。

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

默认风格如下:

目录
相关文章
|
安全 网络安全 数据库
“小红书基于零信任的数据安全落地实践”演讲实录
11月,为期两天的FCIS 2023网络安全创新大会(以下简称:“FCIS 2023大会”)在上海张江科学会堂圆满落幕。来自全球的数十位网络安全人物、企业安全负责人、技术大拿、研究学者等发表主题演讲,累计线下参会观众突破6000人次。 在主论坛E-Tech企业安全实践分享中,亿格云行业标杆客户「小红书安全技术负责人、首席数据官」周达发表了“基于零信任的数据安全建设实践”的主题演讲。分别从办公场景下的数据安全挑战、小红书全链路零信任体系和安全思考与展望三方面详细阐述。
|
7月前
|
人工智能 Linux 开发工具
Kiln AI:零代码实现微调模型!自动生成合成数据与微调模型的开源平台
Kiln AI 是一款开源的 AI 开发工具,支持零代码微调多种语言模型,生成合成数据,团队协作开发,自动部署。帮助用户快速构建高质量的 AI 模型。
1415 8
Kiln AI:零代码实现微调模型!自动生成合成数据与微调模型的开源平台
|
Nacos 开发者
nacos报错 Server check fail, please check server 127.0.0.1 ,port 9848 is available , error ={}
在配置文件中指定的Nacos服务器地址未被项目使用,程序仍尝试连接到127.0.0.1。开发者寻求帮助排查问题,已花费多天未果。
|
Kubernetes 安全 JavaScript
Docker 与 Podman:探索用于现代 Web 开发的容器技术
在软件开发中,Docker 和 Podman 作为主流容器化技术,各具特色。本文深入对比两者优缺点,探讨其实用场景与部署Web应用的最佳实践。Docker 凭借成熟生态和跨平台能力引领潮流;Podman 以无守护进程架构提升安全与效率。通过具体示例展示如何构建和运行Node.js与Angular应用,帮助读者理解核心命令与配置要点。无论是在开发环境还是生产部署,选择合适的工具能显著增强应用的安全性和稳定性。
701 1
|
Windows
wsl文件复制
wsl文件复制
196 3
|
程序员 C++
C++中第三方库的一般使用方式(libxl库为例)
C++中第三方库的一般使用方式(libxl库为例)
1516 0
|
机器学习/深度学习 人工智能 算法
推荐系统召回算法及架构说明
阿里巴巴技术专家傲海为大家带来推荐系统召回算法及架构说明的介绍。内容包括召回模块在推荐系统中的位置,召回算法的介绍,什么是协同过滤,以及向量召回架构的说明。
推荐系统召回算法及架构说明
|
SQL 编解码 网络协议
VC++ 知识小结(续)
VC++ 知识小结(续)
VC++ 知识小结(续)
|
API
【Vue3】电商网站吸顶功能
【Vue3】电商网站吸顶功能
192 0
|
Linux 数据处理 开发者
R语言如何快速安装R包?常见方法与报错解决方案汇总,适用于Windows、Mac、Linux多平台
R语言如何快速安装R包?常见方法与报错解决方案汇总,适用于Windows、Mac、Linux多平台