资源简介
移动的球体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语言 机房收费管理系统
评论
共有 条评论