This can be useful if the window needs to be frozen only if some run-time condition holds true.
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        wx/wupdlock.h
 | |
| // Purpose:     wxWindowUpdateLocker prevents window redrawing
 | |
| // Author:      Vadim Zeitlin
 | |
| // Created:     2006-03-06
 | |
| // Copyright:   (c) 2006 Vadim Zeitlin <vadim@wxwidgets.org>
 | |
| // Licence:     wxWindows licence
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef _WX_WUPDLOCK_H_
 | |
| #define _WX_WUPDLOCK_H_
 | |
| 
 | |
| #include "wx/window.h"
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // wxWindowUpdateLocker prevents updates to the window during its lifetime
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| class wxWindowUpdateLocker
 | |
| {
 | |
| public:
 | |
|     // Prefer using the ctor below if possible, this ctor is only useful if
 | |
|     // Lock() must be called only conditionally.
 | |
|     wxWindowUpdateLocker() : m_win(NULL) { }
 | |
| 
 | |
|     // create an object preventing updates of the given window (which must have
 | |
|     // a lifetime at least as great as ours)
 | |
|     explicit wxWindowUpdateLocker(wxWindow *win) : m_win(win) { win->Freeze(); }
 | |
| 
 | |
|     // May be called only for the object constructed using the default ctor.
 | |
|     void Lock(wxWindow *win)
 | |
|     {
 | |
|         wxASSERT( !m_win );
 | |
| 
 | |
|         m_win = win;
 | |
|         win->Freeze();
 | |
|     }
 | |
| 
 | |
|     // dtor thaws the window to permit updates again
 | |
|     ~wxWindowUpdateLocker()
 | |
|     {
 | |
|         if ( m_win )
 | |
|             m_win->Thaw();
 | |
|     }
 | |
| 
 | |
| private:
 | |
|     wxWindow *m_win;
 | |
| 
 | |
|     wxDECLARE_NO_COPY_CLASS(wxWindowUpdateLocker);
 | |
| };
 | |
| 
 | |
| #endif // _WX_WUPDLOCK_H_
 | |
| 
 |