DragDrop.hpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510
  1. // Borland C++ Builder
  2. // Copyright (c) 1995, 2002 by Borland Software Corporation
  3. // All rights reserved
  4. // (DO NOT EDIT: machine generated header) 'DragDrop.pas' rev: 6.00
  5. #ifndef DragDropHPP
  6. #define DragDropHPP
  7. #pragma delphiheader begin
  8. #pragma option push -w-
  9. #pragma option push -Vx
  10. #include <Grids.hpp> // Pascal unit
  11. #include <ExtCtrls.hpp> // Pascal unit
  12. #include <ActiveX.hpp> // Pascal unit
  13. #include <Graphics.hpp> // Pascal unit
  14. #include <Messages.hpp> // Pascal unit
  15. #include <Menus.hpp> // Pascal unit
  16. #include <ShellAPI.hpp> // Pascal unit
  17. #include <Forms.hpp> // Pascal unit
  18. #include <Controls.hpp> // Pascal unit
  19. #include <Classes.hpp> // Pascal unit
  20. #include <Windows.hpp> // Pascal unit
  21. #include <SysUtils.hpp> // Pascal unit
  22. #include <SysInit.hpp> // Pascal unit
  23. #include <System.hpp> // Pascal unit
  24. //-- user supplied -----------------------------------------------------------
  25. #include <oleidl.h>
  26. namespace Dragdrop
  27. {
  28. //-- type declarations -------------------------------------------------------
  29. ;
  30. ;
  31. typedef tagFORMATETC TFormatEtc;
  32. typedef tagSTGMEDIUM TStgMedium;
  33. #pragma option push -b-
  34. enum TDropEffect { deCopy, deMove, deLink };
  35. #pragma option pop
  36. #pragma option push -b-
  37. enum TDragResult { drInvalid, drCancelled, drCopy, drMove, drLink };
  38. #pragma option pop
  39. typedef Set<TDropEffect, deCopy, deLink> TDropEffectSet;
  40. #pragma option push -b-
  41. enum TDragDetectStatus { ddsNone, ddsLeft, ddsRight, ddsCancelled, ddsDrag };
  42. #pragma option pop
  43. #pragma option push -b-
  44. enum TRenderDataOn { rdoEnter, rdoEnterAndDropSync, rdoEnterAndDropAsync, rdoDropSync, rdoDropAsync, rdoNever };
  45. #pragma option pop
  46. #pragma option push -b-
  47. enum TSrcCompatibilityCheck { CheckLindex, CheckdwAspect };
  48. #pragma option pop
  49. typedef Set<TSrcCompatibilityCheck, CheckLindex, CheckdwAspect> TSrcCompatibilityCheckSet;
  50. typedef Word TScrollInterval;
  51. #pragma option push -b-
  52. enum TScrollDirection { sdUp, sdDown, sdLeft, sdRight };
  53. #pragma option pop
  54. typedef void __fastcall (__closure *TOnDragEnter)(_di_IDataObject DataObj, int grfKeyState, const Types::TPoint &pt, int &dwEffect, bool &Accept);
  55. typedef void __fastcall (__closure *TOnDragLeave)(void);
  56. typedef void __fastcall (__closure *TOnDragOver)(int grfKeyState, const Types::TPoint &pt, int &dwEffect);
  57. typedef void __fastcall (__closure *TOnDrop)(_di_IDataObject DataObj, int grfKeyState, const Types::TPoint &pt, int &dwEffect);
  58. typedef void __fastcall (__closure *TOnQueryContinueDrag)(BOOL fEscapePressed, int grfKeyState, HRESULT &Result);
  59. typedef void __fastcall (__closure *TOnGiveFeedback)(int dwEffect, HRESULT &Result);
  60. typedef void __fastcall (__closure *TOnDragDetect)(int grfKeyState, const Types::TPoint &DetectStart, const Types::TPoint &pt, TDragDetectStatus DragDetectStatus);
  61. typedef void __fastcall (__closure *TOnProcessDropped)(System::TObject* Sender, int grfKeyState, const Types::TPoint &pt, int dwEffect);
  62. typedef void __fastcall (__closure *TOnBeforeScrolling)(System::TObject* Sender, const Types::TPoint &pt, TScrollInterval &Interval, TScrollDirection ScrollDirection, bool &ScrollPage);
  63. typedef void __fastcall (__closure *TOnMenuPopup)(System::TObject* Sender, HMENU AMenu, _di_IDataObject DataObj, int AMinCustCmd, int grfKeyState, const Types::TPoint &pt);
  64. typedef void __fastcall (__closure *TOnMenuExecCmd)(System::TObject* Sender, HMENU AMenu, _di_IDataObject DataObj, int Command, int &dwEffect, bool &Succeeded);
  65. typedef void __fastcall (__closure *TOnMenuDestroy)(System::TObject* Sender, HMENU AMenu);
  66. typedef DynamicArray<tagFORMATETC > TFormatEtcArray;
  67. #pragma pack(push, 1)
  68. struct TDetectRec
  69. {
  70. } ;
  71. #pragma pack(pop)
  72. class DELPHICLASS TFormatEtcList;
  73. class PASCALIMPLEMENTATION TFormatEtcList : public System::TObject
  74. {
  75. typedef System::TObject inherited;
  76. private:
  77. int FCount;
  78. DynamicArray<tagFORMATETC > FList;
  79. tagFORMATETC __fastcall Get(int Index);
  80. void __fastcall Put(int Index, const tagFORMATETC &Item);
  81. public:
  82. __fastcall TFormatEtcList(void);
  83. __fastcall virtual ~TFormatEtcList(void);
  84. int __fastcall Add(const tagFORMATETC &Item);
  85. void __fastcall Clear(void);
  86. void __fastcall Delete(int Index);
  87. TFormatEtcList* __fastcall Clone(void);
  88. __property int Count = {read=FCount, nodefault};
  89. __property tagFORMATETC Items[int Index] = {read=Get, write=Put};
  90. };
  91. class DELPHICLASS TDDInterfacedObject;
  92. class PASCALIMPLEMENTATION TDDInterfacedObject : public System::TInterfacedObject
  93. {
  94. typedef System::TInterfacedObject inherited;
  95. public:
  96. HIDESBASE HRESULT __stdcall QueryInterface(const GUID &IID, /* out */ void *Obj);
  97. HIDESBASE int __stdcall _AddRef(void);
  98. HIDESBASE int __stdcall _Release(void);
  99. public:
  100. #pragma option push -w-inl
  101. /* TObject.Create */ inline __fastcall TDDInterfacedObject(void) : System::TInterfacedObject() { }
  102. #pragma option pop
  103. #pragma option push -w-inl
  104. /* TObject.Destroy */ inline __fastcall virtual ~TDDInterfacedObject(void) { }
  105. #pragma option pop
  106. };
  107. class DELPHICLASS TEnumFormatEtc;
  108. class PASCALIMPLEMENTATION TEnumFormatEtc : public TDDInterfacedObject
  109. {
  110. typedef TDDInterfacedObject inherited;
  111. protected:
  112. TFormatEtcList* FFormatEtcList;
  113. int FIndex;
  114. public:
  115. __fastcall TEnumFormatEtc(TFormatEtcList* FormatEtcList);
  116. __fastcall virtual ~TEnumFormatEtc(void);
  117. HRESULT __stdcall Next(int celt, /* out */ void *elt, PLongint pceltFetched);
  118. HRESULT __stdcall Skip(int celt);
  119. HRESULT __stdcall Reset(void);
  120. HRESULT __stdcall Clone(/* out */ _di_IEnumFORMATETC &Enum);
  121. private:
  122. void *__IEnumFORMATETC; /* IEnumFORMATETC */
  123. public:
  124. operator IEnumFORMATETC*(void) { return (IEnumFORMATETC*)&__IEnumFORMATETC; }
  125. };
  126. class DELPHICLASS TDataObject;
  127. class PASCALIMPLEMENTATION TDataObject : public TDDInterfacedObject
  128. {
  129. typedef TDDInterfacedObject inherited;
  130. protected:
  131. TFormatEtcList* FFormatEtcList;
  132. bool FCheckLindex;
  133. bool FCheckdwAspect;
  134. public:
  135. __fastcall TDataObject(void);
  136. __fastcall virtual ~TDataObject(void);
  137. HRESULT __stdcall GetData(const tagFORMATETC &formatetcIn, /* out */ tagSTGMEDIUM &medium);
  138. HRESULT __stdcall GetDataHere(const tagFORMATETC &formatetc, /* out */ tagSTGMEDIUM &medium);
  139. HRESULT __stdcall QueryGetData(const tagFORMATETC &formatetc);
  140. HRESULT __stdcall GetCanonicalFormatEtc(const tagFORMATETC &formatetc, /* out */ tagFORMATETC &formatetcOut);
  141. HRESULT __stdcall SetData(const tagFORMATETC &formatetc, tagSTGMEDIUM &medium, BOOL fRelease);
  142. HRESULT __stdcall EnumFormatEtc(int dwDirection, /* out */ _di_IEnumFORMATETC &enumFormatEtc);
  143. HRESULT __stdcall DAdvise(const tagFORMATETC &formatetc, int advf, const _di_IAdviseSink advSink, /* out */ int &dwConnection);
  144. HRESULT __stdcall DUnadvise(int dwConnection);
  145. HRESULT __stdcall EnumDAdvise(/* out */ _di_IEnumSTATDATA &enumAdvise);
  146. virtual HRESULT __fastcall RenderData(const tagFORMATETC &FormatEtc, tagSTGMEDIUM &StgMedium) = 0 ;
  147. protected:
  148. virtual bool __fastcall AllowData(const tagFORMATETC &FormatEtc);
  149. private:
  150. void *__IDataObject; /* IDataObject */
  151. public:
  152. operator IDataObject*(void) { return (IDataObject*)&__IDataObject; }
  153. };
  154. class DELPHICLASS TDropSource;
  155. class DELPHICLASS TDragDrop;
  156. class DELPHICLASS TScrollDetectOptions;
  157. class DELPHICLASS TScrollDetectArea;
  158. class PASCALIMPLEMENTATION TScrollDetectArea : public Classes::TPersistent
  159. {
  160. typedef Classes::TPersistent inherited;
  161. private:
  162. Classes::TPersistent* FControl;
  163. Word FMargin;
  164. Word FRange;
  165. Classes::TNotifyEvent FOnChange;
  166. void __fastcall SetValue(int Index, Word Value);
  167. protected:
  168. DYNAMIC void __fastcall Change(void);
  169. virtual void __fastcall AssignTo(Classes::TPersistent* Dest);
  170. __property Classes::TPersistent* Control = {read=FControl};
  171. public:
  172. __fastcall TScrollDetectArea(Classes::TPersistent* Control);
  173. __property Classes::TNotifyEvent OnChange = {read=FOnChange, write=FOnChange};
  174. __published:
  175. __property Word Margin = {read=FMargin, write=SetValue, index=0, default=0};
  176. __property Word Range = {read=FRange, write=SetValue, index=1, default=10};
  177. public:
  178. #pragma option push -w-inl
  179. /* TPersistent.Destroy */ inline __fastcall virtual ~TScrollDetectArea(void) { }
  180. #pragma option pop
  181. };
  182. class PASCALIMPLEMENTATION TScrollDetectOptions : public Classes::TPersistent
  183. {
  184. typedef Classes::TPersistent inherited;
  185. private:
  186. TDragDrop* FControl;
  187. TScrollInterval FScrollDelay;
  188. TScrollInterval FStartDelay;
  189. TScrollDetectArea* FLeft;
  190. TScrollDetectArea* FTop;
  191. TScrollDetectArea* FRight;
  192. TScrollDetectArea* FBottom;
  193. Classes::TNotifyEvent FOnChange;
  194. bool FHorzScrolling;
  195. bool FVertScrolling;
  196. bool FHorzPageScroll;
  197. bool FVertPageScroll;
  198. void __fastcall SetValue(int index, TScrollInterval Value);
  199. protected:
  200. DYNAMIC void __fastcall Change(void);
  201. virtual void __fastcall AssignTo(Classes::TPersistent* Dest);
  202. __property TDragDrop* Control = {read=FControl};
  203. public:
  204. __fastcall TScrollDetectOptions(TDragDrop* Control);
  205. __fastcall virtual ~TScrollDetectOptions(void);
  206. __property Classes::TNotifyEvent OnChange = {read=FOnChange, write=FOnChange};
  207. __published:
  208. __property TScrollInterval ScrollDelay = {read=FScrollDelay, write=SetValue, index=0, default=100};
  209. __property TScrollInterval StartDelay = {read=FStartDelay, write=SetValue, index=1, default=750};
  210. __property TScrollDetectArea* AreaLeft = {read=FLeft, write=FLeft};
  211. __property TScrollDetectArea* AreaTop = {read=FTop, write=FTop};
  212. __property TScrollDetectArea* AreaRight = {read=FRight, write=FRight};
  213. __property TScrollDetectArea* AreaBottom = {read=FBottom, write=FBottom};
  214. __property bool HorzScrolling = {read=FHorzScrolling, write=FHorzScrolling, default=0};
  215. __property bool VertScrolling = {read=FVertScrolling, write=FVertScrolling, default=0};
  216. __property bool HorzPageScroll = {read=FHorzPageScroll, write=FHorzPageScroll, default=0};
  217. __property bool VertPageScroll = {read=FVertPageScroll, write=FVertPageScroll, default=0};
  218. };
  219. class DELPHICLASS TDropTarget;
  220. class PASCALIMPLEMENTATION TDropTarget : public TDDInterfacedObject
  221. {
  222. typedef TDDInterfacedObject inherited;
  223. private:
  224. bool FAccept;
  225. Extctrls::TTimer* HorzStartTimer;
  226. Extctrls::TTimer* HorzScrollTimer;
  227. Extctrls::TTimer* VertStartTimer;
  228. Extctrls::TTimer* VertScrollTimer;
  229. int FVScrollCode;
  230. int FHScrollCode;
  231. void __fastcall InitScroll(bool VerticalScroll, int ScrollCode);
  232. void __fastcall TermScroll(bool VerticalScroll);
  233. void __fastcall DetermineScrollDir(bool VertScrolling, int &ScrollCode);
  234. void __fastcall OnStartTimer(System::TObject* Sender);
  235. void __fastcall OnScrollTimer(System::TObject* Sender);
  236. protected:
  237. TDragDrop* FOwner;
  238. virtual void __fastcall SuggestDropEffect(int grfKeyState, int &dwEffect);
  239. virtual void __fastcall AcceptDataObject(_di_IDataObject DataObj, bool &Accept);
  240. virtual void __fastcall RenderDropped(_di_IDataObject DataObj, int grfKeyState, const Types::TPoint &pt, int &dwEffect);
  241. public:
  242. __fastcall TDropTarget(TDragDrop* AOwner);
  243. __fastcall virtual ~TDropTarget(void);
  244. HRESULT __stdcall DragEnter(const _di_IDataObject dataObj, int grfKeyState, const Types::TPoint pt, int &dwEffect);
  245. HRESULT __stdcall DragOver(int grfKeyState, const Types::TPoint pt, int &dwEffect);
  246. HRESULT __stdcall DragLeave(void);
  247. HRESULT __stdcall Drop(const _di_IDataObject dataObj, int grfKeyState, const Types::TPoint pt, int &dwEffect);
  248. private:
  249. void *__IDropTarget; /* IDropTarget */
  250. public:
  251. operator IDropTarget*(void) { return (IDropTarget*)&__IDropTarget; }
  252. };
  253. class PASCALIMPLEMENTATION TDragDrop : public Classes::TComponent
  254. {
  255. typedef Classes::TComponent inherited;
  256. private:
  257. bool FAutoDetectDnD;
  258. Byte FDragDetectDelta;
  259. bool FAcceptOwnDnD;
  260. bool FBTF;
  261. bool FContextMenu;
  262. Controls::TWinControl* FDragDropControl;
  263. bool FRegistered;
  264. bool FOwnerIsSource;
  265. bool FShowPopUpMenu;
  266. TDropEffectSet FTargetEffectsSet;
  267. int FTargetEffects;
  268. TOnQueryContinueDrag FOnQueryContinueDrag;
  269. TOnGiveFeedback FOnGiveFeedback;
  270. TOnDragEnter FOnDragEnter;
  271. TOnDragLeave FOnDragLeave;
  272. TOnDragOver FOnDragOver;
  273. TOnDrop FOnDrop;
  274. TDropEffectSet FSourceEffectsSet;
  275. int FSourceEffects;
  276. TOnProcessDropped FOnProcessDropped;
  277. void *OldWndProc;
  278. void *WndProcPtr;
  279. TOnDragDetect FOnDragDetect;
  280. TDragDetectStatus FDragDetectStatus;
  281. #pragma pack(push, 1)
  282. Types::TPoint FDragDetectStart;
  283. #pragma pack(pop)
  284. TRenderDataOn FRenderDataOn;
  285. _di_IDataObject FDataObj;
  286. int FgrfKeyState;
  287. #pragma pack(push, 1)
  288. Types::TPoint Fpt;
  289. #pragma pack(pop)
  290. int FdwEffect;
  291. HICON FCHCopy;
  292. HICON FCHMove;
  293. HICON FCHLink;
  294. HICON FCHScrollCopy;
  295. HICON FCHScrollMove;
  296. HICON FCHScrollLink;
  297. bool FMessageHooked;
  298. int FAvailableDropEffects;
  299. int FTargetScrolling;
  300. TSrcCompatibilityCheckSet FSrcCompatibilityCheck;
  301. TScrollDetectOptions* FScrollDetectOptions;
  302. TOnBeforeScrolling FOnBeforeScrolling;
  303. Classes::TNotifyEvent FOnAfterScrolling;
  304. int FPressedButton;
  305. TDragDrop* FInternalSource;
  306. TOnMenuPopup FOnMenuPopup;
  307. TOnMenuExecCmd FOnMenuExecCmd;
  308. TOnMenuDestroy FOnMenuDestroy;
  309. TOnProcessDropped FOnMenuSucceeded;
  310. TOnProcessDropped FOnDropHandlerSucceeded;
  311. void __fastcall WndMethod(Messages::TMessage &Msg);
  312. void __fastcall SetDragDropControl(Controls::TWinControl* WinControl);
  313. void __fastcall SetSourceEffects(TDropEffectSet Values);
  314. void __fastcall SetTargetEffects(TDropEffectSet Values);
  315. protected:
  316. TDropTarget* FDropTarget;
  317. virtual void __fastcall Loaded(void);
  318. virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation);
  319. virtual TDataObject* __fastcall CreateDataObject(void) = 0 ;
  320. virtual void __fastcall DoMenuPopup(System::TObject* Sender, HMENU AMenu, _di_IDataObject DataObj, int AMinCustCmd, int grfKeyState, const Types::TPoint &pt);
  321. virtual bool __fastcall DoMenuExecCmd(System::TObject* Sender, HMENU AMenu, _di_IDataObject DataObj, int Command, int &dwEffect);
  322. virtual void __fastcall DoMenuDestroy(System::TObject* Sender, HMENU AMenu);
  323. virtual bool __fastcall DropHandler(const _di_IDataObject dataObj, int grfKeyState, const Types::TPoint &pt, int &dwEffect);
  324. __property TOnProcessDropped OnDropHandlerSucceeded = {read=FOnDropHandlerSucceeded, write=FOnDropHandlerSucceeded};
  325. public:
  326. __fastcall virtual TDragDrop(Classes::TComponent* AOwner);
  327. __fastcall virtual ~TDragDrop(void);
  328. bool __fastcall RegisterTarget(void);
  329. bool __fastcall UnRegisterTarget(void);
  330. void __fastcall HookMessageHandler(void);
  331. void __fastcall UnhookMessageHandler(bool ForceUnhook);
  332. TDragResult __fastcall ExecuteOperation(TDataObject* DataObject);
  333. TDragResult __fastcall Execute(void);
  334. virtual bool __fastcall CopyToClipboard(void);
  335. virtual bool __fastcall GetFromClipboard(void);
  336. virtual void __fastcall StartDnDDetection(Controls::TMouseButton Button);
  337. __property bool OwnerIsSource = {read=FOwnerIsSource, nodefault};
  338. __property bool Registered = {read=FRegistered, default=0};
  339. __property HICON CHCopy = {read=FCHCopy, write=FCHCopy, default=0};
  340. __property HICON CHMove = {read=FCHMove, write=FCHMove, default=0};
  341. __property HICON CHLink = {read=FCHLink, write=FCHLink, default=0};
  342. __property HICON CHScrollCopy = {read=FCHScrollCopy, write=FCHScrollCopy, default=0};
  343. __property HICON CHScrollMove = {read=FCHScrollMove, write=FCHScrollMove, default=0};
  344. __property HICON CHScrollLink = {read=FCHScrollLink, write=FCHScrollLink, default=0};
  345. __property TDragDetectStatus DragDetectStatus = {read=FDragDetectStatus, nodefault};
  346. __property int AvailableDropEffects = {read=FAvailableDropEffects, nodefault};
  347. __property TDragDrop* InternalSource = {read=FInternalSource};
  348. __published:
  349. __property bool AcceptOwnDnD = {read=FAcceptOwnDnD, write=FAcceptOwnDnD, nodefault};
  350. __property bool AutoDetectDnD = {read=FAutoDetectDnD, write=FAutoDetectDnD, nodefault};
  351. __property bool BringToFront = {read=FBTF, write=FBTF, nodefault};
  352. __property Byte DragDetectDelta = {read=FDragDetectDelta, write=FDragDetectDelta, default=10};
  353. __property Controls::TWinControl* DragDropControl = {read=FDragDropControl, write=SetDragDropControl};
  354. __property TRenderDataOn RenderDataOn = {read=FRenderDataOn, write=FRenderDataOn, default=3};
  355. __property TScrollDetectOptions* ScrollDetectOptions = {read=FScrollDetectOptions, write=FScrollDetectOptions};
  356. __property TSrcCompatibilityCheckSet SourceCompatibility = {read=FSrcCompatibilityCheck, write=FSrcCompatibilityCheck, nodefault};
  357. __property TDropEffectSet SourceEffects = {read=FSourceEffectsSet, write=SetSourceEffects, nodefault};
  358. __property bool TargetPopupMenu = {read=FShowPopUpMenu, write=FShowPopUpMenu, nodefault};
  359. __property TDropEffectSet TargetEffects = {read=FTargetEffectsSet, write=SetTargetEffects, nodefault};
  360. __property Classes::TNotifyEvent OnAfterScrolling = {read=FOnAfterScrolling, write=FOnAfterScrolling};
  361. __property TOnBeforeScrolling OnBeforeScrolling = {read=FOnBeforeScrolling, write=FOnBeforeScrolling};
  362. __property TOnDragDetect OnDragDetect = {read=FOnDragDetect, write=FOnDragDetect};
  363. __property TOnDragEnter OnDragEnter = {read=FOnDragEnter, write=FOnDragEnter};
  364. __property TOnDragLeave OnDragLeave = {read=FOnDragLeave, write=FOnDragLeave};
  365. __property TOnDragOver OnDragOver = {read=FOnDragOver, write=FOnDragOver};
  366. __property TOnDrop OnDrop = {read=FOnDrop, write=FOnDrop};
  367. __property TOnQueryContinueDrag OnQueryContinueDrag = {read=FOnQueryContinueDrag, write=FOnQueryContinueDrag};
  368. __property TOnGiveFeedback OnGiveFeedback = {read=FOnGiveFeedback, write=FOnGiveFeedback};
  369. __property TOnProcessDropped OnProcessDropped = {read=FOnProcessDropped, write=FOnProcessDropped};
  370. __property TOnMenuPopup OnMenuPopup = {read=FOnMenuPopup, write=FOnMenuPopup};
  371. __property TOnMenuExecCmd OnMenuExecCmd = {read=FOnMenuExecCmd, write=FOnMenuExecCmd};
  372. __property TOnMenuDestroy OnMenuDestroy = {read=FOnMenuDestroy, write=FOnMenuDestroy};
  373. __property TOnProcessDropped OnMenuSucceeded = {read=FOnMenuSucceeded, write=FOnMenuSucceeded};
  374. };
  375. class PASCALIMPLEMENTATION TDropSource : public TDDInterfacedObject
  376. {
  377. typedef TDDInterfacedObject inherited;
  378. private:
  379. TDragDrop* FOwner;
  380. public:
  381. __fastcall TDropSource(TDragDrop* AOwner);
  382. __fastcall virtual ~TDropSource(void);
  383. HRESULT __stdcall QueryContinueDrag(BOOL fEscapePressed, int grfKeyState);
  384. HRESULT __stdcall GiveFeedback(int dwEffect);
  385. private:
  386. void *__IDropSource; /* IDropSource */
  387. public:
  388. operator IDropSource*(void) { return (IDropSource*)&__IDropSource; }
  389. };
  390. //-- var, const, procedure ---------------------------------------------------
  391. static const Shortint DROPEFFECT_None = 0x0;
  392. static const Shortint DROPEFFECT_Copy = 0x1;
  393. static const Shortint DROPEFFECT_Move = 0x2;
  394. static const Shortint DROPEFFECT_Link = 0x4;
  395. static const unsigned DROPEFFECT_Scroll = 0x80000000;
  396. static const Shortint TYMED_HGLOBAL = 0x1;
  397. static const Shortint TYMED_FILE = 0x2;
  398. static const Shortint TYMED_ISTREAM = 0x4;
  399. static const Shortint TYMED_ISTORAGE = 0x8;
  400. static const Shortint TYMED_GDI = 0x10;
  401. static const Shortint TYMED_MFPICT = 0x20;
  402. static const Shortint TYMED_ENHMF = 0x40;
  403. static const Shortint TYMED_NULL = 0x0;
  404. static const Shortint DefaultCursor = 0x0;
  405. extern PACKAGE System::ResourceString _MICopyStr;
  406. #define Dragdrop_MICopyStr System::LoadResourceString(&Dragdrop::_MICopyStr)
  407. extern PACKAGE System::ResourceString _MIMoveStr;
  408. #define Dragdrop_MIMoveStr System::LoadResourceString(&Dragdrop::_MIMoveStr)
  409. extern PACKAGE System::ResourceString _MILinkStr;
  410. #define Dragdrop_MILinkStr System::LoadResourceString(&Dragdrop::_MILinkStr)
  411. extern PACKAGE System::ResourceString _MIAbortStr;
  412. #define Dragdrop_MIAbortStr System::LoadResourceString(&Dragdrop::_MIAbortStr)
  413. extern PACKAGE void __fastcall Register(void);
  414. } /* namespace Dragdrop */
  415. using namespace Dragdrop;
  416. #pragma option pop // -w-
  417. #pragma option pop // -Vx
  418. #pragma delphiheader end.
  419. //-- end unit ----------------------------------------------------------------
  420. #endif // DragDrop