BMPDlg.cpp中在初始化函数OnInitDialog()中加入: BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); m_brBk.CreatePatternBrush(&bmp); bmp.DeleteObject(); return TRUE; // return TRUE unless you set the focus to a control }
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint()
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
//得到图片信息
BITMAP bmpinfo;
bmp.GetBitmap(&bmpinfo);
//在内存中创建一个位图兼容设备
CDC dcmemory;
dcmemory.CreateCompatibleDC(&dc);
//将图片选入兼容设备
CBitmap *pOldBmp=dcmemory.SelectObject(&bmp);
//将兼容设备的内容copy到屏幕设备中,实现真正的Paint
dc.BitBlt(0,0,bmpinfo.bmWidth,bmpinfo.bmHeight,&dcmemory,0,0,SRCCOPY);
//将设备还原
dcmemory.SelectObject(pOldBmp);
BMPDlg.h中
CBrush m_brBk;//在public中定义
BMPDlg.cpp中在初始化函数OnInitDialog()中加入:
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
m_brBk.CreatePatternBrush(&bmp);
bmp.DeleteObject();
return TRUE; // return TRUE unless you set the focus to a control
}
在打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),添加如下:
HBRUSH BMPDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd == this)
{
return m_brBk;
}
return hbr;
}