樹狀目錄控制項拖放作業
樹狀目錄控制項 ( 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
值,以指出專案是拖放作業的目標。 具有這個狀態的項目會繪製為用來表示拖放目標的樣式。