继承CDialog 对话框需要改动的地方

来源:互联网 发布:手机直播字幕软件 编辑:程序博客网 时间:2024/05/20 19:29

本次目的:建立一个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

)

默认风格如下:

原创粉丝点击