ctWithSite 是否支持IE的调用
四、添加接口函数
图六、调出增加接口方法的菜单
图七、增加接口函数 Add
请按照图示的方法,增加Add()函数,增加Cat()函数 。[in]表示参数方向是输入;[out]表示参数方向是输出;[out,retval]表示参数方向是输出,同时可以作为函数运算结果的返回值。一个函数中,可以有多个[in]、[out],但[retval]只能有一个,并且要和[out]组合后在最后一个位置。(注4)
图八、接口函数定义完成后的图示
我们都知道,要想改变 C++ 中的类函数,需要修改两个地方:一是头文件(.h)中类的函数声明,二是函数体(.cpp)文件的实现处。而我们现在用 ATL 写组件程序,则还要修改一个地方,就是接口定义(IDL)文件。别着急 IDL 下次就要讨论啦。
五、实现接口函数 鼠标双点图八中CFun\基项和接口\Add(...)就可以开始输入函数实现了:
STDMETHODIMP CFun::Add(long n1, long n2, long *pVal){*pVal = n1 + n2;return S_OK;}
这个太简单了,不再浪费“口条”。下面我们实现字符串连接的Cat()函数:
STDMETHODIMP CFun::Cat(BSTR s1, BSTR s2, BSTR *pVal){int nLen1 = ::SysStringLen( s1 ); // s1 的字符长度int nLen2 = ::SysStringLen( s2 ); // s2 的字符长度*pVal = ::SysAllocStringLen( s1, nLen1 + nLen2 );// 构造新的 BSTR 同时把 s1 先保存进去if( nLen2 ){::memcpy( *pVal + n