我写了一个控件,里面有一个方法如下:
BSTR CTestCardCtrl::cardquery(short com, LPCTSTR pUpdata)
{
char pDownData[200];
card_query(com,(char *)pUpdata,pDownData);
return (BSTR)pDownData;
}//card_query(com,(char *)pUpdata,pDownData)最后的结果放在pDownData里,
想通过return 将最后的结果以字符串形式返回给调用的web,但现在发现每次执行到return 是就会报错.请给位大侠多多指点,看是不是方法选用的Bstr型有问题啊?(pUpdata是web传过来的字符串参数,
web里是这样调用的:test1.cardquery(1, '1213');)
BSTR CTestCardCtrl::cardquery(short com, LPCTSTR pUpdata)
{
char pDownData[200];
card_query(com,(char *)pUpdata,pDownData);
return (BSTR)pDownData;
}//card_query(com,(char *)pUpdata,pDownData)最后的结果放在pDownData里,
想通过return 将最后的结果以字符串形式返回给调用的web,但现在发现每次执行到return 是就会报错.请给位大侠多多指点,看是不是方法选用的Bstr型有问题啊?(pUpdata是web传过来的字符串参数,
web里是这样调用的:test1.cardquery(1, '1213');)
解决方案 »
- WSAConnect和WSAAccept的问题
- 如何进行延时?
- 公共函数
- -2147217900 (80040e14)内存溢出IDispatch error #3092
- 线程函数的参数如何传递?我的代码为何错?
- Variant类型如何转为string类型?
- 紧急求助:ComponentOne True DBGrid Pro 7.0 怎么样在VC中使用!!
- 想通过BHO插件来限制IE 访问一些网站,现在一添加控件,在注册表里写完东西后,一点浏览器屏幕信息全无,点IE,马上CPU占用100%,请问怎
- 有关文本框输出的问题,急!在线等!!!
- 为什么我的com DLL编译为Release MiniDependency版本时,客户端就会出现“自动化错误”,而编译为其他版本就能正常使用??
- 将unicode写入文件
- 对于字符串指针还是比较疑惑,什么时候分配内存?
cardquery([in]short com, [in]BSTR pUpdata, [out,retval]BSTR *pRet)3、方法实现
HRESULT CTestCardCtrl::cardquery(short com, BSTR pUpdata, BSTR *pRet)
{
char pDownData[200];
card_query(com, _bstr_t(pUpdata) ,pDownData);
*pRet = CComBSTR(pDownData).Detach()
return(S_OK);
}
1,你的控件方法应该定义如下:(STDMETHODIMP) CTestCardCtrl::cardquery(short com, BSTR pUpdata, BSTR *pRet)
这个方法是被Web调用,请问在Web里能传一个地址过来存放返回值吗?
2、接口定义
cardquery([in]short com, [in]BSTR pUpdata, [out,retval]BSTR *pRet)
由于接口是别人的DLL提供的,没有办法将参数改为BSTR类型,能不能在不改接口的条件下转化过来啊?再次谢谢!
cardquery([in]short com, [in]BSTR pUpdata, [out,retval]BSTR *pRet)
改为:cardquery([in]short com, [in]BSTR pUpdata)
也就是说不传地址下来存放返回值,而是最后通过return 返回返回值,能行吗?我应该怎样定义控件方法啊?