WEB开发网
开发学院软件开发VC COM 组件设计与应用(十)——IDispatch 接口 for... 阅读

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)
{
  AFX_MANAGE_STATE(AfxGetStaticModuleState());
  return n1 + n2;
}
BSTR CDispSimple::Upper(LPCTSTR str)
{
  AFX_MANAGE_STATE(AfxGetStaticModuleState());
  CString strResult(str);
  strResult.MakeUpper();
  return strResult.AllocSysString();
}
  3-10:编译注册

如果上面的操作由于疏忽而发生了错误,那么你可以手工进行改正。

其一、你可以打开 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)

上一页  1 2 3 4 5  下一页

Tags:COM 组件 设计

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接