none
セカンダリモニタ上のダイアログをサイズ変更する操作で RRS feed

  • 質問

  • お世話になります。

    マルチディスプレイ環境で、プライマリモニタが右側になるように設定しておきます。
    ダイアログを表示し、そのダイアログから更にモーダルダイアログを表示し、このモーダルダイアログをセカンダリモニタに移動します。
    ダイアログ左下隅にカーソルを合わせるとカーソルの形状が、ダイアログ右下隅にカーソルを合わせた時の形状になってしまいます。
    実際にダイアログ左下隅をつかんでサイズ変更すると、やはり右下をつかんだような動作をします。
    この現象の回避策はないのでしょうか。
    VB.NET、C#どちらで試しても同様な動作でした。

    【環境】
    WindowsXP SP3
    Visual Studio 2005 SP2
    IE8

    ご存知の方がおりましたら教えてください。
    よろしくお願いいたします。

    2009年7月21日 10:15

すべての返信

  • 実際にダイアログ左下隅をつかんでサイズ変更すると、やはり右下をつかんだような動作をします。
    この現象の回避策はないのでしょうか。
    再現を確認しました。
    .NET Framework の Form クラスの不具合のようです。
    (具体的にはWmNCHitTestメソッドで LOWORD、HIWORD で取り出した値を short 型として扱っていないため、負数が 65xxx といった大きな正の数値として扱われる)

    回避策としては Form の派生クラスで WndProc メソッドをオーバーライドし、WM_NCHITTEST に関する処理を自分でフォローしてあげることでしょうか。
    サンプルコードを準備する余裕がないので、一旦はここまでとさせて下さい。
    (どなたかのフォローを期待)

    なお、Connect を見ると登録されているけれど、"修正しない"と一度判断されていますね…。
    .NET Framework 4.0 での挙動を見てみたいところですが、手元の環境の準備の都合もあって、まだ見れていません。
    https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=378885



    ※Visual Studio 2005 SP2 というものは存在しません。Visual Studio 2005 SP1 + .NET Framework 2.0 SP2 なら存在します。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年7月21日 15:31
    モデレータ