这是使用VS 2012编写MFC对话框程序的教程,主要是关于图片处理方面的操作,这些在MFC游戏、图片处理、软件编写中是经常要用到的知识。

一.创建项目

文件-新建项目-MFC应用程序-该页面使用“基于对话框”-完成即可。

MFC VS2012对话框背景填图_位图

注意:取消“使用Unicode库”,否则在使用AfxMessageBox会报错,没有一个可以转换的参数类型,要加AfxMessageBox(_T(“..”))。

运行结果:

MFC VS2012对话框背景填图_创建项目_02

二.添加背景Bitmap资源

在“资源视图”中右键鼠标Dialog处,选择“添加资源”。

MFC VS2012对话框背景填图_图片处理_03

在“添加资源”对话框中选择Bitmap,点击“导入”,选择工程文件res文件夹中的背景图片,它会添加一张IDB_BITMAP1的图片。

MFC VS2012对话框背景填图_创建项目_04

注意:在添加的图片中最好使用的是24位的BMP格式图片,图片应该放入res文件夹中。

MFC VS2012对话框背景填图_创建项目_05

三.编写代码

找到XXXDlg.cpp文件夹下的void CXXXDlg::OnPaint()函数,在else中进行修改。

1.首先注释掉CDialog::OnPaint()函数

CDialog是个对话框类,OnPaint()是成员函数,是对窗口进行重画,注释掉该语句否则会调用该语句不断重画,而不会执行下面添加的代码。注释掉该语句后最小化对话框后发现控件不可见,不过移动鼠标后又能看见。

2.添加代码


else {
//注释该语句:防止重复调用重画函数
//CDialog::OnPaint();
//添加代码对话框背景贴图
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect); //获取对话框长宽
CDC dcBmp; //定义并创建一个内存设备环境
dcBmp.CreateCompatibleDC(&dc); //创建兼容性DC
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP1); //载入资源中图片
BITMAP m_bitmap; //图片变量
bmpBackground.GetBitmap(&m_bitmap); //将图片载入位图中
//将位图选入临时内存设备环境
CBitmap *pbmpOld=dcBmp.SelectObject(&bmpBackground);
//调用函数显示图片StretchBlt显示形状可变
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcBmp,0,0,m_bitmap.bmWidth,m_bitmap.bmHeight,SRCCOPY);
}

MFC VS2012对话框背景填图_图片处理_06

四.运行结果

运行结果如下图所示:

MFC VS2012对话框背景填图_图片处理_07