[MFC|OLE|C++] Drag & Drop

Pagina: 1
Acties:

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Hai,

Ik wil in mijn applicatie drag & drop inbouwen mbv MFC en OLE. Een van de eerste dingen waar ik dit wil implementeren (er zijn zat andere momenten waar het nog in moet) is dat ik een item uit een CListCtrl naar een knop wil slepen.

Ik heb de CButton overload, en een COleDropTarget als class member toegevoegd. Daarnaast heb ik de functies OnDragOver, OnDragEnter en OnDrop geimplementeerd in m'n button class. In deze class handel ik ook de WM_CREATE message zelf af, en roep m_DropTarget.Register( this) aan, om de button te registreren als drop target.

In de lijst, welke ook overload is, vang ik de WM_LBUTTONDOWN message af. In die functie zet ik een COleDragSource op de stack, en roep DoDragDrop aan (ik geef de COleDragSource ook nog wat data, een index naar het bewuste item).

De drag start prima, maar het lijkt wel alsof de button niet wordt herkent als drop target zijnde, de bewuste functies (OnDragEnter, etc.) worden helemaal niet aangeroepen en de cursor blijft ook een "no drop allowed" icoon. Verschillende artikelen op het Internet mbt OLE drag & drop geven toch gewoon deze methode aan. Ik heb ook geprobeerd om de button af te leiden van een COleDropTarget, maar dat helpt ook niet.

Ik denk dat ik nog iets mis, een of andere functie ofzo. Maar ik heb geen idee welke, als ik al iets mis...

-Edit-

Het bleek dat OnCreate nooit werd aangeroepen (beats me why) en dus werd de button nooit als drop target geregistreerd. Nu doe ik dat maar in PreSubclassWindow en dat werkt wel.

[ Voor 8% gewijzigd door ^Mo^ op 12-04-2004 18:03 . Reden: Probleem opgelost ]

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs