VC++对话框(CDialog)添加背景图片

在对话框(CDialog)程序中,为了让程序看上去漂亮一些,我们可以为对话框添加一个好看的背景图片,要想完成这个目标,可以利用afx_msg BOOLOnEraseBkgnd (CDC* pDC) 这个函数。

下面结合实例说明(实例可在小木头工作室的CSDN资源中下载: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;
}

http://blog.csdn.net/marginmou/article/details/42494555

猜你喜欢

转载自blog.csdn.net/molly0511/article/details/78643481