View MFC应用程序仅更新当前视图

View MFC应用程序仅更新当前视图,view,mfc,split,View,Mfc,Split,我使用行和列(如1x2或3x3等)的静态拆分来划分VC++6 MFC应用程序的主视图 单击时,其中一个部分是活动视图 当我在活动视图上绘制一个形状(比如圆形/矩形)时,所有其他视图都模仿我在活动视图上绘制的形状。我如何避免这种情况 我尝试了使用活动视图作为第一个参数的UpdateAllViews。它仍然如此 有什么想法吗?updatealViews为每个视图调用OnUpdate函数。OnUpdate的默认实现使客户端区域无效,因为它涉及到简单的图形视图,如CView或CScrollView。您可

我使用行和列(如1x2或3x3等)的静态拆分来划分VC++6 MFC应用程序的主视图

单击时,其中一个部分是活动视图

当我在活动视图上绘制一个形状(比如圆形/矩形)时,所有其他视图都模仿我在活动视图上绘制的形状。我如何避免这种情况

我尝试了使用活动视图作为第一个参数的UpdateAllViews。它仍然如此


有什么想法吗?

updatealViews为每个视图调用OnUpdate函数。OnUpdate的默认实现使客户端区域无效,因为它涉及到简单的图形视图,如CView或CScrollView。您可以覆盖OnUpdate成员,并对所需行为进行编码,以使lHint和/或pHint参数中的无效/更新相关。

如果您对所有视图使用相同的类,这是预期的行为,因为拆分器将所有视图连接到同一文档对象。我假定您正在使用文档对象存储图形数据

UpdateAllViews用于在文档中的数据发生更改时更新视图。然后,每个视图使用文档的数据对这些数据进行不同的视觉解释。因此,每个视图都是不同的类型,由知道如何可视化数据的不同类表示

例如:文档用于存储数字数组。三个视图将这些数字显示为十进制、十六进制和二进制表示。 如果更改了一个编号,将通知所有视图更新自己的表示


在您的情况下,工作解决方案是将图形数据移动到视图而不是文档中。很可能您的应用程序根本不需要文档。

您可以发布一些代码吗?很难说什么都不知道。答案在于,我使用相同的文档CDoc在主类视图的每个分割视图上绘制形状。当我移动形状列表时,该列表有助于迭代图像上绘制的形状,以便在需要时将其重新绘制到视图类并从那里处理图形,它工作正常,这意味着其他视图不会不希望地复制这些形状。