Not doing this prevented the tooltips from working correctly if the library was shut down and reinitialized again, so add a module ensuring this is done. Closes #17360.
		
			
				
	
	
		
			122 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        wx/msw/tooltip.h
 | |
| // Purpose:     wxToolTip class - tooltip control
 | |
| // Author:      Vadim Zeitlin
 | |
| // Modified by:
 | |
| // Created:     31.01.99
 | |
| // Copyright:   (c) 1999 Robert Roebling, Vadim Zeitlin
 | |
| // Licence:     wxWindows licence
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef _WX_MSW_TOOLTIP_H_
 | |
| #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
 | |
| {
 | |
| 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
 | |
|     void SetTip(const wxString& tip);
 | |
|     const wxString& GetTip() const { return m_text; }
 | |
| 
 | |
|         // the window we're associated with
 | |
|     void SetWindow(wxWindow *win);
 | |
|     wxWindow *GetWindow() const { return m_window; }
 | |
| 
 | |
|     // controlling tooltip behaviour: globally change tooltip parameters
 | |
|         // enable or disable the tooltips globally
 | |
|     static void Enable(bool flag);
 | |
|         // set the delay after which the tooltip appears
 | |
|     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);
 | |
| 
 | |
|     // add a window to the tooltip control
 | |
|     void AddOtherWindow(WXHWND hwnd);
 | |
| 
 | |
|     // remove any tooltip from the window
 | |
|     static void Remove(WXHWND hwnd, unsigned int id, const wxRect& rc);
 | |
| 
 | |
|     // 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);
 | |
| 
 | |
|     // Called when TLW shown state is changed and hides the tooltip itself if
 | |
|     // the window it's associated with is hidden.
 | |
|     static void UpdateVisibility();
 | |
| 
 | |
| private:
 | |
|     // This module calls our DeleteToolTipCtrl().
 | |
|     friend class wxToolTipModule;
 | |
| 
 | |
|     // 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;
 | |
| 
 | |
|     // create the tooltip ctrl if it doesn't exist yet and return its HWND
 | |
|     static WXHWND GetToolTipCtrl();
 | |
| 
 | |
|     // to be used in wxModule for deleting tooltip ctrl window when exiting mainloop
 | |
|     static void DeleteToolTipCtrl();
 | |
| 
 | |
|     // new tooltip maximum width, defaults to min(display width, 400)
 | |
|     static int ms_maxWidth;
 | |
| 
 | |
|     // remove this tooltip from the tooltip control
 | |
|     void Remove();
 | |
| 
 | |
|     // adjust tooltip max width based on current tooltip text
 | |
|     bool AdjustMaxWidth();
 | |
| 
 | |
|     wxString  m_text;           // tooltip text
 | |
|     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)
 | |
| 
 | |
|     wxDECLARE_ABSTRACT_CLASS(wxToolTip);
 | |
|     wxDECLARE_NO_COPY_CLASS(wxToolTip);
 | |
| };
 | |
| 
 | |
| #endif // _WX_MSW_TOOLTIP_H_
 |