|
void CTransCtlDlgDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// Draw our own background image
CDC memDC;
CBitmap bmBkgnd;
HBitmap hBmBkgnd = ::LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BKGND));//IDB_BKGND为位图资源名称
bmBkgnd.Attach( hBmBkgnd );
// 如果你想自己画整个位图,那么你可以用以下语句建立一个空白位图
//bmBkgnd.CreateCompatibleBitmap(&dc, 800, 600);
memDC.CreateCompatibleDC(&dc); //创建内存模式的设备上下文,用于存放后台的图像
CBitmap *pOldBm = memDC.SelectObject( &bmBkgnd ); //这个memDC需要一个Cbitmap选入才能起作用
BITMAP bm;
bmBkgnd.GetObject(sizeof(bm), &bm); //得到 BITMAP信息,里面有长宽等,注意bmBkgnd.CreateCompatibleBitmap(&dc, cx, cy)确定了长宽,
//如果你要超出范围拷贝长宽以外的就是乱的
dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, SRCCOPY ); //把后台拷贝到窗口去
memDC.SelectObject( pOldBm ); //开始释放memDC中的CBitmap
bmBkgnd.Detach();
::DeleteObject(hBmBkgnd);
// Do not call CDialog::OnPaint() for painting messages
} |
|