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 在任何時候。