0

Windowsで全画面表示にしたときに、D3DまたはOpenGLを利用するアプリケーションのこの奇妙な動作に気付いた人はいますか?これは、アプリケーションが全画面表示になり、ウィンドウに戻るか終了した場合にのみ適用されます。他のアプリケーションのウィンドウ位置をシャッフルするか(単一のモニターマシンを使用している場合)、複数のモニターマシンを使用している場合は他のすべてのアプリケーションウィンドウを別の画面に移動します。

この2つの異常を示さないアプリケーションがなければ、これは当然のことと思います。それで、私の質問は、これらの2つの問題を軽減するためにアプリケーションを作成するときに、正確に何を処理する必要があるかということです。また、この問題がWindows以外の他のプラットフォームに存在するかどうかわかりませんか?

これに関する私の主なセットアップはOpenGL/C ++ですが、これは、処理する必要のあるプラットフォームAPIのことのように思われるため、どのようなセットアップにも当てはまると思います。


編集:OK、これが私の観察についてのもう少しの説明です。デスクトップと同じ解像度でも問題は解決しません。つまり、解像度の切り替えとは関係がないようです。デスクトップと同じ解像度でなくても、元に戻すと、デスクトップのウィンドウが以前と同じように復元されるアプリケーションやゲームを見たことがあります。フルスクリーンアプリケーションが実行されました。


edit2:解像度スイッチの問題のようです。Windows(少なくともXP)は、アプリケーションウィンドウの位置とサイズ(マルチモニターセットアップの場合)を記憶していないようです。質問への回答で私が提供したのは解決策だけのようです-少なくともAPI呼び出しとして1つか2つは、OSが提供すべきもののように見えますが。これが唯一の解決策であるとはまだ確信していません。優雅で簡単な復元の簡単な方法が必要ですよね?

4

3 に答える 3

2

使ってはいけませんChangedDisplaySettingsEx(..., CDS_FULLSCREEN, NULL)か?これにより、システムに解像度の交換が一時的なものであることがわかります。

于 2009-03-27T01:28:23.033 に答える
1

あなたが経験している状況について 100% 確実だとは言えません。ただし、私の推測では、ほとんどの D3D/OpenGL ゲームは、パフォーマンス上の理由から、起動/シャットダウン時にマシンの解像度を変更するためです。

ウィンドウをシャッフルしないものは、現在の設定で実行できる可能性があるため、解像度を変更していない可能性があります。

于 2009-03-26T13:36:36.830 に答える