////////////////////////////////////////////////////////////////////////////// //文件 MemDC.h //主要功能: // //程序编写: 2005-12-07 ///////////////////////////////////////////////////////////////////////////// #pragma once #include "afxwin.h" #include "DrawLocal/MemAlloc.h" class AFX_EXT_CLASS CMemoryDC : public CDC { public: CMemoryDC(void); virtual ~CMemoryDC(void); public: virtual BOOL Create(CSize &pImageSize,int nBPP=0, CDC* pDC=NULL); virtual CSize GetSize(void); virtual void Empty(void); void Erase(COLORREF pColor); void FromDC(CDC* pDC); //从指定DC获得显示内容 void Draw(CDC* pDC, int x, int y); //不拉伸显示 void Draw(CDC* pDC, int x, int y, int cx, int cy); //拉伸显示 BOOL WriteBitmap(LPCTSTR lpFileName, int nBt=0, BOOL bCompr=FALSE); BOOL Save(LPCTSTR lpFileName); BOOL CopyToClipboard(HWND hWnd=NULL); static BOOL FileDialog(BOOL bOpenFileDialog , CString &name); static CString GetFilterType(BOOL bOpenFileDialog); HBITMAP CMemoryDC::Detach(); operator HBITMAP(void) const; operator CMemoryDC*(); // Allow usage as a pointer CMemoryDC* operator->() {return this;} // Allow usage as a pointer protected: CMemAlloc m_memAlloc; CImage image; CSize cImageSize; HBITMAP m_hOldBitmap; }; AFX_INLINE CMemoryDC::operator HBITMAP(void) const { return (HBITMAP)image; } AFX_INLINE CMemoryDC::operator CMemoryDC*() { return this; } AFX_INLINE CSize CMemoryDC::GetSize(void) { return cImageSize; }