Use wxEventFilter to remove the splash screen as soon as any user input is detected anywhere in the application, not necessarily over the splash screen itself. This ensures that the splash screen disappears as soon as the user starts working with the application instead of sticking around and covering the main window. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69796 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			99 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        wx/generic/splash.h
 | |
| // Purpose:     Splash screen class
 | |
| // Author:      Julian Smart
 | |
| // Modified by:
 | |
| // Created:     28/6/2000
 | |
| // RCS-ID:      $Id$
 | |
| // Copyright:   (c) Julian Smart
 | |
| // Licence:     wxWindows Licence
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef _WX_SPLASH_H_
 | |
| #define _WX_SPLASH_H_
 | |
| 
 | |
| #include "wx/bitmap.h"
 | |
| #include "wx/eventfilter.h"
 | |
| #include "wx/frame.h"
 | |
| #include "wx/timer.h"
 | |
| 
 | |
| 
 | |
| /*
 | |
|  * A window for displaying a splash screen
 | |
|  */
 | |
| 
 | |
| #define wxSPLASH_CENTRE_ON_PARENT   0x01
 | |
| #define wxSPLASH_CENTRE_ON_SCREEN   0x02
 | |
| #define wxSPLASH_NO_CENTRE          0x00
 | |
| #define wxSPLASH_TIMEOUT            0x04
 | |
| #define wxSPLASH_NO_TIMEOUT         0x00
 | |
| 
 | |
| class WXDLLIMPEXP_FWD_ADV wxSplashScreenWindow;
 | |
| 
 | |
| /*
 | |
|  * wxSplashScreen
 | |
|  */
 | |
| 
 | |
| class WXDLLIMPEXP_ADV wxSplashScreen: public wxFrame,
 | |
|                                       public wxEventFilter
 | |
| {
 | |
| public:
 | |
|     // for RTTI macros only
 | |
|     wxSplashScreen() { Init(); }
 | |
|     wxSplashScreen(const wxBitmap& bitmap, long splashStyle, int milliseconds,
 | |
|                    wxWindow* parent, wxWindowID id,
 | |
|                    const wxPoint& pos = wxDefaultPosition,
 | |
|                    const wxSize& size = wxDefaultSize,
 | |
|                    long style = wxSIMPLE_BORDER|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP);
 | |
|     virtual ~wxSplashScreen();
 | |
| 
 | |
|     void OnCloseWindow(wxCloseEvent& event);
 | |
|     void OnNotify(wxTimerEvent& event);
 | |
| 
 | |
|     long GetSplashStyle() const { return m_splashStyle; }
 | |
|     wxSplashScreenWindow* GetSplashWindow() const { return m_window; }
 | |
|     int GetTimeout() const { return m_milliseconds; }
 | |
| 
 | |
|     // Override wxEventFilter method to hide splash screen on any user input.
 | |
|     virtual int FilterEvent(wxEvent& event);
 | |
| 
 | |
| protected:
 | |
|     // Common part of all ctors.
 | |
|     void Init();
 | |
| 
 | |
|     wxSplashScreenWindow*   m_window;
 | |
|     long                    m_splashStyle;
 | |
|     int                     m_milliseconds;
 | |
|     wxTimer                 m_timer;
 | |
| 
 | |
|     DECLARE_DYNAMIC_CLASS(wxSplashScreen)
 | |
|     DECLARE_EVENT_TABLE()
 | |
|     wxDECLARE_NO_COPY_CLASS(wxSplashScreen);
 | |
| };
 | |
| 
 | |
| /*
 | |
|  * wxSplashScreenWindow
 | |
|  */
 | |
| 
 | |
| class WXDLLIMPEXP_ADV wxSplashScreenWindow: public wxWindow
 | |
| {
 | |
| public:
 | |
|     wxSplashScreenWindow(const wxBitmap& bitmap, wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxNO_BORDER);
 | |
| 
 | |
|     void OnPaint(wxPaintEvent& event);
 | |
|     void OnEraseBackground(wxEraseEvent& event);
 | |
| 
 | |
|     void SetBitmap(const wxBitmap& bitmap) { m_bitmap = bitmap; }
 | |
|     wxBitmap& GetBitmap() { return m_bitmap; }
 | |
| 
 | |
| protected:
 | |
|     wxBitmap    m_bitmap;
 | |
| 
 | |
|     DECLARE_EVENT_TABLE()
 | |
|     wxDECLARE_NO_COPY_CLASS(wxSplashScreenWindow);
 | |
| };
 | |
| 
 | |
| 
 | |
| #endif
 | |
|     // _WX_SPLASH_H_
 |