]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/tooltip.h
allow passing temporary functors to Bind() too (closes #10653)
[wxWidgets.git] / include / wx / msw / tooltip.h
index d2ece32c85f9009175a8cd880a6c13b66aaee52f..25ffd75738ca2be38c845090f0f2e3843bdd2828 100644 (file)
@@ -1,20 +1,33 @@
 ///////////////////////////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////
-// Name:        msw/tooltip.h
+// Name:        wx/msw/tooltip.h
 // Purpose:     wxToolTip class - tooltip control
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     31.01.99
 // RCS-ID:      $Id$
 // Copyright:   (c) 1999 Robert Roebling, Vadim Zeitlin
 // Purpose:     wxToolTip class - tooltip control
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     31.01.99
 // RCS-ID:      $Id$
 // Copyright:   (c) 1999 Robert Roebling, Vadim Zeitlin
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 ///////////////////////////////////////////////////////////////////////////////
 
-class wxToolTip : public wxObject
+#ifndef _WX_MSW_TOOLTIP_H_
+#define _WX_MSW_TOOLTIP_H_
+
+#include "wx/object.h"
+#include "wx/gdicmn.h"
+
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+
+class WXDLLIMPEXP_CORE wxToolTip : public wxObject
 {
 public:
     // ctor & dtor
     wxToolTip(const wxString &tip);
     virtual ~wxToolTip();
 {
 public:
     // ctor & dtor
     wxToolTip(const wxString &tip);
     virtual ~wxToolTip();
+    
+    // ctor used by wxStatusBar to associate a tooltip to a portion of
+    // the status bar window:
+    wxToolTip(wxWindow* win, unsigned int id, 
+              const wxString &tip, const wxRect& rc);
 
     // accessors
         // tip text
 
     // accessors
         // tip text
@@ -25,28 +38,58 @@ public:
     void SetWindow(wxWindow *win);
     wxWindow *GetWindow() const { return m_window; }
 
     void SetWindow(wxWindow *win);
     wxWindow *GetWindow() const { return m_window; }
 
-    // controlling tooltip behaviour: under MSW, these functions change the
-    // behaviour of the tooltips for all controls in the same frame as this
-    // one (it is an implementation limitation). Also, these functions won't
-    // do anything before the tooltip control is associated with a window, so
-    // SetWindow() should be called first
+    // controlling tooltip behaviour: globally change tooltip parameters
         // enable or disable the tooltips globally
         // enable or disable the tooltips globally
-    void Enable(bool flag);
+    static void Enable(bool flag);
         // set the delay after which the tooltip appears
         // set the delay after which the tooltip appears
-    void SetDelay(long milliseconds);
+    static void SetDelay(long milliseconds);
+        // set the delay after which the tooltip disappears or how long the
+        // tooltip remains visible
+    static void SetAutoPop(long milliseconds);
+        // set the delay between subsequent tooltips to appear
+    static void SetReshow(long milliseconds);
+        // set maximum width for the new tooltips: -1 disables wrapping
+        // entirely, 0 restores the default behaviour
+    static void SetMaxWidth(int width);
+
+    // implementation only from now on
+    // -------------------------------
+
+    // should be called in response to WM_MOUSEMOVE
+    static void RelayEvent(WXMSG *msg);
 
 
-    // implementation
-    void RelayEvent(WXMSG *msg);
+    // add a window to the tooltip control
+    void Add(WXHWND hwnd);
+
+    // remove any tooltip from the window
+    static void Remove(WXHWND hwnd, unsigned int id, const wxRect& rc);
+
+    // the rect we're associated with
+    void SetRect(const wxRect& rc);
+    const wxRect& GetRect() const { return m_rect; }
 
 private:
 
 private:
-    // create the tooltip ctrl for our parent frame if it doesn't exist yet
-    // and return its window handle
-    WXHWND GetToolTipCtrl();
+    // the one and only one tooltip control we use - never access it directly
+    // but use GetToolTipCtrl() which will create it when needed
+    static WXHWND ms_hwndTT;
+
+    // create the tooltip ctrl if it doesn't exist yet and return its HWND
+    static WXHWND GetToolTipCtrl();
+
+    // new tooltip maximum width, defaults to min(display width, 400)
+    static int ms_maxWidth;
 
     // remove this tooltip from the tooltip control
     void Remove();
 
     wxString  m_text;           // tooltip text
 
     // remove this tooltip from the tooltip control
     void Remove();
 
     wxString  m_text;           // tooltip text
-    wxWindow *m_window;         // window we're associated with
+    wxWindow* m_window;         // window we're associated with
+    wxRect    m_rect;           // the rect of the window for which this tooltip is shown
+                                // (or a rect with width/height == 0 to show it for the entire window)
+    unsigned int m_id;          // the id of this tooltip (ignored when m_rect width/height is 0)
+
+    DECLARE_ABSTRACT_CLASS(wxToolTip)
+    wxDECLARE_NO_COPY_CLASS(wxToolTip);
 };
 
 };
 
+#endif // _WX_MSW_TOOLTIP_H_