首页 理论教育 测试COM+组件成功案例

测试COM+组件成功案例

时间:2023-11-16 理论教育 版权反馈
【摘要】:下面,我们编写一个基于对话框的客户应用程序项目CLIENT,用来测试COM+组件所提供的服务。我们将要通过这些ID创建COM+组件并获得IATM接口。程序清单10-2COM+组件测试代码在上面的OnButtonQuery消息处理函数中,首先接收用户输入的账户和密码,然后创建进程外COM+组件的对象实例并获得IATM的接口,接下来调用接口服务Query,此时,远程机器(或本机)上的COM+组件对象被创建或激活,从而执行Query的具体服务代码。

测试COM+组件成功案例

前面已经在“组件服务”工具中创建了BANKAPP服务应用程序,并把ATM组件安装进了该应用程序当中。到现在虽然没有任何客户代码使用BANKAPP,但组件已经在COM+运行环境中。当有客户向BANKAPP请求服务时,它就被激活然后提供ATM组件的服务。

下面,我们编写一个基于对话框的客户应用程序项目CLIENT,用来测试COM+组件所提供的服务。

(1)使用MFC AppWizard(exe)建立一个基于对话框的应用程序项目,项目名称为CLIENT。

(2)编辑对话框资源模板,添加若干控件并按照如图10-17所示布局。其中,各个控件的ID及功能说明见表10-1。

图10-17 客户程序对话框模板

表10-1 客户程序对话框模板上的各个控件说明

(3)使用ClassWizard为编辑框控件添加变量,如图10-18所示。

图10-18 为对话框中的各个编辑框控件添加变量

(4)把BANK项目文件夹下的BANK.h和BANK_i.c两个文件拷贝到CLIENT文件夹下,并使用Project->Add To Project->Files菜单命令添加BANK.h到项目中,因为我们要使用其中的IATM接口抽象类)。然后使用#include指令把BANK.h包含到CLIENTDlg.cpp文件中,再打开BANK_i.c文件,拷贝其中的三个ID(CLSID_ATM、IID LIBID_BANKLib和IID_IATM)到CLIENTDlg.cpp文件中。我们将要通过这些ID创建COM+组件并获得IATM接口。(www.xing528.com)

(5)使用ClassWizard分别为“查询”和“退出”按钮添加消息处理函数OnButtonQuery和OnButtonExit。程序清单10-2是它们以及第三步操作的代码。

程序清单10-2 COM+组件测试代码

在上面的OnButtonQuery消息处理函数中,首先接收用户输入的账户和密码,然后创建进程外COM+组件的对象实例(Instance)并获得IATM的接口,接下来调用接口服务Query,此时,远程机器(或本机)上的COM+组件对象被创建或激活,从而执行Query的具体服务代码。

(6)最后,在stdafx.h文件中添加一个宏:

#define _WIN32_DCOM

添加宏之后,编译链接我们的CLIENT程序。它的运行结果如图10-19所示。注意:这里要输入正确的账号和密码才能得到姓名和余额信息。

从COM+组件服务的测试过程可以看出,在组件的使用方面,COM+组件和第八章讲过的一般COM组件的不同之处就在于创建组件实例上,COM+组件的创建过程是:先设置服务器的信息,然后把它作为参数传递给CoCreateInstanceEx函数,最后返回一个MULTI_QI类型的变量,在这个便量中存放着查询到的多个接口。

图10-19 客户程序的运行界面

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈