从CDialog :: OnPaint调用绘制函数

时间:2014-10-03 06:23:02

标签: winapi mfc

嗯,我想要一个非常简单的事情,但有点困惑。

    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)或者我应该在我的函数中创建一个新的。

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

1 个答案:

答案 0 :(得分:0)

这应该有用。

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);
}