带爆炸效果的扫雷(源码4)
来源:互联网 发布:淘宝上的碳纤维方向盘 编辑:程序博客网 时间:2024/04/29 15:37
计时器:由于需要暂停/恢复计时、绘图,所以专门作了一个类。 其中用了三个状态#define T_CLOSE 0
#define T_START 1
#define T_PAUSE 2
应该可以优化。
附 mytimer.h mytimer.cpp
//定时器
#ifndef __MYTIMER_H
#define __MYTIMER_H
#define T_CLOSE 0
#define T_START 1
#define T_PAUSE 2
class MYTIMER
...{
public:
MYTIMER();
~MYTIMER();
void StartTimer();
void PauseTimer();
void StopTimer();
void GoOnTimer();
int GetTimeLong();
void TimerInc();
void Clear();
void Draw();
void LoadPic();
void SetHINSTANCE(HINSTANCE h);
void SetHWND(HWND h);
void SetHDC(HDC h);
void SetPos(int x,int y);
private:
int time_long;
int iState;
POINT pos;
HDC hdcmem;
HDC hdc;
HWND hwnd;
HINSTANCE hinstance;
HBITMAP hbm_number;
};
#endif
#ifndef __MYTIMER_H
#define __MYTIMER_H
#define T_CLOSE 0
#define T_START 1
#define T_PAUSE 2
class MYTIMER
...{
public:
MYTIMER();
~MYTIMER();
void StartTimer();
void PauseTimer();
void StopTimer();
void GoOnTimer();
int GetTimeLong();
void TimerInc();
void Clear();
void Draw();
void LoadPic();
void SetHINSTANCE(HINSTANCE h);
void SetHWND(HWND h);
void SetHDC(HDC h);
void SetPos(int x,int y);
private:
int time_long;
int iState;
POINT pos;
HDC hdcmem;
HDC hdc;
HWND hwnd;
HINSTANCE hinstance;
HBITMAP hbm_number;
};
#endif
mytimer.cpp
#include "stdafx.h"
#include "resource.h"
#include "mytimer.h"
void MYTIMER::StartTimer()
...{
if(T_START==iState)
...{
return;
}
time_long=0;
iState=T_START;
SetTimer(hwnd,1,1000,NULL);
// MessageBox(hwnd,"start timer","timer",MB_OK);
}
void MYTIMER::PauseTimer()
...{
if(T_START == iState)
...{
KillTimer(hwnd,1);
iState=T_PAUSE;
}
}
void MYTIMER::StopTimer()
...{
KillTimer(hwnd,1);
iState=T_CLOSE;
}
void MYTIMER::Clear()
...{
time_long=0;
}
int MYTIMER::GetTimeLong()
...{
return time_long;
}
void MYTIMER::GoOnTimer()
...{
if(T_PAUSE == iState)
...{
iState=T_START;
SetTimer(hwnd,1,1000,NULL);
}
// MessageBox(hwnd,"Timer GO ON","timer",MB_OK);
}
void MYTIMER::TimerInc()
...{
if(time_long<=999)
time_long++;
}
void MYTIMER::SetHWND(HWND h)
...{
hwnd=h;
}
void MYTIMER::SetHINSTANCE(HINSTANCE h)
...{
hinstance=h;
}
void MYTIMER::LoadPic(void)
...{
if(!hinstance)
...{
MessageBox(hwnd,"Timer:Load Picture:instance is null","bitmap",MB_OK);
}
hbm_number=LoadBitmap(hinstance,MAKEINTRESOURCE(IDB_TIMER_NUMBER));
if(!hbm_number)
...{
MessageBox(hwnd,"Timer:Load Picture:bitmap handle is null","bitmap",MB_OK);
}
hdc=GetDC(hwnd);
hdcmem=CreateCompatibleDC(hdc);
if(!hdcmem)
...{
MessageBox(hwnd,"Timer:Load Picture:hdcmem is null","bitmap",MB_OK);
}
ReleaseDC(hwnd,hdc);
}
void MYTIMER::SetHDC(HDC h)
...{
hdc=h;
}
void MYTIMER::Draw()
...{
int i=0;
//hdc=GetDC(hwnd);
if(!hdc)
...{
MessageBox(hwnd,"Timer:Draw:DC is null","bitmap",MB_OK);
}
SelectObject(hdcmem,hbm_number);
TextOut(hdc,pos.x,pos.y,"TIME:",5);
i=time_long/100;
i%=10;
BitBlt(hdc,pos.x,pos.y+16,16,32,hdcmem,i*16,0,SRCCOPY);
i=time_long/10;
i%=10;
BitBlt(hdc,pos.x+16,pos.y+16,16,32,hdcmem,i*16,0,SRCCOPY);
i=time_long%10;
BitBlt(hdc,pos.x+32,pos.y+16,16,32,hdcmem,i*16,0,SRCCOPY);
}
MYTIMER::MYTIMER()
...{
hwnd=0;
time_long=0;
iState=T_CLOSE;
}
MYTIMER::~MYTIMER()
...{
DeleteObject(hbm_number);
hwnd=0;
time_long=0;
if(iState!=T_CLOSE)
...{
KillTimer(hwnd,1);
}
}
void MYTIMER::SetPos(int x,int y)
...{
pos.x=x;
pos.y=y;
}
- 带爆炸效果的扫雷(源码4)
- 带爆炸效果的扫雷(源码1)
- 带爆炸效果的扫雷(源码2)
- 带爆炸效果的扫雷(源码3)
- 带爆炸效果的扫雷(源码5)
- 带爆炸效果的扫雷(后记)
- 爆炸的效果(IOS)
- 物体爆炸效果的实现
- view爆炸的烟花效果
- 实现爆炸后的振动效果
- Unity3D 实现爆炸效果的函数
- unity 球形范围的爆炸效果
- 扫雷 源码
- 扫雷-源码
- android Titanic (带波纹效果的TextView)源码分析(带源码)
- 制作爆炸效果
- 图片爆炸效果
- PS制作爆炸效果
- SQL语句学习
- 认识Web.config文件
- 检测U盘插入
- 集成的故事 - 面向服务的世界
- 在Dialog中使用Menu和Toolbar
- 带爆炸效果的扫雷(源码4)
- VendorCache 类
- Window 消息大全
- learning jsp for the 2nd time
- 马的棋盘遍历的一个近似算法
- 数通产品线C语言编程基础题库
- PL/SQL表(oracle内存表)---table()函数用法
- 字节对齐和C/C++函数调用方式学习总结
- bat命令大全