+
+class MywxCanvasImage: public wxCanvasImage
+{
+public:
+ MywxCanvasImage( const wxImage &image, double x, double y, double w, double h );
+
+ void MywxCanvasImage::OnMouse(wxMouseEvent &event);
+
+ DECLARE_EVENT_TABLE()
+};
+
+BEGIN_EVENT_TABLE(MywxCanvasImage,wxCanvasImage)
+ EVT_MOUSE_EVENTS( MywxCanvasImage::OnMouse )
+END_EVENT_TABLE()
+
+MywxCanvasImage::MywxCanvasImage( const wxImage &image, double x, double y, double w, double h )
+ :wxCanvasImage( image, x, y, w, h )
+{
+}
+
+void MywxCanvasImage::OnMouse(wxMouseEvent &event)
+{
+ static bool first=false;
+ static dx=0;
+ static dy=0;
+
+ int x = event.GetX();
+ int y = event.GetY();
+ if (event.m_leftDown)
+ { if (!first)
+ {
+ first=true;
+ dx=x;
+ dy=y;
+ }
+ Move(m_area.x+x-dx,m_area.y+y-dy);
+ CaptureMouse();
+ }
+ else if (IsCapturedMouse())
+ {
+ ReleaseMouse();
+ first=false;
+ dx=0;dy=0;
+ }
+}
+