.cpp中内容
HRESULT Cactive1Ctrl::ReadCard(BSTR* pstr)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()); // TODO: 在此添加调度处理程序代码 int res = 0;
unsigned char lens;
unsigned char lenr1;
unsigned char comm1[10];
unsigned char resp1[40];
unsigned char m_temp[100];
CString m_ReturnStr;
char cErr[10]={0}; memcpy(comm1,"\x00\x12\x00\x00\x00",5);
lens=5; res=ICC_tsi_api(hDevice,lens,comm1,&lenr1,resp1);
if(res!=0x9000)
{
_itoa(res,cErr,16);
m_ReturnStr=(CString)cErr;
}
else
{
BinToCHex(m_temp,resp1,lenr1);//|   返回值:十六进制字符串的指针 
m_ReturnStr=(CString)m_temp;
}
*pstr = m_ReturnStr.AllocSysString();
return S_OK;
}JS中代码function test3()
{
var res = Test.ReadCard();
alert(res);
}
还有一个问题 我用的vs2008 在添加自定义方法时为什么添加参数的时候没有in和out复选框。
请各位帮帮忙。

解决方案 »

  1.   

    接口添加了额。
    [id(3), helpstring("方法ReadCard")] HRESULT ReadCard([out,retval]BSTR* pstr);
      

  2.   

    可以远程单步调试看看。
    还有就是不要用m_ReturnStr=(CString)cErr;进行CString和char的强制转换,因为这里的CString有可能是wchar_t类型vs2008 在添加自定义方法时有in和out复选框的,是一个个添加的
      

  3.   

    fishion我的vs2008中 添加方法向导是这样的返回类型:              方法名:选择方法类型:         内部名称:参数类型:             参数名:                                            添加:
                                                移除:点击下一步之后也没看见in和out的复选框。
      

  4.   

    谢谢 俩位,ATL才会有in和out的复选框