我使用静态拆分将我的 VC++6 MFC 应用程序的主视图与 (1x2) 或 (3x3) 等行和列分开。
单击这些部分之一是 Active View。
当我在 Active View 上绘制一个形状时,比如说一个圆形/矩形,所有其他视图都模仿我在 Active View 上绘制的形状。我该如何避免呢?
我尝试使用 Active View 作为第一个参数的 UpdateAllViews()。它仍然做同样的事情。
有任何想法吗?
UpdateAllViews() 为每个视图调用 OnUpdate() 函数。OnUpdate() 的默认实现使客户区无效(谈论简单的“图形”视图,如 CView() 或 CScrollView())。您可以覆盖 OnUpdate() 成员并在 lHint 和/或 pHint 参数中编码所需的行为(就失效/更新而言)。
如果您对所有视图使用相同的类,这是预期的行为,因为拆分器将所有视图连接到同一个文档对象。我假设您正在使用文档对象来存储绘图数据。
UpdateAllViews 用于在文档中的数据发生变化时更新视图。然后,每个视图使用文档的数据来呈现该数据的不同视觉解释。因此,每个视图将是不同的类型(由不同的类表示),知道如何可视化数据。
例如: document 用于存储数字数组。三个视图将这些数字显示为十进制、十六进制和二进制表示。如果更改了一个数字,则通知所有视图更新自己的表示。
在您的情况下,工作解决方案是将绘图数据移动到视图而不是文档。您的应用程序很可能根本不需要文档。