在多个显示器下使用SDL2指定某一个显示器创建一个窗口
时间: 2023-11-27 11:54:19 浏览: 81
可以实现在不同的屏幕上显示不同的窗口
4星 · 用户满意度95%
在使用SDL2创建窗口时,可以使用`SDL_CreateWindow()`函数来指定要在哪个显示器上创建窗口。具体做法是在调用该函数时,使用`SDL_WindowFlags`枚举类型中的`SDL_WINDOW_FULLSCREEN_DESKTOP`标志,并将其作为第二个参数传入。同时,还需要指定显示器的索引,可以使用`SDL_GetNumVideoDisplays()`和`SDL_GetDisplayName()`函数获取显示器数量和名称。
以下是示例代码:
```c
#include <SDL2/SDL.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
// 初始化SDL
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
printf("SDL初始化失败: %s\n", SDL_GetError());
return -1;
}
// 获取第二个显示器的名称
int numDisplays = SDL_GetNumVideoDisplays();
if (numDisplays < 2) {
printf("没有检测到第二个显示器!\n");
SDL_Quit();
return -1;
}
const char* displayName = SDL_GetDisplayName(1);
// 创建窗口并指定显示器
SDL_Window* window = SDL_CreateWindow("在指定显示器上创建窗口",
SDL_WINDOWPOS_UNDEFINED_DISPLAY(1),
SDL_WINDOWPOS_UNDEFINED_DISPLAY(1),
640,
480,
SDL_WINDOW_FULLSCREEN_DESKTOP);
if (!window) {
printf("创建窗口失败: %s\n", SDL_GetError());
SDL_Quit();
return -1;
}
// 进入消息循环
SDL_Event e;
bool quit = false;
while (!quit) {
while (SDL_PollEvent(&e)) {
if (e.type == SDL_QUIT) {
quit = true;
}
}
}
// 清理资源
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
```
在上面的示例代码中,我们使用`SDL_GetNumVideoDisplays()`和`SDL_GetDisplayName()`函数获取第二个显示器的名称,并将其作为参数传入`SDL_CreateWindow()`函数中。最后,我们进入消息循环等待用户关闭窗口。
阅读全文