資源簡介
移動的球體MFC制作

代碼片段和文件信息
//?AssistantWnd.cpp?:?implementation?file
//
#include?“stdafx.h“
#include?“C811.h“
#include?“AssistantWnd.h“
#ifdef?_DEBUG
#define?new?DEBUG_NEW
#undef?THIS_FILE
static?char?THIS_FILE[]?=?__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//?CAssistantWnd
CAssistantWnd::CAssistantWnd():m_sizeRadius(2020)m_sizeMove(2020)
{
m_clrBall=RGB(25500);
m_sizeTotal.cx?=?m_sizeRadius.cx*4?+?m_sizeMove.cx;
m_sizeTotal.cy?=?m_sizeRadius.cy*4?+?m_sizeMove.cy;
}
CAssistantWnd::CAssistantWnd(CSize?szBallRadius?CSize?szBallMove?COLORREF?clrBall)
{
m_sizeRadius=szBallRadius;
m_sizeMove=szBallMove;
m_clrBall=clrBall;
m_sizeTotal.cx?=?m_sizeRadius.cx*4?+?m_sizeMove.cx;
m_sizeTotal.cy?=?m_sizeRadius.cy*4?+?m_sizeMove.cy;
}
CAssistantWnd::~CAssistantWnd()
{
}
BEGIN_MESSAGE_MAP(CAssistantWnd?CWnd)
//{{AFX_MSG_MAP(CAssistantWnd)
ON_WM_TIMER()
ON_WM_DESTROY()
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//?CAssistantWnd?message?handlers
void?CAssistantWnd::OnTimer(UINT?nIDEvent)?
{
if?(m_bmBall.GetSafeHandle()==?NULL)
return;?????
CRect rcInnerBorder;
GetClientRect(&rcInnerBorder);
static CPoint?ptLocation(?rcInnerBorder.left-m_sizeTotal.cx/2-2 //當前移動位置
rcInnerBorder.top-m_sizeTotal.cy/2-2);
static?int?nStep=0; //標識當前的移動方向
static?CSize?szMoving(m_sizeMove.cx0); //當前的位移變化
CClientDC?dc(this);
CBitmap*?pbmOld?=?NULL;
CDC?dcMem;
dcMem.CreateCompatibleDC(&dc);
pbmOld?=?dcMem.Selectobject(&m_bmBall);
dc.BitBlt(ptLocation.x?-?m_sizeTotal.cx?/?2
ptLocation.y?-?m_sizeTotal.cy?/?2
m_sizeTotal.cx?m_sizeTotal.cy
&dcMem?0?0SRCCOPY);
ptLocation?+=?szMoving;
switch(nStep)
{
case?0: //從左向右水平移動
if(ptLocation.x>rcInnerBorder.right+m_sizeTotal.cx/2)
{
szMoving.cx=0;
szMoving.cy=m_sizeMove.cy;
nStep++;
}
break;
case?1: //從上向下垂直移動
if(ptLocation.y>rcInnerBorder.bottom+m_sizeTotal.cy/2)
{
szMoving.cy=0;
szMoving.cx=-m_sizeMove.cy;
nStep++;
}
break;
case?2: //從右向左水平移動
if(ptLocation.x {
szMoving.cx=0;
szMoving.cy=-m_sizeMove.cy;
nStep++;
}
break;
case?3: //從下向上垂直移動
if(ptLocation.y {
szMoving.cy=0;
szMoving.cx=m_sizeMove.cy;
nStep=0;
}
break;
}
dcMem.Selectobject(pbmOld);
dcMem.DeleteDC();
CWnd::OnTimer(nIDEvent);
}
void?CAssistantWnd::PrepareBmpBall()
{
if?(m_bmBall.GetSafeHandle()!=?NULL)
m_bmBall.Deleteobject();?
CClientDC?dc(this);
CDC?dcMem;
dcMem.CreateCompatibleDC(&dc);
if(!m_bmBall.CreateCompatibleBitmap(&dc?m_sizeTotal.cx?m_sizeTotal.cy))
return;
ASSERT(m_bmBall.GetSafeHandle()!=?NULL);
CBitmap*?pOldBitmap?=?dcMem.Selectobject(&m_bmBall);
CRect?rect(0?0?m_sizeTotal.cx?m_sizeTotal.cy);
CBr
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2011-05-16?14:57??C811\
?????文件????????4064??2011-04-23?12:26??C811\AssistantWnd.cpp
?????文件????????1696??2001-11-05?08:31??C811\AssistantWnd.h
?????文件????????2166??2011-04-23?12:28??C811\BallThread.cpp
?????文件????????1393??2001-11-05?00:52??C811\BallThread.h
?????文件???????20768??2011-04-23?12:07??C811\C811.APS
?????文件????????1402??2011-05-16?14:57??C811\C811.clw
?????文件????????2038??2001-11-05?04:41??C811\C811.cpp
?????文件????????4392??2001-11-05?05:21??C811\C811.dsp
?????文件?????????531??2001-11-04?19:43??C811\C811.dsw
?????文件????????1302??2001-11-04?19:43??C811\C811.h
?????文件???????91136??2011-05-16?14:57??C811\C811.ncb
?????文件???????51712??2011-05-16?14:57??C811\C811.opt
?????文件????????1404??2011-05-16?14:57??C811\C811.plg
?????文件????????5171??2001-11-05?05:11??C811\C811.rc
?????文件????????4974??2001-11-15?20:40??C811\C811Dlg.cpp
?????文件????????1363??2001-11-05?05:10??C811\C811Dlg.h
?????文件????????3543??2001-11-04?19:43??C811\ReadMe.txt
?????目錄???????????0??2010-11-06?14:53??C811\res\
?????文件?????????728??2001-11-05?05:11??C811\Resource.h
?????文件????????1078??2001-11-04?19:43??C811\res\C811.ico
?????文件?????????396??2001-11-04?19:43??C811\res\C811.rc2
?????文件?????????206??2001-11-04?19:43??C811\StdAfx.cpp
?????文件????????1054??2001-11-04?19:43??C811\StdAfx.h
- 上一篇:MFC網絡對戰TCP五子棋
- 下一篇:C語言 機房收費管理系統
評論
共有 條評論