VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 557|回复: 5

ATL中的一个取值问题,我刚学搞得不是很清楚

[复制链接]

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-29 11:20:01 | 显示全部楼层 |阅读模式
我想传入2个数据进入,相加后把结果传出来
比如我传1和2进去,相加得3,我想取到3这个结果
但是总是得不到答案,希望能得到帮助
....
interface Ifun : IDispatch
        {
                [id(1), helpstring("method add1")] HRESULT add1([in]int n1, [in]int n2, [out, retval]BSTR *ch);
        };
....//这个是接口

STDMETHODIMP Cfun::add1(int n1, int n2, BSTR *ch)
{
        // TODO: Add your implementation code here
        char *ch1 = _com_util::ConvertBSTRToString(*ch);

        int n3;
        n3 = n1 + n2;
        ch1 = new char[100];

        itoa(n3, ch1, 100);
        //delete []ch1;

        return n3;
}

调用脚本:
<script language="javascript">
var myobj=new ActiveXObject("atltest1.fun");
var i = myobj.add1(1,2);
alert(i);
</script>
结果是空的,不知道我该改进那里,希望那个路过的高人帮看看了
回复

使用道具 举报

0

主题

12

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-3-2 13:30:01 | 显示全部楼层
指针的指针
回复

使用道具 举报

0

主题

21

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-3-6 23:15:02 | 显示全部楼层
the return value should be VARIANT
回复

使用道具 举报

0

主题

17

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-3-8 08:30:01 | 显示全部楼层
STDMETHODIMP Cfun::add1(int n1, int n2, BSTR *ch)
{
        // TODO: Add your implementation code here
        USES_CONVERSION;

        int n3;
        char ret[16];

        n3 = n1 + n2;
        itoa(n3,ret,10);
        if(ch)*ch = A2BSTR(ret);

        return S_OK;
}
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-3-10 01:00:01 | 显示全部楼层
kk1370
===================
谢谢,可以显示了

不过我想多问一句,如果是delphi调用这个控件的话
返回的BSTR可以接收吗?
回复

使用道具 举报

0

主题

17

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-3-10 13:00:01 | 显示全部楼层
可以
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表