Win32 API 日本語リファレンス
ホームUI.Accessibility › IDropTargetProvider

IDropTargetProvider

COM
IIDbae82bfd-358a-481c-85a0-d8b4d90a5d61継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

Microsoft UI Automation 要素が、UI Automation のドラッグ アンド ドロップ操作の一環としてドラッグされた要素のドロップを受け取ることができる要素として、自身を記述できるようにします。

メソッド 2

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

vtbl 3 HRESULT get_DropTargetEffect(LPWSTR* pRetVal)

ユーザーがつかんだ要素をこのドロップ ターゲットにドロップしたときに発生する効果を記述する、ローカライズされた文字列を取得します。

pRetValLPWSTR*outこの要素にドロップした際に行われる効果のローカライズ文字列を受け取る LPWSTR へのポインタである。

解説(Remarks)

このプロパティは、ユーザーがつかんだ要素をターゲットにドロップしたときに発生する既定の効果(要素の移動やコピーなど)を記述します。このプロパティは "move" のような短い文字列の場合もあれば、"insert into Main group" のような長い文字列の場合もあります。この文字列は常にローカライズされます。

このプロパティが変化した場合、プロバイダーは UIA_AutomationPropertyChangedEventId イベントを発生させてクライアントに通知する必要があります。

IFACEMETHODIMP CRegionProvider::get_DropTargetEffect(BSTR * pDefaultDropAction)
{
    WCHAR wszDropAction[100];
    LoadString(g_hInstance, IDS_REGION_DEFAULTDROPACTION1, wszDropAction, 
        ARRAYSIZE(wszDropAction));
    *pDefaultDropAction = ::SysAllocString(wszDropAction);
    return (*pDefaultDropAction == nullptr) ? E_OUTOFMEMORY : S_OK;
}
vtbl 4 HRESULT get_DropTargetEffects(SAFEARRAY** pRetVal)

ドラッグ アンド ドロップ操作の一環として、ユーザーがつかんだ要素をこのドロップ ターゲットにドロップしたときに発生し得る効果の完全なセットを列挙する、ローカライズされた文字列の配列を取得します。(IDropTargetProvider.get_DropTargetEffects)

pRetValSAFEARRAY**outこの要素にドロップした際に可能なすべての効果を表す文字列の配列を受け取る SAFEARRAY へのポインタである。

解説(Remarks)

一部のドラッグ操作は、複数の異なるドロップ効果のセットをサポートします。たとえば、右クリックで開始されたドラッグ操作では、要素がドロップされたときに実行されるアクションのオプション メニューが表示される場合があります。つかんだ要素がドロップされたときに発生し得る効果のセットを調べるには、クライアントはドラッグされた要素の DropEffects プロパティを照会できます。このプロパティは "move" のような短い文字列や、"insert into Main group" のような長い文字列を含むことができます。これらの文字列は常にローカライズされます。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IDropTargetProvider "{BAE82BFD-358A-481C-85A0-D8B4D90A5D61}"
#usecom global IDropTargetProvider IID_IDropTargetProvider "{}"
#comfunc global IDropTargetProvider_get_DropTargetEffect   3 var
#comfunc global IDropTargetProvider_get_DropTargetEffects  4 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。