]>
git.saurik.com Git - wxWidgets.git/blob - interface/wx/dragimag.h
   1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     interface of wxDragImage 
   4 // Author:      wxWidgets team 
   6 // Licence:     wxWindows license 
   7 ///////////////////////////////////////////////////////////////////////////// 
  12     This class is used when you wish to drag an object on the screen, and a 
  13     simple cursor is not enough. 
  15     On Windows, the Win32 API is used to achieve smooth dragging. On other 
  16     platforms, wxGenericDragImage is used. Applications may also prefer to use 
  17     wxGenericDragImage on Windows, too. 
  20     wxPython uses wxGenericDragImage on all platforms, but uses the wxDragImage 
  24     To use this class, when you wish to start dragging an image, create a 
  25     wxDragImage object and store it somewhere you can access it as the drag 
  26     progresses. Call BeginDrag() to start, and EndDrag() to stop the drag. To 
  27     move the image, initially call Show() and then Move(). If you wish to 
  28     update the screen contents during the drag (for example, highlight an item 
  29     as in the dragimag sample), first call Hide(), update the screen, call 
  30     Move(), and then call Show(). 
  32     You can drag within one window, or you can use full-screen dragging either 
  33     across the whole screen, or just restricted to one area of the screen to 
  34     save resources. If you want the user to drag between two windows, then you 
  35     will need to use full-screen dragging. 
  37     If you wish to draw the image yourself, use wxGenericDragImage and override 
  38     DoDrawImage() and GetImageRect(). 
  43     @see @ref page_samples_dragimag 
  45 class wxDragImage 
: public wxObject
 
  53         Constructs a drag image from a bitmap and optional cursor. 
  56             Bitmap to be used as the drag image. The bitmap can have a mask. 
  58             Optional cursor to combine with the image. 
  60             This parameter is deprecated. 
  62     wxDragImage(const wxBitmap
& image
, const wxCursor
& cursor 
= wxNullCursor
, 
  63                 const wxPoint
& cursorHotspot 
= wxPoint(0, 0)); 
  65         Constructs a drag image from an icon and optional cursor. 
  68             Icon to be used as the drag image. 
  70             Optional cursor to combine with the image. 
  72             This parameter is deprecated. 
  75         This constructor is called wxDragIcon in wxPython. 
  78     wxDragImage(const wxIcon
& image
, const wxCursor
& cursor 
= wxNullCursor
, 
  79                 const wxPoint
& cursorHotspot 
= wxPoint(0, 0)); 
  81         Constructs a drag image from a text string and optional cursor. 
  84             Text used to construct a drag image. 
  86             Optional cursor to combine with the image. 
  88             This parameter is deprecated. 
  91         This constructor is called wxDragString in wxPython. 
  94     wxDragImage(const wxString
& text
, const wxCursor
& cursor 
= wxNullCursor
, 
  95                 const wxPoint
& cursorHotspot 
= wxPoint(0, 0)); 
  97         Constructs a drag image from the text in the given tree control item, 
 101             Tree control for constructing a tree drag image. 
 103             Tree control item id. 
 106         This constructor is called wxDragTreeItem in wxPython. 
 109     wxDragImage(const wxTreeCtrl
& treeCtrl
, wxTreeItemId
& id
); 
 111         Constructs a drag image from the text in the given list control item, 
 115             List control for constructing a list drag image. 
 117             List control item id. 
 120         This constructor is called wxDragListItem in wxPython. 
 123     wxDragImage(const wxListCtrl
& listCtrl
, long id
); 
 125         Constructs a drag image an optional cursor. This constructor is only 
 126         available for wxGenericDragImage, and can be used when the application 
 127         supplies DoDrawImage() and GetImageRect(). 
 130             Optional cursor to combine with the image. 
 132             This parameter is deprecated. 
 134     wxDragImage(const wxCursor
& cursor 
= wxNullCursor
, 
 135                 const wxPoint
& cursorHotspot 
= wxPoint(0, 0)); 
 138         Start dragging the image, in a window or full screen. 
 140         You need to then call Show() and Move() to show the image on the 
 141         screen. Call EndDrag() when the drag has finished. 
 143         Note that this call automatically calls CaptureMouse(). 
 146             The location of the drag position relative to the upper-left corner 
 149             The window that captures the mouse, and within which the dragging 
 150             is limited unless fullScreen is @true. 
 152             If @true, specifies that the drag will be visible over the full 
 153             screen, or over as much of the screen as is specified by rect. Note 
 154             that the mouse will still be captured in window. 
 156             If non-@NULL, specifies the rectangle (in screen coordinates) that 
 157             bounds the dragging operation. Specifying this can make the 
 158             operation more efficient by cutting down on the area under 
 159             consideration, and it can also make a visual difference since the 
 160             drag is clipped to this area. 
 162     bool BeginDrag(const wxPoint
& hotspot
, wxWindow
* window
, 
 163                    bool fullScreen 
= false, wxRect
* rect 
= NULL
); 
 165         Start dragging the image, using the first window to capture the mouse 
 166         and the second to specify the bounding area. This form is equivalent to 
 167         using the first form, but more convenient than working out the bounding 
 168         rectangle explicitly. 
 170         You need to then call Show() and Move() to show the image on the 
 171         screen. Call EndDrag() when the drag has finished. 
 173         Note that this call automatically calls CaptureMouse(). 
 176             The location of the drag position relative to the upper-left corner 
 179             The window that captures the mouse, and within which the dragging 
 181         @param boundingWindow 
 182             Specifies the area within which the drag occurs. 
 184     bool BeginDrag(const wxPoint
& hotspot
, wxWindow
* window
, 
 185                    wxWindow
* boundingWindow
); 
 188         Draws the image on the device context with top-left corner at the given 
 191         This function is only available with wxGenericDragImage, to allow 
 192         applications to draw their own image instead of using an actual bitmap. 
 193         If you override this function, you must also override GetImageRect(). 
 195     virtual bool DoDrawImage(wxDC
& dc
, const wxPoint
& pos
) const; 
 198         Call this when the drag has finished. 
 200         @note This function automatically releases mouse capture. 
 205         Returns the rectangle enclosing the image, assuming that the image is 
 206         drawn with its top-left corner at the given point. 
 208         This function is available in wxGenericDragImage only, and may be 
 209         overridden (together with DoDrawImage()) to provide a virtual drawing 
 212     virtual wxRect 
GetImageRect(const wxPoint
& pos
) const; 
 215         Hides the image. You may wish to call this before updating the window 
 216         contents (perhaps highlighting an item). Then call Move() and Show(). 
 221         Call this to move the image to a new position. The image will only be 
 222         shown if Show() has been called previously (for example at the start of 
 226             The position in client coordinates (relative to the window 
 227             specified in BeginDrag()). 
 229         You can move the image either when the image is hidden or shown, but in 
 230         general dragging will be smoother if you move the image when it is 
 233     bool Move(const wxPoint
& pt
); 
 236         Shows the image. Call this at least once when dragging. 
 241         Override this if you wish to draw the window contents to the backing 
 242         bitmap yourself. This can be desirable if you wish to avoid flicker by 
 243         not having to redraw the updated window itself just before dragging, 
 244         which can cause a flicker just as the drag starts. Instead, paint the 
 245         drag image's backing bitmap to show the appropriate graphic @e minus 
 246         the objects to be dragged, and leave the window itself to be updated by 
 247         the drag image. This can provide eerily smooth, flicker-free drag 
 250         The default implementation copies the window contents to the backing 
 251         bitmap. A new implementation will normally copy information from 
 252         another source, such as from its own backing bitmap if it has one, or 
 253         directly from internal data structures. 
 255         This function is available in wxGenericDragImage only. 
 257     virtual bool UpdateBackingFromWindow(wxDC
& windowDC
, wxMemoryDC
& destDC
, 
 258                                          const wxRect
& sourceRect
, 
 259                                          const wxRect
& destRect
) const;