WEB开发网
开发学院软件开发VC 更新MFC中的视图,跟踪.NET Framework中的事件 阅读

更新MFC中的视图,跟踪.NET Framework中的事件

 2006-07-19 11:28:40 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 如何更新MFC中的视图? 如何跟踪.NET Framework 中的事件?我在 MDI 程序中打算通过 CMainFrame 中的定时器事件来更新所有的子窗口, 视图用于显示许多图表,更新MFC中的视图,跟踪.NET Framework中的事件,用如下的代码只能更新当前活动窗口:Get

本文示例源代码或素材下载

  1. 如何更新MFC中的视图?
  2. 如何跟踪.NET Framework 中的事件?

我在 MDI 程序中打算通过 CMainFrame 中的定时器事件来更新所有的子窗口。 视图用于显示许多图表。用如下的代码只能更新当前活动窗口:

GetActiveWindow()->GetActiveView()->GetDocument()

是否有其它的方法从 CMDIFrame 类中获得所有的子窗口或者所有的文档?

Makarand

你的情况并不罕见。许多采集实时数据的程序需要定时更新屏幕。即使你的程序不是采集实时数据,当用户的操作改变文档时,你一样要更新视图。MFC中doc/view模型(包括所有的object/view模型)的基本思想是数据与显示的分离。用户或者 实际事件改变了底层对象、数据或者文档,就会通过某些视图立即更新事件传递给显示机制。

对于同一个文档如果有数个视图,MFC已经有了一种机制一步到位地更新所有视图。这个函数就是CDocument::UpdateAllViews,它对打开文档的每 一个视图调用 CView::OnUpdate。你可以传递应用程序专用的,描述要执行哪一种更新操作的“提示”。例如,如果你知道仅仅是文档的标题改变了,你就可以定义一个枚举值 CHANGED_TITLE,将它作为 提示代码进行传递。如果你的文档包含了图片和文字,你可以定义枚举值 CHANGED_TEXT 和 CHANGED_GRAPHICS。这些 提示代码的目的是提高性能。通过“提示”来告诉视图什么东西改变了,这样就可以更智能地只重绘那些真正需要刷新的屏幕区域,从而避免潜在的耗时的绘制操作或屏幕闪烁。

UpdateAllViews 更新所有与某个文档关联的视图,但是如何更新所有的文档呢?MFC中没有UpdateAllDocuments 这样的函数,因此你需要自己列举所有的文档。这 就要求实现一个对文档模板和相关文档的循环操作,如下所示:

1 2 3 4 5 6  下一页

Tags:更新 MFC 视图

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接