代码清单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: * http://www.synesis.com.au/licenses/ssssl.html) * (由Synesis Software Standard Source License授权许可: * http://www.synesis.com.au/licenses/ssssl.html) * * ... * * /////////////////////////////// */
... 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 名称空间
|