【问题标题】:Move SDL window in SDL 1.2在 SDL 1.2 中移动 SDL 窗口
【发布时间】:2015-07-14 21:11:45
【问题描述】:

我在 MAC 上使用带有 FFmpeg 的 SDL 1.2。我正在尝试使用 FFmpeg 和 SDL 构建视频播放器。我正在 SDL_Surface 上观看我的视频。我的播放器工作正常。现在我的问题是,我想移动 SDL 窗口而不从标题栏中拖动它。 SDL 1.2 框架中是否有任何用于移动 SDL_Surface 的函数/方法。

【问题讨论】:

  • 我想移动 SDL 窗口...用键盘?以编程方式?随机?
  • 以编程方式..你有什么想法吗..??
  • 当我的 sdl 窗口弹出时,我想根据我的桌面屏幕使其集中。你有什么想法吗..??
  • 向我们展示您的代码 :)
  • 我正在这样做:SDL_BlitSurface(Bmpsrc,NULL,screen,&rect); SDL_Flip(screen); 其中 Bmpsrc 和 screen 是 SDL_Surfaces

标签: c++ qt ffmpeg sdl sdl-1.2


【解决方案1】:

SDL 1.2 没有用于移动窗口的 API。 SDL 2.0 总体上对多窗口和窗口管理有更好的支持。
http://wiki.libsdl.org/SDL_SetWindowPosition

要使用 SDL 1.2 执行此操作,您需要使用窗口句柄使用特定于平台的调用。您可以通过SDL_GetWMInfo() 获得。

如果你只需要设置窗口的初始位置使其居中,那么在SDL_SetVideoMode()之前试试这个:

SDL_putenv("SDL_VIDEO_WINDOW_POS=center");

【讨论】:

    【解决方案2】:

    你要找的功能是:

    void SDL_SetWindowPosition(SDL_Window* window,
                               int         x,
                               int         y)
    

    哪个为你设置了窗口的位置。

    【讨论】:

    • 这个函数是在 SDL 2.0 中定义的,但我使用的是 SDL 1.2。 SDL 1.2 还有其他方法吗?
    • @DevSam 你有没有像SetWindowPos 这样使用它的东西:SetWindowPos(pInfo.window, 0, r.left, r.top, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 2012-03-21
    相关资源
    最近更新 更多