SDL使用触屏模拟鼠标点击事件
来源:互联网 发布:下载解压软件 编辑:程序博客网 时间:2024/05/16 07:46
一个主要的共同体SDL_Event,原型如下:
typedef union{
Uint8 type;
SDL_ActiveEvent active;
SDL_KeyboardEvent key;
SDL_MouseMotionEvent motion;
SDL_MouseButtonEvent button;
SDL_JoyAxisEvent jaxis;
SDL_JoyBallEvent jball;
SDL_JoyHatEvent jhat;
SDL_JoyButtonEvent jbutton;
SDL_ResizeEvent resize;
SDL_ExposeEvent expose;
SDL_QuitEvent quit;
SDL_UserEvent user;
SDL_SysWMEvent syswm;
} SDL_Event;
SDL_Event是所有SDL事件处理的核心,它是SDL_Surface之后最重要的结构。它通过判断事件类型(type)来决定选择使用哪一个结构体,它们的对应使用关系如下:Event typeEvent StructureSDL_ACTIVEEVENTSDL_ActiveEventSDL_KEYDOWN/UPSDL_KeyboardEventSDL_MOUSEMOTIONSDL_MouseMotionEventSDL_MOUSEBUTTONDOWN/UPSDL_MouseButtonEventSDL_JOYAXISMOTIONSDL_JoyAxisEventSDL_JOYBALLMOTIONSDL_JoyBallEventSDL_JOYHATMOTIONSDL_JoyHatEventSDL_JOYBUTTONDOWN/UPSDL_JoyButtonEventSDL_VIDEORESIZESDL_ResizeEventSDL_VIDEOEXPOSESDL_ExposeEventSDL_QUITSDL_QuitEventSDL_USEREVENTSDL_UserEventSDL_SYSWMEVENTSDL_SysWMEvent
SDL_Event中有两个用于模拟鼠标设备的动作的结构体SDL_MouseMotionEvent与SDL_MouseButtonEvent,原型如下:
typedef struct{
Uint8 type; //被使用时,为SDL_MOUSEMOTION
Uint8 state; //鼠标按键状态
Uint16 x, y; //绝对坐标
Sint16 xrel, yrel; //相对坐标
} SDL_MouseMotionEvent;
当SDL_Event.type为SDL_MOUSEMOTION时,SDL_MouseMotionEvent结构体被选择。SDL_MouseMotionEvent在SDL_MOUSEMOTION(鼠标移动)事件触发时被使用。简单地说,当用户移动应用程序的窗口内的鼠标或SDL_WarpMouse被引用,SDL_MOUSEMOTION类型的事件就发生。
typedef struct{
Uint8 type; //SDL_MOUSEBUTTONDOWN或SDL_MOUSEBUTTONUP
Uint8 which; //输入设备索引
Uint8 button; //鼠标按键索引(SDL_BUTTON_LEFT, SDL_BUTTON_MIDDLE, SDL_BUTTON_RIGHT, SDL_BUTTON_WHEELUP, SDL_BUTTON_WHEELDOWN)
Uint8 state; //按键状态(SDL_PRESSED或SDL_RELEASED)
Uint16 x, y; //按键当前坐标
} SDL_MouseButtonEvent;
当SDL_Event.type为SDL_MOUSEBUTTONDOWN或SDL_MOUSEBUTTONUP时,SDL_MouseButtonEvent结构体被选择。同样地,SDL_MouseButtonEvent在检测到鼠标按钮按下或释放时使用,鼠标时间发生时鼠标的位置存储在X和Y字段。
根据触屏数据模拟鼠标点击事件
从触屏获取校正后的点触坐标X、Y与点触状态pressure,将这些信息相应地填充到SDL_MouseMotionEvent与SDL_MouseButtonEvent中,再使用SDL_PushEvent装载填充好的结构体,实现鼠标的移动或点击事件。
(注:SDL实现触屏模拟鼠标点击的一个重要的函数:int SDL_PushEvent(SDL_Event *event),该函数用于装载结构体)
详细实现可参考SDL-1.13.4源码。
- SDL使用触屏模拟鼠标点击事件
- 模拟鼠标点击事件
- C# 模拟鼠标点击事件
- 模拟鼠标点击事件 mouse_move
- js 模拟鼠标点击事件
- Js 模拟鼠标点击事件
- 如何使用SendMessage函数实现模拟鼠标点击按钮事件?
- 使用jQuery 模拟鼠标点击a标签事件 实现定位
- 使用jQuery模拟鼠标点击a标签事件
- 使用jQuery模拟鼠标点击a标签事件
- ListBox控件模拟鼠标点击事件
- Android Instrumentation模拟鼠标点击事件
- Android Instrumentation模拟鼠标点击事件
- QT中模拟鼠标点击事件
- java swing 鼠标自动模拟点击事件
- 利用js脚本模拟鼠标点击事件
- Unity 模拟鼠标自动点击事件
- 使用API模拟鼠标事件
- Joomla! (DAY 7) - Joomsport (DAY 5): Localization - Adding Traditional Chinese
- ADMOB的打包问题
- Android 网络连接问题
- oracle 跟踪文件和转储命令详解
- linux 多线程编程的信号问题
- SDL使用触屏模拟鼠标点击事件
- Java中string的特性
- 每日一句(想起来的时候~哈)
- 第九章:用内核对象进行线程同步(二) .
- 数据库的工具类!
- IOS 入门开发之创建标题栏UINavigationBar的使用(二)
- android中的广播
- String.getBytes()方法中的中文编码问题
- Ubuntu 10.04更新源大全