CDialogEx是VS2003之后出现的,VC++6.0没有。
CDialogEx = CDialog Extend
Extend的意思是扩展,即扩展的CDialog! 这个类是CDialog的扩展类,基类就是CDialog,具备基类全部功能,并根据新系统需要增加了一些界面美化的功能。
比如修改对话框的背景颜色,标题栏的颜色,标题栏的位图,标题栏字体的位置和颜色,包括激活和非激活状态,对话框边界的颜色,对话框字体等。
如果使用的是VS2005之后的版本,推荐使用CDialogEx,好看一些,VC++6就不要想了,老实用CDialog吧。
两个在基础功能上没什么区别,但因为版本不同,MFC向导生成的类模板差异较大。

CDialogEx类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
/////////////////////////////////////////////////////////////////////////////
// CDialogEx dialog

class CDialogEx : public CDialog
{
    friend class CMFCPopupMenu;
    friend class CMFCDropDownListBox;
    friend class CContextMenuManager;

DECLARE_DYNAMIC(CDialogEx)

// Construction
public:
    CDialogEx();
    CDialogEx(UINT nIDTemplate, CWnd *pParent = NULL);
    CDialogEx(LPCTSTR lpszTemplateName, CWnd *pParentWnd = NULL);

protected:
    void CommonConstruct();

// Attributes:
public:
    enum BackgroundLocation
    {
        BACKGR_TILE,
        BACKGR_TOPLEFT,
        BACKGR_TOPRIGHT,
        BACKGR_BOTTOMLEFT,
        BACKGR_BOTTOMRIGHT,
    };

protected:
    HBITMAP            m_hBkgrBitmap;
    CSize              m_sizeBkgrBitmap;
    CBrush             m_brBkgr;
    BackgroundLocation m_BkgrLocation;
    CDialogImpl     m_Impl;
    BOOL               m_bAutoDestroyBmp;

// Operations:
public:
    void SetBackgroundColor(COLORREF color, BOOL bRepaint = TRUE);
    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);

// Overrides
public:
    virtual BOOL PreTranslateMessage(MSG* pMsg);

protected:
    virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);

// Implementation
protected:
    //{{AFX_MSG(CDialogEx)
    afx_msg void OnActivate(UINT nState, CWnd *pWndOther, BOOL bMinimized);
    afx_msg BOOL OnNcActivate(BOOL bActive);
    afx_msg BOOL OnEraseBkgnd(CDC* pDC);
    afx_msg void OnDestroy();
    afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
    afx_msg void OnSysColorChange();
    afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection);
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()

void SetActiveMenu(CMFCPopupMenu* pMenu);
};

CDialog 类 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
 
/////////////////////////////////////////////////////////////////////////////
// CDialog - a modal or modeless dialog
class CDialog : public CWnd
{
    DECLARE_DYNAMIC(CDialog)

// Modeless construct
public:
    CDialog();

virtual BOOL Create(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
    virtual BOOL Create(UINT nIDTemplate, CWnd* pParentWnd = NULL);
    virtual BOOL CreateIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd = NULL,
        void* lpDialogInit = NULL);
    virtual BOOL CreateIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd = NULL);

// Modal construct
public:
    explicit CDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);
    explicit CDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL);
    BOOL InitModalIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd = NULL,
        void* lpDialogInit = NULL);
    BOOL InitModalIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd = NULL);

// Attributes
public:
    void MapDialogRect(LPRECT lpRect) const;
    void SetHelpID(UINT nIDR);

// Operations
public:
    // modal processing
    virtual INT_PTR DoModal();

// support for passing on tab control - use 'PostMessage' if needed
    void NextDlgCtrl() const;
    void PrevDlgCtrl() const;
    void GotoDlgCtrl(CWnd* pWndCtrl);

// default button access
    void SetDefID(UINT nID);
    DWORD GetDefID() const;

// termination
    void EndDialog(int nResult);

// Overridables (special message map entries)
    virtual BOOL OnInitDialog();
    virtual void OnSetFont(CFont* pFont);
protected:
    virtual void OnOK();
    virtual void OnCancel();

// Implementation
public:
    virtual ~CDialog();
#ifdef _DEBUG
    virtual void AssertValid() const;
    virtual void Dump(CDumpContext& dc) const;
#endif
    virtual BOOL PreTranslateMessage(MSG* pMsg);
    virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
        AFX_CMDHANDLERINFO* pHandlerInfo);
    virtual BOOL CheckAutoCenter();

protected:
    UINT m_nIDHelp;                 // Help ID (0 for none, see HID_BASE_RESOURCE)

// parameters for 'DoModal'
    LPCTSTR m_lpszTemplateName;     // name or MAKEINTRESOURCE
    HGLOBAL m_hDialogTemplate;      // indirect (m_lpDialogTemplate == NULL)
    LPCDLGTEMPLATE m_lpDialogTemplate;  // indirect if (m_lpszTemplateName == NULL)
    void* m_lpDialogInit;           // DLGINIT resource data
    CWnd* m_pParentWnd;             // parent/owner window
    HWND m_hWndTop;                 // top level parent window (may be disabled)

#ifndef _AFX_NO_OCC_SUPPORT
    _AFX_OCC_DIALOG_INFO* m_pOccDialogInfo;
    virtual BOOL SetOccDialogInfo(_AFX_OCC_DIALOG_INFO* pOccDialogInfo);
    virtual _AFX_OCC_DIALOG_INFO* GetOccDialogInfo();
#endif
    virtual void PreInitDialog();

// implementation helpers
    HWND PreModal();
    void PostModal();

BOOL CreateIndirect(LPCDLGTEMPLATE lpDialogTemplate, CWnd* pParentWnd,
        void* lpDialogInit, HINSTANCE hInst);
    BOOL CreateIndirect(HGLOBAL hDialogTemplate, CWnd* pParentWnd,
        HINSTANCE hInst);

protected:
    //{{AFX_MSG(CDialog)
    afx_msg LRESULT OnCommandHelp(WPARAM wParam, LPARAM lParam);
    afx_msg LRESULT OnHelpHitTest(WPARAM wParam, LPARAM lParam);
    afx_msg LRESULT HandleInitDialog(WPARAM, LPARAM);
    afx_msg LRESULT HandleSetFont(WPARAM, LPARAM);
    afx_msg void OnPaint();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};

// all CModalDialog functionality is now in CDialog
#define CModalDialog    CDialog

CDialogEx=CDialog ExtendExtend的意思是扩展,即扩展的CDialog

CDialog与CDialogEx的区别联系的更多相关文章

  1. MFC OnPaint()函数中最先调用CDialog::OnPaint()和最后调用CDialog::OnPaint()的巨大区别

    OnPaint()函数中最先调用CDialog::OnPaint()和最后调用CDialog::OnPaint()的巨大区别,如果没有注意这个问题就会出现无厘头式的绘图问题-- 效果就是出不来!在经过 ...

  2. MFC基础程序设计VS2015 最新03

    视频教程地址观看:http://pan.baidu.com/s/1mhKQ6kK 一.数字(浮点数或整数)转为文字:a)如果转为窄字符字符串,sprintf函数很好用,浮点数都没问题:b)如果转为宽字 ...

  3. BCG界面库

    之前用过BCG界面库中的表格控件,深感其强大,现在再来用一下其它的. 一.   关于BCGControlBar. BCGControlBar是一个基于MFC的扩展库,您可以通过完全的用户化操作构成一些 ...

  4. 在DLL中使用对话框

    在 DLL 中使用对话框资源与在 EXE 中使用是有所区别的,处理不当便会造成断言失败.原因是因为 CDialog::Create 与 CreateEx 默认使用当前进程中的资源(Dialog Tem ...

  5. MFC CDialog/CDialogEx DoModal ALT

    Questions: I'm using MFC CDialog/CDialogEx to show a modal dialog with DoModal.usually it works with ...

  6. VC中不同类型DLL及区别

    1. DLL的概念可以向程序提供一些函数.变量或类. 静态链接库与动态链接库的区别:(1)静态链接库与动态链接库都是共享代码的方式.静态链接库把最后的指令都包含在最终生成的EXE文件中了:动态链接库不 ...

  7. VS2008SP1中CDialogEx的使用问题及解决

    系统环境:Windows 7软件环境:Visual Studio 2008 SP1本次目的:建立一个CDialogEx的对话框 我们知道在VS2008SP1引进了BCG第三方控件,可以使MFC界面编程 ...

  8. C,C++,VC++有什么区别

    C语言是一种古老而又经久不衰的计算机程序设计语言,大约诞生于上个世纪60年代.由于它的设计有很多优点,多年以来深受广大程序设计人员的喜爱,并逐渐淘汰了很多其它程序设计语言.我们平时使用的大多数软件都是 ...

  9. MFC OnOk(),OnCancel(),OnClose(),OnDestroy()的区别总结

    MFC OnOk(),OnCancel(),OnClose(),OnDestroy()的区别总结(转) 第一,OnOK()和OnCancel()是CDialog基类的成员函数,而OnClose()和O ...

随机推荐

  1. Android传感器开发

    2013-07-02 Android 中传感器的种类 加速度,Sensor.TYPE_ACCELEROMETER 陀螺仪,Sensor.TYPE_GYROSCOPE 亮度,Sensor.TYPE_LI ...

  2. windows系统同时连接多个openvpn账户

    windows系统同时连接多个openvpn账户. 前提 客户端系统:Windows7 64位 OpenVPN版本:OpenVPN 2.3.10 Windows 64位 一.安装 1.安装目录 D:\ ...

  3. Tomcat中部署Java Web应用程序的方式

    Tomcat中部署Java Web应用程序的几种方式: #PetWeb是工程名 1.在TOMCAT_HOME\conf\server.xml文件的HOST节点中加入 <Context docBa ...

  4. PHP自学,第一阶段,基础学习

    环境搭建OS X系统上 Win7执行OS X虚拟机 在 OS X上安装MAMP执行环境 IDE使用 Netbeans PHP版本号开发 数据库使用mysql 自学资料使用:PHP从入门到精通.pdf ...

  5. vsftpd問題集

    vsftpd无法看到文件:226 Transfer done (but failed to open directory). 原因:目录不是一个 world_readable目录 解决方法:在配置文件 ...

  6. C++ 类中有虚函数(虚函数表)时 内存分布

    虚函数表 对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的.简称为V-Table.在这个表中,主是要一个类的虚函数的地址表 ...

  7. Java多线程简析——Synchronized(同步锁)、Lock以及线程池

    Java多线程 Java中,可运行的程序都是有一个或多个进程组成.进程则是由多个线程组成的.最简单的一个进程,会包括mian线程以及GC线程. 线程的状态 线程状态由以下一张网上图片来说明: 在图中, ...

  8. 移动端rem的用法

    标签: 1.rem(font size of the root element)是指相对于根元素的字体大小的单位,em(font size of the element)是指相对于父元素的字体大小的单 ...

  9. CSS3边框圆角知识

    <div class="item" data-brief="整圆"> <div class="border-radius" ...

  10. python把中文文档变为拼音

    缘由 新看到的一篇文章,被吓尿.Text Understanding from Scratch,认为word的cnn抽象能力还不够好,使用character来做cnn效果更佳.结果是,由于论文的使用的 ...