1. 首先添加COM初始和终止代码。在应用程序类的初始化实例函数InitInstance()中添加如下代码:
CoInitialize(NULL)
……
CoUnInitialize()
上述语句运行在MFC框架/非MFC框架中,但由于本文程序使用MFC框架,所以也可以利用AfxOleInit()函数对其进行初始化。
2. 然后用#include 语句包含对组件头文件的引用并创建组件对象。在头文件中包含了接口的C++定义以及说明接口ID IID和类ID CLSID的符号化常量。创建工作在初始化对话框函数中进行:
IAccount pAccount=NULL
……
CoCreateInstance(CLSID_Account,
NULL,
CLSCTX_INPROC_SERVER,
IID_Iaccount,
reinterpret_cast (&pAccount))
3. 最后释放组件对象。该工作应在程序退出之前完成,比如在消息WM_CLOSE的响应函数中进行:
if(pAccount!=NULL)
pAccount->Realease()
对该代码组件中的其他功能函数的调用,可以通过组件对象的接口指针pAccount来进行:
……
BSTR bstrResult
PAccount->Post(100,bstrResult)
SysFreeString(bstrResult)
……
由于COM支持类在comdef. h中定义,所以还要包含对该头文件的引用,才可以使程序正常运行。
添加一个类模块,名称为“ClsAdd”,并输入如下几行代码:Option Explicit
Public x, y As Integer
Public Function myAdd() As Integer
myAdd = x + y
End Function
3、打开“工程属性”对话框,选择“生成”,选中“自动升级”;选择“部件”,选中“远程服务器文件”(此点很重要,否则编译时不会生成类型库文件COM_Test.TLB)及“二进制兼容”,最后“确定”
4、保存并编译,生成“Com_Test.dll”
5、打开“控制面板/管理/组件服务”,在“COM+应用程序”下利用“COM+应用程序安装向导”创建一个空的COM+应用程序,名称为“MyTest”
6、在“MyTest”下,新建“组件”,在“组件安装向导”中,选择“安装新组件”(注意:不要使用“导入已被注册的组件”),然后将第4步生成的Com_Test.dll及Com_Test.tlb都添加进来(两个文件都要!),完成。
7、右击“COM+应用程序”上方的“我的电脑”,选择“属性”,然后在“属性”对话框中的“默认属性”页下,将“默认身份验证级”改为“无”,确定。
8、右击“MyTest”,导出客户端的“应用代理”。注意:在导出对话框中,必须选择“应用程序代理”而不是“服务器应用程序”!
9、将导出后的两个文件(即应用程序代理)安装到win98机器上,此时它会在注册表中添加几处注册项,并在C:\program files\ComPlus Applications下产生一个以CLISD命名的文件夹,打开来可看到Com_Test.tlb及Apl82.tmp二个文件。
注意:win98机器上是没有Com_Test.dll文件的,该文件在win2000 server机器上!
好了,准备工作至此结束,下面在win98机器上来验证你的COM+配置型组件能否工作。(先用Administrator及口令登录)
10、启动VB(+sp5.0),创建一个exe工程,在窗体上放置一个文本框与一个命令按钮,并在命令按钮的Click事件中加入代码:
Dim ox as object
set ox=createobject("Com_Test.ClsAdd","win2000 server 的IP地址")
ox.x=12
ox.y=13
text1.text=ox.myAdd()
执行程序,win2000 server 机器的硬盘灯一阵闪烁之后,Text1中欢快地跳出“25”
---成功了!
你是添加控件还是什么? WM_CHILD 表示创建一个子窗口 WM_POPUP表示创建一个d出窗口 你可以在属性对话框中添加一个这样的标准windows消息WM_POPUP来添加,系统会自动的生成一段代码。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)