继承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
)
默认风格如下:
- 继承CDialog 对话框需要改动的地方
- Eclipse直接复制项目需要改动的地方
- Eclipse里复制maven项目需要改动的地方
- phalapi改动的地方
- MFC的对话框类CDialog
- MFC的对话框类CDialog
- zlib的minizip和lua 5.1.4安卓编译需要改动的地方
- CDialog 非模态对话框的创建和销毁
- CDialog模态对话框
- Tomcate 端口改动 需要改动的配置参数
- CDialog::CDialog(CWnd* pParent),由窗体对话框的构造函数联想到。
- 对话框和对话框类CDialog
- 对话框和对话框类CDialog
- 为对话框设计美观的工具栏 (Add toolbar for CDialog)
- 为对话框设计美观的工具栏 (Add toolbar for CDialog)
- 需要注意的地方
- 需要注意的地方
- 需要修改的地方
- posix信号量
- 网页嵌入视频背景(mp4当作banner)
- iOS UICollectionView 按钮点击变色(收藏点赞功能)实现
- java——深入java.util包(collection接口之AbstractCollection)
- web.xml配置含义
- 继承CDialog 对话框需要改动的地方
- Android如何优雅地实现ListView加载更多功能(2)
- Day 2 CNN进阶之旅
- 深入理解awgn函数如何向信号中添加高斯白噪声
- Win7怎么运用组策略编辑器禁用命令提示符
- php 坐标转换
- Selenium2 IDE安装问题
- Linux系统引导流程
- node.js 使用 body-parser模块时,传输过来的数据出现undefind的情况