【问题标题】:MFC keep line draw after resizing调整大小后MFC保持线条绘制
【发布时间】:2015-08-24 22:48:05
【问题描述】:

我正在尝试使用MFC 创建一个简单的画图应用程序。因此,一切正常且符合预期。我只有一个调整大小的问题,事实上,当我重新调整窗口大小或最小化它时,一切都消失了,我得到了空白页。我发现这是由 OnDraw 函数引起的,但我找不到如何处理该问题。

【问题讨论】:

  • 我怀疑您在 OnDraw() 之外绘制窗口,对吗?那么答案就是——不要这样做。
  • 是的,我在 OnDraw() 之外绘制线条和其他形状,因为我需要使用事件 OnLButtonUp、OnMouseMove...
  • 您需要存储要呈现的形状(例如在鼠标消息处理程序中),并始终在您的WM_PAINT 消息处理程序中呈现这些形状。假设你有 CS_HREDRAW/VS_VREDRAW 窗口类样式,其他一切都可以正常工作。
  • 以及如何存储这些形状
  • 查看 MSDN MFC 示例中的 DRAWCLI 示例绘图程序。

标签: c++ mfc


【解决方案1】:

OnDraw 函数的目的是在窗口被调整大小/未覆盖/未最小化后重新创建绘图。您的 OnDraw 函数必须能够随时绘制所有内容。所以像 OnLButtonUp 这样的事件处理程序应该设置 OnDraw 可以使用的变量。然后事件处理程序可以调用 Invalidate 来引发新的 OnDraw。

【讨论】:

  • 所以如果我理解你的鼠标移动事件,我必须存储所有点,然后在绘制函数中重新创建形状
猜你喜欢
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 2019-01-13
  • 2017-10-20
  • 2017-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多