VB6 高DPI対応について
投稿者 らいよん  (社会人)
投稿日時
2019/9/27 16:55:06
仕事で過去に作成したVB6アプリがあるパソコンで実行するとフォーム上の線の太さや文字の大きさが他のパソコンのイメージと事なると言う連絡があり、高DPIが原因では?と予測したのですが、色々調べてSetProcessDPIAware使用すればいいのかな?と言うところまではなんとなくわかったのですが、いかんせん使い方がわからず困っております。使い方又は参考になるページ等ご存じの方がおられましたらご教示頂けないでしょうか?
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2019/9/27 19:20:35
こちらは如何でしょうか。
http://www.vbforums.com/showthread.php?816615-VB6-Tutorial-Being-DPI-Aware
http://www.vbforums.com/showthread.php?816615-VB6-Tutorial-Being-DPI-Aware
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2019/9/27 19:45:17
紹介した英語スレッドで、SetProcessDPIAware API についても言及されていますが、
> Bottom line, avoid this API.
と書かれていますね。
「結論として、このAPI(を利用すること)は避けてください。」だそうで…。
.manifest による DPI 仮想化の有効/無効、コントロールの種類ごとの注意点など、
いろいろ纏められていますが、高 DPI が原因のズレだとしたら、すべてを解決できる
“銀の弾” は存在せず、幾つかの対応策を組みあわせて対処する必要がありそうです。
とりあえず、exe のプロパティの「互換性」タブから、互換モードの指定や、
高DPI設定を試してみるのはどうでしょう。もしかしたら、問題を幾らか軽減できるかもしれません。
※互換性タブの内容は OS のバージョンによっても異なるので、
どう指定すべきかは一概には言えません。実際に試してみてください。
> Bottom line, avoid this API.
と書かれていますね。
「結論として、このAPI(を利用すること)は避けてください。」だそうで…。
.manifest による DPI 仮想化の有効/無効、コントロールの種類ごとの注意点など、
いろいろ纏められていますが、高 DPI が原因のズレだとしたら、すべてを解決できる
“銀の弾” は存在せず、幾つかの対応策を組みあわせて対処する必要がありそうです。
とりあえず、exe のプロパティの「互換性」タブから、互換モードの指定や、
高DPI設定を試してみるのはどうでしょう。もしかしたら、問題を幾らか軽減できるかもしれません。
※互換性タブの内容は OS のバージョンによっても異なるので、
どう指定すべきかは一概には言えません。実際に試してみてください。
投稿者 らいよん  (社会人)
投稿日時
2019/10/1 17:40:51
魔界の仮面弁士様
いつも回答ありがとうございます。
>とりあえず、exe のプロパティの「互換性」タブから、互換モードの指定や、
>高DPI設定を試してみるのはどうでしょう。もしかしたら、問題を幾らか軽減できるかもしれません。
高DPIの設定は試してみたのですが現象は変わりませんでした。
それと互換モードとはOSを選択する所の事ですか?これは試してみなかったです。
現象がでるパソコンが手元に無いので今度さわれる時に試してみます。
ありがとうございました。
いつも回答ありがとうございます。
>とりあえず、exe のプロパティの「互換性」タブから、互換モードの指定や、
>高DPI設定を試してみるのはどうでしょう。もしかしたら、問題を幾らか軽減できるかもしれません。
高DPIの設定は試してみたのですが現象は変わりませんでした。
それと互換モードとはOSを選択する所の事ですか?これは試してみなかったです。
現象がでるパソコンが手元に無いので今度さわれる時に試してみます。
ありがとうございました。