chenluhua1980
2026-01-06 18f05a37d19e0e20db266a4e32e8263847e94a76
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "stdafx.h"
#include "ServoMemDC.h"
 
CServoMemDC::CServoMemDC(CDC* pDC, const CRect* pRect)
    : CDC(), m_pOldBitmap(nullptr), m_pDC(pDC), m_bMemDC(FALSE)
{
    ASSERT(pDC != nullptr);
 
    if (pRect == nullptr)
        pDC->GetClipBox(&m_rect);
    else
        m_rect = *pRect;
 
    if (CreateCompatibleDC(pDC)) {
        m_bMemDC = TRUE;
        m_bitmap.CreateCompatibleBitmap(pDC, m_rect.Width(), m_rect.Height());
        m_pOldBitmap = SelectObject(&m_bitmap);
        SetWindowOrg(m_rect.left, m_rect.top);
    }
}
 
CServoMemDC::~CServoMemDC()
{
    if (m_bMemDC) {
        // ½«ÄÚ´æ DC ¿½±´»ØÔ­Ê¼´°¿Ú DC
        m_pDC->BitBlt(m_rect.left, m_rect.top, m_rect.Width(), m_rect.Height(),
            this, m_rect.left, m_rect.top, SRCCOPY);
        SelectObject(m_pOldBitmap);
    }
}
 
CServoMemDC* CServoMemDC::operator->()
{
    return this;
}
 
CServoMemDC::operator CDC* ()
{
    return this;
}