QAxAggregated Class
QAxAggregated クラスは、追加の COM インターフェースを実装するための抽象基底クラスです。詳細...
ヘッダー | #include <QAxAggregated> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS AxServer) target_link_libraries(mytarget PRIVATE Qt6::AxServer) |
qmake: | QT += axserver |
パブリック関数
virtual long | queryInterface(const QUuid &iid, void **iface) = 0 |
保護された関数
virtual | ~QAxAggregated() |
IUnknown * | controllingUnknown() const |
QObject * | object() const |
QWidget * | widget() const |
詳細説明
QAxAggregated のサブクラスを作成し、queryInterface() を再実装して、追加の COM インターフェイスをサポートします。これらの COM インタフェースからの多重継承を使用します。QueryInterface()
、AddRef()
、Release()
への呼び出しをcontrollingUnknown() によって提供されるインターフェースに委譲することによって、これらの COM インターフェースの IUnknown インターフェースを実装します。
ActiveX コントロールを実装したQWidget への呼び出しが必要な場合は、widget() メソッドを使用してください。QWidget は ActiveQt フレームワークによっていつでも破棄される可能性があるため、(QPointer を使用しない限り)そのポインタをサブクラスに保存してはなりません。
QAxBindable 、QAxFactory 、および Active Qt.
メンバ関数のドキュメント
[virtual constexpr noexcept protected]
QAxAggregated::~QAxAggregated()
デストラクタはQtによって内部的に呼び出されます。
[protected]
IUnknown *QAxAggregated::controllingUnknown() const
ActiveX コントロールのIUnknown
インタフェースを返します。QAxAggregated のサブクラスでIUnknown
インタフェースを実装して、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
COM オブジェクトを実装しているQObject サブクラスへのポインタを返します。この関数は 0 を返すことがあります。
[pure virtual]
long QAxAggregated::queryInterface(const QUuid &iid, void **iface)
追加のCOMインタフェースをサポートするために、この純粋仮想関数を再実装する。iid インタフェースをサポートするために、このオブジェクトを指すようにiface の値を設定する。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
インタフェースを実装しなければなりません。
[protected]
QWidget *QAxAggregated::widget() const
ActiveX コントロールを実装しているQWidget サブクラスへのポインタを返します。この関数は 0 を返すことがあります。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.