You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++ SDL2中获取整数类型的鼠标x、y坐标值

SDL2 C++ 鼠标坐标获取方法

基础坐标获取

SDL_GetMouseState 会在返回鼠标按键状态的同时,通过指针参数输出你需要的整数型坐标:

// 定义两个int变量用于接收坐标值
int mouse_x, mouse_y;
// 传入变量地址调用函数
Uint32 button_state = SDL_GetMouseState(&mouse_x, &mouse_y);

调用完成后,mouse_x 就是鼠标横向坐标,mouse_y 就是纵向坐标,数值为整数像素单位,原点在当前SDL窗口左上角,x向右递增,y向下递增,完全符合常规2D开发的坐标逻辑。

附加说明

  • 函数的返回值button_state可以用来判断当前鼠标按键的按下状态,比如判断左键是否按下可以写:
    if (button_state & SDL_BUTTON(SDL_BUTTON_LEFT)) {
        // 左键按下的逻辑
    }
    
    类似的还有SDL_BUTTON_MIDDLE(中键)、SDL_BUTTON_RIGHT(右键)等枚举值可以用。
  • 如果你需要获取鼠标相对于整个系统桌面的全局坐标,可以换成SDL_GetGlobalMouseState,调用方式和上面完全一致。
  • 如果你的项目里已经在处理SDL事件循环,也可以直接从SDL_MOUSEMOTION事件结构体里直接拿坐标:
    SDL_Event event;
    while (SDL_PollEvent(&event)) {
        if (event.type == SDL_MOUSEMOTION) {
            int x = event.motion.x;
            int y = event.motion.y;
            // 处理鼠标移动逻辑
        }
    }
    
    两种方式都可以,按需选择即可。

内容的提问来源于stack exchange,提问作者UberSuperBoss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:36:08