inline void _bstr_t::Data_t::_Free() throw()
{
if (m_wstr != NULL) {
::SysFreeString(m_wstr);
}
if (m_str != NULL) {
delete [] m_str;
}
}
inline _variant_t::~_variant_t() throw()
{
::VariantClear(this);
}
還有一個這里也經常崩潰
求大神指點原因,謝謝!
uj5u.com熱心網友回復:
你的代碼如何使用bstr 和variant的?uj5u.com熱心網友回復:
delete 和 free 完記得賦NULL,避免野指標。uj5u.com熱心網友回復:
物件如下:
STDMETHODIMP Ctarget::put_group(IDispatch* newVal)
{
// TODO: 在此添加實作代碼
IMPLEMENT_IDISPATCHPTR_COMOBJ_PUTMOTHOD2(group);
//return S_OK;
}
STDMETHODIMP Ctarget::get_groups(VARIANT* pVal)
{
// TODO: 在此添加實作代碼
IMPLEMENT_VARIANT_T_COMOBJ_GETMOTHOD(groups);
//return S_OK;
}
STDMETHODIMP Ctarget::put_groups(VARIANT newVal)
{
// TODO: 在此添加實作代碼
IMPLEMENT_VARIANT_T_COMOBJ_PUTMOTHOD(groups);
//return S_OK;
}
STDMETHODIMP Ctarget::get_subscribers(VARIANT* pVal)
{
// TODO: 在此添加實作代碼
IMPLEMENT_VARIANT_T_COMOBJ_GETMOTHOD(subscribers);
//return S_OK;
}
STDMETHODIMP Ctarget::put_subscribers(VARIANT newVal)
{
// TODO: 在此添加實作代碼
IMPLEMENT_VARIANT_T_COMOBJ_PUTMOTHOD(subscribers);
//return S_OK;
}
呼叫的如下:
void put_group(LPDISPATCH newValue)
{
static BYTE parms[] = VTS_DISPATCH ;
InvokeHelper(0x4, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
VARIANT get_groups()
{
VARIANT result;
InvokeHelper(0x5, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, NULL);
return result;
}
void put_groups(VARIANT& newValue)
{
static BYTE parms[] = VTS_VARIANT ;
InvokeHelper(0x5, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, &newValue);
}
VARIANT get_subscribers()
{
VARIANT result;
InvokeHelper(0x6, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, NULL);
return result;
}
void put_subscribers(VARIANT& newValue)
{
static BYTE parms[] = VTS_VARIANT ;
InvokeHelper(0x6, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, &newValue);
}
uj5u.com熱心網友回復:
result 初始化看看先。uj5u.com熱心網友回復:
以此為例,如下:VARIANT get_groups()
{
VARIANT result;
InvokeHelper(0x5, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, NULL);
return result;
}
使用如下方式回傳試試:
return CComVariant(result).Copy();
或
return _variant_t(result, TRUE).GetVARIANT();
good luck!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/106623.html
上一篇:SetCommMask與GetCommMask是否可用于并口通訊或USB通訊
下一篇:請問這個界面是如何實作
