X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6418ad5ec8e66c3b367b59b56e0849399774f3ec..a7689c49fe02c0c065facf736ab28b19f5997b7c:/include/wx/msw/tooltip.h diff --git a/include/wx/msw/tooltip.h b/include/wx/msw/tooltip.h index 24b2ee9b26..ae512d928b 100644 --- a/include/wx/msw/tooltip.h +++ b/include/wx/msw/tooltip.h @@ -13,8 +13,10 @@ #define _WX_MSW_TOOLTIP_H_ #include "wx/object.h" +#include "wx/gdicmn.h" class WXDLLIMPEXP_FWD_CORE wxWindow; +class wxToolTipOtherWindows; class WXDLLIMPEXP_CORE wxToolTip : public wxObject { @@ -22,10 +24,10 @@ 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, + wxToolTip(wxWindow* win, unsigned int id, const wxString &tip, const wxRect& rc); // accessors @@ -58,16 +60,28 @@ public: static void RelayEvent(WXMSG *msg); // add a window to the tooltip control - void Add(WXHWND hwnd); + void AddOtherWindow(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 + // Set the rectangle we're associated with. This rectangle is only used for + // the main window, not any sub-windows added with Add() so in general it + // makes sense to use it for tooltips associated with a single window only. void SetRect(const wxRect& rc); - const wxRect& GetRect() const { return m_rect; } private: + // Adds a window other than our main m_window to this tooltip. + void DoAddHWND(WXHWND hWnd); + + // Perform the specified operation for the given window only. + void DoSetTip(WXHWND hWnd); + void DoRemove(WXHWND hWnd); + + // Call the given function for all windows we're associated with. + void DoForAllWindows(void (wxToolTip::*func)(WXHWND)); + + // 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; @@ -82,7 +96,8 @@ private: void Remove(); wxString m_text; // tooltip text - wxWindow* m_window; // window we're associated with + wxWindow* m_window; // main window we're associated with + wxToolTipOtherWindows *m_others; // other windows associated with it or NULL 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)