holdredraw.h
来自「管理项目进度工具的原代码」· C头文件 代码 · 共 92 行
H
92 行
// SetRedraw.h: interface and implementation of the CSetRedraw class.
//
/////////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_HOLDREDRAW_H__7E73ADE2_3848_4ED1_9E8B_8881813B4262__INCLUDED_)
#define AFX_HOLDREDRAW_H__7E73ADE2_3848_4ED1_9E8B_8881813B4262__INCLUDED_
class CNcRedraw // note: there is no inheritance intentionally.
{
public:
CNcRedraw(CWnd* pWnd, LPCTSTR szTrace = NULL) : m_hWnd(NULL), m_sTrace(szTrace)
{
if (pWnd)
m_hWnd = pWnd->GetSafeHwnd();
}
CNcRedraw(HWND hWnd, LPCTSTR szTrace = NULL) : m_hWnd(NULL), m_sTrace(szTrace)
{
m_hWnd = hWnd;
}
virtual ~CNcRedraw()
{
if (m_hWnd && ::IsWindowVisible(m_hWnd))
{
//TRACE("~CNcRedraw(%s)\n", m_sTrace);
::SendMessage(m_hWnd, WM_NCPAINT, 0, 0);
}
}
protected:
HWND m_hWnd;
CString m_sTrace;
};
class CRedrawAll
{
public:
CRedrawAll(CWnd* pWnd, BOOL bUpdateWindow = FALSE) : m_hWnd(NULL), m_bUpdateWindow(bUpdateWindow)
{
if (pWnd)
m_hWnd = pWnd->GetSafeHwnd();
}
CRedrawAll(HWND hWnd, BOOL bUpdateWindow = FALSE) : m_hWnd(NULL), m_bUpdateWindow(bUpdateWindow)
{
m_hWnd = hWnd;
}
virtual ~CRedrawAll()
{
if (m_hWnd && ::IsWindowVisible(m_hWnd))
{
//TRACE("~CRedrawAll()\n");
::SendMessage(m_hWnd, WM_NCPAINT, 0, 0);
::InvalidateRect(m_hWnd, NULL, FALSE);
if (m_bUpdateWindow)
::UpdateWindow(m_hWnd);
}
}
protected:
HWND m_hWnd;
BOOL m_bUpdateWindow;
};
class CHoldRedraw : protected CRedrawAll
{
public:
CHoldRedraw(CWnd* pWnd, BOOL bUpdateWindow = FALSE) : CRedrawAll(pWnd, bUpdateWindow)
{
if (m_hWnd)
::SendMessage(m_hWnd, WM_SETREDRAW, FALSE, 0);
}
CHoldRedraw(HWND hWnd, BOOL bUpdateWindow = FALSE) : CRedrawAll(hWnd, bUpdateWindow)
{
if (m_hWnd)
::SendMessage(m_hWnd, WM_SETREDRAW, FALSE, 0);
}
virtual ~CHoldRedraw()
{
if (m_hWnd)
::SendMessage(m_hWnd, WM_SETREDRAW, TRUE, 0);
}
};
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?