【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱: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中的键盘输入和鼠标消息)相关推荐

  1. Python:监控键盘输入、鼠标操作,并将捕获到的信息记录到文件中

    Python:监控键盘输入.鼠标操作,并将捕获到的信息记录到文件中 - Socrates的专栏 - 博客频道 - CSDN.NET Python:监控键盘输入.鼠标操作,并将捕获到的信息记录到文件中 ...

  2. Pygame键盘输入和鼠标操作

    ''' ================Pygame模拟键盘输入和鼠标操作---------------------------------------- 姓名 : 昔年 时间 : 2018/10/9 ...

  3. java怎么设置多个输入_Java中从键盘输入多个整数的方法

    Java中从键盘输入多个整数的方法 发布于 2020-4-2| 复制链接 分享一篇关于Java中从键盘输入多个整数的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小妖过来看看吧 例题:求数列的 ...

  4. java获取键盘整数_Java中从键盘输入多个整数的方法

    例题:求数列的和 分别输入两个整数n,m,中间以空格隔断,n 为数列第一项,后面各项均为前一项的开根号,求前m项的和. 第一种从键盘输入并读取的方式:sc.hasNextInt() 函数和sc.nex ...

  5. 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 ...

  6. python输入一个三位数、输出它的逆序数值_c语言 从键盘输入一个三位数,输出该数的逆序数。c语言中从键盘输入一个三位整数...

    c语言 从键盘输入一个三位数,输出该数的逆序数. c语言中从键盘输入一个三位整数 www.zhiqu.org     时间: 2020-12-08 c语言中从键盘输入一个三位数,输出该数的逆序数,可以 ...

  7. java中从键盘输入的三种方法以及Console输入

    java中从键盘输入的三种方法: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStre ...

  8. 输入三角形的三c语言程序,请问c语言中 从键盘输入三角形的3边 调用三角形面积公式求面积 并输.,C语言编写程序,从键盘输入三角形三条边长(实数),计算并输出...

    导航:网站首页 > 请问c语言中 从键盘输入三角形的3边 调用三角形面积公式求面积 并输.,C语言编写程序,从键盘输入三角形三条边长(实数),计算并输出 请问c语言中 从键盘输入三角形的3边 调 ...

  9. 【Win32 API学习】模拟键盘输入和鼠标输入

    在Windows大行其道的今天,windows界面程序受到广大用户的欢迎.对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制.有时,对于繁杂的,或重复性的输入操作,我们能否通过编制程序来代替手工输 ...

最新文章

  1. 大多数Web浏览器中都可以使用PUT,DELETE,HEAD等方法吗?
  2. c# 定位内存快速增长_c#如何避免内存分配瓶颈以提高多线程性能
  3. java框架ssm整合_SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)
  4. 从零开始编写自己的C#框架(25)——网站部署
  5. 2d shader unity 阴影_Unity中实现2D光照系统
  6. 《LoadRunner 没有告诉你的》之四——理解性能
  7. windows下升级nodenpm
  8. matlab将常值函数转换为变量,MATLAB与科学计算期末复习题题库15.11.12
  9. 前端必须要有的学习能力
  10. C++ STL之vector详解
  11. Activity中通过标签获取当前Fragment
  12. 飞行堡垒fx80g拆卸电源_集成度较高 华硕飞行堡垒FX50拆机解析
  13. 中国石油大学《工程概预算与招投标》第三阶段在线作业
  14. 转:MOSS 中的计算公式
  15. 速途在线沙龙11期:王通夫唯首次聚首共话SEO
  16. 网页flash遮挡问题
  17. 华硕服务器如何重装系统,讲解华硕重装系统教程
  18. 苹果旧版app_曾经被吹爆的苹果,这次彻底跌下神坛
  19. Python干旱指数库climate_indices学习
  20. IOI2018退役记 + NOIP2018游记

热门文章

  1. LNMP Keepalived Haproxy 笔记
  2. 在View页面,使用@if(){ }输出判断正确的内容
  3. mysql基于mysql-proxy和amoeba的读写分离以及tcpdump+wireshark工具验证(上)
  4. 表生成器@TableGenerator
  5. [文摘20110527] 小故事 : 大有 和 天成 都是一辈子
  6. 技术改变生活,统一通信走向深度融合
  7. Linux 下五个顶级的开源命令行 Shell
  8. ECharts插件的使用
  9. url里面的参数不能带特殊字符
  10. [转]使用xcode4 workspace 多个project协同工作