【问题标题】:Size a window relative to the size of the screen the window is in (in case of multiple displays) in SDL2在 SDL2 中,相对于窗口所在屏幕的大小(在多个显示器的情况下)调整窗口大小
【发布时间】:2019-10-08 10:32:24
【问题描述】:

我正在编写一些包含 SDL2 部分的代码。我想处理一个窗口在创建后移动到另一个显示器的情况,适当地放大窗口。

我正在使用 C。

我不知道的部分是如何在给定SDL_Window 对象的情况下,在多显示器设置中找出该窗口所在的显示器。如果我能找到它,那么找到该显示器的大小并适当地设置窗口大小就很容易了。

// Width and height of display that myWindow is in (myWindow some previously created SDL_Window)
int disp_x_size_px;
int disp_y_size_px;

/* Need code to get values for disp_x_size_px and disp_y_size_px.
    With these values I can set the window size correctly. */

【问题讨论】:

  • @Fredrik:是的,但是您可以SDL_WINDOW_HIDDEN 传递给SDL_CreateWindow()flags 参数,定位/调整它的大小,然后使用SDL_RaiseWindow() 来传递显示出来。
  • SDL_GetWindowDisplayIndex() + SDL_GetDisplayBounds() + SDL_SetWindowPosition() 不起作用吗?
  • @Fredrik 抱歉,我的解释不清楚。默认情况下,窗口在显示器 0 中创建,我打算在创建之后,即在它移动到另一个显示器之后,根据它所在的当前显示器的大小来更改实际大小。我想也有可能在另一个显示器中创建窗口,尽管这样就会知道是哪一个。我将编辑我的问题来解决这个问题。不过,genpfault 的评论解决了我的问题。
  • @genpfault 谢谢!我之前没能找到这个SDL_GetWindowDisplayIndex 函数。这解决了我的问题。

标签: c sdl sdl-2


【解决方案1】:

从 genpfault 的评论中,答案是使用 SDL_GetWindowDisplayIndex() 来获取打开窗口的显示。然后当然可以使用SDL_GetDisplayBounds() 来获取显示大小,SDL_SetWindowPosition() 可以适当地设置窗口位置。

注意:我把这个放在一个答案中,所以这个问题可以有一个可以接受的答案:毕竟它已经得到了可以接受的答案。

【讨论】:

    猜你喜欢
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 2018-05-11
    • 1970-01-01
    • 2016-02-16
    • 2012-11-28
    • 2014-07-15
    相关资源
    最近更新 更多