刚开始学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()
方法。 - 在用户输入(例如按下鼠标右键)时,您的处理程序应更改您的类的状态,例如设置一些 bool 标志
isRightButtonDown
并调用Invalidate()
启动窗口的异步重绘。要强制同步重绘,您可以使用UpdateWindow()
或RedrawWindow()
在无效之后。
关于c++ - MFC画圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13124780/