QAxAggregated 類

The QAxAggregated 類是實現額外 COM 接口的抽象基類。 更多...

頭: #include <QAxAggregated>
qmake: QT += axserver

公共函數

virtual long queryInterface (const QUuid & iid , void ** iface ) = 0

保護函數

virtual ~QAxAggregated ()
IUnknown * controllingUnknown () const
QObject * object () const
QWidget * widget () const

詳細描述

The QAxAggregated 類是實現額外 COM 接口的抽象基類。

創建子類化的 QAxAggregated 並重實現 queryInterface () 以支持額外 COM 接口。使用來自這些 COM 接口的多重繼承。實現這些 COM 接口的 IUnknown 接口,是通過將調用委托給 QueryInterface() , AddRef() and Release() 到接口提供通過 controllingUnknown ().

使用 widget () 方法若需要調用 QWidget 實現 ActiveX 控件。不必將該指針存儲在子類中 (除非使用 QPointer ),作為 QWidget 可以被銷毀通過 ActiveQt 框架在任何時候。

另請參閱 QAxBindable , QAxFactory ,和 Active Qt .

成員函數文檔編製

[virtual protected] QAxAggregated:: ~QAxAggregated ()

由 Qt 在內部調用的析構函數。

[protected] IUnknown *QAxAggregated:: controllingUnknown () const

返迴 IUnknown 接口對於 ActiveX 控件。實現 IUnknown 接口在 QAxAggregated 子類以委托調用 QueryInterface() , AddRef() ,和 Release() 到由此函數提供的接口。

HRESULT AxImpl::QueryInterface(REFIID iid, void **iface)
{
    return controllingUnknown()->QueryInterface(iid, iface);
}
ulong AxImpl::AddRef()
{
    return controllingUnknown()->AddRef();
}
ulong AxImpl::Release()
{
    return controllingUnknown()->Release();
}
					

代替手動聲明和實現這 3 個函數,可以使用 QAXAGG_IUNKNOWN 宏在子類的類聲明中。

[protected] QObject *QAxAggregated:: object () const

返迴指針指嚮 QObject 子類實現 COM 對象。此函數可能返迴 0。

警告: 不必存儲返迴指針,除非使用 QPointer ,由於 QObject 可以被銷毀通過 ActiveQt 在任何時候。

[pure virtual] long QAxAggregated:: queryInterface (const QUuid & iid , void ** iface )

重實現此純虛函數以支持額外 COM 接口。設置值為 iface 以指嚮此對象為支持接口 iid 。注意,必須鑄造 this 指針到適當超類。

long AxImpl::queryInterface(const QUuid &iid, void **iface)
{
    *iface = 0;
    if (iid == IID_ISomeCOMInterface)
        *iface = (ISomeCOMInterface*)this;
    else
        return E_NOINTERFACE;
    AddRef();
    return S_OK;
}
					

返迴標準 COM 結果 S_OK (支持接口) 或 E_NOINTERFACE (不支持請求接口)。

警告: 即使必須實現 IUnknown 接口若實現任何 COM 接口不必支持 IUnknown 接口在 queryInterface() 實現中。

[protected] QWidget *QAxAggregated:: widget () const

返迴指針指嚮 QWidget 子類實現 ActiveX 控件。此函數可能返迴 0。

警告: 不必存儲返迴指針,除非使用 QPointer ,由於 QWidget 可以被銷毀通過 ActiveQt 在任何時候。