な〜んだぁ、やっぱり素人でした(^^;<自分[dpi値](’14/11)


VC++のプログラムの再独習で、モニターの解像度(dpi値)について不思議に思い、ここここ
で触れましたが、近年はあまり覗かなかったデバイスマネージャを覗いて自分の思い込みに
気がつきました。

私は新PCでは初めて前の同じDELLのPC(OS:Windows7)と一緒に購入した液晶モニターを
使いまわししているんですが、なんと、その5年前の液晶モニター名がそこに表示されてい
ました。詳細を見たら、接続時に自動でドライバーがインストールされたようです。

これは、同じDELLのモニターだからなのかそこは不明なんですが、とにかく、どういう形でそ
うなったのかわかりません(PCもモニターもDELL製で、かつ、使いまわしたと言っても
Windows7のときに購入した1920×1080のものであり、PC内にドライバがあって、接続時にな
んらかの信号によりそれが選択インストールされたのか、モニターからPCに情報を流したの
かは不明)けど、いずれにしろ、PCはちゃんと私の使用しているモニター情報を認識してい
るということになりますね。

それなら、GetDeviceCapsでHORZSIZE,VERTSIZEを指定したときの値がほぼ物理的に一致
するというのもうなずけますし、また、HORZRESS,VERTRESでそれぞれ1920、1080と出てき
たのもうなずけます。

しかしながら、それなら、本来、LOGPIXELSX,LOGPIXELSYに対する値は、

 LOGPIXELSX[dpi]=25.4*HORZSIZE[mm]/HORTRES
 LOGPIXELSY[dpi]=25.4*VERTSIZE[mm]/VERTRES

となって、私の環境の場合、既に書いてきたように102となるのが論理的なのに、ともに公式
的数値の96[dpi]となるのが解せません。この"96"という値、Windows8や8.1ではもう使って
いないという私の推測は私的には未だ有効です。

戻る