Operace přetažení u ovládacího prvku strom
Ovládací prvek stromu (CTreeCtrl) odešle oznámení, když uživatel začne přetahovat položku. Ovládací prvek odešle TVN_BEGINDRAG zprávu s oznámením, když uživatel začne přetahovat položku pomocí levého tlačítka myši a TVN_BEGINRDRAG zprávu s oznámením, když uživatel začne přetahovat pravým tlačítkem. Můžete zabránit tomu, aby ovládací prvek stromu odesílal tato oznámení tím, že stromu udělíte ovládací prvek TVS_DISABLEDRAGDROP stylu.
Obrázek, který se zobrazí během operace přetažení voláním členské funkce CreateDragImage . Ovládací prvek strom vytvoří přetažení rastrového obrázku na základě popisku přetahované položky. Potom stromový ovládací prvek vytvoří seznam obrázků, přidá do něj rastrový obrázek a vrátí ukazatel na CImageList objektu.
Musíte zadat kód, který položku skutečně přetáhne. To obvykle zahrnuje použití možností přetahování funkcí seznamu obrázků a zpracování WM_MOUSEMOVE a WM_LBUTTONUP (nebo WM_RBUTTONUP) zpráv odesílaných po zahájení operace přetažení. Další informace o funkcích seznamu obrázků naleznete v tématu CImageList v knihovně MFC Reference a Seznamy obrázků v sadě Windows SDK. Další informace o přetažení položky ovládacího prvku stromu naleznete v tématu Přetažení položky stromového zobrazení také v sadě Windows SDK.
Pokud mají být položky ve stromovém ovládacím prvku cílem operace přetažení, musíte vědět, kdy je kurzor myši na cílové položce. Zjistíte to voláním členské funkce HitTest . Zadáte bod a celé číslo nebo adresu struktury TVHITTESTINFO , která obsahuje aktuální souřadnice kurzoru myši. Když funkce vrátí, celé číslo nebo struktura obsahuje příznak označující umístění kurzoru myši vzhledem k ovládacímu prvku strom. Pokud je kurzor nad položkou v ovládacím prvku stromu, struktura obsahuje také popisovač položky.
Můžete určit, že položka je cílem operace přetažení přetažení voláním členské funkce SetItem nastavit stav na TVIS_DROPHILITED
hodnotu. Položka, která má tento stav, je vykreslena ve stylu použitém k označení cíle přetažení myší.