X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4b13e6aeb2f0e5715e0b51742776a9da2e0c2f98..fa9666fbe69e76f57042b46ba2c8ad5b18a527b6:/include/wx/msw/ole/dropsrc.h diff --git a/include/wx/msw/ole/dropsrc.h b/include/wx/msw/ole/dropsrc.h index e16968b285..2b383a3ab6 100644 --- a/include/wx/msw/ole/dropsrc.h +++ b/include/wx/msw/ole/dropsrc.h @@ -2,7 +2,7 @@ // Name: ole/dropsrc.h // Purpose: declaration of the wxDropSource class // Author: Vadim Zeitlin -// Modified by: +// Modified by: // Created: 06.03.98 // RCS-ID: $Id$ // Copyright: (c) 1998 Vadim Zeitlin @@ -12,62 +12,72 @@ #ifndef _WX_OLEDROPSRC_H #define _WX_OLEDROPSRC_H -#ifdef __GNUG__ -#pragma interface +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) + #pragma interface #endif -#if !USE_DRAG_AND_DROP - #error "You should #define USE_DRAG_AND_DROP to 1 to compile this file!" -#endif //WX_DRAG_DROP +#if wxUSE_DRAG_AND_DROP // ---------------------------------------------------------------------------- // forward declarations // ---------------------------------------------------------------------------- + class wxIDropSource; -class wxDataObject; +class WXDLLEXPORT wxDataObject; +class WXDLLEXPORT wxWindow; + +// ---------------------------------------------------------------------------- +// macros +// ---------------------------------------------------------------------------- + +// this macro may be used instead for wxDropSource ctor arguments: it will use +// the cursor 'name' from the resources under MSW, but will expand to +// something else under GTK. If you don't use it, you will have to use #ifdef +// in the application code. +#define wxDROP_ICON(name) wxCursor(_T(#name)) // ---------------------------------------------------------------------------- // wxDropSource is used to start the drag-&-drop operation on associated // wxDataObject object. It's responsible for giving UI feedback while dragging. // ---------------------------------------------------------------------------- -class wxDropSource + +class WXDLLEXPORT wxDropSource : public wxDropSourceBase { public: - enum DragResult - { - Error, // error prevented the d&d operation from completing - None, // drag target didn't accept the data - Copy, // the data was successfully copied - Move, // the data was successfully moved - Cancel // the operation was cancelled by user (not an error) - }; - - // ctors: if you use default ctor you must call SetData() later! - // NB: the "wxWindow *win" parameter is unused and is here only for wxGTK - // compatibility - wxDropSource(wxWindow *win = NULL); - wxDropSource(wxDataObject& data, wxWindow *win = NULL); - - void SetData(wxDataObject& data); - - virtual ~wxDropSource(); - - // do it (call this in response to a mouse button press, for example) - // params: if bAllowMove is false, data can be only copied - DragResult DoDragDrop(bool bAllowMove = FALSE); - - // overridable: you may give some custom UI feedback during d&d operation - // in this function (it's called on each mouse move, so it shouldn't be too - // slow). Just return false if you want default feedback. - virtual bool GiveFeedback(DragResult effect, bool bScrolling); + // ctors: if you use default ctor you must call SetData() later! + // + // NB: the "wxWindow *win" parameter is unused and is here only for wxGTK + // compatibility, as well as both icon parameters + wxDropSource(wxWindow *win = NULL, + const wxCursor &cursorCopy = wxNullCursor, + const wxCursor &cursorMove = wxNullCursor, + const wxCursor &cursorStop = wxNullCursor); + wxDropSource(wxDataObject& data, + wxWindow *win = NULL, + const wxCursor &cursorCopy = wxNullCursor, + const wxCursor &cursorMove = wxNullCursor, + const wxCursor &cursorStop = wxNullCursor); -protected: - void Init(); + virtual ~wxDropSource(); + + // do it (call this in response to a mouse button press, for example) + // params: if bAllowMove is false, data can be only copied + virtual wxDragResult DoDragDrop(int flags = wxDrag_CopyOnly); + + // overridable: you may give some custom UI feedback during d&d operation + // in this function (it's called on each mouse move, so it shouldn't be + // too slow). Just return false if you want default feedback. + virtual bool GiveFeedback(wxDragResult effect); - wxDataObject *m_pData; // pointer to associated data object +protected: + void Init(); private: - wxIDropSource *m_pIDropSource; // the pointer to COM interface + wxIDropSource *m_pIDropSource; // the pointer to COM interface + + DECLARE_NO_COPY_CLASS(wxDropSource) }; -#endif //_WX_OLEDROPSRC_H \ No newline at end of file +#endif //wxUSE_DRAG_AND_DROP + +#endif //_WX_OLEDROPSRC_H