ドラッグ ソースの役割
ドラッグ ソースは次のタスクを担当します。
- IDataObject インターフェイスと IDropSource インターフェイスを公開するドロップ ターゲットのデータ転送オブジェクトを提供します。
- ポインターとソース フィードバックの生成。
- ドラッグ操作がいつキャンセルされたか、またはドロップ操作が行われたかを判断します。
- データの削除やデータへのリンクの作成など、ドロップ操作によって元のデータに対して何らかのアクションを実行します。
メイン タスクでは、IDataObject インターフェイスと IDropSource インターフェイスを公開するデータ転送オブジェクトを作成します。 ドラッグ ソースには、選択したデータのコピーが含まれている場合と、含まれていない場合があります。 これを含めることは必須ではありませんが、そうすることで不注意による変更を防止し、クリップボード操作コードをドラッグ アンド ドロップ コードと同一にすることができます。
ドラッグ操作の進行中、ドラッグ ソースはマウス ポインタを設定し、必要に応じて追加のソース フィードバックをユーザーに提供します。 ドラッグ ソースは、実際に実際のポインターを設定する以外にマウスの位置を追跡するフィードバックを提供できません (SetCursor 関数を参照)。 このルールは、ドロップ ターゲットによって提供されるフィードバックとの競合を避けるために適用する必要があります。 (ドラッグ ソースをドロップ ターゲットにすることもできます。それ自体にドロップする場合、ソース/ターゲットは、マウスの位置を追跡するためにターゲット フィードバックを提供できます。ただし、この場合、マウスを追跡するのはドロップ ターゲットであり、マウスを追跡するわけではありません。) ドロップ ターゲットによって提供されるフィードバックに基づいて、ソースは適切なポインターを設定します。
関連トピック