MFC画圈

时间:2012-10-29 15:36:01

标签: c++ mfc

我刚开始学习MFC。我需要画一个圆圈。如果我使用OnPaint()它可以工作。我该怎么做才能在背景上画画?这是正确的功能还是我应该改变它?

void Cvaja5Dlg::OnRButtonDown(UINT nFlags, CPoint point)
{
    CPaintDC dc(this);
    dc.Ellipse(0,0,500,500);
    CDialogEx::OnRButtonDown(nFlags, point);
}

2 个答案:

答案 0 :(得分:6)

不,Windows绘画的工作方式不同。这是非常不同步的。

  1. CPaintDC只能在WM_PAINT处理程序中使用,因为它会执行BeginPaint() / EndPaint()次调用。
  2. 所有绘图通常都应采用覆盖的CWnd::OnPaint() / CView::OnDraw()方法进行。
  3. 在用户输入(例如,鼠标右键)下,您的处理程序将更改您的班级状态,例如设置一些bool标志isRightButtonDown并调用Invalidate()以启动异步重新绘制窗口。要实施同步重新绘制,您可以在失效后立即使用UpdateWindow()RedrawWindow()

答案 1 :(得分:0)

如果你想使用OnRedraw()方法重绘是好的... 在BeginPaint()和endPaint(); 使用CPAINTDC创建绘制处理程序的结构