COleDropSource クラス
データをドロップ 先にドラッグできるようにします。
構文
class COleDropSource : public CCmdTarget
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
COleDropSource::COleDropSource | COleDropSource オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
COleDropSource::GiveFeedback | ドラッグ アンド ドロップ操作中にカーソルを変更します。 |
COleDropSource::OnBeginDrag | ドラッグ アンド ドロップ操作中にマウス キャプチャを処理します。 |
COleDropSource::QueryContinueDrag | ドラッグを続行するかどうかを確認します。 |
解説
COleDropTarget クラスは、ドラッグ アンド ドロップ操作の受信部分を処理します。 COleDropSource
オブジェクトは、ドラッグ操作が開始されるタイミングを決定し、ドラッグ操作中にフィードバックを提供し、ドラッグ操作がいつ終了するかを決定します。
COleDropSource
オブジェクトを使用するには、コンストラクターを呼び出します。 これにより、 COleDataSource::D oDragDrop、 COleClientItem::D oDragDrop、または COleServerItem::D oDragDrop 関数を使用して、マウス クリックなどのドラッグ操作を開始するイベントを決定するプロセスが簡略化されます。 これらの関数によって、 COleDropSource
オブジェクトが作成されます。 COleDropSource
オーバーライド可能な関数の既定の動作を変更できます。 これらのメンバー関数は、フレームワークによって適切な時間に呼び出されます。
OLE を使用したドラッグ アンド ドロップ操作の詳細については、OLE ドラッグ アンド ドロップ に関する記事を参照してください。
詳細については、Windows SDK の「 IDropSource 」を参照してください。
継承階層
COleDropSource
要件
ヘッダー: afxole.h
COleDropSource::COleDropSource
COleDropSource
オブジェクトを構築します。
COleDropSource();
COleDropSource::GiveFeedback
COleDropTarget::OnDragOver または COleDropTarget::D ragEnter を呼び出した後、フレームワークによって呼び出されます。
virtual SCODE GiveFeedback(DROPEFFECT dropEffect);
パラメーター
dropEffect
ユーザーに表示する効果。通常は、選択したデータでこの時点でドロップが発生した場合に何が起こるかを示します。 通常、これは、 CView::OnDragEnter または CView::OnDragOver への最新の呼び出しによって返される値です。 次の 1 つ以上を指定できます。
DROPEFFECT_NONEドロップは許可されません。
DROPEFFECT_COPYコピー操作が実行されます。
DROPEFFECT_MOVE移動操作が実行されます。
DROPEFFECT_LINK削除されたデータから元のデータへのリンクが確立されます。
DROPEFFECT_SCROLLドラッグ スクロール操作が発生しようとしているか、ターゲットで発生しています。
戻り値
ドラッグ中の場合はDRAGDROP_S_USEDEFAULTCURSORSを返し、そうでない場合は NOERROR を返します。
解説
この時点でドロップが発生した場合の動作に関するフィードバックをユーザーに提供するには、この関数をオーバーライドします。 既定の実装では、OLE の既定のカーソルが使用されます。 OLE を使用したドラッグ アンド ドロップ操作の詳細については、OLE ドラッグ アンド ドロップ に関する記事を参照してください。
詳細については、Windows SDK の「 IDropSource::GiveFeedback、 IDropTarget::D ragOver、および IDropTarget::D ragEnter を参照してください。
COleDropSource::OnBeginDrag
マウスの左ボタンを押すなど、ドラッグ操作を開始できるイベントが発生したときにフレームワークによって呼び出されます。
virtual BOOL OnBeginDrag(CWnd* pWnd);
パラメーター
pWnd
選択したデータを含むウィンドウをポイントします。
戻り値
ドラッグが許可されている場合は 0 以外、それ以外の場合は 0。
解説
ドラッグ プロセスの開始方法を変更する場合は、この関数をオーバーライドします。 既定の実装では、マウスをキャプチャし、ユーザーがマウスの左または右のボタンをクリックするか Esc キーを押すまでドラッグ モードのままで、その時点でマウスを離します。
COleDropSource::QueryContinueDrag
ドラッグが開始されると、ドラッグ操作が取り消されるか完了するまで、フレームワークによってこの関数が繰り返し呼び出されます。
virtual SCODE QueryContinueDrag(
BOOL bEscapePressed,
DWORD dwKeyState);
パラメーター
bEscapePressed
COleDropSource::QueryContinueDrag
の最後の呼び出し以降に ESC キーが押されたかどうかを示します。
dwKeyState
キーボードの修飾キーの状態を格納します。 これは、MK_CONTROL、MK_SHIFT、MK_ALT、MK_LBUTTON、MK_MBUTTON、MK_RBUTTONの任意の数の組み合わせです。
戻り値
esc キーまたは右ボタンを押すか、ドラッグを開始する前に左ボタンを上げた場合にDRAGDROP_S_CANCELします。 ドロップ操作を実行する必要があるかどうかをDRAGDROP_S_DROPします。 それ以外の場合はS_OK。
解説
ドラッグが取り消されるか、ドロップが発生するポイントを変更する場合は、この関数をオーバーライドします。
既定の実装では、次のようにドロップを開始するか、ドラッグをキャンセルします。 ESC キーまたはマウスの右ボタンを押すと、ドラッグ操作が取り消されます。 ドラッグの開始後にマウスの左ボタンが上がると、ドロップ操作が開始されます。 それ以外の場合は、S_OKが返され、それ以上の操作は実行されません。
この関数は頻繁に呼び出されるため、可能な限り最適化する必要があります。