IDropTargetProvider
COM公式ドキュメント
Microsoft UI Automation 要素が、UI Automation のドラッグ アンド ドロップ操作の一環としてドラッグされた要素のドロップを受け取ることができる要素として、自身を記述できるようにします。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ユーザーがつかんだ要素をこのドロップ ターゲットにドロップしたときに発生する効果を記述する、ローカライズされた文字列を取得します。
| pRetVal | LPWSTR* | 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;
}
ドラッグ アンド ドロップ操作の一環として、ユーザーがつかんだ要素をこのドロップ ターゲットにドロップしたときに発生し得る効果の完全なセットを列挙する、ローカライズされた文字列の配列を取得します。(IDropTargetProvider.get_DropTargetEffects)
| pRetVal | SAFEARRAY** | out | この要素にドロップした際に可能なすべての効果を表す文字列の配列を受け取る SAFEARRAY へのポインタである。 |
解説(Remarks)
一部のドラッグ操作は、複数の異なるドロップ効果のセットをサポートします。たとえば、右クリックで開始されたドラッグ操作では、要素がドロップされたときに実行されるアクションのオプション メニューが表示される場合があります。つかんだ要素がドロップされたときに発生し得る効果のセットを調べるには、クライアントはドラッグされた要素の DropEffects プロパティを照会できます。このプロパティは "move" のような短い文字列や、"insert into Main group" のような長い文字列を含むことができます。これらの文字列は常にローカライズされます。
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 方式にも切替可。#define global IID_IDropTargetProvider "{BAE82BFD-358A-481C-85A0-D8B4D90A5D61}" #usecom global IDropTargetProvider IID_IDropTargetProvider "{}" #comfunc global IDropTargetProvider_get_DropTargetEffect 3 sptr #comfunc global IDropTargetProvider_get_DropTargetEffects 4 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。