| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        dragimag.h
 
- // Purpose:     wxDragImage sample
 
- // Author:      Julian Smart
 
- // Modified by:
 
- // Created:     28/2/2000
 
- // Copyright:   (c) Julian Smart
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_DRAGIMAGSAMPLE_
 
- #define _WX_DRAGIMAGSAMPLE_
 
- // derived classes
 
- class MyFrame;
 
- class MyApp;
 
- class MyCanvas;
 
- class DragShape;
 
- // MyFrame
 
- class MyFrame: public wxFrame
 
- {
 
- public:
 
-     MyFrame();
 
-     void OnAbout( wxCommandEvent &event );
 
-     void OnQuit( wxCommandEvent &event );
 
-     MyCanvas* GetCanvas() const { return m_canvas; }
 
-     void SetCanvas(MyCanvas* canvas) { m_canvas = canvas; }
 
- private:
 
-     MyCanvas*       m_canvas;
 
-     wxDECLARE_DYNAMIC_CLASS(MyFrame);
 
-     wxDECLARE_EVENT_TABLE();
 
- };
 
- // MyApp
 
- class MyApp: public wxApp
 
- {
 
- public:
 
-     MyApp();
 
-     virtual bool OnInit();
 
-     virtual int OnExit();
 
- //// Operations
 
-     // Tile the bitmap
 
-     bool TileBitmap(const wxRect& rect, wxDC& dc, wxBitmap& bitmap);
 
- //// Accessors
 
-     wxBitmap& GetBackgroundBitmap() const { return (wxBitmap&) m_background; }
 
-     bool GetUseScreen() const { return m_useScreen; }
 
-     void SetUseScreen(bool useScreen) { m_useScreen = useScreen; }
 
-     void OnUseScreen(wxCommandEvent& event);
 
- protected:
 
-     wxBitmap    m_background;
 
-     bool        m_useScreen;
 
- DECLARE_EVENT_TABLE()
 
- };
 
- DECLARE_APP(MyApp)
 
- #define TEST_USE_SCREEN   100
 
- // MyCanvas
 
- // Dragging modes
 
- #define TEST_DRAG_NONE     0
 
- #define TEST_DRAG_START    1
 
- #define TEST_DRAG_DRAGGING 2
 
- class MyCanvas: public wxScrolledWindow
 
- {
 
- public:
 
-     MyCanvas( wxWindow *parent, wxWindowID, const wxPoint &pos, const wxSize &size );
 
-     ~MyCanvas();
 
-     void OnPaint( wxPaintEvent &event );
 
-     void OnEraseBackground(wxEraseEvent& event);
 
-     void OnMouseEvent(wxMouseEvent& event);
 
-     void DrawShapes(wxDC& dc);
 
-     void EraseShape(DragShape* shape, wxDC& dc);
 
-     void ClearShapes();
 
-     DragShape* FindShape(const wxPoint& pt) const;
 
-     wxList& GetDisplayList() { return m_displayList; }
 
- protected:
 
- private:
 
-     wxList          m_displayList; // A list of DragShapes
 
-     int             m_dragMode;
 
-     DragShape*      m_draggedShape;
 
-     DragShape*      m_currentlyHighlighted; // The shape that's being highlighted
 
-     wxPoint         m_dragStartPos;
 
-     wxDragImage*    m_dragImage;
 
-     wxDECLARE_ABSTRACT_CLASS(MyCanvas);
 
-     wxDECLARE_EVENT_TABLE();
 
- };
 
- // Ways to drag a shape
 
- #define SHAPE_DRAG_BITMAP       1
 
- #define SHAPE_DRAG_TEXT         2
 
- #define SHAPE_DRAG_ICON         3
 
- // Shape
 
- class DragShape: public wxObject
 
- {
 
- public:
 
-     DragShape(const wxBitmap& bitmap);
 
-     ~DragShape(){};
 
- //// Operations
 
-     bool HitTest(const wxPoint& pt) const;
 
-     bool Draw(wxDC& dc, bool highlight = false);
 
- //// Accessors
 
-     wxPoint GetPosition() const { return m_pos; }
 
-     void SetPosition(const wxPoint& pos) { m_pos = pos; }
 
-     wxRect GetRect() const { return wxRect(m_pos.x, m_pos.y, m_bitmap.GetWidth(), m_bitmap.GetHeight()); }
 
-     wxBitmap& GetBitmap() const { return (wxBitmap&) m_bitmap; }
 
-     void SetBitmap(const wxBitmap& bitmap) { m_bitmap = bitmap; }
 
-     int GetDragMethod() const { return m_dragMethod; }
 
-     void SetDragMethod(int method) { m_dragMethod = method; }
 
-     bool IsShown() const { return m_show; }
 
-     void SetShow(bool show) { m_show = show; }
 
- protected:
 
-     wxPoint     m_pos;
 
-     wxBitmap    m_bitmap;
 
-     int         m_dragMethod;
 
-     bool        m_show;
 
- };
 
- // MyDragImage
 
- // A derived class is required since we're overriding UpdateBackingFromWindow,
 
- // for compatibility with Mac OS X (Core Graphics) which does not support blitting
 
- // from a window.
 
- class MyDragImage: public wxDragImage
 
- {
 
- public:
 
-     MyDragImage(MyCanvas* canvas): m_canvas(canvas) {}
 
-     MyDragImage(MyCanvas* canvas, const wxBitmap& image, const wxCursor& cursor = wxNullCursor):
 
-         wxDragImage(image, cursor), m_canvas(canvas)
 
-     {
 
-     }
 
-     MyDragImage(MyCanvas* canvas, const wxIcon& image, const wxCursor& cursor = wxNullCursor):
 
-         wxDragImage(image, cursor), m_canvas(canvas)
 
-     {
 
-     }
 
-     MyDragImage(MyCanvas* canvas, const wxString& str, const wxCursor& cursor = wxNullCursor):
 
-         wxDragImage(str, cursor), m_canvas(canvas)
 
-     {
 
-     }
 
-     // On some platforms, notably Mac OS X with Core Graphics, we can't blit from
 
-     // a window, so we need to draw the background explicitly.
 
-     virtual bool UpdateBackingFromWindow(wxDC& windowDC, wxMemoryDC& destDC, const wxRect& sourceRect,
 
-                     const wxRect& destRect) const;
 
- protected:
 
-     MyCanvas*   m_canvas;
 
- };
 
- #endif
 
-     // _WX_DRAGIMAGSAMPLE_
 
 
  |