COM 组件设计与应用(十)——IDispatch 接口 for VC.NET
2006-07-22 22:55:55 来源:WEB开发网核心提示: 3-8:再增加一个转换字符串大小写的函数 Upper(),3-9:好了,COM 组件设计与应用(十)——IDispatch 接口 for VC.NET(3),下面开始输入程序代码: LONG CDispSimple::Add(LONG n1, LONG n2){AFX_MANAGE_STA
3-8:再增加一个转换字符串大小写的函数 Upper()。
3-9:好了,下面开始输入程序代码: LONG CDispSimple::Add(LONG n1, LONG n2)
3-10:编译注册
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return n1 + n2;
}
BSTR CDispSimple::Upper(LPCTSTR str)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CString strResult(str);
strResult.MakeUpper();
return strResult.AllocSysString();
}
如果上面的操作由于疏忽而发生了错误,那么你可以手工进行改正。
其一、你可以打开 IDL 文件进行修改,修改时要特别小心函数的声明中,有一个[id(n)] 的函数序号,可不要乱了;
其二、同步修改 H/CPP 中的函数声明和函数体;
其三、在CPP文件中,根据情况也要修改 BEGIN_DISPATCH_MAP/END_DISPATCH_MAP()函数影射宏。
正确编译后,vc.net 2003 比 vc6.0 要聪明多了,它会自动注册组件。如果复制到其它计算机上,你也需要手工执行 regsvr32.exe 进行注册。
四、用 ATL 实现双接口组件(操作方法和步骤,请参考《COM 组件设计与应用(六)》)
4-1:建立一个 ATL 项目,项目名称为“Simple8”
4-2:选择 DLL 类型、非属性方式、不要选择任何附加选项
4-3:添加新类,选择ATL 的简单对象
4-4:输入简称和选项,选项按默认进行,也就是双重接口方式(注2)
更多精彩
赞助商链接