Drag&Drop 2 Listboxen
-
Hallo,
ich bräuchte bitte mal einen kleinen Hinweis warum mein Drag&Drop von einem ListCtrl in das andere nicht funktioniert. Ich suche hier schon über eine Stunde und habe das jetzt mal auf ein Testprogramm heruntergebrochen:
Ich habe 2 List-Controls auf einem CDialog, Drag&Drop soll von 1 -> 2 erfolgen
AfxOleInit() ist in InitInstance(...) gemachtCListCtrl m_List2; CListCtrl m_List1;
Handler BeginDrag für List1 erzeugt und implementiert
Im TRACE erscheint, wie es sein soll "Begin DragDrop" sobald die Maus mit gedrückter Taste bewegt wird:void CZZBOXDlg::OnBegindragList1(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; COleDataSource* pSource = new COleDataSource(); TRACE("Begin DragDrop\n"); DROPEFFECT dropEffect = pSource->DoDragDrop( DROPEFFECT_MOVE|DROPEFFECT_COPY, NULL ); TRACE("End DragDrop\n"); delete pSource; *pResult = 0; }
Klasse von COleDropTarget abgeleitet und OnDrop() sowie OnDragEnter() überschrieben
class CMyDragDrop : public COleDropTarget { public: virtual BOOL OnDrop( CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point ); virtual DROPEFFECT OnDragEnter( CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point ); }; //.... DROPEFFECT CMyDragDrop::OnDragEnter( CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point ) { TRACE("OnDragEnter\n"); return DROPEFFECT_COPY; } BOOL CMyDragDrop ::OnDrop( CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point ) { TRACE("OnDrop(...)\n"); return TRUE; }
Eine Instanz von CMyDragDrop erstellt und auf List2 registriert:
// header CMyDragDrop m_DoDragDrop; //.... // cpp m_DoDragDrop.Register( GetDlgItem(IDC_LIST2) );
Soweit hoffe ich genügend Code.
Im Trace erscheint nacheinander:
"Begin DragDrop", sobald die Maus mit LMT bewegt wird -> also korrekt
"OnDragEnter", sobald man in List2 fährt, allerdings ändert sich das Mauszeiger nicht, sondern es bleibt das "Verbotszeichen" <-- Hier ist wohl was faul...
End DragDrop, sobald ich "aufgegeben" habeHat jemand nen Tipp? Besten Dank.
Gruß
foodax