HBRUSH CTestBKGroundDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { if (nCtlColor == CTLCOLOR_DLG) { HBITMAP hbm = (HBITMAP)LoadImage(AfxGetApp()->m_hInstance, _T("MyBitMap.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); hbr = CreatePatternBrush(hbm); DeleteObject(hbm); return hbr; } else { CRect rect; pWnd->GetClientRect(&rect); pWnd->ClientToScreen(&rect); ScreenToClient(&rect); HBRUSH hbr = NULL; HBITMAP hbm = (HBITMAP)LoadImage(AfxGetApp()->m_hInstance, _T("MyBitMap.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); CDC dc; dc.CreateCompatibleDC(pDC); dc.SelectObject(hbm); CDC dc2; dc2.CreateCompatibleDC(&dc); CBitmap bitmap; bitmap.CreateCompatibleBitmap(&dc, rect.Width() + 20,rect.Height() +20); dc2.SelectObject(bitmap); dc2.BitBlt(0,0,rect.Width() + 20,rect.Height() +20,&dc, rect.left,rect.top,SRCCOPY); hbr = CreatePatternBrush((HBITMAP)(bitmap.m_hObject)); pDC->SetBkMode(TRANSPARENT); DeleteObject(hbm); bitmap.DeleteObject(); dc2.DeleteDC(); dc.DeleteDC();; return hbr; } }
