随想录(easyx中的键盘输入和鼠标消息)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
我曾经写过一篇关于easyx的blog,地址在这。easyx是基于win32 api最简单的图形库。它按照graphic头文件给大家提供简洁的API接口,使用起来非常方便。基本上,只需要几行代码,就可以画出一个图形,比如这样,
int main()
{initgraph(600, 800);circle(100, 100, 100);_getch();closegraph();
}
当然,今天我们文章的目的不是输出一个图形,而是怎么控制图形。比如,如果用键盘控制图形。目前在easyx上面有_kbhit()和_getch()两个函数,前者是非阻塞函数,通知是否有key按下,后者是阻塞函数,通知按下的是什么字符。比如,我们可以这么操作,
while (!_kbhit());val = _getch();i = 0;j = 0;if ('a' == val)i = -10;else if ('w' == val)j = -10;else if ('d' == val)i = 10;else if ('s' == val)j = 10;
除了键盘输入,easyx还支持鼠标输入,比如我们可以从GetMouseMsg函数获取鼠标信息,这是一个阻塞函数,
m = GetMouseMsg();i = 0;j = 0;switch (m.uMsg){case WM_MOUSEMOVE:i = 10;break;case WM_LBUTTONDBLCLK:case WM_LBUTTONDOWN:case WM_LBUTTONUP:i = -10;break;case WM_RBUTTONDBLCLK:case WM_RBUTTONDOWN:case WM_RBUTTONUP:j = 10;break;case WM_MOUSEWHEEL:j = -10;break;default:break;}
鼠标的详细信息也很多,大家可以参考这个数据结构,
struct MOUSEMSG
{UINT uMsg; // 当前鼠标消息bool mkCtrl; // Ctrl 键是否按下bool mkShift; // Shift 键是否按下bool mkLButton; // 鼠标左键是否按下bool mkMButton; // 鼠标中键是否按下bool mkRButton; // 鼠标右键是否按下short x; // 当前鼠标 x 坐标short y; // 当前鼠标 y 坐标short wheel; // 鼠标滚轮滚动值 (120 的倍数)
};
为了保证圆心不在窗口之外,还必须给x、y加上一些限制条件,即x和y都不能小于100、大于500,
cleardevice();x = x + i;y = y + j;if (x < 100) x = 100;if (x > 500) x = 500;if (y < 100) y = 100;if (y > 500) y = 500;circle(x, y, 100);
上面的例子只是一个简单的实例,想偷懒的朋友可以获取参考这个完整的代码,
int main()
{initgraph(600, 800);circle(100, 100, 100);int x = 100;int y = 100;int i = 0;int j = 0;char val;MOUSEMSG m;while (1){#if 0while (!_kbhit());val = _getch();i = 0;j = 0;if ('a' == val)i = -10;else if ('w' == val)j = -10;else if ('d' == val)i = 10;else if ('s' == val)j = 10;#elsem = GetMouseMsg();i = 0;j = 0;switch (m.uMsg){case WM_MOUSEMOVE:i = 10;break;case WM_LBUTTONDBLCLK:case WM_LBUTTONDOWN:case WM_LBUTTONUP:i = -10;break;case WM_RBUTTONDBLCLK:case WM_RBUTTONDOWN:case WM_RBUTTONUP:j = 10;break;case WM_MOUSEWHEEL:j = -10;break;default:break;}#endifcleardevice();x = x + i;y = y + j;if (x < 100) x = 100;if (x > 500) x = 500;if (y < 100) y = 100;if (y > 500) y = 500;circle(x, y, 100);}_getch();closegraph();
}
今天的例子比较简单,其主要目的不在于这几行代码,而是希望可以帮助大家建立学习图形的兴趣,写出更多好玩、实用的应用。从学习中找到乐趣、取得进步。
随想录(easyx中的键盘输入和鼠标消息)相关推荐
- Python:监控键盘输入、鼠标操作,并将捕获到的信息记录到文件中
Python:监控键盘输入.鼠标操作,并将捕获到的信息记录到文件中 - Socrates的专栏 - 博客频道 - CSDN.NET Python:监控键盘输入.鼠标操作,并将捕获到的信息记录到文件中 ...
- Pygame键盘输入和鼠标操作
''' ================Pygame模拟键盘输入和鼠标操作---------------------------------------- 姓名 : 昔年 时间 : 2018/10/9 ...
- java怎么设置多个输入_Java中从键盘输入多个整数的方法
Java中从键盘输入多个整数的方法 发布于 2020-4-2| 复制链接 分享一篇关于Java中从键盘输入多个整数的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小妖过来看看吧 例题:求数列的 ...
- java获取键盘整数_Java中从键盘输入多个整数的方法
例题:求数列的和 分别输入两个整数n,m,中间以空格隔断,n 为数列第一项,后面各项均为前一项的开根号,求前m项的和. 第一种从键盘输入并读取的方式:sc.hasNextInt() 函数和sc.nex ...
- c语言中fun和main,功能:编写函数fun求1!+2!+3!+ …… +n!的和,在main函 数中由键盘输入n值,并输出运算结果。请编写fun 函数...
功能:编写函数fun求1!+2!+3!+ -- +n!的和,在main函 数中由键盘输入n值,并输出运算结果.请编写fun 函数0 wjkfz2013.04.07浏览271次分享举报 功能:编写函数f ...
- python输入一个三位数、输出它的逆序数值_c语言 从键盘输入一个三位数,输出该数的逆序数。c语言中从键盘输入一个三位整数...
c语言 从键盘输入一个三位数,输出该数的逆序数. c语言中从键盘输入一个三位整数 www.zhiqu.org 时间: 2020-12-08 c语言中从键盘输入一个三位数,输出该数的逆序数,可以 ...
- java中从键盘输入的三种方法以及Console输入
java中从键盘输入的三种方法: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStre ...
- 输入三角形的三c语言程序,请问c语言中 从键盘输入三角形的3边 调用三角形面积公式求面积 并输.,C语言编写程序,从键盘输入三角形三条边长(实数),计算并输出...
导航:网站首页 > 请问c语言中 从键盘输入三角形的3边 调用三角形面积公式求面积 并输.,C语言编写程序,从键盘输入三角形三条边长(实数),计算并输出 请问c语言中 从键盘输入三角形的3边 调 ...
- 【Win32 API学习】模拟键盘输入和鼠标输入
在Windows大行其道的今天,windows界面程序受到广大用户的欢迎.对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制.有时,对于繁杂的,或重复性的输入操作,我们能否通过编制程序来代替手工输 ...
最新文章
- 大多数Web浏览器中都可以使用PUT,DELETE,HEAD等方法吗?
- c# 定位内存快速增长_c#如何避免内存分配瓶颈以提高多线程性能
- java框架ssm整合_SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)
- 从零开始编写自己的C#框架(25)——网站部署
- 2d shader unity 阴影_Unity中实现2D光照系统
- 《LoadRunner 没有告诉你的》之四——理解性能
- windows下升级nodenpm
- matlab将常值函数转换为变量,MATLAB与科学计算期末复习题题库15.11.12
- 前端必须要有的学习能力
- C++ STL之vector详解
- Activity中通过标签获取当前Fragment
- 飞行堡垒fx80g拆卸电源_集成度较高 华硕飞行堡垒FX50拆机解析
- 中国石油大学《工程概预算与招投标》第三阶段在线作业
- 转:MOSS 中的计算公式
- 速途在线沙龙11期:王通夫唯首次聚首共话SEO
- 网页flash遮挡问题
- 华硕服务器如何重装系统,讲解华硕重装系统教程
- 苹果旧版app_曾经被吹爆的苹果,这次彻底跌下神坛
- Python干旱指数库climate_indices学习
- IOI2018退役记 + NOIP2018游记
热门文章
- LNMP Keepalived Haproxy 笔记
- 在View页面,使用@if(){ }输出判断正确的内容
- mysql基于mysql-proxy和amoeba的读写分离以及tcpdump+wireshark工具验证(上)
- 表生成器@TableGenerator
- [文摘20110527] 小故事 : 大有 和 天成 都是一辈子
- 技术改变生活,统一通信走向深度融合
- Linux 下五个顶级的开源命令行 Shell
- ECharts插件的使用
- url里面的参数不能带特殊字符
- [转]使用xcode4 workspace 多个project协同工作