2017-01-19 18 views
3

私はSDL_SetWindowPositionを使用して私のウィンドウを配置しています。この機能を使用して、別のモニタにウィンドウを配置することはできますか?SDL2ウィンドウを2番目のモニタに配置する方法は?

UPDATE

任意のアイデアはどのようにこの問題を解決するには、テキストのサイズがWindows 10で変更されたときに、正しいモニタ位置を返しませんSDL_GetDisplayBoundsを使用していますか?

enter image description here

答えて

0

あなたがセカンドモニタの境界を知っている場合は、[はい、あなたは、SetWindowPositionを使用することができます。 関数SDL_GetDisplayBounds(int displayIndex、SDL_Rect * rect)を使用して取得できます。

3

SDL2は、グローバルな画面空間座標系を使用します。各表示装置は、この座標空間内に独自の境界を有する。次の例は、第2の表示装置上にウィンドウを配置します

我々はそのように、我々はまた、マクロ SDL_WINDOWPOS_CENTERED_DISPLAY(n)どこ nを使用することができます

#define SDL_WINDOWPOS_CENTERED   SDL_WINDOWPOS_CENTERED_DISPLAY(0) 

として定義されている参照SDL_video.hSDL_WINDOWPOS_CENTEREDの定義を見てみると

// enumerate displays 
int displays = SDL_GetNumVideoDisplays(); 
assert(displays > 1); // assume we have secondary monitor 

// get display bounds for all displays 
vector<SDL_Rect> displayBounds; 
for(int i = 0; i < displays; i++) { 
    displayBounds.push_back(SDL_Rect()); 
    SDL_GetDisplayBounds(i, &displayBounds.back()); 
} 

// window of dimensions 500 * 500 offset 100 pixels on secondary monitor 
int x = displayBounds[ 1 ].x + 100; 
int y = displayBounds[ 1 ].y + 100; 
int w = 500; 
int h = 500; 

// so now x and y are on secondary display 
SDL_Window * window = SDL_CreateWindow("title", x, y, w, h, FLAGS...); 

表示インデックスです。 Windowsの10のための

アップデート - DPIスケーリング問題が

確かにSDL2とWindowsでのDPIスケール(すなわち、テキストスケール)を変更するとバグがあるように思えます。

問題に関連する2つのバグレポートがあります。彼らはまだ明らかに未解決のままです。

https://bugzilla.libsdl.org/show_bug.cgi?id=3433

https://bugzilla.libsdl.org/show_bug.cgi?id=2713

潜在的な解決策

私はOPがscale != 100%ために、DPIスケールを決定するためのWin32 APIを使用し、そのことにより、境界を修正することができると確信しています。

+0

あなたの質問に答えるためにオリジナルの質問にコメントしたいと思いますが、私はまだ特権を持っていません。私の推測では**テキストスケール**を変更しています。Windows 10では何らかの形でSDLの画面座標に影響します。 MacのRetinaディスプレイでSDL2を使用する方法を理解するまで、私は別の問題を抱えていました。 (Retinaはスケーリングを使用します)。 以下の実験を試してみることをお勧めします:Windows 10では、表示範囲を出力し、テキストの縮尺を変更したときに変更されているかどうかを確認します。 –

+0

SDL2のバグである可能性があります。 Windows 10で同じ経験を持つ他の人を探しましたか? –

+0

私の前提が正しい場合、125%のテキストスケールの結果として、すべてのスクリーン位置に1.25が乗算されます。 –

関連する問題