在 OnEraseBkgnd 中於客戶區平鋪繪製位圖,參考 MDI 客戶區背景繪製技巧。
BOOL CBmpbgDlg::OnEraseBkgnd(CDC* pDC) {
CRect rect; GetClientRect(&rect);
BITMAP bm; m_pBmp->GetObject(sizeof(BITMAP), &bm);
CDC dcMem; dcMem.CreateCompatibleDC(NULL);
CBitmap* pOld = dcMem.SelectObject(m_pBmp);
for (int x = 0; x < rect.Width(); x += bm.bmWidth)
for (int y = 0; y < rect.Height(); y += bm.bmHeight)
pDC->BitBlt(x, y, bm.bmWidth, bm.bmHeight, &dcMem, 0, 0, SRCCOPY);
dcMem.SelectObject(pOld);
return TRUE; // 阻止默認背景擦除
}
m_pBmp 為 CBitmap* 成員,需在構造/初始化時載入位圖資源。效果良好,代碼極簡。