EASYX中的消息处理

news2024/11/25 3:07:16

eg1:点击鼠标的左键右键绘制不同的图形

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <easyx.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define PI 3.14
/*
  计算时长的步骤
  1:获取一次计数器当前的数值,记为startCount
  2:处理事务
  3:再次获取计算器当前数值,记为endCount
  4:用(endCouny - startCount)/F ,计算所耗时长,单位为秒,将秒转换为微秒的话可以乘以1000000
*/

int main() {
	initgraph(800, 600);
	setbkcolor(WHITE);
	cleardevice();
	// 创建了一个message类型的指针
	ExMessage msg;
	while (1){
		// 把获取到的鼠标消息传入message指针中
		msg = getmessage(EX_MOUSE); //仅获取鼠标消息
		// 使用点的方式进行调用
		switch (msg.message) {
			// 表示鼠标移动,如果与该项匹配就在这个位置绘制一个半径为2的黑色圆形
		   case WM_MOUSEMOVE:
			   setfillcolor(BLACK);
			   // 当前位置的x,y坐标保存在鼠标当前位置的结构体中
			   solidcircle(msg.x, msg.y, 10);
			   break;
			   // 点击鼠标左键,如果匹配在当前位置绘制红色的半径为10的圆
		   case WM_LBUTTONDOWN:
			   setfillcolor(BLUE);
			   solidcircle(msg.x, msg.y, 10);
			   break;
			   // 点击鼠标右键,如果匹配在当前位置绘制蓝色的半径为10的圆
		   case WM_RBUTTONDOWN:
			   setfillcolor(BLUE);
			   solidcircle(msg.x, msg.y, 10);
			   break;

		}
	}
	return 0;

}
     

在这里插入图片描述eg2:通过点击ctrl+鼠标左键或者是鼠标右键的方式绘制图形但是当前的一系列行为都视为鼠标的单击时间

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <easyx.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define PI 3.14
/*
  计算时长的步骤
  1:获取一次计数器当前的数值,记为startCount
  2:处理事务
  3:再次获取计算器当前数值,记为endCount
  4:用(endCouny - startCount)/F ,计算所耗时长,单位为秒,将秒转换为微秒的话可以乘以1000000
*/

int main() {
	initgraph(800, 600);
	setbkcolor(WHITE);
	cleardevice();
	// 创建了一个message类型的指针
	ExMessage msg;
	while (1){
		// 把获取到的鼠标消息传入message指针中
		msg = getmessage(EX_MOUSE); //仅获取鼠标消息
		// 使用点的方式进行调用
		switch (msg.message) {
			// 表示鼠标移动,如果与该项匹配就在这个位置绘制一个半径为2的黑色圆形
		   case WM_MOUSEMOVE:
			   setfillcolor(BLACK);
			   // 当前位置的x,y坐标保存在鼠标当前位置的结构体中
			   solidcircle(msg.x, msg.y, 2);
			   break;
			   // 点击鼠标左键,如果匹配在当前位置绘制红色的半径为10的圆
		   case WM_LBUTTONDOWN:
			   setfillcolor(RED);
			   // 判断是否按下ctrl键如果是就绘制红字正方形
			   if (msg.ctrl == true) {
				   solidrectangle(msg.x-10, msg.y-10, msg.x+10, msg.y+10);
			   }
			   // 如果不是就绘制红色圆形
			   else {
				   solidcircle(msg.x, msg.y, 10);
			   }
			   break;

			   // 点击鼠标右键,如果匹配在当前位置绘制蓝色的半径为10的圆
		   case WM_RBUTTONDOWN:
			   setfillcolor(BLUE);
			   if (msg.ctrl == true) {
				   solidrectangle(msg.x - 10, msg.y - 10, msg.x + 10, msg.y + 10);
			   }
			   else {
				   solidcircle(msg.x, msg.y, 10);
			   } 
			   break;
	
		}
	}
	return 0;

}
     

在这里插入图片描述eg3:代码改进鼠标双击事件

在这里插入图片描述eg4:EASYX实现键盘消息控制

在这里插入图片描述按下键盘中的对应键后显示该键的vkcode
在这里插入图片描述
具体修改后的代码如下所示,做了一些微小的修改

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <easyx.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define PI 3.14
/*
  计算时长的步骤
  1:获取一次计数器当前的数值,记为startCount
  2:处理事务
  3:再次获取计算器当前数值,记为endCount
  4:用(endCouny - startCount)/F ,计算所耗时长,单位为秒,将秒转换为微秒的话可以乘以1000000
*/

int main() {
	initgraph(800, 600,EX_SHOWCONSOLE);// 创建绘图窗体的同时打开控制台
	setbkcolor(WHITE);
	cleardevice();
	// 创建了一个message类型的指针
	ExMessage msg;
	while (1){
		// 把获取到的鼠标消息传入message指针中
		msg = getmessage(EX_KEY); //仅获取鼠标消息
		// 使用点的方式进行调用
		switch (msg.message) {
			// 表示当按下键盘的一个键位后显示对应按键的vkcode
		   case WM_KEYDOWN:
			   printf("%#x\n", msg.vkcode);
			   break;
			   // 点击鼠标左键,如果匹配在当前位置绘制红色的半径为10的圆
		   case WM_LBUTTONDOWN:
			   setfillcolor(RED);
			   // 判断是否按下ctrl键如果是就绘制红字正方形
			   if (msg.ctrl == true) {
				   solidrectangle(msg.x-10, msg.y-10, msg.x+10, msg.y+10);
			   }
			   // 如果不是就绘制红色圆形
			   else {
				   solidcircle(msg.x, msg.y, 10);
			   }
			   break;

			   // 点击鼠标右键,如果匹配在当前位置绘制蓝色的半径为10的圆
		   case WM_RBUTTONDOWN:
			   setfillcolor(BLUE);
			   if (msg.ctrl == true) {
				   solidrectangle(msg.x - 10, msg.y - 10, msg.x + 10, msg.y + 10);
			   }
			   else {
				   solidcircle(msg.x, msg.y, 10);
			   } 
			   break;
	
		}
	}
	return 0;

}
     

以下是vkcode的对应按键显示的运行结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1171061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

selenium自动化测试入门 —— 操作浏览器!

1、启动浏览器&#xff08;实例化浏览器&#xff09; 启动Chrome浏览器&#xff08;驱动已放入path环境变量下&#xff09; driver webdriver.Chrome() 指定驱动路径驱动Chrome 浏览器 # .\driver\chromedriver.exe 为驱动存放位置,可以是相对路径或者绝对路径 driver we…

包装印刷行业万界星空科技云MES解决方案

印刷业的机械化程度在国内制造行业内算是比较高的&#xff0c;不算是劳动密集型企业。如书本的装订、包装的模切、烫金、糊盒等都已经有了全自动设备。印刷厂除了部分手工必须采用人工外&#xff0c;大部分都可以采用机器&#xff0c;也就意味着可以由少量工人生产出大量产品。…

Leetcode-LCR 126 斐波那契数

本题答案需要取模 1e97(1000000007) 定义一个变量 1000000007&#xff0c;答案%变量&#xff0c;完整题目要求 HashMap方法 class Solution {private Map<Integer,Integer> storeMap new HashMap();public int fib(int n) {int constant 1000000007;if(n0){return 0…

2010年408计网

下列选项中, 不属于网络体系结构所描述的内容是&#xff08;C&#xff09;A. 网络的层次B. 每层使用的协议C. 协议的内部实现细节D. 每层必须完成的功能 本题考查网络体系结构的相关概念 再来看当今世界最大的互联网&#xff0c;也就是因特网。它所采用的TCP/IP 4层网络体系结…

【每日一题】421. 数组中两个数的最大异或值-2023.11.4

题目&#xff1a; 421. 数组中两个数的最大异或值 给你一个整数数组 nums &#xff0c;返回 nums[i] XOR nums[j] 的最大运算结果&#xff0c;其中 0 ≤ i ≤ j < n 。 示例 1&#xff1a; 输入&#xff1a;nums [3,10,5,25,2,8] 输出&#xff1a;28 解释&#xff1a;最…

AI:54-基于深度学习的树木种类识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

pix2tex - LaTeX OCR 安装使用记录

系列文章目录 文章目录 系列文章目录前言一、安装二、使用三、如果觉得内容不错&#xff0c;请点赞、收藏、关注 前言 项目地址&#xff1a;这儿 一、安装 版本要求 Python: 3.7 PyTorch: >1.7.1 安装&#xff1a;pip install "pix2tex[gui]" 注意&#xff1a…

外卖系统的运转:背后的技术和管理细节

外卖系统的运作涉及许多技术和管理方面&#xff0c;其中包括前端应用程序、后端服务器、数据库管理、订单处理和配送等环节。 技术细节&#xff1a; 前端应用程序&#xff1a; 外卖平台的用户界面&#xff0c;包括顾客点餐界面和餐厅端的接单界面。通常使用HTML、CSS和JavaS…

Apache Doris (五十一): Doris数据缓存

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1.

Ansible中的角色使用

Ansible中的角色使用&#xff1a; 目录 一、ansible角色简介 二、roles目录结构 三、roles的创建 四、roles的使用 1、书写task主任务 2、触发器模块 3、变量模块 4、j2模块 5、files模块 6、启用模块 7、执行playbook 五、控制任务执行顺序 六、多重角色的使用 一…

Leetcode—1588.所有奇数长度子数组的和【简单】

2023每日刷题&#xff08;十九&#xff09; Leetcode—1588.所有奇数长度子数组的和 直接法实现代码 int sumOddLengthSubarrays(int* arr, int arrSize){int i 1;int sum 0;int left 0, right;int k;int j 0;while(i < arrSize) {for(left 0; left < arrSize; lef…

手把手创建Android应用程序·案例程序分析

目录 1. Activity 组件 MainActivity 类 2.布局文件activity_main. xml 3.应用程序配置文件 AndroidManifest.xml 4. Android的应用程序组件 4.1 Activity——活动 4.2 Service——服务 4.3 Broadcast receiver——广播接收器 4.4 Content provider——内容提供者…

VulnHub DC-4

一、信息收集 1.nmap扫描 ┌──(root&#x1f480;kali)-[~/routing] └─# nmap -sS -A 192.168.103.194/24发现开放了22、80端口 ┌──(root&#x1f480;kali)-[~/routing] └─# nmap --scriptvuln -p22,80 192.168.103.194--scriptvuln 是nmap中script模块&#xff0…

CoT进阶:Self Consistency, Least-to-most

CoT进阶 一&#xff1a;Self Consistency1.1 方法简介1.2 实验1.3 结果 二&#xff1a;Least-to-most2.1 方法简介2.2 示例2.3 结果 一&#xff1a;Self Consistency 题目: SELF-CONSISTENCY IMPROVES CHAIN OF THOUGHT REASONING IN LANGUAGE MODELS 机构&#xff1a;Google …

GitLab CI/CD 持续集成/部署 SpringBoot 项目

一、GitLab CI/CD 介绍 GitLab CI/CD&#xff08;Continuous Integration/Continuous Deployment&#xff09;是 GitLab 提供的一种持续集成和持续部署的解决方案。它可以自动化软件的构建、测试和部署过程&#xff0c;以便开发者更快地、更频繁地发布可靠的产品。 整体过程如…

检查AirPods的电量至少有六种方法,难易明细的都有

本文提供了六种方法,包括使用iPhone或iPad、询问Siri以及检查AirPods手机壳本身的多种选项。 如何使用保护壳检查AirPods的电池 一个简单的方法是查看AirPods保护壳上的指示灯,以获取电池电量信息;这个选项没有其他选项那么详细。 把耳塞放进盒子里,然后检查一下灯的颜色…

混合整数非线性规划求解器SCIP初探

简介 SCIP是目前最快的混合整数线性规划(mixed integer programming,MIP)和混合整数非线性规划(mixed integer nonlinear programing, MINLP)的求解器之一。到本文记录时&#xff0c;SCIP的版本已经到了8.0.4。 SCIP可以使用不同的编程语言来访问&#xff0c;对于Python有官方…

【多线程】线程的创建

创建线程如下几个方法&#xff1a; 目录 继承Thread类 调用start方法启动线程 调用run方法 实现Runnable接口 实现Callable接口 继承Thread类 调用start方法启动线程 public class TestThread extends Thread{//继承Thread类//重写run方法public void run(){for(int i0…

C#文件操作从入门到精通(3)——Txt文件读写操作

前言: 我们在开发c#程序时,经常需要对txt文本文件进行操作,有时候是读取txt文本中的内容,有时候是将程序运行过程中的一些数据写入到txt文本中做记录,为了帮助大家学习txt文本的操作,我特意开发了一个“txt文件操作学习”winform小软件,该软件调用了我封装的txt文件操作…

[尚硅谷React笔记]——第9章 ReactRouter6

目录&#xff1a; 课程说明一级路由重定向NavLink高亮useRoutes路由表嵌套路由路由的params参数路由的search参数路由的state参数编程式路由导航useRouterContextuseNavigationTypeuseOutletuseResolvedPath()总结项目地址 1.课程说明 概述 React Router以三个不同的包发布…