Windows 8の「PC設定」の「簡単操作」には、「画面上のすべてのものを大きくする」という設定がある。
これがオンなのかオフなのかをアプリが知りたい場合は、SystemParametersInfoというAPIを、uiActionをSPI_GETLOGICALDPIOVERRIDEにして呼び出せばよい。(もちろん、これが機能するのは、Windows 8以降だけ。)
ところで、MSDNの、SPI_GETLOGICALDPIOVERRIDEのところを良く読むと、「この機能は、Windowsの将来のバージョンでは変更されたり、利用できなくなったりする可能性があります。代わりにGetScaleFactorForDeviceを使いましょう」などと書いてある。
Windows 8の新機能なのに、もう廃止予告か、と思うが、そんなことを言ってもしかたないので、GetScaleFactorForDeviceを調べると、なんと、こっちには、「この関数はWindows 8.1では廃止されました。代わりにGetScaleFactorForMonitorを使ってください。」と書いてある。
なんちゅうか、マイクロソフトさん、苦労してるっていうか、APIの設計に時間かけてないっていうか。なかなか厳しいものがありますね。
そういえば、思い出すのは、以前(6~7年前だと思うが)マイクロソフトのエヴァンジェリストという肩書きの某氏がおっしゃっていた言葉だ。曰く:
「マイクロソフトでは、アジャイル手法に基づくスパイラル開発を実践しています。ウィンドウズのユーザーというのは、全世界のPCユーザー全員ということになりますが、APIのユーザーという意味では、世界中のソフト開発者ということになります。つまり世界中のソフト開発者のフィードバックを常に取り込みつつ、短いサイクルで機能を変更しリリースし続けるという開発モデルです。これが、ウィンドウズがアプリ開発のプラットフォームとして成功している理由のひとつです。」
要は、Windows APIは、バンバン仕様変更するけど、君たちは、Windowsが仕様変更するのを追いかけて、せっせと自分のアプリを書き直し続けてね。それがアジャイルというものだよね、みたいな感じか?
ま、いいけどね。
最近のコメント