SDL事件相关

文章目录

    • 事件相关的函数和数据结构
      • 用户自定义事件
      • 代码相关:

事件相关的函数和数据结构

  • SDL_WaitEvent :等待一个事件
  • SDL_PushEvent 发送一个事件
  • SDL_PumpEvents(): 将硬件设备产生的时间放入事件队列 ,用于读取事件,在调用该函数之前,必须调用SDL_PumpEVents搜集键盘等事件
  • SDL_PeepEvents(): 从事件队列提取一个事件
    -数据结构 SDL_Event :代表一个事件

可以监控到的事件在SDL_events.h文件里面可以找到
在这里插入图片描述

用户自定义事件

#define FF_QUIT_EVENT (SDL_USEREVENT + 2) // 用户自定义事件
在这里插入图片描述

代码相关:

TEMPLATE = app
CONFIG += console thread
CONFIG -= app_bundle
CONFIG -= qtSOURCES += \main.cINCLUDEPATH += \$$PWD/../SDL2-2.0.10/include/LIBS += \$$PWD/../SDL2-2.0.10/lib/x86/SDL2.lib

main.c

#include <SDL.h>
#include <stdio.h>
#define FF_QUIT_EVENT (SDL_USEREVENT + 2) // 用户自定义事件
#undef main
int main(int argc, char *argv[]) {SDL_Window *window = NULL; // Declare a pointerSDL_Renderer *renderer = NULL;SDL_Init(SDL_INIT_VIDEO); // Initialize SDL2// Create an application window with the following settings:window = SDL_CreateWindow("An SDL2 window", // window titleSDL_WINDOWPOS_UNDEFINED, // initial x positionSDL_WINDOWPOS_UNDEFINED, // initial y position640, // width, in pixels480, // height, in pixelsSDL_WINDOW_SHOWN | SDL_WINDOW_BORDERLESS // flags - see below);// Check that the window was successfully createdif (window == NULL) {// In the case that the window could not be made...printf("Could not create window: %s\n", SDL_GetError());return 1;}/* We must call SDL_CreateRenderer in order for draw calls to affect this window. */renderer = SDL_CreateRenderer(window, -1, 0);/* Select the color for drawing. It is set to red here. */SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);/* Clear the entire screen to our selected color. */SDL_RenderClear(renderer);/* Up until now everything was drawn behind the scenes.This will show the new, red contents of the window. */SDL_RenderPresent(renderer);SDL_Event event;int b_exit = 0;for (;;) {SDL_WaitEvent(&event);switch (event.type) {case SDL_KEYDOWN: /* 键盘事件 */switch (event.key.keysym.sym) {case SDLK_a:printf("key down a\n");break;case SDLK_s:printf("key down s\n");break;case SDLK_d:printf("key down d\n");break;case SDLK_q:printf("key down q and push quit event\n");SDL_Event event_q;event_q.type = FF_QUIT_EVENT;SDL_PushEvent(&event_q);break;default:printf("key down 0x%x\n", event.key.keysym.sym);break;}break;case SDL_MOUSEBUTTONDOWN: /* 鼠标按下事件 */if (event.button.button == SDL_BUTTON_LEFT) {printf("mouse down left\n");} else if (event.button.button == SDL_BUTTON_RIGHT) {printf("mouse down right\n");} else {printf("mouse down %d\n", event.button.button);}break;case SDL_MOUSEMOTION: /* 鼠标移动事件 */printf("mouse movie (%d,%d)\n", event.button.x, event.button.y);break;case FF_QUIT_EVENT://如果是收到自定义的退出信号 则退出接受事件的循环printf("receive quit event\n");b_exit = 1;break;}if (b_exit)break;}// destory rendererif (renderer)SDL_DestroyRenderer(renderer);// Close and destroy the windowif (window)SDL_DestroyWindow(window);// Clean upSDL_Quit();return 0;
}

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

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

相关文章

SpringBoot框架在资产管理中的应用

3系统分析 3.1可行性分析 通过对本企业资产管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本企业资产管理系统采用Spring Boot框架&#xff0c;JAVA作…

华为私有接口类型hybrid

华为私有接口类型hybrid Tip&#xff1a;hybrid类型&#xff0c;简称混合型接口。 本次实验模拟2层网络下 vlan10 vlan20 不能互访&#xff0c;vlan10 vlan20 同时可以访问vlan100 sw1配置如下&#xff1a; <Huawei>sy [Huawei]sys sw1 [sw1]vl ba 10 20 100 [sw1]int…

前端 性能优化 (图片与样式篇)

文章目录 前端能够做哪些图片优化?1、减小图片体积2、图片缓存服务工作线程 (Service Workers)缓存IndexDB缓存图片LocalStorage缓存 3、图片懒加载使用 loading"lazy" 属性 4、不同分辨率下使用不同的图片5、使用webp格式的图片6、配置图片CDN7、减少图片和动图的使…

Spring Boot实现多数据源连接和切换

文章目录 前言一、多数据源配置与切换方案二、实现步骤1. 创建多个 DataSource 配置类2. 创建 DataSource 配置类3. 创建动态数据源路由类4. 实现 DynamicDataSource 类5. 创建 DataSourceContextHolder 来存储当前的数据源标识6. AOP 方式切换数据源7. 自定义注解来指定数据源…

【023】基于51单片机数字电压表

☆、设计硬件组成&#xff1a;51单片机最小系统ADC0832模数转换LCD1602液晶显示。 1、本设计采用STC89C51/52、AT89C51/52、AT89S51/52单片机作为主控芯片&#xff1b; 2、采用LCD1602液晶显示屏实时更新显示所测量的电压值&#xff1b; 3、采用ADC0832进行采集电压信号&…

ElasticSearch从环境搭建到如何使用的全过程

ES是什么? ES是一款非常强大的开源的高扩展的分布式全文检索引擎,可以帮助我们从海量数据中快速找到需要的内容,它可以近乎实时的存储、检索数据。还可以实现日志统计、分析、系统监控等功能。 例如京东、淘宝、头条等站内搜索功能 在大数据环境下&#xff0c;Elasticsearc…

SpringCloud框架学习(第一部分:初始项目搭建)

目录 一、SpringBoot和SpringCloud版本选型 1.Springcloud版本选择 2.Springcloud版本选择 3.Springcloud Alibaba版本选择 4.SpringCloud VS SpringBoot VS SpringCloud Alibaba版本三者制约对应关系 二、SpringCloud介绍 1.单体架构 2.微服务架构 3.springcloud 4.S…

uni-app打包后报错云服务空间未关联

使用uni-app打包到h5 项目里面用到了uni-app的云端一体城市选择组件&#xff0c;这个组件数据用到了uniCloud云服务空间&#xff0c;在本地运行没问题&#xff0c;打包之后测试环境报错&#xff1a; 一顿查&#xff0c;查到了官网是这样说的&#xff1a; cli publish --platfo…

解决Mac M芯片 Wireshark 运行rvictl -s 后,出现Starting device failed

前言 mac os big sur 之后&#xff0c;苹果系统的安全性能提升&#xff0c;导致 rvictl -s 创建虚拟网卡失败。 $ rvictl -s 000348120-001621w21184C01E bootstrap_look_up(): 1102Starting device 000348120-001621w21184C01E [FAILED] 这是由于 rvictl 需要开启系统扩展才能…

公共命名空间:内置名

使用方言[Perl] 使用[哇哇小可爱的方言] 第一句明确指出了使用什么&#xff0c;使用方言&#xff1b; 第二句也是使用方言的意思。 如果中括号里的内容&#xff0c;完全当做参数来处理&#xff0c;那么&#xff0c;第二句就难以确定使用什么。这里需要使用叫做“内置名”的技术…

浙江酒店WIFI广告路由实现——酒店经营

像这样的链接WIFI&#xff0c;后自动弹出连接认证&#xff0c;或者广告&#xff0c;可以展示酒店介绍&#xff0c;住房信息 智能wifi优点&#xff1a; 对于酒店体验而言&#xff1a; 1. 便捷性&#xff1a;客人无需繁琐的认证步骤就能自动连接 WiFi&#xff0c;提升了入住的便…

音视频入门基础:H.264专题(22)——通过FFprobe显示H.264裸流每个packet的信息

音视频入门基础&#xff1a;H.264专题系列文章&#xff1a; 音视频入门基础&#xff1a;H.264专题&#xff08;1&#xff09;——H.264官方文档下载 音视频入门基础&#xff1a;H.264专题&#xff08;2&#xff09;——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…

JavaScript中执行上下文和执行栈是什么?

一、执行上下文 简单的来说&#xff0c;执行上下文是一种对Javascript代码执行环境的抽象概念&#xff0c;也就是说只要有Javascript代码运行&#xff0c;那么它就一定是运行在执行上下文中 执行上下文的类型分为三种&#xff1a; 全局执行上下文&#xff1a;只有一个&#…

达梦8-达梦数据实时同步软件(DMHS)配置-Oracle-DM8

1、安装环境 源端目的端IP地址192.168.6.111192.168.6.110系统版本Red Hat 6.4Kylin v10数据库版本Oracle11g达梦 v8系统用户Oracledmdba字符集MERICAN_AMERICA.AL32UTF8UTF-8端口15215236实例名PRODDMSERVER数据库软件目录/u01/app/oracle/opt/dmdbmsDMHS安装目录/u01/dmhs/o…

GEE代码学习 day18

13.4 计算图像集合的多个百分位图像 在此上下文中&#xff0c;您可以想象访问给定像素的给定 ImageCollection 中给定波段的所有值&#xff0c;并对它们进行排序。例如&#xff0c;第 30 个百分位数是列表中从最小到最大的 30% 的值。这提供了一种简单的方法&#xff0c;通过计…

【优选算法 — 滑动窗口】滑动窗口小专题(一)

长度最小的子数组 长度最小的子数组 题目解析&#xff1a; 对于示例一 对于剩下两种示例&#xff1a; 解法一&#xff1a;暴力枚举 把所有的子数组全部枚举出来&#xff0c;并且枚举出的每一个子数组求和判断&#xff0c;返回长度最小的子数组&#xff1b; 时间复杂度 &…

【数据集】【YOLO】【目标检测】安全帽识别数据集 22789 张,YOLO安全帽佩戴目标检测实战训练教程!

数据集介绍 【数据集】安全帽识别数据集 22789 张&#xff0c;目标检测&#xff0c;包含YOLO/VOC格式标注。数据集中包含2种分类&#xff1a;{0: head, 1: helmet}&#xff0c;分别是无安全帽和佩戴安全帽。数据集来自国内外图片网站和视频截图。检测场景为施工地工人安全帽佩…

【Pytorch】model.eval()与model.train()

model.train()&#xff1a; 作用是启用Batch Normalization 和 Dropout 如果模型中有BN层(Batch Normalization&#xff09;和Dropout&#xff0c;需要在训练时添加model.train()。model.train()是保证BN层能够用到每一批数据的均值和方差。对于Dropout&#x…

Linux 系统结构

Linux系统一般有4个主要部分&#xff1a;内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构&#xff0c;它们使得用户可以运行程序、管理文件并使用系统。 1. linux内核 内核是操作系统的核心&#xff0c;具有很多最基本功能&#xff0c;它…

飞书 富文本(Markdown)

飞书机器人webhook支持Markdown格式&#xff0c;包括表格 表格 |Syntax | Description |\n|-------- | -------- |\n|Header | Title |\n|Paragraph | Text |参考 富文本&#xff08;Markdown&#xff09;