COM 组件设计与应用(九)——IDispatch 接口 for VC6.0
2006-07-22 22:56:02 来源:WEB开发网核心提示: 3-6:启动 ClassWizard,选择 Automation 卡片,COM 组件设计与应用(九)——IDispatch 接口 for VC6.0(3),准备建立函数3-7:添加函数,我们要写一个整数加法函数Add(),正确编译后,MFC不象ATL那样会自动注册,3-8:再增加一个转换字
3-6:启动 ClassWizard,选择 Automation 卡片,准备建立函数
3-7:添加函数。我们要写一个整数加法函数Add()。
3-8:再增加一个转换字符串大小写的函数 Upper()。函数返回值是 BSTR,这个没有什么疑问,但参数类型怎么居然是 LPCTSTR?在 COM 中,字符串不是应该使用 BSTR 吗?是的,是应该使用 BSTR,但由于我们是用 MFC 写自动化组件,它帮我们进行 BSTR 和 LPCTSTR 之间的转换了。
3-9:好了,下面开始输入程序代码:
long CDispSimple::Add(long n1, long n2)
{
return n1 + n2;
}
BSTR CDispSimple::Upper(LPCTSTR str)
{
CString strResult(str);
strResult.MakeUpper();
return strResult.AllocSysString();
}
3-10:编译注册
如果上面的操作由于疏忽而发生了错误,那么你可以手工进行改正。
其一、步骤<3-6>的对话窗中有“Delete”操作;
其二、你可以打开 ODL 文件(注2)进行修改,修改时要特别小心函数的声明中,有一个[id(n)] 的函数序号,可不要乱了;
其三、同步修改 H/CPP 中的函数声明和函数体;
其四、在CPP文件中,根据情况也要修改 BEGIN_DISPATCH_MAP/END_DISPATCH_MAP()函数影射宏。
正确编译后,MFC不象ATL那样会自动注册。你需要手工执行 regsvr32.exe 进行注册,或者执行菜单“Tools\Register control”
更多精彩
赞助商链接