使用功能
OnEraseBkgnd(CDC* pDC)
我在 CDialog 派生类上写了一个填充屏幕的背景图像。
然后在 OnPaint 内部,我有以下代码只执行一次(第一次调用 OnPaint)。
GetInfoBarRect(&m_InfoBarRect);
m_InfoBarBGBitmap.CreateCompatibleBitmap(&dc, m_InfoBarRect.Width(), m_InfoBarRect.Height() );
bdc.CreateCompatibleDC(&dc);
pOldBitmap = bdc.SelectObject(&m_InfoBarBGBitmap);
bdc.BitBlt (m_InfoBarRect.left, m_InfoBarRect.top, m_InfoBarRect.Width(),m_InfoBarRect.Height(), &dc, 0, 0, SRCCOPY);
CImage image;
image.Attach(m_InfoBarBGBitmap);
image.Save(_T("C:\\test.bmp"), Gdiplus::ImageFormatBMP);
bdc.SelectObject(pOldBitmap);
bdc.DeleteDC();
上述代码,将屏幕的 m_InfoBarRect 部分复制到内存 CBitmap 中。
除了拥有背景图像的一部分,我只得到一个具有正确尺寸的空白填充矩形。
我的代码有问题吗?