c++ - MFC画圆

标签 c++ mfc

刚开始学MFC。我需要画一个圆。如果我使用 OnPaint() 它会起作用。我应该怎么做它会利用背景?这是正确的功能还是我应该更改它?

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

最佳答案

不,Windows 绘画的工作方式不同。这是相当异步的。

  1. CPaintDC只能在 WM_PAINT 内部使用处理程序,因为它执行 BeginPaint()/EndPaint() 调用。
  2. 所有绘图通常应在覆盖 CWnd::OnPaint() 中执行/CView::OnDraw()方法。
  3. 在用户输入(例如按下鼠标右键)时,您的处理程序应更改您的类的状态,例如设置一些 bool 标志 isRightButtonDown 并调用 Invalidate()启动窗口的异步重绘。要强制同步重绘,您可以使用 UpdateWindow()RedrawWindow()在无效之后。

关于c++ - MFC画圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13124780/

相关文章:

c++ - 两个数组的按位与优化

c++ - Makefile:让 ifstatement 工作时出现问题 =(

C++ MFC 创建新对话框并添加 Combobox 项

c++ - 如何初始化 boost 滚动窗口累加器?

C++ 限定转换 - 常量和模板

c++ - 将 double[,] 转换为 Variant*

c++ - 计算工具栏图标宽度

c++ - MFC 类附加 GDI 位图。析构函数中应该使用DeleteObject 和Detach 吗?

c++ - POCO::PostgreSQL:如何将std::vector支持添加到 `Binder::bind`?

c++ - CFileFind 不考虑目录的第一个文件