代码如下:
void CUMTView::OnDraw(CDC* pDC)
{
CUMTDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.TextOut(0,0,"memDC drawing");
pDC->BitBlt(0,0,100,100,&memDC,0,0,SRCCOPY);
}
问题:1 能顺序通过编译,但运行后什么也没有。
2 如果将CDC memDC语句换成CDC* memDC或CDC* memDC=NULL(下面的memDC作相应的变换)也能通过编译,但调试的时候在memDC.CreateCompatibleDC(pDC)一语句上通不过,在ASSERT(m_hDC==NULL)一句出现异常。
void CUMTView::OnDraw(CDC* pDC)
{
CUMTDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.TextOut(0,0,"memDC drawing");
pDC->BitBlt(0,0,100,100,&memDC,0,0,SRCCOPY);
}
问题:1 能顺序通过编译,但运行后什么也没有。
2 如果将CDC memDC语句换成CDC* memDC或CDC* memDC=NULL(下面的memDC作相应的变换)也能通过编译,但调试的时候在memDC.CreateCompatibleDC(pDC)一语句上通不过,在ASSERT(m_hDC==NULL)一句出现异常。
memDC.TextOut(0,0,"memDC drawing");
pDC->BitBlt(0,0,100,100,&memDC,0,0,SRCCOPY);你这样是不行的。内存dc中必须要设置一个兼容位图才行。你想,textout绘制的东西在哪里呢?
先CreateBitmap 再SelectObject
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.CreateCompatibleBitmap(&memDC,100,100);
memDC.SelectObject(&bmp);
memDC.MoveTo(0,0);
memDC.LineTo(100,100);
pDC->BitBlt(0,0,100,100,&memDC,0,0,SRCCOPY);
应该是bmp.CreateCompatibleBitmap(pDC,100,100);
)
CDC memDC;
pDC->SetBkColor(RGB(255,255,255));
memDC.CreateCompatibleDC(pDC);
memDC.SetBkColor(RGB(255,255,255));
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC,100,100);
memDC.SelectObject(&bmp);
CPen pen(PS_SOLID,1,RGB(255,0,0));
CPen* pOldPen=memDC.SelectObject(&pen);
memDC.MoveTo(0,0);
memDC.LineTo(100,100);
memDC.SelectObject(pOldPen);
pDC->BitBlt(0,0,100,100,&memDC,0,0,SRCCOPY);