📄 drawbase.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 + -