C++技巧之四

发表于:2007-07-01来源:作者:点击数: 标签:
代码清单2 window_redraw_scope的节略本 /* ///////////////////////////////////////////////////////////// * * ... * * Extract from winstl_window_redraw_scope.h *摘录自winstl_window_redraw_scope.h * * www: http://www.synesis.com.au/winstl * ht

代码清单2 window_redraw_scope的节略本

/* ///////////////////////////////////////////////////////////// * * ... * * Extract from winstl_window_redraw_scope.h  
*摘录自winstl_window_redraw_scope.h * * www:        http://www.synesis.com.au/winstl *             http://www.winstl.org/ * * Copyright (C) 2002, Synesis Software Pty Ltd. *版权所有(C) 2002, Synesis Software Pty Ltd公司 * (Licensed under the Synesis Software Standard Source License: *  )
* (由Synesis Software Standard Source License授权许可: *  ) * * ... * * ////////////////////////////////////////////////////////// */ ...  namespace winstl{     class window_redraw_scope    {
// Construction 
// 构造    public:        // Takes a HWND and changes it´s current redraw-status,        // which is set back to the original state in the         // destructor.        //取得HWND 句柄并改变其当前重画状态,在析构器中设置其回到初始状态。        ws_explicit_k window_redraw_scope(HWND hwnd,                         ws_bool_t bInvalidateOnUnlock = true)            : m_hwnd(hwnd)            , m_bInvalidateOnUnlock(bInvalidateOnUnlock)        {            ::SendMessage(m_hwnd, WM_SETREDRAW, false, 0L);        }         ~window_redraw_scope() winstl_throw_0()        {            ::SendMessage(m_hwnd, WM_SETREDRAW, true, 0L);             if(m_bInvalidateOnUnlock)            {                ::InvalidateRect(m_hwnd, NULL, true);            }        } 
// Members 
// 成员变量    protected:        HWND        m_hwnd;        ws_bool_t   m_bInvalidateOnUnlock; 
// Not to be implemented
// 不被实现    private:        window_redraw_scope(window_redraw_scope const &rhs);        window_redraw_scope const             &operator =(window_redraw_scope const &rhs);    }; } // namespace winstl 名称空间

 

图表 1 Window作用域(scope)例子


原文转自:http://www.ltesting.net