• 当前位置:首页>>VC语言>>VC基础教程>>创建ActiveDocument
  • 创建ActiveDocument
  •     前面几节已经介绍了利用ActiveDocument应用程序(如Word for Windows或Excel )可以做些什么。如果你是一个只需要得到一些增强性能的高级用户,或者是一个只想优化自己的Web站点的Web管理员,那么,这些就足够了;但毕竟你是一个需要用这些功能创建应用程序的程序员。
        即使对最好的程序员而言,手工加入前文所述的所有四个接口也是相当困难的。而且,由于Microsoft已经发布了C++的新版本(4.2以上版本都可以,不过5.0比4. 2更好用一些,6.0版则已天衣无缝了),实际上也没有必要去找这个麻烦。本节要介绍的就是创建支持ActiveDocument的应用程序的快速方法。创建其它任何应用程序都有的步骤这里就不再详述了,而着重介绍工程中涉及ActiveX的特定部分。
        首先,你需要完成的任务是创建一个新的工程工作区。第二章我们已经介绍了完成这项工作的步骤。你可以选择MFC AppWizard,然后给应用程序命名──本例把它命名为ActivDoc。单击OK开始一个创建过程,可以看到MFCAppWizard的第一页。为简单起见,选择Wizard第一页上的Single Document选项。两次单击Next跳过Wizard的第一和第二页,下面你将看到第三页对话框。
        第三页是为应用程序完成大部分ActiveDocument设置的地方。你可以为应用程序提供五个不同层次的OLE支持,最后的三个层次允许你添加ActiveDocument支持。Mini-Server选项不允许单独运行应用程序──必须在Word for Windows、Internet Explorer 3.0或其它什么容器中运行它。如果你想创建文件浏览器,这一级支持确实不错。下一选项是Full-Server,它允许应用程序自己运行。你可以利用这种应用程序来支持对象,但不显示它们。绘图程序经常是服务器应用程序的好例子,但是,不必作为一个容器来运行。最后一级,Both Container and Server (容器与服务器)是本示例要选择的选项。它允许你在应用程序中提供完整的OLE 2功能,包括嵌入对象。另外,你还可以选择ActiveX Document Server(文档服务器)复选框,如下图所示。另外,要确保选中Automation(自动化)和ActiveX Controls(控件)复选框。下图是选择选项后对话框的外观。

        注释 ActiveX Document container(文档容器)是Visual C++ 6.0的新特色。它允许建立的应用程序包含其它的ActiveDocument。例如,利用这种特色可以在没有真正提供HTML能力的应用程序中显示Internet Explorer文档。
        单击Next,系统将显示MFC AppWizard的第四页。该页上的大部分设置都已完成。你可能想把Recent File List(最新文件列表)的值设置的再高一点,因为大多数人都喜欢该特性(它当然要占用硬盘空间)。大部分情况下设为9或10就足够了;本示例中设置为10。
        该页还包括一个Advanced(高级选项)按钮──如果不仔细的话,大部分程序员都会忽略该按钮。不幸的是,该按钮实在不应该标识为Advanced,(也许Microsoft 应考虑对Application Wizard(应用程序向导)做点修改使某些设置的意义更明确一些)。单击Advanced按钮,即会显示如图11.4所示的对话框。

        Advanced Options(高级选项)对话框的Document Template Strings (文档模板串)属性页允许你为应用程序设置文件扩展名。另外,它还自动完成一些幕后的工作。本例使用的文件扩展名为AXD。你要做的工作就是在第一个域(开始为空)中输入扩展名。也许你还想修改其它字符串,如Frame Caption(主框架标题)域。该例使用ActiveX Document Editor(文档编辑器)。另外,你可能想让Filter Name(过滤器名称)域中的输入值更富于描述性。初始时它是ActivDFiles(*.axd) ,把它更改为ActiveX Document Files(*.axd)时可读性会更好些。有些人确实不太在意File Type Name(文件类型名称)域的长短(缺省为ActiDDocument),不过如果把它更改为ActiveX Document一定会对以后注册时的检索大有帮助。另外,它也是在Windows上下文相关菜单中用于显示你的新文档的字符串(稍后还将进一步介绍)。做完这些修改后,Advanced Options对话框应如下图所示。

        至此,我们已经完成了创建一个简单的ActiveDocument服务器的所有选项设置,但还有一点需要修改。单击Close关闭Advanced Options对话框。单击Next 两次就可以到达MFC AppWizard-Step6-6对话框。在类列表中选择CActiveDocView项,然后在Base Class(基类)域中选择CRichEditView。此时的对话框如下图所示。

        最后一步的目的是,在你愿意时,允许把该例子的应用程序作为简单的编辑器。如果愿意的话,你还可以实现标准的CView类,它不影响该程序作为ActiveDocument服务器的功能。现在单击Finish完成该工程,就会看到如下图所示的New Project Information(新工程信息)对话框:

        花点时间浏览一下特性列表,以确定应用程序所需的ActiveX支持是否完整(做过几个工程后,你就能通过该对话框迅速发现问题了)。单击OK生成工程。
        测试缺省的应用程序
        现在,虽然我们的示例应用程序还做不了太多的事,但它确实能在Wizard之外做一些什么了。当MFC AppWizard创建完成之后,你可以编译并运行该应用程序。运行应用程序很重要,因为第一次运行时,应用程序将生成一些注册表项。可以发现的第一个变化是Windows上下文相关菜单现在包含了应用程序文件类型的一个表项,如下图所示,并且它与前面章节中我们在Advanced Options对话框的File Type Name域中输入的名称一样。

        你还可以发现另一个变化。图11.5显示了在OLE/COM Object Viewer 实用程序(前面已用过它)中的ActiveX文档应用程序类型。可以看出,它与其它的文档对象棗比如Word for Windows棗列在了一起。你应该能够立即发现,本章介绍的四个接口,在这里一个也没有出现,就像Word for Windows 或其它Binder程序一样。在程序已经准备好进行测试之前检查接口,本节稍后会让你了解为什么这样做会大大节省时间和精力。
        ActiveDoc程序还能够创建一个基本的容器文件。你需要做的工作只是用Insert/Object命令给当前文档加入一个已有的对象。你可以将该文件保存到磁盘中。现在试着创建一个容器文件,以便能用Internet Explorer测试应用程序框架。确保已插入了一个对象,然后保存文件,否则打开文档时将什么也看不见。该例使用ColorBlk. BMP作为对象;而文件本身保存为TESTDOC.AXD。一旦你创建了测试文档,就应该创建一个HTML页面来测试它。程序列表11.2显示了该例使用的代码。

    [1] [2] [3] 下一页  

  • 上一篇:使用URL和Moniker
    下一篇:ActiveDocument结构概述