前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >golang调用sdl2,键盘和鼠标事件

golang调用sdl2,键盘和鼠标事件

作者头像
福大大架构师每日一题
发布2023-06-08 14:32:19
3310
发布2023-06-08 14:32:19
举报

golang调用sdl2,键盘和鼠标事件

win10 x64下测试成功,其他操作系统下不保证成功。

采用的是syscall方式,不是cgo方式。

[见地址](https://github.com/moonfdd/sdl2-go/blob/main/examples/a03-sdl-event/main.go)

代码用golang编写。代码如下:

代码语言:javascript
复制
package main

import (
  "fmt"
  "github.com/moonfdd/sdl2-go/sdl"
  "github.com/moonfdd/sdl2-go/sdlcommon"
)

func main() {
  sdlcommon.SetSDL2Path("SDL2.dll")
  sdl.SDL_Init(sdl.SDL_INIT_VIDEO)
  window := sdl.SDL_CreateWindow("微信公众号:福大大架构师每日一题", sdl.SDL_WINDOWPOS_UNDEFINED, sdl.SDL_WINDOWPOS_UNDEFINED, 640, 480, sdl.SDL_WINDOW_OPENGL|sdl.SDL_WINDOW_RESIZABLE)
  if window == nil {
    fmt.Printf("Can't create window, err:%s", sdl.SDL_GetError())
    return
  }
  renderer := window.SDL_CreateRenderer(-1, 0)
  if renderer == nil {
    return
  }
  renderer.SDL_SetRenderDrawColor(255, 0, 0, 255)
  renderer.SDL_RenderClear()
  renderer.SDL_RenderPresent()
  var event sdl.SDL_Event
  for {
    event.SDL_WaitEvent()
    if event.Type == sdl.SDL_KEYDOWN {
      fmt.Println("键盘按下事件", event.ToSDL_KeyboardEvent().Keysym.Sym)
    } else if event.Type == sdl.SDL_MOUSEBUTTONDOWN {
      fmt.Println("鼠标按下事件")
    } else if event.Type == sdl.SDL_QUIT {
      fmt.Println("退出事件")
      break
    }
  }
  if renderer != nil {
    renderer.SDL_DestroyRenderer()
  }

  window.SDL_DestroyWindow()
  sdl.SDL_Quit()
}

执行结果如下:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档