Com开发中的BSTR
返回首页   更多文章...

以前在windows服务器上使用Asp+Com的方式来写网站,后来发现用Php+扩展更方便,就弃用Com方式了。Com开发的一些知识点回忆记录一下,有些可能记错了。使用工具:vc6。

Com开发主要是参数的传入和传出。我只使用了字符串和整数。字符串使用BSTR,整数long。


首先新建一个atl com appwizard工程。


1、插入一个“atl class”。


2、函数的添加,classview模式,右键点击接口名,选择"add method"。举例:

返回值:HRESULT 
函数名:自己定义
参数:[in] BSTR 传入参数1,[in] long 传入参数2,[out] BSTR*传出参数1,[out]long *传出参数2,[out, retval] long* 返回值 或 [out, retval] BSTR* 返回字符串


自动生成class中的函数声明:

STDMETHOD(函数名)(BSTR 传入参数1,long 传入参数2,BSTR *传出参数1, long *传出参数2,long *返回值 或 BSTR *返回字符串); 


在idl文件中自动生成:

interface 接口名 : IDispatch
{

[id(顺序号), helpstring("帮助字符串")] 添加的method声明;

.....
};



还可以“add property”,添加属性,将自动添加get_函数。只要在函数中返回对应的值。以后在asp中就可以用"对象.属性"的方式来获取值。



3、BSTR转化为字符串,使用CString最方便:

CString str=BSTR串;

如果工程是unicode模式,则可以直接把BSTR作为字符串(OLECHAR *)使用,使用SysStringByteLen(BSTR串)来获取长度。
unicode模式下,字符串使用OLECHAR来定义。字符串转化为整数是_wtoi()。字符串常量加L:L"字符串"。


4、返回值,字符串转化为BSTR

多字节模式:

BSTR A2WBSTR(char *);

unicode模式:

BSTR SysAllocString(OLECHAR *);


......


6、class实现后,编译并注册com组件(用regsvr32命令)。就可以在asp页面中创建对象,调用函数,进行字符串和整数的传入和传出。


(未完待续)


下一篇

bjtime.cn