VC2017下开发ATL程序注意事项

本文介绍了在VC2017环境下,针对ATL Simple Object手动添加成员函数的步骤,包括在idl文件定义接口、在ZT410类中添加方法声明以及实现这些方法。此外,还提供了C#单元测试和JavaScript测试的示例,以及处理字符串数组的方法。文章提醒,ws2s的实现需要更新为C++11的方式。
摘要由CSDN通过智能技术生成

VC2017下开发ATL程序注意事项

kagula

2019-4-29

阅读对象

      早期做过ATL 项目开发的C++程序员.

 环境

     Windows10 Pro, Visual studio 2017/Visual studio 2019, IE11, C++ ATL x86项目.     

正文

    VC2017相对于VC2013对ATL开发不是很方便, 因为不支持为ATL Simple Object自动添加function.

不过手动添加member function也挺简单的, 只要三个步骤就OK了.

  本文应该也适用于从VC2013过渡到VC2019的C++ ATL程序员.

假设你已经通过VC2017的wizard添加了名为ZT410的ATL Simple Object. 

第一步:  在idl文件中定义外部接口

interface IZT410 : IDispatch
{
	HRESULT print([in]BSTR templateName, [in]VARIANT* arrContent, [out, retval]long *result);
	HRESULT sayHello([in]BSTR msg, [out,retval]BSTR *result);
};

通过wizard建立ZT410后,   wizard还会为你自动生成IZT410(接口)代码.

我为这个接口添加了print和sayHello方法, 用来演示ATL参数如何传递.

 

第二步: ZT410 Class中添加方法定义

打开ZT410.h找到CZT410 class的声明, 在public后面添加print和sayHello的方法声明

public:


	STDMETHODIMP print(BSTR templateName, VARIANT* arrContent, long *result);
	STDMETHODIMP sayHello(BSTR msg, BSTR *result);

 

第三步(最后一步)

打开ZT410.cpp,  在里面添加这两个member function的实现

STDMETHODIMP CZT410::print(BSTR templateName, VARIANT* arrContent, long *result)

 

STDMETHODIMP CZT410::sayHello(BSTR msg, BSTR *result)
{
	using namespace std;
	wstring head = L"收到来自JavaScript的信息=>";

	wstring content = head +
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kagula086

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值