●はじめに (1999/03/07 KPJ) |
今回は、システム情報を調べるためのGetSystemMetrics関数について書きたいと思います。 |
●なぜシステム情報が必要なの? |
全く同じプログラムを実行させた場合でも、パソコンによって見た目や動作が変わることがあります。 その理由は、たとえOSが同じWindowsであったとしても、それぞれのパソコンによって設定が違うからです。 パソコンによってディスプレイの解像度は簡単に変更できますし、メニューバーやスクロールバーの幅も「コントロールパネル」の画面のプロパティで変更できたりします。 このようにパソコンによってシステム情報はまちまちなので、それを調べるための関数が、Windowsでは用意されています。 |
●システム情報を返すGetSystemMetrics関数について |
GetSystemMetricsは、 int GetSystemMetrics(int nIndex) と定義されています。 nIndexに入れる引数は、調べたい情報によって異なります。これらの値はあらかじめ決められています。 例として、このソースコードを見てください。
このサンプルプログラムでは、ディスプレイの解像度を調べています。
SM_CXSCREEN:ディスプレイの解像度(幅) を調べるために使われています。 その他にnIndexに入れる引数で、よく使われると思うものを紹介しておきます。
SM_CYCAPTION:タイトルバーの高さ
|
●あとがき |
実際に、GetSystemMetrics関数はプログラムでよく利用しています。 「3Dモーフィングセーバー」では、GetSystemMetrics関数で画面の解像度を調べて、解像度によって画面の表示を制御しています。 画面の解像度を変えながら「3Dモーフィングセーバー」を起動してみるとわかるかもしれませんね。 また、「クイズ3」では、GetSystemMetrics関数でメニューバーの高さを調べています。 「クイズ3」はノートパソコンユーザであっても利用できるように開発しました。 当時、ノートパソコンの解像度は 600*480が主流であったために、「クイズ3」の画面サイズもそれを考慮しています。 ただ、システムによってメニューバーの高さが若干異なるため、調整をする必要があったわけです。
|