我在接口里定义了一个属性
[propget, id(4), helpstring("property PhoneNum")] HRESULT PhoneNum([out, retval] VARIANT *pVal);在它的get函数里得到返回值
STDMETHODIMP SMSClient::get_PhoneNum(VARIANT *pVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here
*pVal=_variant_t(m_pstrPhoneNum);
return S_OK;
}
这个函数的返回值是不是pVal,如果是的话,为什么pVal返回空,我只的是我在调用端(VB)调用这个属性的时候,显示的总是为空,哪位牛人能给一点意见?
VB 调用端为:
Private Sub Command3_Click()
Dim HandleTmp As New ISMSCLIENT2007Lib.SMSClient
Dim nResult As Boolean
nResult = HandleTmp.RecvMsg()
Text4.Text = HandleTmp.PhoneNum '这个总是为空,为什么总赋不值End Sub

解决方案 »

  1.   

    *pVal=_variant_t(m_pstrPhoneNum);
    上面的语句是解决不数组的问题的(看你的命名,我估计m_pstrPhoneNum是个字符串,字符串是数组,不是简单数据类型),比如你要下面这样肯定行:
    *pVal = _variant_t(100L);字符串操作,应该使用BSTR。
      

  2.   

    BSTR专门用户字符串,VARIANT用于其它几乎所有数据类型。
      

  3.   

    m_pstrPhoneNum是什么类型,要转换成BSTR吧,将VARIANT换成BSTR试试