我正在编写一个显示动画的程序,该动画取决于显示器的大小。为了让它与多个显示器一起工作,我有一个 display_data 对象数组:
struct window_data
{
SDL_Rect bounds;
SDL_Window *window;
};
并为每个显示初始化这些:
int numdisplays = SDL_GetNumVideoDisplays();
std::vector< window_data > screens( numdisplays );
for( int i = 0 ; i < numdisplays ; ++i )
{
SDL_GetDisplayBounds( i, &( screens[ i ].bounds ) );
screens[ i ].window
= SDL_CreateWindow( "Display", screens[ i ].bounds.x,
screens[ i ].bounds.y, screens[ i ].bounds.w,
screens[ i ].bounds.h, SDL_WINDOW_FULLSCREEN );
}
只要我的鼠标光标在主显示器中,这工作就很好,但是如果我在辅助显示器中使用光标启动程序,它将在辅助显示器中绘制两个窗口,导致只有第二个窗口可见。这种行为似乎只取决于光标的位置,而不是我运行程序的终端窗口。
我已经验证,无论光标位置如何,都可以找到相同的显示数字和边界,因此我对程序行为的变化感到困惑。这是 SDL2 的预期行为还是错误?在任何一种情况下,有人可以提出解决方法吗?
编辑:鼠标依赖出现在带有 XFCE 的 Debian 上。我也在 Windows 上试过这个,它在第二台显示器上输出两个窗口,不管鼠标位置如何。