|
 |
推荐文章 |
|
|
|
|
|
|
|
|
|
|
| 作者:本站收集 日期:2005-8-4 16:47:47 |
|
|
毫无疑问,Internet已经成为许多公司降低成本、提高效率计划的一部分,另外,Internet也是销售产品、查询信息的新方法,并能完成许多几年前人们还认为不能完成的许多商务方面的其它任务,这就是本例极为重要的原因。该示例展示了把Internet能力置入应用程序的方法,它把两种不同的媒体融合成了一个和谐的整体。
本节展示如何创建基于HTML文档的程序框架。虽然用向导生成的框架功能还有限,但它既能显示Internet上的HTML文档,也能显示不在Internet上的HTML文档。当我们拥有了可以使用的基本框架后,就可以考虑添加一些绝大多数应用程序都需要的某些增强功能了。
创建基本程序框架
对本例来说,我们将使用本章前面介绍过的单文档应用程序的一种变体。作为本工程的开始,使用File | New命令显示New对话框,选择MFC App-Wizard(EXE)工程类型,在Project Name域中键入名称,示例应用程序使用的应用程序名为Sg1_HTML,但你可以选择自己喜爱的任何名称。单击OK按钮,系统显示MFC AppWizard - Step 1对话框,选择Single Document选项,然后单击Next按钮两次,你会看到MFC AppWizard - Step 3对话框。
正常情况下,你会希望你的应用程序既用做OLE服务器又用做OLE容器。
但针对当前这种应用程序来说,绝大多数用户并不需要OLE服务器特性,原因在于只是使用这样的应用程序显示Web页面,而无须建立新的数据。正是出于这样的考虑,我们选择Container选项并选中Active Document Container复选框。回忆一下Active Document Container复选框的功能,就会知道它允许你显示像Microsoft Word这样的应用程序生成的ActiveX文档。再选中Automation和Ac-tiveX Controls复选框,单击Next,系统显示MFC AppWizard - Step 4对话框。
在这个对话框中你至少要看一看其中的几个选项:第一个选项是WindowsSockets,当应用程序要访问Internet或内联网时,应用程序需要Windows Socket支持。如果应用程序还要支持电子邮件,那么也要选中MAPI选项。最后,由于你的应用程序或许还需要相当复杂的工具条来向用户提供全功能的导航能力,那么也要选中Internet Explorer ReBars选项。我还把最近使用文件列表的文件数设置成了16。单击Next两次,系统显示MFC AppWizard - Step 6对话框。
这个对话框中唯一需要修改的选项是Base Class,必须把这个选项设置为CHtmlView,以便应用程序得到我们所期待的Internet功能。现在我们已经配置好了这个示例程序,单击Finish按钮,系统显示New Project Information对话框,然后单击OK生成框架应用。此时编译和运行应用程序时,你会看到如下图所示的屏幕显示。

增强示例程序功能
如果你只是打算显示你的Web站点的主页,那么使用上一节创建的应用程序框架就能完成这个任务。然而,在绝大多数情况下,还需要给应用程序添加一些基本的导航能力。只有单一的链接或许并不能让用户满意,因此,该应用程序至少要增加的功能是“向前”与“向后”按钮。现在就让我们看看增加这两个按钮的方法吧。

首先需要完成的任务是打开IDR_MAINFRAME对话框,没错,Internet Ex-plorer ReBar实际上是个对话框,而不是标准的工具条。该对话框的类是CDialogBar而不是过去我们常用的标准CDialog类。与其它任何对话框相同,你可以向这个对话框上添加标准的Windows控件,我们在这个对话框上添加了两个按钮,如下图所示。请注意,这两个按钮的标题为Forward和Backward,其ID分别为IDC_FORWARD和IDC_BACKWARD。
现在我们在ReBar对话框上放置了两个按钮,但还没有定义单击它们时做些什么事。实际上,如果现在就编译和运行这个应用程序,你会看到这两个按钮以灰色显示,并且什么事也做不了,其原因在于,我们告诉了Visual C++在哪里绘制这两个按钮,但并没有告诉Visual C++用它们来干什么。让这两个按钮发挥作用需要下述三个步骤:
1. 定义按钮与消息处理程序之间的连接。
2. 声明消息处理程序函数。 3. 编写消息处理程序代码。
让我们先完成第一步,定义按钮与消息处理程序之间的连接。由于我们希望这两个按钮影响HTML页面的内容,我们需要在CSgl_HTMLView类中使用ON_COMMAND宏建立连接。程序列表2.5以粗体形式显示了需要添加到CSgl_HTMLView.CPP文件中MESSAGE_MAP节的代码。请注意,ON_COMMAND宏提供了这两个按钮(标识为IDC_FORWARD和IDC_BACKWARD)与其对应的消息处理函数之间的连接。


当我们定义了这两个按钮与其对应的消息处理程序之间的连接后,需要在CSgl_HTMLView.H文件中声明相应的函数。程序列表2.6显示了声明这些函数的方法。需要保证的一点是,函数要声明成希望创建的消息处理程序。在这个声明中有几点需要注意:首先,把函数声明成public方式,这样在该类的外部也可以访问这些函数;其次,把函数声明成虚函数类型,以便在必要时重载它们。

这两个消息处理函数相当简单,程序列表2.7显示了需要添加到CSgl_HTMLView.CPP文件尾部的程序代码(在消息处理程序节)。这两个消息处理程序所做的事情就是直接调用CHtmlView类的成员函数GoForward()和GoBack()。

如果现在编译和运行这个应用程序,就会发现ReBar上已经添加了两个按钮。单击Backward移动到最近浏览过的前一个Web页面,单击Forward按钮就会看到刚刚退出的那个页面。这两个按钮的工作方式与它们在Web浏览器中的工作方式相同。当然,这还仅仅是个开始,你可以在该对话框工具条上添加任意个数的定制按钮或其它控件。 |
|
|
|
|
|
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
|
|
|
|
|
责任编辑: 原点 |
投稿作者: 本站收集 |
|
|
信息来源: 网络 |
录入时间: 2005-8-4 16:47:47 |
|
|
|
| |
|