]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/window.h
Added missing | symbol
[wxWidgets.git] / include / wx / msw / window.h
index c0b172bb2f376dea0a81e7bc160fc77cdc8bf101..212504c34fca9cd997335c14d409e1d8faf6e2fd 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     01/02/97
 // RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart and Markus Holzem
-// Licence:    wxWindows licence
+// Licence:           wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_WINDOW_H_
@@ -27,6 +27,7 @@
 #include "wx/list.h"
 #include "wx/region.h"
 #include "wx/msw/accel.h"
+#include "wx/intl.h"
 
 #define wxKEY_SHIFT     1
 #define wxKEY_CTRL      2
@@ -66,6 +67,7 @@ class WXDLLEXPORT wxPen;
 class WXDLLEXPORT wxIcon;
 class WXDLLEXPORT wxDC;
 class WXDLLEXPORT wxValidator;
+class WXDLLEXPORT wxToolTip;
 
 #if wxUSE_DRAG_AND_DROP
 class WXDLLEXPORT wxDropTarget;
@@ -81,6 +83,42 @@ WXDLLEXPORT_DATA(extern const char*) wxPanelNameStr;
 WXDLLEXPORT_DATA(extern const wxSize) wxDefaultSize;
 WXDLLEXPORT_DATA(extern const wxPoint) wxDefaultPosition;
 
+//-----------------------------------------------------------------------------
+// wxClientData
+//-----------------------------------------------------------------------------
+
+class wxClientData
+{
+public:
+    wxClientData() { }
+    virtual ~wxClientData() { }
+};
+
+//-----------------------------------------------------------------------------
+// wxStringClientData
+//-----------------------------------------------------------------------------
+
+class wxStringClientData: public wxClientData
+{
+public:
+    wxStringClientData() { }
+    wxStringClientData( wxString &data ) { m_data = data; }
+    void SetData( wxString &data ) { m_data = data; }
+    wxString GetData() const { return m_data; }
+
+private:
+    wxString  m_data;
+};
+
+// Clash with Windows headers
+#ifdef GetCharWidth
+#undef GetCharWidth
+#endif
+
+#ifdef FindWindow
+#undef FindWindow
+#endif
+
 class WXDLLEXPORT wxWindow : public wxEvtHandler
 {
   DECLARE_ABSTRACT_CLASS(wxWindow)
@@ -162,39 +200,50 @@ public:
 
   // Get overall window size
   virtual void GetSize(int *width, int *height) const;
-  virtual wxSize GetSize() const { int w, h; GetSize(& w, & h); return wxSize(w, h); }
-  virtual wxRect GetRect() const { int w, h; int x, y; GetPosition(& x, & y); GetSize(& w, & h); return wxRect(x, y, w, h); }
+  wxSize GetSize() const { int w, h; GetSize(& w, & h); return wxSize(w, h); }
 
   // Get window position, relative to parent (or screen if no parent)
   virtual void GetPosition(int *x, int *y) const;
-  virtual wxPoint GetPosition() const { int x, y; GetPosition(&x, &y); return wxPoint(x, y); }
+  wxPoint GetPosition() const
+    { int x, y; GetPosition(&x, &y); return wxPoint(x, y); }
+
+  // Get size and position
+  wxRect GetRect() const
+    { int x, y, w, h; GetPosition(& x, & y); GetSize(& w, & h); return wxRect(x, y, w, h); }
 
   // Get client (application-useable) size
   virtual void GetClientSize(int *width, int *height) const;
-  virtual wxSize GetClientSize() const { int w, h; GetClientSize(& w, & h); return wxSize(w, h); }
+  wxSize GetClientSize() const { int w, h; GetClientSize(& w, & h); return wxSize(w, h); }
 
   // Set overall size and position
+    // generic function, may be overriden in derived classes
   virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
-  virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); }
-  virtual void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO)
+
+  void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO)
     { SetSize(rect.x, rect.y, rect.width, rect.height, sizeFlags); }
-  virtual void SetSize(const wxSize& size) { SetSize(-1, -1, size.x, size.y, wxSIZE_USE_EXISTING); }
 
+    // set size only
+  void SetSize(int width, int height)
+    { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); }
+  void SetSize(const wxSize& size)
+   { SetSize(-1, -1, size.x, size.y, wxSIZE_USE_EXISTING); }
+
+    // set position only
   virtual void Move(int x, int y) { SetSize(x, y, -1, -1, wxSIZE_USE_EXISTING); }
-  virtual void Move(const wxPoint& pt) { SetSize(pt.x, pt.y, -1, -1, wxSIZE_USE_EXISTING); }
+  void Move(const wxPoint& pt) { SetSize(pt.x, pt.y, -1, -1, wxSIZE_USE_EXISTING); }
 
   // Set client size
   virtual void SetClientSize(int width, int height);
-  virtual void SetClientSize(const wxSize& sz) { SetClientSize(sz.x, sz.y); }
+  void SetClientSize(const wxSize& sz) { SetClientSize(sz.x, sz.y); }
 
   // Convert client to screen coordinates
   virtual void ClientToScreen(int *x, int *y) const;
-  virtual wxPoint ClientToScreen(const wxPoint& pt) const
+  wxPoint ClientToScreen(const wxPoint& pt) const
     { int x = pt.x; int y = pt.y; ClientToScreen(& x, & y); return wxPoint(x, y); }
 
   // Convert screen to client coordinates
   virtual void ScreenToClient(int *x, int *y) const;
-  virtual wxPoint ScreenToClient(const wxPoint& pt) const
+  wxPoint ScreenToClient(const wxPoint& pt) const
     { int x = pt.x; int y = pt.y; ScreenToClient(& x, & y); return wxPoint(x, y); }
 
   // Set the focus to this window
@@ -214,6 +263,17 @@ public:
   wxDropTarget *GetDropTarget() const { return m_pDropTarget; }
 #endif
 
+#if wxUSE_TOOLTIPS
+  // tooltips
+    // create a tooltip with this text
+  void SetToolTip(const wxString &tip);
+    // pointer may be NULL to remove the tooltip
+  void SetToolTip(wxToolTip *tooltip);
+    // get the current tooltip (may return NULL if none)
+  wxToolTip* GetToolTip() const { return m_tooltip; }
+
+#endif // wxUSE_TOOLTIPS
+
   // Accept files for dragging
   virtual void DragAcceptFiles(bool accept);
 
@@ -324,7 +384,7 @@ public:
   // be searched)
   void PushEventHandler(wxEvtHandler *handler) ;
   wxEvtHandler *PopEventHandler(bool deleteHandler = FALSE) ;
-  
+
   // Close the window by calling OnClose, posting a deletion
   virtual bool Close(bool force = FALSE);
 
@@ -406,18 +466,20 @@ public:
   void UpdateWindowUI();
 
   void OnEraseBackground(wxEraseEvent& event);
-  void OnChar(wxKeyEvent& event);
+  void OnKeyDown(wxKeyEvent& event);
+  void OnKeyUp(wxKeyEvent& event);
   void OnPaint(wxPaintEvent& event);
+  void OnChar(wxKeyEvent& event);
   void OnIdle(wxIdleEvent& event);
 
   // Does this window want to accept keyboard focus?
   virtual bool AcceptsFocus() const;
 
-  virtual void PrepareDC( wxDC &dc ) {};
+  virtual void PrepareDC( wxDC& WXUNUSED(dc) ) {};
 public:
   ////////////////////////////////////////////////////////////////////////
   //// IMPLEMENTATION
-  
+
   // For implementation purposes - sometimes decorations make the client area
   // smaller
   virtual wxPoint GetClientAreaOrigin() const;
@@ -564,7 +626,10 @@ public:
   virtual void MSWOnMouseEnter(int x, int y, WXUINT flags);
   virtual void MSWOnMouseLeave(int x, int y, WXUINT flags);
 
-  virtual void MSWOnChar(WXWORD wParam, WXLPARAM lParam, bool isASCII = FALSE);
+  // These return TRUE if an event handler was found, FALSE otherwise (not processed)
+  virtual bool MSWOnChar(WXWORD wParam, WXLPARAM lParam, bool isASCII = FALSE);
+  virtual bool MSWOnKeyDown(WXWORD wParam, WXLPARAM lParam, bool isASCII = FALSE);
+  virtual bool MSWOnKeyUp(WXWORD wParam, WXLPARAM lParam, bool isASCII = FALSE);
 
   virtual bool MSWOnActivate(int flag, bool minimized, WXHWND activate);
   virtual long MSWOnMDIActivate(long flag, WXHWND activate, WXHWND deactivate);
@@ -590,13 +655,13 @@ public:
 
   // Detach "Window" menu from menu bar so it doesn't get deleted
   void MSWDetachWindowMenu();
-  
+
   inline WXFARPROC MSWGetOldWndProc() const;
   inline void MSWSetOldWndProc(WXFARPROC proc);
 
   // Define for each class of dialog and control
   virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
-                       WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
+                        WXUINT message, WXWPARAM wParam, WXLPARAM lParam);
 
   inline void SetShowing(bool show);
   inline bool IsUserEnabled() const;
@@ -618,8 +683,8 @@ public:
 protected:
   wxAcceleratorTable    m_acceleratorTable;
   int                   m_windowId;
-  long                  m_windowStyle;                         // Store the window's style
-  wxEvtHandler *        m_windowEventHandler;  // Usually is 'this'
+  long                  m_windowStyle;                         // Store the window's style
+  wxEvtHandler *        m_windowEventHandler;         // Usually is 'this'
   wxLayoutConstraints * m_constraints;           // Constraints for this window
   wxList *              m_constraintsInvolvedIn; // List of constraints we're involved in
   wxSizer *             m_windowSizer;                       // Window's top-level sizer (if any)
@@ -631,7 +696,7 @@ protected:
   WXFARPROC             m_oldWndProc;
   bool                  m_useCtl3D;             // Using CTL3D for this control
 
-  bool                  m_inOnSize;                    // Protection against OnSize reentry
+  bool                  m_inOnSize;                         // Protection against OnSize reentry
 #ifndef _WX_WIN32__
   // Pointer to global memory, for EDIT controls that need
   // special treatment to reduce USER area consumption.
@@ -679,7 +744,7 @@ protected:
 #endif  //USE_DRAG_AND_DROP
 
 public:
-  WXHWND                m_hWnd;                        // MS Windows window handle
+  WXHWND                m_hWnd;                         // MS Windows window handle
   WXUINT                m_lastMsg;
   WXWPARAM              m_lastWParam;
   WXLPARAM              m_lastLParam;
@@ -703,6 +768,11 @@ private:
     // common part of all ctors
     void Init();
 
+    // the associated tooltip (may be NULL if none)
+#if wxUSE_TOOLTIPS
+    wxToolTip *m_tooltip;
+#endif // tooltips
+
     DECLARE_EVENT_TABLE()
 };
 
@@ -714,7 +784,7 @@ inline int wxWindow::GetId() const { return m_windowId; }
 inline void wxWindow::SetId(int id) { m_windowId = id; }
 inline wxWindow *wxWindow::GetParent() const { return m_windowParent; }
 inline void wxWindow::SetParent(wxWindow *p) { m_windowParent = p; }
-inline wxWindow *wxWindow::GetGrandParent() const { return (m_windowParent ? m_windowParent->m_windowParent : NULL); }
+inline wxWindow *wxWindow::GetGrandParent() const { return (m_windowParent ? m_windowParent->m_windowParent : (wxWindow*) NULL); }
 inline wxList& wxWindow::GetChildren() const { return (wxList&) *m_children; }
 inline wxFont& wxWindow::GetFont() const { return (wxFont&) m_windowFont; }
 inline wxString wxWindow::GetName() const { return m_windowName; }