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