VC++对话框(CDialog)添加背景图片
最后更新于:2022-04-01 20:35:14
在对话框(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;
}
~~~
';