⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drawbase.cpp

📁 这是一个程序的一般架构方法
💻 CPP
字号:
//-- {CycleCode: 724} file [0..2990]
//-- {AddDecl: 725} module.includes preserve=yes [0..202]
//## begin module.includes preserve=yes
// DrawBase.cpp: implementation of the CDrawBase class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "DrawBase.h"

//## end module.includes preserve=yes
//-- {StartSubRegion: 726} region.conditional [203..217]
#ifdef _DEBUG
//-- {AddDecl: 727} module.vulnerableDeclarations [218..293]
//## begin module.additionalDeclarations preserve=yes
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
//## end module.additionalDeclarations
//-- {StartSubRegion: 728} region.conditional [294..301]
#endif
//-- {AddDecl: 729} region.unprotectedFunction [302..565]


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CDrawBase::CDrawBase()
{
//## begin CDrawBase::CDrawBase%79D9B03DFEED.body preserve=yes
	m_dwoffscreenBKCollor = WHITENESS;
	m_isInited = FALSE;
//## end CDrawBase::CDrawBase%79D9B03DFEED.body
}
//-- {AddDecl: 730} region.unprotectedFunction [566..789]

CDrawBase::CDrawBase(HWND hWnd)
{
//## begin CDrawBase::CDrawBase%C33F92FCFEED.body preserve=yes
	CRect winrt;
	GetWindowRect(hWnd,winrt);

	m_hWnd = hWnd;
	m_dwoffscreenBKCollor = WHITENESS;
	m_nOffscreenCX = winrt.Width();
	m_nOffscreenCY = winrt.Height();

	Init();

//## end CDrawBase::CDrawBase%C33F92FCFEED.body
}
//-- {AddDecl: 731} region.unprotectedFunction [790..837]

CDrawBase::~CDrawBase(void)
{
//## begin CDrawBase::~CDrawBase%714B359EFEED.body preserve=yes
	Clear();
//## end CDrawBase::~CDrawBase%714B359EFEED.body
}
//-- {AddDecl: 732} region.unprotectedFunction [838..1393]


void CDrawBase::Init()
{
//## begin CDrawBase::Init%E9DEBA5EFEED.body preserve=yes
	m_hDC = GetDC(m_hWnd);
	//获取桌面的设备文本
	//创建和桌面相同的设备文本,也就是虚拟屏幕的设备文本
	m_hOffscreenDC = CreateCompatibleDC(m_hDC);
	//创建和桌面相同的位图(缓冲内存)
	m_hOffscreenBuffer = CreateCompatibleBitmap(m_hDC,m_nOffscreenCX,m_nOffscreenCY);
	//将内存缓冲选入虚拟屏幕的设备文本
	SelectObject(m_hOffscreenDC,m_hOffscreenBuffer);
	//将整个屏幕画为背景色
	PatBlt(m_hOffscreenDC,0,0,m_nOffscreenCX,m_nOffscreenCY,m_dwoffscreenBKCollor);
	m_DrawCDC.Attach(m_hOffscreenDC);
	m_isInited = TRUE;
//## end CDrawBase::Init%E9DEBA5EFEED.body
}
//-- {AddDecl: 733} region.unprotectedFunction [1394..1649]

void CDrawBase::Clear()
{
//## begin CDrawBase::Clear%8E57D7F5FEED.body preserve=yes
	if (m_isInited)
	{
		//释放虚拟屏幕的设备文本
		DeleteDC(m_hOffscreenDC);
		//删除虚拟屏幕的内存对象
		DeleteObject(m_hOffscreenBuffer);
		ReleaseDC(m_hWnd,m_hDC);
		m_DrawCDC.Detach();
		m_isInited = FALSE;
	}
//## end CDrawBase::Clear%8E57D7F5FEED.body
}
//-- {AddDecl: 734} region.unprotectedFunction [1650..1862]

//更新屏幕(将离屏虚拟屏幕的内容拷贝到真正的屏幕)
void CDrawBase::EndDraw()
{
//## begin CDrawBase::EndDraw%14AEDD80FEED.body preserve=yes
	//将虚拟屏幕位块传送到窗口hDC的屏幕上
	BitBlt(m_hDC,0,0,m_nOffscreenCX,
		m_nOffscreenCY,m_hOffscreenDC,0,0,
		SRCCOPY);
//## end CDrawBase::EndDraw%14AEDD80FEED.body
}
//-- {AddDecl: 735} region.unprotectedFunction [1863..2106]

void CDrawBase::SetNewHWND(HWND hwnd)
{
//## begin CDrawBase::SetNewHWND%61F98B75FEED.body preserve=yes
	Clear();
	CRect winrt;
	GetClientRect(hwnd,winrt);
	
	m_hWnd = hwnd;
	m_dwoffscreenBKCollor = WHITENESS;
	m_nOffscreenCX = winrt.Width();
	m_nOffscreenCY = winrt.Height();
	
	Init();
	
//## end CDrawBase::SetNewHWND%61F98B75FEED.body
}
//-- {AddDecl: 736} region.unprotectedFunction [2107..2225]

void CDrawBase::BeginDraw()
{
//## begin CDrawBase::BeginDraw%CDB77902FEED.body preserve=yes
	PatBlt(m_hOffscreenDC,0,0,m_nOffscreenCX,m_nOffscreenCY,m_dwoffscreenBKCollor);
//## end CDrawBase::BeginDraw%CDB77902FEED.body
}
//-- {AddDecl: 737} region.unprotectedFunction [2226..2311]

void CDrawBase::SetBKColor(DWORD dwColor)
{
//## begin CDrawBase::SetBKColor%9F4FB260FEED.body preserve=yes
	m_dwoffscreenBKCollor = dwColor;
//## end CDrawBase::SetBKColor%9F4FB260FEED.body
}
//-- {AddDecl: 738} region.unprotectedFunction [2312..2462]



void CDrawBase::SetPen( int nPenStyle,int nWidth , COLORREF crColor)
{
//## begin CDrawBase::SetPen%8A0919FFFEED.body preserve=yes
	CPen pen(nPenStyle,nWidth,crColor);
	m_DrawCDC.SelectObject(pen);
//## end CDrawBase::SetPen%8A0919FFFEED.body
}
//-- {AddDecl: 739} region.unprotectedFunction [2463..2528]

int CDrawBase::GetDrawHeight()
{
//## begin CDrawBase::GetDrawHeight%9B493C68FEED.body preserve=yes
	return m_nOffscreenCX ;
//## end CDrawBase::GetDrawHeight%9B493C68FEED.body
}
//-- {AddDecl: 740} region.unprotectedFunction [2529..2596]

int CDrawBase::GetDrawWidth()
{
//## begin CDrawBase::GetDrawWidth%503DF686FEED.body preserve=yes
	return m_nOffscreenCY ;
	
//## end CDrawBase::GetDrawWidth%503DF686FEED.body
}
//-- {AddDecl: 741} region.unprotectedFunction [2597..2692]
void CDrawBase::Line(POINT p1, POINT p2)
{
//## begin CDrawBase::Line%9B0CA41BFEED.body preserve=yes
	m_DrawCDC.MoveTo(p1);
	m_DrawCDC.LineTo(p2);
//## end CDrawBase::Line%9B0CA41BFEED.body
}
//-- {AddDecl: 742} region.unprotectedFunction [2693..2781]

void CDrawBase::Point(POINT P1)
{
//## begin CDrawBase::Point%F97D8666FEED.body preserve=yes
	m_DrawCDC.MoveTo(P1);
	m_DrawCDC.LineTo(P1);
//## end CDrawBase::Point%F97D8666FEED.body
}
//-- {AddDecl: 743} region.unprotectedFunction [2782..2873]

void CDrawBase::Ployline(POINT *pPo, int nCount)
{
//## begin CDrawBase::Ployline%59EA2D5BFEED.body preserve=yes
	m_DrawCDC.Polyline(pPo,nCount);
//## end CDrawBase::Ployline%59EA2D5BFEED.body
}
//-- {AddDecl: 744} region.unprotectedFunction [2874..2987]

//两点圆
void CDrawBase::DrawCircle(POINT p1, UINT r)
{
//## begin CDrawBase::DrawCircle%B58A5C37FEED.body preserve=yes
	m_DrawCDC.Ellipse(p1.x-r,p1.y+r,p1.x+r,p1.y-r);
//## end CDrawBase::DrawCircle%B58A5C37FEED.body
}
//-- {InsertRegion: 745} module.vulnerableDeclarations [2988..2990]
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -