从CDialog::OnPaint调用绘制函数



我想要一个非常简单的东西,但有点困惑。

    void CAppDlg::OnPaint()
    {
      CPaintDC dc(this);
      CDC pdc;
      pdc.CreateCompatibleDC(&dc);
      CBitmap *oldBmp = pdc.SelectObject(&m_BmpImg[0]);
      dc.BitBlt(0, 0, m_SizBmpImg[0].cx, m_SizBmpImg[0].cy, &pdc, 0, 0, SRCCOPY);
      dc.SelectObject(&oldBmp);
    }

在上面的代码片段中,我想把最后3行放到一个单独的函数中。现在我不能将CPaintDC作为函数参数传递,我需要将其转换为CDC或CMemDC。以及我如何通过这个pdc(CDC pdc),或者我应该在我的功能中创建一个新的pdc。

一个有点解释的样本会有很大帮助。

这应该可以工作。

void CAppDlg::OnPaint()
{
  CPaintDC dc(this);
  CDC pdc;
  pdc.CreateCompatibleDC(&dc);
  YourSeparateFUnction(dc, pdc);
}
void  CAppDlg::YourSeparateFUnction(CPaintDC & dc, CDC & pdc)
{
  CBitmap *oldBmp = pdc.SelectObject(&m_BmpImg[0]);
  dc.BitBlt(0, 0, m_SizBmpImg[0].cx, m_SizBmpImg[0].cy, &pdc, 0, 0, SRCCOPY);
  dc.SelectObject(&oldBmp);
}

最新更新