QAxAggregated Class
QAxAggregated クラスは、追加の COM インターフェースを実装するための抽象基底クラスです。詳細...
Header: | #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 を返すことがあります。
ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。