#include ".\canvasform.h"
CCanvasForm::CCanvasForm(void)
{
RECT rect;
Create(NULL,"绘图窗口");
CClientDC dc(this);
int width = dc.GetDeviceCaps(HORZRES);
int height = dc.GetDeviceCaps(VERTRES);
GetWindowRect( &rect );
width = ( width - ( rect.right - rect.left ))/2 ;
height = (height - (rect.bottom - rect.top ))/2 ;
MoveWindow( width , height , (rect.right - rect.left ) , (rect.bottom - rect.top ) ,true);
BackgroudBitmap=new CBitmap;
BackgroudBitmap->LoadBitmap(IDB_BITMAP1);
ManBitmap=new CBitmap;
ManBitmap->LoadBitmap(IDB_BITMAP2);
pDC=new CDC;
pDC->CreateCompatibleDC(&dc);
x=250;
y=150;
flag=TRUE;
}
CCanvasForm::~CCanvasForm(void)
{
delete pDC;
}
BEGIN_MESSAGE_MAP(CCanvasForm, CFrameWnd)
ON_WM_PAINT()
ON_WM_KEYDOWN()
ON_WM_CREATE()
ON_WM_TIMER()
END_MESSAGE_MAP()
void CCanvasForm::OnPaint()
{
CPaintDC dc(this);
RECT rect;
GetClientRect(&rect);
pDC->SelectObject(BackgroudBitmap);
dc.BitBlt(0,0,rect.right,rect.bottom,pDC,0,0,SRCCOPY);
pDC->SelectObject(ManBitmap);
dc.BitBlt(x,y,104,154,pDC,104,0,SRCAND);
dc.BitBlt(x,y,104,154,pDC,0,0,SRCPAINT);
}
void CCanvasForm::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(nChar=='A')
{
x--;
//MessageBox("left");
}
if(nChar=='D')
{
x++;
//MessageBox("right");
}
if(nChar=='W')
{
y--;
//MessageBox("up");
}
if(nChar=='S')
{
y++;
//MessageBox("down");
}
Invalidate(TRUE);
CFrameWnd::OnKeyDown(nChar, nRepCnt, nFlags);
}
int CCanvasForm::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
SetTimer(1,100,NULL);
return 0;
}
void CCanvasForm::OnTimer(UINT nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(flag)
x=x-5;
else
x=x+5;
if(x<=0)
flag=FALSE;
if(x>0&&flag==FALSE)
flag=TRUE;
Invalidate(TRUE);
CFrameWnd::OnTimer(nIDEvent);
}