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; } ~~~
';