1. 程式人生 > >MFC在非OnDraw、OnPaint中繪圖

MFC在非OnDraw、OnPaint中繪圖

MFC中,在OnDraw訊息響應函式中,可以利用引數 pDC 繪圖,如

void CXX::OnDraw(CDC* pDC)
{
	CLinkGameDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;
	// TODO: 在此處為本機資料新增繪製程式碼
	pDC->MoveTo(0, 0);
	pDC->LineTo(100, 100);
	}
}
但是,要想在別的地方繪圖,如單擊響應函式中繪圖,就需要獲得GDI物件,可以用CClientDC,如下
void CXX::OnLButtonDown(UINT nFlags, CPoint point)
{
	// TODO: Add your message handler code here and/or call default
	CClientDC dc(this);
	dc.MoveTo(0, 0);
	dc.LineTo(100, 100);
	//this->Invalidate();//呼叫Invalidate後,繪製內容將被擦除
	CView::OnLButtonDown(nFlags, point);
}

另外OnDraw、OnPaint函式處理訊息的區別:
void CView::OnPaint()
{ 
    CPaintDC dc(this);
    OnPreparDC(&dc);
    OnDraw(&dc); //呼叫了OnDraw
}

在OnPaint中,會呼叫OnDraw,因此一般會在OnDraw中編寫重繪程式碼