memdc.h
#if !defined(AFX_MEMDC_H__75FED539_1CA2_4C25_920E_ABD04348B248__INCLUDED_)
#define AFX_MEMDC_H__75FED539_1CA2_4C25_920E_ABD04348B248__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// MemDC.h : header file
//
//注意:本类本不适合绘制动画时动态创建
/
class CMemDC : public CDC//从CDC类公有派生
{
// Construction
public:
CMemDC(UINT heigh,UINT width);//构造函数,传入高和宽
// Attributes
public:
// Implementation
public:
HBITMAP CloseMemDC();//公有成员函数,
virtual ~CMemDC();//析构函数,虚函数
private:
CBitmap m_bitmap; //私有数据成员
CBitmap* m_pOldBitmap;//私有数据成员
UINT m_bmpHeigh;//私有数据成员:高
UINT m_bmpWidth;//私有数据成员:宽
};
/
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MEMDC_H__75FED539_1CA2_4C25_920E_ABD04348B248__INCLUDED_)
memdc.cpp
// MemDC.cpp : implementation file
//
#include "stdafx.h"
#include "MemDC.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/
// CMemDC
CMemDC::CMemDC(UINT width,UINT heigh)
{
CDC *pDC = CDC::FromHandle(::GetDC(GetDesktopWindow()));
ASSERT(pDC != NULL);
CreateCompatibleDC(pDC);
m_bmpWidth = width;
m_bmpHeigh = heigh;
m_bitmap.CreateCompatibleBitmap(pDC, m_bmpWidth, m_bmpHeigh);
m_pOldBitmap = SelectObject(&m_bitmap);
::ReleaseDC(GetDesktopWindow(), pDC->m_hDC);
}
CMemDC::~CMemDC()
{
SelectObject(m_pOldBitmap);
m_bitmap.DeleteObject();
DeleteDC();
}
/
// CMemDC message handlers
HBITMAP CMemDC::CloseMemDC()
{
SelectObject(m_pOldBitmap);
return (HBITMAP)(m_bitmap.Detach());
}