C++技巧之四

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

代码清单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 名称空间

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航