スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 不具合修正作業は完了 | トップページ | 時すでに遅し? »

何とかなりそうではある

昨日書いた様に、今はWindows版ソフトに対するHiDPI対応を検討中なのだが、何とかなりそうではある。もっとも、シングルモニター環境については、現行版でも対応済みなので、今回の対応については、どうでも良い、という人も多いかもしれない。

そもそも、HiDPI対応という言葉の意味が判らない人もいるかもしれないのだが、これは、Windows環境では、テキストサイズを標準の100%以外の125%だとか150%だとかに変更できるのだが、そういう設定が行われた場合に、実は、ソフト側で適切な対応が必要になるので、少なくとも作者的には、そういう対応をHiDPI対応と呼んでいる訳だ。

もっとも、Windows環境の場合、WindowsXPの頃から、テキストサイズの変更は可能だったのだが、変更すると、マトモに表示されないソフトが多かった。

このため、テキストサイズを変更してマトモに表示されないソフトが出てきたとしても、Windowsでは、テキストサイズを変更する様な奴が悪い、というのが、常識になっているので、ソフト側でも、真面目にHiDPI対応をやろうとするモノは少ない訳だ。

もっとも、上記の様な書き方をしていると、全てはソフト開発者の怠慢の様に感じられるかもしれないのだが、実際には、そうではなくて、そもそも、Windows環境では、マトモなHiDPI対応は、実質的に、不可能だった訳だ。

何故なら、Windowsアプリでは、普通は、タイトルバーやメニューがあるのだが、これらの描画は、これも普通は、ソフトではなくOSが行なっているのだが、所謂、この非クラアイント領域の描画が、複数モニターで異なるテキストサイズが設定された場合に正しく行われない訳だ。

このため、複数モニター環境で、マトモなHiDPI対応を行いたければ、タイトルバーやメニューなんかの、普通のソフトなら描画をOSに任せている領域についても、ソフト側で描画する必要があったし、作者製ソフトの多くはMFCアプリになっているのだが、MFCを使うメリットである所のダイアログ描画も、複数モニター環境でのHiDPI対応は行われていなかった訳だ。

つまり、複数モニターがある環境で、それぞれに異なるテキストサイズ、つまり、異なるDPIを設定しても、ソフトが正しく描画される様にするためには、普通なら、OSに任せているタイトルバーやメニューに加えて、MFCなんかのライブラリで描画していたダイアログについても、ソフト側で独自の処理ルーチンを作成して、表示されるモニターが変わる度に、描画し直す必要があった訳だ。

と、いう事で、Windows環境では、ソフトを複数モニターの複数DPIに対応させる為には、はっきりいってしまえば、ソフトの描画系をOSやライブラリに頼らない形で全てゼロから作り直す、というくらいの作業量が必要だった訳だ。

このため、メニューやダイアログ等は極力使わず、描画系を余程単純にしなければ、やっていられなかったので、Windows環境でのHiDPI対応というのは遅々として進まなかった訳だ。

にも関わらず、このタイミングで、作者が複数モニター環境でのHiDPI対応をやろうとし始めているのは何故なのか、というと、Windows10のCreators UpdateでHiDPI対応用の新しい仕組みが提供されたからだ。

で、作者的には、今日は、その仕組みについて、色々と試したりしてみていた訳なのだが、その結果としては、表題の様に、何とかなりそうな感触を得た訳だ。

つまり、複数モニター環境用にHiDPI対応を行う為には、それなりの作業は必要になるのだが、Creators Updateで導入された仕組みを前提にすれば、それほどの作業量は必要なくなり、かつ、従来よりも完成度の高いHiDPI対応が可能になる訳だ。

と、いう事なので、明日は、変更作業をしてみようかなあ、と、思っているのだが、長くなったので、具体的な話は明日書く事にする。

« 不具合修正作業は完了 | トップページ | 時すでに遅し? »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/65201987

この記事へのトラックバック一覧です: 何とかなりそうではある:

« 不具合修正作業は完了 | トップページ | 時すでに遅し? »

2017年8月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google