大头菜再问:COM的方法定义问题?

vcmfc 2000-12-09 11:35:00
我的组件有一个方法Encrypt,需要传入一个加密字符串,加密后将字符串返回给VB,在VB中我使用 s=jj.Encrypt("数据"),那么我在COM中该如何定义该方法?,我试以下了两种都有问题,如下:
STDMETHODIMP CEncrypt::Encrypt(BSTR EncryptString);//返回后在VB等于空。
STDMETHODIMP CEncrypt::Encrypt(BSTR *pEncryptString);//以下语句编译错误
{char *pData=(char*)_bstr_t(pEncryptString);//编译出错
也就是如何把**指针赋给*指针呢?
是否是这样两者合,我好像在哪儿看过VB自动将最后一个参数为返回值,记不住了,请问高手我该如何定义?
...全文
105 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcmfc 2000-12-09
  • 打赏
  • 举报
回复
不行呀!,我的代码如下:
STDMETHODIMP CEncrypt::Decrypt(BSTR DecryptString,BSTR *pDecryptString)
{char *pszKey=(char*)_bstr_t(m_pKey);//BSTR m_pKey密钥
char *pData=(char*)_bstr_t(DecryptString);
....加密
_bstr_t m_data(pData);
szData=m_data.copy();
pDecryptString=&szData;
}
在.idl的定义:
[id(2), helpstring("加密")] HRESULT Encrypt(BSTR EncryptString,[out,retval]BSTR *pEncryptString);
[id(3), helpstring("解密")] HRESULT Decrypt(BSTR DecryptString,[out,retval]BSTR *pDecryptString);
高手帮忙看一下呀!




vcmfc 2000-12-09
  • 打赏
  • 举报
回复
我马上试,谢谢大虾
oyt 2000-12-09
  • 打赏
  • 举报
回复
返回值要是[out]属性,要想用以上方法使用,最后一个参数用
[out,retval]BSTR* pEncryptString,这将作为返回字符串。
sjn 2000-12-09
  • 打赏
  • 举报
回复
vcmfc哥们,我的水平和你们差的远了,这个烂东西弄的我一头雾水

我写COM在ASP中调用,也有参数传递的问题,有于不好调试,所以干脆方法中不加参数,而直接加2个BSTR的属性作为参数,这样是可以实现参数传递的问题的

笨办法, :)

算是兄弟给你捧场吧
info_xsd 2000-12-09
  • 打赏
  • 举报
回复
可以试一试如下改动
STDMETHODIMP CEncrypt::Decrypt(BSTR DecryptString,BSTR *pDecryptString)
{
if(pDecryptString==NULL)
return E_POINTER;
char *pszKey=(char*)_bstr_t(m_pKey);//BSTR m_pKey密钥
char *pData=(char*)_bstr_t(DecryptString);
....加密
_bstr_t m_data(pData);
szData=m_data.copy();
////////////
*pDecryptString=SysAllocString(szData);
return S_OK;
}

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧