Win32 API 日本語リファレンス
ホームSystem.Ole › IVBGetControl

IVBGetControl

COM
IID40a050a0-3c31-101b-a82e-08002b2b2337継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

Visual Basic コンテナー上のすべてのコントロールへのアクセスを提供します。

メソッド 1

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT EnumControls(DWORD dwOleContF, ENUM_CONTROLS_WHICH_FLAGS dwWhich, IEnumUnknown** ppenumUnk)

フォーム上のコントロールを列挙します。

dwOleContFDWORDin

列挙する OLE オブジェクトの種類を指定します。このパラメーターには、OLECONTF 列挙体で列挙される次の 値のいずれかを指定できます。

意味
OLECONTF_EMBEDDINGS
フォーム上の埋め込みオブジェクトを列挙します。OLE コントロールを列挙するには、このフラグを含めます。
OLECONTF_LINKS
フォーム上のリンクされたオブジェクトを列挙します。
OLECONTF_OTHER
すべての擬似 OLE オブジェクトを列挙します。VBX コントロールを列挙するには、このフラグを含めます。
OLECONTF_ONLYUSER
ユーザーが認識しているオブジェクトのみを列挙します。
OLECONTF_ONLYIFRUNNING
フォーム上で実行中のオブジェクトのみを列挙します。

OLE コントロールを列挙する際は、 OLECONTF_ONLYUSEROLECONTF_ONLYIFRUNNING、および OLECONTF_EMBEDDINGS のフラグを組み合わせることを推奨します。OLE コントロールと VBX コントロールの両方を含めるには、この一覧に OLECONTF_OTHERS フラグを追加します。VBX コントロールのみを列挙するには、 OLECONTF_EMBEDDINGS フラグを削除し、OLECONTF_OTHERS フラグを含めます。

dwWhichENUM_CONTROLS_WHICH_FLAGSin

列挙するコントロールの集合を指定します。このパラメーターには、次の値のいずれかを指定できます。

意味
GCW_WCH_SIBLING
0x00000001
コントロールのすべての兄弟を列挙します。
GC_WCH_CONTAINER
0x00000002
コントロールの親であるすべてのオブジェクトを列挙します。このフラグと GC_WCH_FONLYAFTER または GC_WCH_FONLYBEFORE フラグを同時に使用することは できません。
GC_WCH_CONTAINED
0x00000003
コントロールの子であるすべてのオブジェクトを列挙します。このフラグと GC_WCH_FONLYAFTER または GC_WCH_FONLYBEFORE フラグを同時に使用することは できません。
GC_WCH_ALL
0x00000004
すべてのオブジェクトを列挙します。
GC_WCH_FREVERSEDIR
0x08000000
タブ順序の逆方向でコントロールを列挙・整理します。このフラグは他の 任意のフラグと組み合わせることができます。
GC_WCH_FONLYAFTER
0x10000000
タブ順序でコントロールより後に現れるすべてのコントロールを列挙します。
GC_WCH_FONLYBEFORE
0x20000000
タブ順序でコントロールより前に現れるすべてのコントロールを列挙します。
GC_WCH_FSELECTED
0x40000000
現在選択されているすべてのコントロールを列挙します。

GC_WCH_SIBLINGGC_WCH_CONTAINERGC_WCH_CONTAINED、または GC_WCH_ALL のいずれかのフラグを、 任意の GC_WCH_Fxxx フラグと組み合わせて使用します。

VBX コードでは、フォームへのポインターを取得するために VBGetControl に GC_FORM フラグを渡していました。OLE コントロールのコードでは、このフラグに直接対応するものはありません。代わりに、 EnumControlsGC_WHC_ALL を渡し、列挙内の最初のコントロールへのポインターを使用します。 GC_WHC_ALL を使用する場合、列挙内の最初のコントロールは常にフォームになります。

ppenumUnkIEnumUnknown**outOLE オブジェクトの列挙へのポインター。

戻り値

このメソッドは、標準の戻り値 E_INVALIDARGE_OUTOFMEMORYE_UNEXPECTED に加え、 次の値をサポートします。

解説(Remarks)

VBX コントロールを OLE コントロールに移行する際、 EnumControls は、サポートされなくなった Visual Basic の VBGetControl を置き換えます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

#define global IID_IVBGetControl "{40A050A0-3C31-101B-A82E-08002B2B2337}"
#usecom global IVBGetControl IID_IVBGetControl "{}"
#comfunc global IVBGetControl_EnumControls  3 int,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。