win32强化练习3.3_定时器与弹球
来源:互联网 发布:网络编程代码 编辑:程序博客网 时间:2024/06/05 17:47
已经简单练习了键盘和鼠标,接下来是定时器消息:
所谓定时器就是在某一个窗口设置一个或多个闹钟,在闹钟响的时候做指定的事情。
启动定时器:(如果第四项是NULL,则找WM_TIMER消息处理)
定时器句柄/定时器ID/时间间隔/定时器处理函数指针
关闭定时器:
定时器句柄/定时器ID
这节来做一个会在窗口中来回弹的球:
1. 球的位置:定义全局变量gx,gy;
2. 球的方向和速度:定义全局变量vx, vy;符号代表正向和负向,数值代表每次移动量即速度;
3. 处理WM_PAINT消息,绘制一个圆;
4. 在WM_CREATE中开启定时器,10ms间隔;
5. 在WM_TIMER中,首先获取当前客户区的矩形,判断是否撞到边框;
5. 球的位置+方向和速度,刷新绘图
int gx = 50,gy = 50;int vx = 1,vy = 1; //x和y方向上的速度(可正可负)
case WM_PAINT:{PAINTSTRUCT ps;HDC hdc = BeginPaint(hwnd, &ps);Ellipse(hdc, gx, gy, gx+50, gy+50);EndPaint(hwnd, &ps);}
case WM_CREATE:{SetTimer(hwnd, 10, 10, NULL);}break;
case WM_TIMER:{RECT rt;GetClientRect(hwnd, &rt);if (gx <= 0 || gx>= rt.right - 50) vx *= -1; //转向 if (gy <= 0 || gy>= rt.bottom - 50) vy *= -1;gx += vx;gy += vy;InvalidateRect(hwnd, NULL, TRUE);}break;这个练习在判断方向和速度上如果没有清晰的概念很容易陷入混乱中,但如果把它和物理量的速度相结合就方便很多!
0 0
- win32强化练习3.3_定时器与弹球
- win32强化练习3.5_弹球游戏(键盘+定时器)
- win32强化练习4.4_状态栏、坐标与时钟
- win32强化练习3.6_贪吃蛇半部
- win32强化练习3.7_拖动窗口
- win32强化练习4.0_资源相关练习简介
- win32强化练习4.2_菜单勾选与图标变换
- win32强化练习4.1_更改别人的菜单
- win32强化练习4.5_标准工具栏的使用
- win32强化练习4.7_快速建立TreeView
- win32强化练习4.9_快速建立ListView
- win32强化练习5.1_动画秒表(位图初步)
- win32强化练习4.3_粗糙的SPY获取别人的窗口
- win32强化练习4.6_自定义图标或图像的工具栏
- win32强化练习4.8_TreeView快速应用(处理消息)
- Win32下定时器与多线程
- 查询SQL强化练习
- 独立按键与定时器的使用练习
- linux进程改名
- JSP运行原理及相关知识
- Windows/Linux 打Log
- Gradle for Android学习笔记(一)
- Angularjs+node+Mysql实现地图上的多点标注
- win32强化练习3.3_定时器与弹球
- 使用nginx做前端服务器可以设置类似的静态文件客户端缓存
- js 学习记录
- CMSIS-RTOS 信号量的使用Using Semaphores
- 第八章C#语言数据库技术基础
- 初识C# 牛刀小试
- Hibernate 菜鸟教程 13 继承 鉴别器与内连接相结合
- PHPCMS开启伪静态和织梦开启伪静态的优缺点比较
- ssh无密码登录最简单的方法