VC ATL项目和JavaScript之间怎样传输字符串,例如下面这个简单的函数,帮忙改改,最好能同时提供一下Java Script的调用代码
//普通VC函数
char * UniteStr(char * s1, char * s2, char * s3)
{
sprintf(s3, "%s%s", s1, s2);
return s3;
}
//照着上面的改下来,大概是这样,可是这样不能给Java Script使用
STDMETHOD UniteStr(/*[in]*/CHAR * s1, /*[in]*/CHAR * s2,
/*[in]*/CHAR * s3, /*[out,retval]*/CHAR * Out)
{
sprintf(s3, "%s%s", s1, s2);
Out = s3;
return S_OK;
}
//普通VC函数
char * UniteStr(char * s1, char * s2, char * s3)
{
sprintf(s3, "%s%s", s1, s2);
return s3;
}
//照着上面的改下来,大概是这样,可是这样不能给Java Script使用
STDMETHOD UniteStr(/*[in]*/CHAR * s1, /*[in]*/CHAR * s2,
/*[in]*/CHAR * s3, /*[out,retval]*/CHAR * Out)
{
sprintf(s3, "%s%s", s1, s2);
Out = s3;
return S_OK;
}
{
CComBSTR bstr = s1;
bstr += s2;
*Out = bstr.Detach();
return S_OK;
}js call:
var out = obj.UniteStr("abc", "def", "ghi");
if (out=="abcdef")
...
{
strcpy(sResult1, "The sResult1: 111111");
strcpy(sResult2, "The sResult2: 222222");
strcpy(sResult3, "The sResult3: 333333");
return;
}
ATL组件的参数如果是字符串都是用BSTR来传递的。