我刚开始学习MFC。我需要画一个圆圈。如果我使用OnPaint()它可以工作。我该怎么做才能在背景上画画?这是正确的功能还是我应该改变它?
void Cvaja5Dlg::OnRButtonDown(UINT nFlags, CPoint point)
{
CPaintDC dc(this);
dc.Ellipse(0,0,500,500);
CDialogEx::OnRButtonDown(nFlags, point);
}
答案 0 :(得分:6)
不,Windows绘画的工作方式不同。这是非常不同步的。
CPaintDC
只能在WM_PAINT
处理程序中使用,因为它会执行BeginPaint()
/ EndPaint()
次调用。CWnd::OnPaint()
/ CView::OnDraw()
方法进行。isRightButtonDown
并调用Invalidate()
以启动异步重新绘制窗口。要实施同步重新绘制,您可以在失效后立即使用UpdateWindow()
或RedrawWindow()
。答案 1 :(得分:0)
如果你想使用OnRedraw()方法重绘是好的... 在BeginPaint()和endPaint(); 使用CPAINTDC创建绘制处理程序的结构