C#2.0時代のゲームプログラミング(14)

今一度、前提条件を整理しておこう。これが正しく伝わっていないと、ぐだぐだな議論になってしまう。


・multi display環境下で特定の画面をフルスクリーン化したい。
・フルスクリーン化とは、「画面解像度の変更」+「アプリケーションの保有しているウィンドゥの最大化」である。
・最大化されたときにタスクバーが表示されてはいけない。
・ウィンドゥの最大化ボタンを押されたとき、フルスクリーン化する。
・フルスクリーン化するのは、プライマリ画面のみとは限らない。「ウィンドゥの最大化ボタンを押されたとき」にそのアプリケーションウィンドゥが存在する画面をフルスクリーン化する。


まだ細かい条件はいろいろあるが、大雑把に言うとそれだけである。


フルスクリーン化に伴って画面解像度を変更するのは、いま想定しているアプリケーションが特定のウィンドゥサイズでのみうまく表示されるように設計されているからである。例えば横800×縦600のウィンドゥでのみうまく表示できるようにレイアウトしてあるアプリケーションだと、フルスクリーンにしたときには、画面が800×600になっていないと拡大表示しないといけない。この拡大表示にかかる実行時の処理コストとプログラム的な手間(マウスの座標等の位置が変更になるコストやら、オフスクリーンサーフェースにいったん描画しなければいけなくてその処理を行なう手間など)から、こういう拡大による“最大化”はコモンコントロールを用いてあるアプリケーションの場合、あまり現実的ではない。(つづく)