📄 moon.cpp
字号:
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
// 嗨!我是王晓钰。
// 我的E-mail是:XiaoYu.wang@263.net 有问题可以发邮件或在网站上留言
// 欢迎你访问我的个人主页:“笑语小园”http://xiaoyu.2699.comn
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
// 二○○○年七月
// 让我们继续看我的程序。
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
#include <afxwin.h>
#include "resource.h"
// 框架窗口类
class CMyWnd: public CFrameWnd
{
CRect m_rectCake;
public:
CBitmap m_Bitmap[8];
int m_nflag;
CMyWnd();
BOOL PreCreateWindow(CREATESTRUCT &cs);
protected:
afx_msg void OnPaint();
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnDestroy();
afx_msg void OnStart();
afx_msg void OnEnd();
afx_msg void OnExit();
DECLARE_MESSAGE_MAP()
private:
int m_nWidth;
int m_nHeight;
//CRect m_rectMoon;
int m_nindex;
};
// 消息映射
BEGIN_MESSAGE_MAP(CMyWnd,CFrameWnd)
ON_WM_PAINT()
ON_WM_TIMER()
ON_WM_DESTROY()
ON_COMMAND(ID_START,OnStart)
ON_COMMAND(ID_END,OnEnd)
ON_COMMAND(ID_EXIT,OnExit)
END_MESSAGE_MAP()
// 框架窗口类的成员函数
BOOL CMyWnd::PreCreateWindow(CREATESTRUCT &cs)
{
cs.hMenu=LoadMenu(NULL,MAKEINTRESOURCE(IDR_MAINMENU));
return CFrameWnd::PreCreateWindow(cs);
}
void CMyWnd::OnExit()
{
}
CMyWnd::CMyWnd()
{
m_rectCake = CRect(100,80,140,120);
m_nflag=1;
m_nindex=0;
m_Bitmap[0].LoadBitmap(IDB_BITMAP1);
m_Bitmap[1].LoadBitmap(IDB_BITMAP2);
m_Bitmap[2].LoadBitmap(IDB_BITMAP3);
m_Bitmap[3].LoadBitmap(IDB_BITMAP4);
m_Bitmap[4].LoadBitmap(IDB_BITMAP5);
m_Bitmap[5].LoadBitmap(IDB_BITMAP6);
m_Bitmap[6].LoadBitmap(IDB_BITMAP7);
m_Bitmap[7].LoadBitmap(IDB_BITMAP8);
BITMAP BM;
m_Bitmap[0].GetBitmap(&BM);
m_nWidth=BM.bmWidth;
m_nHeight=BM.bmHeight;
}
void CMyWnd::OnPaint()
{
CPaintDC dc(this);
/*
CRect rectClient;
GetClientRect(&rectClient);
dc.SelectStockObject(DKGRAY_BRUSH);
dc.Rectangle(&rectClient);
*/
CDC MemDC;
MemDC.CreateCompatibleDC(NULL);
switch(this->m_nindex)
{
case 0:
MemDC.SelectObject(&m_Bitmap[0]);
break;
case 1:
MemDC.SelectObject(&m_Bitmap[1]);
break;
case 2:
MemDC.SelectObject(&m_Bitmap[2]);
break;
case 3:
MemDC.SelectObject(&m_Bitmap[3]);
break;
case 4:
MemDC.SelectObject(&m_Bitmap[4]);
break;
case 5:
MemDC.SelectObject(&m_Bitmap[5]);
break;
case 6:
MemDC.SelectObject(&m_Bitmap[6]);
break;
case 7:
MemDC.SelectObject(&m_Bitmap[7]);
}
dc.BitBlt(m_rectCake.left,m_rectCake.top,m_nWidth,m_nHeight,&MemDC,0,0,SRCAND);
}
void CMyWnd::OnTimer(UINT nIDEvent) // 定时更新数据
{
CRect rectClient;
GetClientRect(&rectClient);
InvalidateRect(m_rectCake);
switch(this->m_nflag)
{
case 0:
this->m_rectCake+=CPoint(-10,-10);
if(this->m_rectCake.left<=0)m_nflag=1;
if(this->m_rectCake.top<=0)m_nflag=3;
break;
case 1:
this->m_rectCake+=CPoint(10,-10);
if(this->m_rectCake.right>=rectClient.right)m_nflag=0;
if(this->m_rectCake.top<=0)m_nflag=2;
break;
case 2:
this->m_rectCake+=CPoint(10,10);
if(this->m_rectCake.right>=rectClient.right)m_nflag=3;
if(this->m_rectCake.bottom>=rectClient.bottom)m_nflag=1;
break;
case 3:
this->m_rectCake+=CPoint(-10,10);
if(this->m_rectCake.left<=0)m_nflag=2;
if(this->m_rectCake.bottom>=rectClient.bottom)m_nflag=0;
break;
}
m_nindex++;
if(m_nindex==8)m_nindex=0;
TRACE("\nm_nindex=%d",this->m_nindex);
InvalidateRect(m_rectCake);
}
void CMyWnd::OnDestroy() // 解除定时器
{
//KillTimer(1);
}
void CMyWnd::OnStart()
{
this->SetTimer(1, 50, NULL); // 设置定时器
}
void CMyWnd::OnEnd()
{
KillTimer(1);
}
// 应用程序类
class CMyTimerApp: public CWinApp
{
public:
BOOL InitInstance();
};
// 应用窗口类的成员函数
BOOL CMyTimerApp::InitInstance()
{
CMyWnd *pFrame = new CMyWnd;
pFrame->Create(0,_T("滚皮球"));
pFrame->ShowWindow(m_nCmdShow);
pFrame->UpdateWindow();
//pFrame->SetTimer(1, 100, NULL); // 设置定时器
this->m_pMainWnd = pFrame;
return TRUE;
}
CMyTimerApp ThisApp;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -