ドラッグ アンド ドロップ : カスタマイズ
ドラッグ アンド ドロップ機能の既定の実装は、ほとんどのアプリケーションでそのまま十分に使用できます。 ただし、アプリケーションによっては、ドラッグ アンド ドロップの標準動作を変更する必要があります。 ここでは、既定の動作の変更方法について説明します。 この方法では、複合ドキュメントをサポートしていないアプリケーションでもドロップ ソースにできます。
標準的な OLE のドラッグ アンド ドロップ動作をカスタマイズする場合、または非 OLE アプリケーションをドロップソースにするには、COleDataSource オブジェクトを作成し、データを保持します。 ユーザーがドラッグ アンド ドロップ操作を開始すると、ドラッグ アンド ドロップ操作をサポートするほかのクラスではなく、このオブジェクトの関数 DoDragDrop が呼び出されます。
また、ドロップ操作を制御する COleDropSource オブジェクトを作成すると、そのメンバー関数をオーバーライドして、さまざまな動作をカスタマイズできます。 作成した COleDropSource オブジェクトを関数 COleDataSource::DoDragDrop に渡すと、関数の既定の動作がカスタマイズされます。 このように、アプリケーションがサポートするドラッグ アンド ドロップ機能を柔軟に変更できます。 データ ソースの詳細については、「データ オブジェクトとデータ ソース (OLE)」を参照してください。
次の関数をオーバーライドして、ドラッグ アンド ドロップ操作をカスタマイズできます。
オーバーライドする関数 |
カスタマイズ内容 |
---|---|
OnBeginDrag |
DoDragDrop の呼び出し後に、ドラッグを開始する方法。 |
GiveFeedback |
ドロップの結果に応じた、カーソルの形などの画面上の表示。 |
QueryContinueDrag |
ドラッグ アンド ドロップの終了方法。 この関数を使うと、ドラッグ中に修飾子キーの状態をチェックできます。 |