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

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

 2006-07-19 11:28:40 来源:WEB开发网   
核心提示: for (/* each CDocTemplate in app */) {for (/* each CDocument in CDocTemplate */) {// do something}}既然列举文档是如此的有用,我写了一个很小的类 CDocEnumerator,更新MFC中的视
for (/* each CDocTemplate in app */) {
  for (/* each CDocument in CDocTemplate */) {
    // do something
  }
}

既然列举文档是如此的有用,我写了一个很小的类 CDocEnumerator,隐藏了MFC中所有的模板和位置的机制。 实际上,这个类是我早在1995年9月写的——呵呵,这都几乎是十年前的事了。代码如 Figure 1 所示。 使用 CDocEnumerator 很容易在程序中列举所有打开的文档。

CDocEnumerator it;
CDocument* pdoc;
while ((pdoc=it.Next())!=NULL) {
  // do something
}

还有什么比这个更容易?为了在实际的例子中示范这个类的用法,我写了一个小程序 UpdView,该程序将模拟实时数据采集程序。UpdView 中每个文档对其打开的秒数进行计数。Figure 2 显示了工作中的 UpdView。如果下载、生成并运行 UpdView,你便能看到每个视图每秒更新显示文档打开的秒数。在 Figure 2 中,名字为 file2.dat 的文档有两个视图,它们都显示同一个底层文档。每个文档维持自己的自打开后的时间数(数据),视图只是进行显示(表现)。在你自己的程序中,UpdView通过主框架的定时器设置工作。这个定时器处理事件使用 CDocEnumerator 告诉每一个文档收集更多的数据,如下面所示:

void CMainFrame::OnTimer(UINT_PTR nIDEvent) {
  CDocEnumerator it;
  CDocument* pdoc;
  while ((pdoc=it.Next())!=NULL) {
   ((CMyDoc*)pdoc)->CollectMoreData();
  }
}

上一页  1 2 3 4 5 6 7  下一页

Tags:更新 MFC 视图

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