]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/tabctrl.h
avoiding crash for pure modifier events
[wxWidgets.git] / include / wx / msw / tabctrl.h
index d1985bfddda4f8838d921603c9ed2d82e6251a84..e0fbd24baaa866ab958a9c30f43bdca9777d90e8 100644 (file)
@@ -6,19 +6,13 @@
 // Created:     01/02/97
 // RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart
-// Licence:    wxWindows licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_TABCTRL_H_
 #define _WX_TABCTRL_H_
 
-#ifdef __GNUG__
-#pragma interface "tabctrl.h"
-#endif
-
-class wxImageList;
-
-// WXDLLEXPORT_DATA(extern const wxChar*) wxToolBarNameStr;
+class WXDLLIMPEXP_FWD_CORE wxImageList;
 
 /*
  * Flags returned by HitTest
@@ -29,7 +23,7 @@ class wxImageList;
 #define wxTAB_HITTEST_ONLABEL           4
 #define wxTAB_HITTEST_ONITEM            6
 
-class WXDLLEXPORT wxTabCtrl: public wxControl
+class WXDLLIMPEXP_CORE wxTabCtrl: public wxControl
 {
   DECLARE_DYNAMIC_CLASS(wxTabCtrl)
  public:
@@ -40,11 +34,11 @@ class WXDLLEXPORT wxTabCtrl: public wxControl
     wxTabCtrl();
 
     inline wxTabCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-            long style = 0, const wxString& name = "tabCtrl")
+            long style = 0, const wxString& name = wxT("tabCtrl"))
     {
         Create(parent, id, pos, size, style, name);
     }
-    ~wxTabCtrl();
+    virtual ~wxTabCtrl();
 
 // Accessors
 
@@ -99,7 +93,7 @@ class WXDLLEXPORT wxTabCtrl: public wxControl
 // Operations
 
     bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-                long style = 0, const wxString& name = "tabCtrl");
+                long style = 0, const wxString& name = wxT("tabCtrl"));
 
     // Delete all items
     bool DeleteAllItems();
@@ -124,22 +118,41 @@ protected:
     wxImageList*    m_imageList;
 
 DECLARE_EVENT_TABLE()
+    DECLARE_NO_COPY_CLASS(wxTabCtrl)
 };
 
-class WXDLLEXPORT wxTabEvent: public wxCommandEvent
+class WXDLLIMPEXP_CORE wxTabEvent : public wxNotifyEvent
 {
-  DECLARE_DYNAMIC_CLASS(wxTabEvent)
-
- public:
-  wxTabEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
+public:
+    wxTabEvent(wxEventType commandType = wxEVT_NULL, int id = 0,
+                    int nSel = -1, int nOldSel = -1)
+        : wxNotifyEvent(commandType, id)
+        {
+            m_nSel = nSel;
+            m_nOldSel = nOldSel;
+        }
+
+    // accessors
+        // the currently selected page (-1 if none)
+    int GetSelection() const { return m_nSel; }
+    void SetSelection(int nSel) { m_nSel = nSel; }
+        // the page that was selected before the change (-1 if none)
+    int GetOldSelection() const { return m_nOldSel; }
+    void SetOldSelection(int nOldSel) { m_nOldSel = nOldSel; }
+
+private:
+    int m_nSel,     // currently selected page
+        m_nOldSel;  // previously selected page
+
+    DECLARE_DYNAMIC_CLASS_NO_COPY(wxTabEvent)
 };
 
 typedef void (wxEvtHandler::*wxTabEventFunction)(wxTabEvent&);
 
 #define EVT_TAB_SEL_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_COMMAND_TAB_SEL_CHANGED, \
-  id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTabEventFunction) & fn, NULL),
+  id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxTabEventFunction, & fn ), NULL),
 #define EVT_TAB_SEL_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_COMMAND_TAB_SEL_CHANGING, \
-  id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTabEventFunction) & fn, NULL),
+  id, wxID_ANY, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxTabEventFunction, & fn ), NULL),
 
 #endif
     // _WX_TABCTRL_H_