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

解像度変更のためにはディスプレイを列挙する必要がある。


普通はEnumDisplayDevicesを呼び出すのだが、EnumDisplayDevicesは、NT4.0で非対応。(cf.→http://forums.belution.com/ja/vc/000/080/80.shtml) よって、このAPIを用いるのならばNT4.0かどうかのチェックを入れる必要がある。


ディスプレイデバイス名が取得できたら、次にEnumDisplaySettingsで、そのディスプレイの解像度を取得していく。希望する解像度があれば、その解像度に変更可能ということだ。


次に解像度の変更にはChangeDisplaySettingsを用いるのだが、multi displayの場合は、ChangeDisplaySettingsExで変更する。ビデオカードのドライバによっては、このときWindowsの再起動をユーザーに要求するものもある。まあ、そのへんはどうしようもないので目をつぶることにする。ここまでがWin32APIのみでやる場合の話。(つづく)