none
WindowsVistaにリモートデスクトップ接続してDPI設定を変更すると再起動後の設定値がおかしい RRS feed

  • 質問

  • お世話になります。
    こちらには初めて投稿いたします。

    WindowsXP Pro、VC++2005 Std、MFCを使用してダイアログのアプリを作成ています。
    作成したアプリをWindowsVista上で動作させた時に、ダイアログ上に配置した部品の位置が、期待した場所に配置されない現象が発生しました。
    この現象は、次の操作を行なうと発生するのですが、これは、WindowsVistaのバグなのか。また、バグだった場合に今後改善されるものなのか教えて
    いただきたいです。

    現象が出る手順は
    1.WindowsVistaのDPI設定を96DPIにしておきます。
    2.WindowsVistaに上記アプリをインストールします。インストールしたアプリを起動して、ダイアログが期待通りに表示していることを確認します。
    3.DPI設定を96DPI以外に設定して再起動します。
    4.WindowsXP Proからリモートデスクトップ接続を使用して、アプリをインストールしたWindowsVistaに接続します。
    5.リモートデスクトップ接続からWindowsVistaのDPI設定を96DPIに設定してWindowsVistaを再起動します。
    6.再起動後、インストールしてあったアプリを起動します。
      この時にアプリのダイアログ内の部品が期待した場所に表示されていません。

    アプリとしては、
    表示する条件によってダイアログのサイズを変更するため、GetWindowRect()を使用して画面のサイズを取得し、“right”の値だけ変更しています。
    実際の期待通りに表示出来るときと、そうでない時の変更前の取得データは
    期待値 left = 0, top = 0, right = 596, bottom = 371
    だめ値 left = 0, top = 0, right = 497, bottom = 345

    bottomの値も小さくなっているので、ダイアログ上の部品配置がおかしく見えているのだと思いますが、ダイアログに表示している文字サイズも
    大きくなっているみたいです。WindowsVistaの端末の前でDPI設定を変更した時はこの現象は発生しないので、リモートデスクトップ接続をして
    DPI設定を変更すると、フォントなどの設定値が一部残ってしまっているようなのです。

    どなたか、同じような現象に遭遇した方、またその対処法など教えていただければ幸いです。
    2009年2月19日 6:33

すべての返信

  • 環境がないこと、すぐに用意できないことから、再現試験等はできていません。あしからずご了承下さい。

    はるぱぱ さん の発言:

    WindowsXP Pro、VC++2005 Std、MFCを使用してダイアログのアプリを作成ています。
    作成したアプリをWindowsVista上で動作させた時に、ダイアログ上に配置した部品の位置が、期待した場所に配置されない現象が発生しました。
    この現象は、次の操作を行なうと発生するのですが、これは、WindowsVistaのバグなのか。また、バグだった場合に今後改善されるものなのか教えて
    いただきたいです。

    ちょっと急ぎすぎです。

    まず、自作のアプリだけで起きるのか、一般的な問題(OSの不具合あるいは仕様)かを切り分けて下さい。
    一般的な問題であっても、それはちゃんとした対策を打てば何とかなる仕様・不具合なのか、何ともならない仕様なのか、単に不具合なのか情報を集めるべきでしょう。


    以下は、今回の話に限らず、一般論として書きます。

    例え不具合であったとしても、MSDNフォーラムで修正予定について回答はされません。
    ここはサポートではありませんので、情報を交換する場所とお考え下さい。
    (Microsoft社員による発言は個人レベルに留まり、Microsoftの法人としての見解にはなりません)

    情報収集や意見交換によって、不具合だと断定できたのであれば、有償サポートに問い合わせましょう。
    サポートレベルによるのかもしれませんが、Private Hotfix等の可能性も出ます。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年2月19日 14:18
    モデレータ
  • Azulean様

    ご指導いただきありがとうございます。

    すみません。あせり過ぎていました。あと、このフォーラムについても認識が間違っていました。

    比較できるアプリを探さなければならないのですが、考えてみると現象が発生している自作アプリで
    「DPI設定の変更を考慮していない」
    ということが、問題なのかもしれません。

    切り分けを行なったあと、その情報を載せたいと思います。
    2009年2月20日 0:02
  • もしかすると、Windows Vista から導入された DPI Virtualization の機能が正しく動作していないのかもしれませんね。
    詳しくは Windwos 7 のコンテンツしか見当たらないですが、下記をご覧ください。
    http://download.microsoft.com/download/5/E/6/5E66B27B-988B-4F50-AF3A-C2FF1E62180F/GRA-T582_WH08.pptx

    実行する EXE を右クリックすると互換性タブがあると思います。その中に [高 DPI 設定では画面のスケーリングを無効にする] (英語では、[Disable display scaling on high DPI settings])

    があると思うので、これにチェックを入れて実行してみてはどうでしょう ?

    Forum operator in Microsoft KK
    2009年2月24日 6:43
  •  鹿島様

    返事が遅くなって申し訳ありません。

    実行する EXE を右クリックすると互換性タブがあると思います。その中に [高 DPI 設定では画面のスケーリングを無効にする] (英語では、[Disable display scaling on high DPI settings])

    があると思うので、これにチェックを入れて実行してみてはどうでしょう ?



    チェックを入れて実行したのですが、状況は変わりませんでした。

    また、フリーソフトですが、ダイアログを使用しているソフトを2本試してみたのですが、こちらは現象が発生しませんでした。

    画面構築方法を再度勉強しなおしてトライしてみたいと思います。
    それでもわからないときは、また投稿させていただきます。
    ありがとうございました。
    2009年3月1日 23:38