// MyTextView.cpp : implementation of the CMyTextView class
//
#include "stdafx.h"
#include "MyText.h"
#include "MyTextDoc.h"
#include "MyTextView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyTextView
IMPLEMENT_DYNCREATE(CMyTextView, CView)
BEGIN_MESSAGE_MAP(CMyTextView, CView)
//{{AFX_MSG_MAP(CMyTextView)
ON_WM_CREATE()
ON_WM_SIZE()
ON_WM_TIMER()
ON_WM_DESTROY()
ON_COMMAND(ID_TING, OnTing)
ON_COMMAND(ID_KAISHI, OnKaishi)
ON_WM_LBUTTONDOWN()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONUP()
ON_COMMAND(ID_REN, OnRen)
ON_UPDATE_COMMAND_UI(ID_REN, OnUpdateRen)
ON_COMMAND(ID_NVREN, OnNvren)
ON_UPDATE_COMMAND_UI(ID_NVREN, OnUpdateNvren)
ON_UPDATE_COMMAND_UI(ID_TING, OnUpdateTing)
ON_UPDATE_COMMAND_UI(ID_KAISHI, OnUpdateKaishi)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyTextView construction/destruction
CMyTextView::CMyTextView()
{
// TODO: add construction code here
fag=false; //左键是否按下的标志
fag3=true; //男人按键可以按的标志
fag2=false; //是否进行拖动的标志
fag4=true; //是否是女人的标志
fag5=true; //女人按键是否可以按的标志
p=q=0;
}
CMyTextView::~CMyTextView()
{
}
BOOL CMyTextView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMyTextView drawing
void CMyTextView::OnDraw(CDC* pDC)
{
CMyTextDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
SetTimer(3,150,NULL);
}
/////////////////////////////////////////////////////////////////////////////
// CMyTextView printing
BOOL CMyTextView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CMyTextView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CMyTextView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CMyTextView diagnostics
#ifdef _DEBUG
void CMyTextView::AssertValid() const
{
CView::AssertValid();
}
void CMyTextView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CMyTextDoc* CMyTextView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyTextDoc)));
return (CMyTextDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMyTextView message handlers
int CMyTextView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
for (int i=0;i<FRAME_NUM;++i) //装载男图片
{
m_Bitmap[i].LoadBitmap(IDB_BITMAP1+i);
}
for (int j=8;j<16;++j) //装载女图片
{
m_Bitmap[j].LoadBitmap(IDB_BITMAP1+j);
}
BITMAP bm;
m_Bitmap[0].GetBitmap(&bm);
m_nFrameWidth=bm.bmWidth; //图片的宽度
m_nFrameHeight=bm.bmHeight; //图片的高度
m_nDetaX=m_nFrameWidth/4; //初始化移动的增量
m_nDetaY=m_nFrameHeight/4; //初始化移动的增量
m_ptCurPos=CPoint(0,0); //初始化开始位置
m_nCurFrameNo=0; //男图片的第一张是从0开始
m_nCurFrameNo1=8; //女图片的第一张是从8开始
return 0;
}
void CMyTextView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
m_ptCurPos=CPoint(0,0);
m_nCurFrameNo=0;
m_nCurFrameNo1=8;
}
void CMyTextView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(nIDEvent==0x100) //男没有被拖动的时候定时器
{
ClearLastFrame(m_ptCurPos); //清除前一图图片
CalcNewPos(m_ptCurPos); //算出新的位置
DisplayFrame(m_ptCurPos,m_nCurFrameNo); //显示图片
CalcNewFrameNo(m_nCurFrameNo); //算出下一幅图片的数
}
if(nIDEvent==0x10) //男被拖动的时候定时器
{
ClearLastFrame(m_ptCurPos1); //清除前一图图片
CalcNewPos(m_ptCurPos1); //算出新的位置
DisplayFrame(m_ptCurPos1,m_nCurFrameNo); //显示图片
CalcNewFrameNo(m_nCurFrameNo);//算出下一幅图片的数
}
if(nIDEvent==1) //女没有被拖动的时候定时器
{
ClearLastFrame(m_ptCurPos); //清除前一图图片
CalcNewPos(m_ptCurPos); //算出新的位置
DisplayFrame(m_ptCurPos,m_nCurFrameNo1); //显示图片
CalcNewFrameNo1(m_nCurFrameNo1); //算出下一幅图片的数
}
if(nIDEvent==2) //女被拖动的时候定时器
{
ClearLastFrame(m_ptCurPos1); //清除前一图图片
CalcNewPos(m_ptCurPos1); //算出新的位置
DisplayFrame(m_ptCurPos1,m_nCurFrameNo1); //显示图片
CalcNewFrameNo1(m_nCurFrameNo1); //算出下一幅图片的数
}
if(nIDEvent==3)
{
LOGFONT lf;
CFont *poldFont;
CFont oldFont;
CDC *pDC=GetDC();
poldFont=pDC->SelectObject(&oldFont);
CFont font;
lf.lfHeight=20;
lf.lfEscapement=0;
lf.lfWidth=0;
lf.lfOrientation=0;
lf.lfWeight=FW_NORMAL;
lf.lfItalic=FALSE;
lf.lfStrikeOut=FALSE;
lf.lfUnderline=FALSE;
lf.lfCharSet=GB2312_CHARSET;
lf.lfOutPrecision=OUT_STROKE_PRECIS;
lf.lfClipPrecision=CLIP_STROKE_PRECIS;
lf.lfQuality=DRAFT_QUALITY;
lf.lfPitchAndFamily=VARIABLE_PITCH|FF_MODERN;
strcpy(lf.lfFaceName,"黑体");
font.CreateFontIndirect(&lf);
pDC->SetTextColor(RGB(rand()%256,rand()%256,rand()%256));
pDC->SelectObject(&font);
pDC->TextOut(200,0,"你好,欢迎使用动画文档");
}
CView::OnTimer(nIDEvent);
}
void CMyTextView::ClearLastFrame(CPoint ptCurPos) //清除前一张图片的函数
{
CRect rc(ptCurPos.x,ptCurPos.y,ptCurPos.x+m_nFrameWidth,ptCurPos.y+m_nFrameHeight);
InvalidateRect(&rc);
UpdateWindow();
}
void CMyTextView::CalcNewPos(CPoint &ptCurPos) //计算新位置的函数
{
CRect rc;
GetClientRect(&rc);
if(ptCurPos.x+m_nFrameWidth+m_nDetaX>=rc.right||ptCurPos.x+m_nDetaX<=rc.left) //当超出水平文档的宽度时,使图片以反方向移动
{
m_nDetaX=-m_nDetaX;
}
if(ptCurPos.y+m_nFrameHeight+m_nDetaY>=rc.bottom||ptCurPos.y+m_nDetaY<=rc.top) //当超出垂直文档高度时,使图片以方向移动
{
m_nDetaY=-m_nDetaY;
}
ptCurPos.x+=m_nDetaX; //得到新的位置
ptCurPos.y+=m_nDetaY;
}
void CMyTextView::CalcNewFrameNo(int &nCurFrameNo) //计算在新位置的男图片的数
{
nCurFrameNo++;
if(nCurFrameNo>=8)nCurFrameNo=0;
}
void CMyTextView::CalcNewFrameNo1(int &nCurFrameNo) //计算在新位置的女图片的数
{
nCurFrameNo++;
if(nCurFrameNo>=16)nCurFrameNo=8;
}
BOOL CMyTextView::DisplayFrame(CPoint ptPos,int nFrameNo) //显示图片的函数
{
CClientDC dc(this);
CDC MemDC;
if(!MemDC.CreateCompatibleDC(&dc))return FALSE;
CBitmap *pOldBitmap=(CBitmap *)MemDC.SelectObject(&m_Bitmap[nFrameNo]);
dc.BitBlt(ptPos.x,ptPos.y,m_nFrameWidth,m_nFrameHeight,&MemDC,0,0,SRCCOPY);
MemDC.SelectObject(pOldBitmap);
return TRUE;
}
void CMyTextView::OnDestroy()
{
CView::OnDestroy();
// TODO: Add your message handler code here
KillTimer(0x100);
KillTimer(0x10);
KillTimer(1);
KillTimer(2);
KillTimer(3);
}
void CMyTextView::OnTing()
{
// TODO: Add your command handler code here
KillTimer(0x100);
KillTimer(0x10);
KillTimer(1);
KillTimer(2);
q=1;
p=0;
}
void CMyTextView::OnKaishi()
{
// TODO: Add your command handler code here
if(fag1)
{
if(!fag4) //屏幕是男的在运动
{
if(fag2)
{
SetTimer(0x10,250,NULL);
}
else
{ SetTimer(0x100,250,NULL);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
mfc制作的小动画,对初学者有帮助
共54个文件
bmp:18个
h:6个
cpp:5个
4星 · 超过85%的资源 需积分: 10 90 下载量 178 浏览量
2009-12-25
18:48:37
上传
评论 2
收藏 1.9MB RAR 举报
温馨提示
用mfc制作的小动画,和大家分享,对初学者有帮助
资源推荐
资源详情
资源评论
收起资源包目录
mfc制作的小动画,对初学者有帮助.rar (54个子文件)
cvery.comvc236882113
MyText.opt 52KB
MyText.h 1KB
Resource.h 2KB
MyTextView.h 3KB
MyText.rc 13KB
MyTextDoc.cpp 2KB
res
walk10017.bmp 6KB
walk10014.bmp 6KB
walk10006.bmp 6KB
walk10009.bmp 6KB
walk10019.bmp 6KB
walk10002.bmp 6KB
walk10005.bmp 6KB
MyText.rc2 398B
toolbar1.bmp 718B
Toolbar.bmp 1KB
walk10003.bmp 6KB
walk10004.bmp 6KB
walk10018.bmp 6KB
walk10016.bmp 6KB
Thumbs.db 39KB
MyTextDoc.ico 1KB
walk10021.bmp 6KB
walk10015.bmp 6KB
walk10020.bmp 6KB
MyText.ico 1KB
walk10007.bmp 6KB
walk10008.bmp 6KB
MyText.aps 143KB
下载说明.htm 5KB
MyText.ncb 137KB
MyText.clw 3KB
MyText.cpp 4KB
MyText.dsw 537B
StdAfx.cpp 208B
MainFrm.cpp 3KB
MyText.plg 1KB
MainFrm.h 1KB
StdAfx.h 1KB
MyTextView.cpp 11KB
MyText.dsp 6KB
Debug
StdAfx.obj 104KB
MyTextView.obj 43KB
MyText.pch 5.42MB
MyText.ilk 337KB
vc60.idb 225KB
MyTextDoc.obj 15KB
MyText.exe 240KB
MyText.pdb 497KB
vc60.pdb 388KB
MyText.res 103KB
MainFrm.obj 21KB
MyText.obj 23KB
MyTextDoc.h 1KB
共 54 条
- 1
资源评论
- 水月云天-2015-12-09不错,很实用
- lele2945477372013-03-13适合新手。!感谢分享!
- langhen2582013-12-03不知道怎么,程序在VC2010上运行不了。。。
- 丰城朗月2012-11-03勉强凑合啊
- 剑指天大2013-09-16只能说适合略懂的人
biaolovechen
- 粉丝: 14
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功