在对话框(CDialog)程序中,为了让程序看上去漂亮一些,我们可以为对话框添加一个好看的背景图片,要想完成这个目标,可以利用afx_msg BOOL**OnEraseBkgnd**(CDC* pDC) 这个函数。
下面结合实例说明(实例可在我的CSDN资源中下载:[http://download.csdn.net/detail/margin1988/8337225](http://download.csdn.net/detail/margin1988/8337225)):
(1)找来一张合适的BMP格式的背景图片,将其放在工程的res目录下,然后在程序的资源视图中,将这张图片导入进来(假设导入后其ID为:IDB_BITMAP1)。
(2)在对话框的.h文件中添加函数声明:
~~~
afx_msg BOOL OnEraseBkgnd (CDC* pDC);
~~~
(3)在对话框的.cpp文件中添加其消息映射宏:
~~~
BEGIN_MESSAGE_MAP(CPoint22Dlg, CDialog)
ON_WM_ERASEBKGND()//消息映射宏
END_MESSAGE_MAP()
~~~
(4)在对话框的.cpp文件中实现该函数功能:
~~~
BOOL CPoint22Dlg::OnEraseBkgnd(CDC* pDC) //为对话框添加背景图片
{
CDialog::OnEraseBkgnd(pDC);
CBitmap m_bitmap;
m_bitmap.LoadBitmap (IDB_BITMAP1);
if (!m_bitmap.m_hObject)
return true;
CRect rect;
GetClientRect(&rect);
CDC dc;
dc.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = dc.SelectObject(&m_bitmap);
int bmw, bmh ;
BITMAP bmap;
m_bitmap.GetBitmap(&bmap);
bmw = bmap.bmWidth;
bmh = bmap.bmHeight;
int xo=0, yo=0;
/*函数从源矩形中复制一个位图到目标矩形,必要时按目前目标设备设置的模式进行图像的拉伸或压缩。*/
pDC->StretchBlt(xo, yo, rect.Width(),rect.Height(), &dc,0, 0,bmw,bmh, SRCCOPY);
dc.SelectObject(pOldBitmap);
return true;
}
~~~
- 前言
- VC++中自定义热键及响应
- CFileDialog文件对话框
- VC++中客户区保存为BMP图片
- VC++读、写注册表
- VC++播放音频文件和音频数据的方法
- VC++调用Matlab编写的DLL(混合编程)
- VC++中文件读、写和其他相关操作汇总
- VC++获取系统当前时间
- VC++按钮控件字体设置
- VC++软件界面风格简单美化
- VC++中一些常用的数据类型之间的相互转化
- VC++中截取字符串的方法
- VC++中vector矢量的使用方法及随机相关
- VC++中结构体的定义及使用
- VC++中List Control控件的使用方法介绍
- VC++中窗口过程函数及其消息发送、响应机制介绍
- VC++中Ribbon编程架构及SDI架构多视图切换介绍
- 串口通信基础知识及VC++实现
- VC++中单个键盘按键的响应
- VC++中的计时器及多媒体高精度计时器
- VC++编写DLL导出函数及其调用方法
- VC++对话框(CDialog)的全屏显示及控件居中显示
- VC++对话框(CDialog)添加背景图片
- VC++图片控件(Picture Control)显示资源位图(BMP)、文件位图(BMP)、其它格式文件图片(JPG\PNG\BMP)的方法
- VC++对Access数据库的操作(查询、插入、更新、删除等)