📄 105157.html
字号:
Internet站点的人却没有这个便利。非常重要的是,用未被污染的客户机和服务器在Web
页的上下文环境中测试你的新控件。换言之,测试的最后阶段,要像任何访问你的Internet站点的人那样来看待这个控件。<br>
现在你已经明白我们要做些什么了,让我们看一下我们创建的控件的测试工作吧。在下面我将使用
Visual C++ 6.0。你可以使用支持OCX 的任意程序设计环境,例如,可以使用Visual
Basic或Delphi来测试OnOff控件,看看在这些语言中控件是如何工作的。重要的考虑不在于你用什么语言来测试,而在于要使用包含了全部调试支
持的一些程序设计语言来完全地测试这个控件。在预定要使用控件的最安全的环境中,要确保创建的控件能够真正地按预期方式工作。由于许多Internet工
具处于测试阶段,你会发现看起来好象控件能工作却又工作不了。在一个已知的环境中,通过对控件进行测试来消除控件本身的干扰,这是迈向找出问题的第一步。<br>
内部测试阶段1:在标准环境中使用控件<br>
内部测试的第一阶段不会是一个既长又累人的过程。真正需要完成的任务是使用标准程序设计环境创建一个工
程,然后把你创建的ActiveX控件添加进去。要保证所有属性如预期的那样工作起来,花些时间彻底地核查属性页。<br>
注 记住需要使用Project(工程)|Add to Project|Components
andControls(组件与控件)命令显示出Components and Controls
Gallery(组件与控件展台)对话框,在这个对话框中把OCXExmpl控件添加到当前工程中去。<br>
在你喜欢的(支持OCX工作的)程序设计环境中创建一个新工程。对于本例来说,在Visual
C++中创建一个基于对话框的应用程序就能容易地测试该控件。MFC
AppWizard(MFC应用程序向导)为你做了大部分工作。(在第2章中已讨论过用Visual C++
创建基于对话框的应用程序的过程)。我们把这个工程命名为OCXTest。<br>
<img src="105157_files/20061021231410140.JPG" height="307" width="661"><br>
创建了新工程之后,必要时再创建一个窗体,并把ActiveX控件添加进去。Visual
C++自动地将ActiveX控件注册,所以前一节中创建的控件就会出现在可用控件列表中。(其它程序设计环境可能需要你单独地注册你的ActiveX控
件)。图10.5 显示了为调试这一例子而创建的测试程序对话框,它还显示了 Property(属性)对话框中选中的Control(控件)属性页。<br>
<img src="105157_files/20061021231410616.JPG" height="408" width="626"><br>
绝大多数程序设计环境还提供了一种方法,使得你可以查看与一个控件相关联的所有属性。下图显示了
OCXExmpl Control Properties(控件属性)对话框的All页,其中OnOff 属性设置为True。<br>
也许你想向程序中添加一些测试代码,从而能够核查各个控件事件的作用。例如,本例中的On/Off开关
按钮提供了许多依赖于怎样设置按钮属性的模式结果返回值。把OnOff属性设置为True则创建了一个开关按钮,ModalResult属性在两个值间切
换。但是,也可以从Properties(属性)对话框的Control (控件)页中很容易地选择一种标准按钮值。<br>
第一件要做的事是按下CTRL键并双击控件,然后看到Add Member
Variable(添加成员变量)对话框,在Member Variable
Name(成员变量名)域中键入m_OnOffButton,还要保证Category(范畴)域设置成Control(控件),并且Variable
Type(变量类型)域设置成COCXExmpl。现在就能够在测试应用程序中访问控件的属性了。用右键单击控件,在上下文相关菜单中选中Events,
就能看到如下图所示的 New Window Message and Event Handlers(新建窗口消息和事件处理程序)对话框。<br>
<img src="105157_files/20061021231411988.JPG" height="425" width="641"><br>
请注意,Visual
C++自动地选择了Click(单击)事件和IDC_OCXEXMPLCTRL1对象。需要你做的工作是单击Add and Edit
(添加与编辑)按钮来向你的程序中添加一个新函数。看到Add Member
Function(添加成员函数)对话框后,接受缺省函数名并单击OK。这时就会看到这个按钮的函数框架。<br>
程序列表 10.6 是这个例子的C++测试代码。请注意,Visual
C++自动为控件创建的GetModalResult()封装类函数的使用。在OCXEXMPLE.H文件中,可以找到Visual C++
为你制作的全部说明。因为头文件说明了Visual
C++是如何与控件打交道的,所以看一下这个头文件是有启发意义的。看一下这个文件,能帮助你找出可能漏掉的接口问题,(特别是如果你不对控件的每个属性
进行完全测试时更是如此)。<br>
注释 创建OnClickOcxexmplctrl1()函数的方法有多种,最简单的方法是使用
MFC ClassWizard(类向导)(使用View(视图)|ClassWizard(类向导)命令显示这个向导)。在Object
IDs(对象标识)列表框中选中IDC_OCXEXMPLCTRL1项,并在Messages (消息)列表框中选中Click项。这时单击Add
Function(添加函数)按钮,就把函数添加到了你的程序中。<br>
<img src="105157_files/20061021231413137.JPG" height="271" width="612"><br>
<img src="105157_files/20061021231413759.JPG" height="613" width="640"><br>
<img src="105157_files/20061021231415953.JPG" height="352" width="613"><br>
我们已创建了一个简单窗体并把你的控件添加到该窗体上面,试着测试一下它吧。示例程序将显示一个简单的
带有ActiveX控件的对话框。单击控件,就会看到另一个对话框,其中显示了按钮的状态,如图10.6所示。单击OK或Cancel控钮(由
Visual C++自动提供)就结束本程序。如前所述,这是对控件基本功能的简单测试。到现在为止,我们核查了属性页、属性和使用控件的结果。<br>
<img src="105157_files/20061021231416666.JPG" height="306" width="577"><br>
内部测试阶段2: 在浏览器内进行本地测试<br>
到现在为止,我们还没有在本章中做一些哪怕是远远地接近一下在Web页中工作的事,至于向Web页中添
加ActiveX控件,涉及得就更少了(在第8
章中我们确实研究过使用Web页问题,如果想了解使用Internet的简单情况时,一定去读一下这一章)。该变化一下了,测试过程的下一步就是把控件插
入到一个HTML文档中,我们再次使用一个非常简单的设置。<br>
注释
在这一节中,我们使用一个非常简单而且容易使用的实用程序。如果计划设计许多普通的或高难度的Web页,那么,应该考虑使用某个工具,比如
Visual InterDev 。但ActiveX Control Pad用作测试工具或用作设计简单Web页更好使用些。<br>
Microsoft提供了一个ActiveX Control Pad
实用程序,可用于测试控件时快速建立HTML页。图10.7是第一次打开这个实用程序时的样子。还可以用它创建功能强大的
Web页(第8章我们讨论过创建过程)。<br>
<img src="105157_files/20061021231416806.JPG" height="474" width="672"><br>
为了创建用于测试ActiveX控件的HTML页,使用Edit(编辑)|Insert
ActiveXControl(插入ActiveX控件)命令显示出Insert ActiveX
Control(插入ActiveX控件)对话框。从提供的列表中选择你的控件,单击OK,就会看到ActiveX控件已装入,如图10.8所示。正常情
况下,应该把该控件放入一个窗体中,但这儿唯一的目的只是测试它而已。<br>
每装入一个新控件,ActiveX Control Pad都会自动地显示出Properties
(属性)对话框,如图10.8所示。这个对话框包含了这个控件的已发布的(published)属性的标准列表。请留意图10.8还显示出了
General属性页,通过用右键单击控件并在关联菜单中选择所需的项,就可显示出这个页。对我们的示例来说,要选择第二个Properties(属性)
项。<br>
我们需要改变的唯一一个属性是Properties(属性)对话框中的OnOff属性,把它变成
True,然后关闭包含控件的对话框。ActiveX Control
Pad就向HTML页脚本添加一个标记(如果看不懂HTML页上的专用术语的话,请到第8章找出对HTML标记的说明
)。请注意该项包含了控件的CLASSID和所有需要设置的属性。<br>
<img src="105157_files/20061021231417376.JPG" height="594" width="711"><br>
技巧
你在HTML脚本中紧挨着<OBJECT>标记的地方会看到一个小按钮。单击这个按钮,再次显示这个控件,从而可以编辑它的属性。每当你把一
个 ActiveX 控件或一个HTML页框架放入脚本时,ActiveX
ControlPad就显示这个按钮,使你能容易地按需要编辑控件或页面布局。<br>
使用工具栏上的Save(保留)按钮保存示例HTML页面,我将其命名为TestPage.HTM
。关闭ActiveX Control Pad,然后,使用你喜欢的与ActiveX兼容的Web 浏览器(写作本书时,仅限于Internet
Explorer 和使用使用NCompassScriptActive 插件的Netscape
Navigator)。打开这个HTML页面。如果你使用Internet
Explorer,要保证把浏览器的安全层次设为中等。设置安全层次的步骤是:使用View(视图)|Options
(选项)命令,选择Security(安全)页,在这个页中单击Safety Level(安全层次)按钮即可。<br>
注 要保证保存的测试用Web页的文件扩展名为HTM。<br>
装入TestPage.HTM文件后,所看到的如图10.9所示。现在看上去并不使人肃然起敬,但控件
却能做那些标准HTML页按钮做不到的事。单击按钮,就会看到标题在On和Off
间切换。你还能监测按钮的模式结果值并确定它处于什么状态,所有这一切,一行CGI脚本代码也不用写就做到了!(本章后面将讨论从ActiveX控件中得
到信息的方法。)<br>
<img src="105157_files/20061021231419668.JPG" height="589" width="718"><br>
注释 也许你会看到Satety Violation
(安全被破坏)对话框,它告诉你本页的ActiveX控件含有不安全代码。这是因为我们还没有把它注册(mark)为安全的。在第14章中会学到关于安全
性的知识,第14章中包括了一旦控件完全测试完成后,怎样把它注册为安全的,现在暂且不用理会这条消息。4.2版以上的Microsoft
Visual C++
提供的工具负责处理这些细节(至少提供一个菜单使你不必回到DOS提示符下)。本章开头我就说过,可以用旧编译器编译ActiveX控件,但新的编译器使
得做这类事更方便,上面的情形就是其中的一个方面。<br>
现在,已在C++和本地ActiveX文档中测试了控件的基本功能。在移到网络上去之前,应该试试控件
的各种变换,比如,OnOff控件应能在其它几个标准配置中工作,试一下看看它们是否真能工作。<br>
现在要把OnOff控件与其它控件集成在一起使用了。我们在ActiveX
ControlPad中新建一个HTML页。我们先创建一个新的HTML框架,然后把 OnOff 控件放入这个框架。使用File(文件)|New
HTML Layout(新建HTML框架)命令,创建一个如图10.10
所示的窗体(这个图还显示了在下面段落中要添加的On/Off控件)。就是在这里,你可以拖几个组件来与OnOff控件集成在一起。注意到示例框架中为了
进行测试,只把几个控件放到了窗体上。在这时,确实不必添加太多的复杂性,只要有足够的信息来保证控件能在一个标准的HTML环境中工作就可以了。<br>
注 有趣的是,我们在工具箱中看到的所有控件,实际上都是ActiveX 控件而不是标准HTML控件。<br>
这次添加ActiveX控件的过程与以前有些不同。右击Toolbox(工具箱),就会看到上下文菜
单,选择 Additional Controls (附加控件)选项,就会看到如下图所示的Additional
Controls(附加控件)对话框。<br>
<img src="105157_files/20061021231420259.JPG" height="390" width="653"><br>
Additional
Controls(附加控件)对话框包含了你的机器上全部ActiveX控件的完整列表(实际上不用管这些控件会不会是OCX)。还能够选择显示出可插入
对象的完整列表。例如,你可以把Microsoft Word文档或一个Excel电子表格放入窗体。在第11章我们将讨论这个特殊过程。<br>
从列表中选中OCXExmpl可选项(或者是你命名的控件名称)。要保证确实把挨着这个控件的复选框选
中,否则,ActiveX Control
Pad不安装它。单击OK则大功告成。你会看到一个新控件添加到了你的Toolbox(工具箱)中。抓取住它并把它挨着Command(命令)按钮放下,
如图10.10所示。和以前一样,如果使用本章中的示例控件,就要保证把它的OnOff属性设置成True。<br>
完成编辑后,保存你的框架,然后关闭本页。ActiveX Control
Pad将向HTML脚本添加一个<OBJECT>标记,就如同前面为我们测试的ActiveX
Control页所做的工作那样。当然,这时的不同点是我们看到了一整页控件,而不是仅仅只有一个控件在页上呆着。保存新的测试页,然后再用浏览器打开它
看看控件能不能工作。在这种环境下对控件进行测试后,你就可以使用我们刚才建立的两个页,移兵到网络中进行测试了。<br>
<img src="105157_files/20061021231421787.JPG" height="570" width="725"><br>
内部测试阶段3: 使用网络连接测试整个Web页<br>
在网络上测试控件的方法相当多,唯一的要求是要有两台机器,一个是服务器,一个是客户机,并使用
TCP/IP协议将它们连接起来。你还可以在服务器上运行HTTP服务程序。幸运的是,Windows NT
4.0的两个版本都自带有小型的HTTP服务器,你可以用它进行测试。事实上,Windows NT的新版本还将包括FTP和Gopher服务器。<br>
Web链接 Windows 95用户进行Web页的本地测试时,不用再羡慕WindowsNT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -