次の方法で共有


ツリー コントロールのドラッグ アンド ドロップ操作

ツリー コントロール (CTreeCtrl) は、ユーザーが項目のドラッグを開始したときに通知を送信します。 コントロールは、ユーザーがマウスの左ボタンで項目のドラッグを開始すると TVN_BEGINDRAG 通知メッセージを送信し、ユーザーが右ボタンでドラッグを開始したときに TVN_BEGINRDRAG 通知メッセージを送信します。 ツリー コントロールにTVS_DISABLEDRAGDROP スタイルを指定することで、ツリー コントロールがこれらの通知を送信できないようにすることができます。

CreateDragImage メンバー関数を呼び出して、ドラッグ操作中に表示するイメージを取得します。 ツリー コントロールは、ドラッグする項目のラベルに基づいてドラッグ ビットマップを作成します。 次に、ツリー コントロールによってイメージ リストが作成され、ビットマップが追加され、 CImageList オブジェクトへのポインターが返されます。

項目を実際にドラッグするコードを指定する必要があります。 これには通常、イメージ リスト関数のドラッグ機能を使用し、ドラッグ操作の開始後に送信された WM_MOUSEMOVE メッセージと WM_LBUTTONUP メッセージ (または WM_RBUTTONUP) を処理する必要があります。 イメージ リスト関数の詳細については、Windows SDK の MFC リファレンスおよびイメージ リストCImageList を参照してください。 ツリー コントロール項目のドラッグの詳細については、Windows SDK の「 ツリー ビュー項目のドラッグ」を参照してください。

ツリー コントロール内の項目をドラッグ アンド ドロップ操作のターゲットにする場合は、マウス カーソルがターゲット項目上にあるタイミングを把握する必要があります。 HitTest メンバー関数を呼び出すことで確認できます。 ポイントと整数、またはマウス カーソルの現在の座標を含む TVHITTESTINFO 構造体のアドレスを指定します。 関数が戻るときに、整数または構造体には、ツリー コントロールに対するマウス カーソルの位置を示すフラグが含まれます。 ツリー コントロール内の項目の上にカーソルがある場合、構造体には項目のハンドルも含まれます。

項目がドラッグ アンド ドロップ操作のターゲットであることを示すには、 SetItem メンバー関数を呼び出して状態を TVIS_DROPHILITED 値に設定します。 この状態の項目は、ドラッグ アンド ドロップ ターゲットを示すために使用されるスタイルで描画されます。

こちらも参照ください

CTreeCtrl の使用
コントロール