科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件应用MFC开发高级应用程序

应用MFC开发高级应用程序

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文就是针对如何在Visual C++环境中使用MFC类库来开发高级程序所需要解决的一些问题进行了的探讨

作者:苟建兵 来源:pcvc.net 2007年11月16日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
三、使用单文档-多视结构

  如果用户使用过MFC进行编程,那么就会发现借助于AppWizard基于MFC无论编写SDI(单文档界面)还是编写MDI(多文档界面)都是十分方便的。MDI应用程序目前使用越来越普遍,人们熟悉的Microsoft公司的Office系列产品以及Visual系列产品都是典型的多文档应用程序。这种多文档界面具有多窗口的特点,因而人们可以在一个程序中使用多个子窗口来实现不同数据的浏览查看。如果用户要实现在MDI各个窗口之间针对同一数据进行不同的可视化就是一件比较麻烦的事情。值得庆幸的是,MFC提供的文档-视结构大大简化了这一工作。文档-视结构通过将数据从用户对数据的观察中分离出来,从而方便实现多视,亦即多个视口针对同一数据,如果一个视口中数据发生改变,那么其它相关视口中的内容也会随之发生改变以反映数据的变化。

  SDI和MDI这两种Windows标准应用程序框架并不是总能满足用户的需要,就作者的工作而言,就特别需要一种被称为单文档多视的应用程序,英文可以缩写为SDMV。通过SDMV应用我们可以利用文档类来统一管理应用程序的所有数据,同时需要采用多窗口以多种方式来可视化这些的数据,如棒图,趋势图和参数列表,从而方便用户从不同角度来观察数据。MDI虽然具有多窗口的特点,但是其为多文档,即通常情况下,一个视口对应一个文档,视口+文档便构成一个子窗口。在各个子窗口之间数据相互独立,如果要保持数据同步更新就需要采用特殊的技术了,采用这种方式既费时又费力。通过笔者的实践发现,利用MFC本身提供的多视概念通过适当改造MDI窗口应用程序就可以实现上述SDMV结构。

  所谓SDMV应用程序本质上仍然是一个MDI应用程序,只是在程序中我们人为控制使其只能生成一个文档类,这个文档在第一个视口创建时创建,注意,这里并不需要限制各个视口的创建先后顺序。此后与MDI窗口固有特性不同的是,所有新创建的子窗口都不再创建独立文档,而是把该新视口直接连接到已有的文档对象上,这样就使其成为单文档多视的结构,所有相关数据都存储在文档对象中,一旦文挡中数据发生改变,通过UpdateAllViews()函数通知所有相关视口,各个视口就可以在OnUpdate()中相应数据的变化。这种响应机制如下图所示:

  由于MDI本质上并不是为这种单文档多视机制服务的,因而在实际应用时需要解决一些问题。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章