zoukankan      html  css  js  c++  java
  • WTL里双缓冲避免闪烁

     1///////////////////////////////////////////////////////////////////////////////
     2// CDoubleBufferImpl - Provides double-buffer painting support to any window
     3
     4template <class T>
     5class CDoubleBufferImpl
     6{
     7public:
     8// Overrideables
     9    void DoPaint(CDCHandle /*dc*/)
    10    {
    11        // must be implemented in a derived class
    12        ATLASSERT(FALSE);
    13    }

    14
    15// Message map and handlers
    16    BEGIN_MSG_MAP(CDoubleBufferImpl)
    17        MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBackground)
    18        MESSAGE_HANDLER(WM_PAINT, OnPaint)
    19#ifndef _WIN32_WCE
    20        MESSAGE_HANDLER(WM_PRINTCLIENT, OnPaint)
    21#endif // !_WIN32_WCE
    22    END_MSG_MAP()
    23
    24    LRESULT OnEraseBackground(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
    25    {
    26        return 1;   // no background painting needed
    27    }

    28
    29    LRESULT OnPaint(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/)
    30    {
    31        T* pT = static_cast<T*>(this);
    32        ATLASSERT(::IsWindow(pT->m_hWnd));
    33
    34        if(wParam != NULL)
    35        {
    36            RECT rect = 0 };
    37            pT->GetClientRect(&rect);
    38            CMemoryDC dcMem((HDC)wParam, rect);
    39            pT->DoPaint(dcMem.m_hDC);
    40        }

    41        else
    42        {
    43            CPaintDC dc(pT->m_hWnd);
    44            CMemoryDC dcMem(dc.m_hDC, dc.m_ps.rcPaint);
    45            pT->DoPaint(dcMem.m_hDC);
    46        }

    47
    48        return 0;
    49    }

    50}
    ;
  • 相关阅读:
    Hive初识(一)
    图解HTTP总结(8)——确认访问用户身份的认证
    Android 7.0 照相 FileUriExposedException
    activity跳转的一些坑
    gopath配置
    android项目中记录
    一些趣味性总结(JAVA)
    http的response遇到illegalstateexception解决办法
    django demo
    Error:Execution failed for task ':app:transformClassesWithDexForDebug'解决方法
  • 原文地址:https://www.cnblogs.com/javado/p/1424176.html
Copyright © 2011-2022 走看看