none
高DPI対応ソフトかどうかの判定方法について

    質問

  • 初めて投稿させていただきます。

    ディスプレイ拡大表示設定時のラバーバンド表示について、疑問点(★の部分)がありますので、
    ご存知の方、ご教授いただけると幸いです。
    #長文となりますが、ご了承ください。
     
    まず、疑問点を記載します。 
    ★:アプリケーションが高DPIに対応しているかどうかの判断方法の有無を知りたいです。

    #判定方法がある場合は、その内容を知りたいです。 
     
    以下に背景(発生した事象)を説明させていただきます。 
    Windows上でリモート操作のソフトを作ろうとしています。 
    ここでは、以下の用語を使用します。 
     操作する側:オペレーションPC
     操作される側:リモートPC 
     
    リモートPC(OS:Windows 10)上でディスプレイ表示倍率を 125% に設定した場合、 
    高DPIに対応していないソフトは、OSが自動的に拡大表示をします。 
     
    また、高DPIに対応していないソフトのウィンドウを移動する場合、ラバーバンドが表示されると思います。 
    リモートPC上のラバーバンドのサイズは、正しい(拡大表示後のサイズ)ですが、 
    オペレーションPC上で表示されるラバーバンドのサイズは、拡大表示前(100%表示時)のサイズとなってしまいます。 
     
    内部処理として、リモートPC側は、WM_MOVEメッセージをうけたとき、移動対象のウィンドウのサイズ(座標情報=lParamの情報)を 
    取得してから、そのサイズ情報をオペレーションPCに送付します。オペレーションPCは受信したサイズ情報に従い、ラバーバンドを擬似的に描画します。 
    おそらく、リモートPCがWM_MOVEメッセージをうけたとき,lParamに 100%表示時の座標情報が入っているため、今回の事象が発生したと推測しております。 

    対処案として、リモートPCで倍率の設定情報を取得し、その倍率に従い、
    ウィンドウのサイズを再計算してからのサイズ情報をオペレーションPCに送付する。と考えていました。
    結果として、高DPIに対応していないソフトなら、想定どおりの動作になりました。
    しかし、高DPIに対応しているソフトの場合、ラバーバンドのサイズがずれてしまいます。
    #高DPIに対応しているソフトは、いつも100%表示するため、上記記載の事象は発生しない。

    説明について理解できない部分がありましたら、コメントいただければと思います。

    以上です。よろしくお願いします。

    2017年5月12日 1:49

回答

すべての返信