記事No |
: 60 |
投稿日 |
: 2021/06/26(Sat) 13:27:03 |
投稿者 |
: ccc |
> 終了後に再起動するとウィンドウの位置がメインモニタの方に移動してしまう> とかではなくて、本体が動作中に問題が発生するんですよね。>> そのあたりは STEP_M から関係ありそうな修正をした覚えはないのですが、> STEP_M では問題ないんでしょうか。本体動作中の問題で不定期ではなく常に発生します。
ちなみにSTEP_Mでも同様でした。
追記:
STEP_K 1.05のソースをDLして調査してみたところSuperGridCtrl.cppの
2978、3028行目(自動スクロール処理用とコメント有り)のSetiTimer関数が
原因と判明しましたので、ひとまずコメントアウトにて対処しました。
マルチモニタ環境でないということで確認や修正は難しいと存じますが
参考までにご報告いたします。
追記2:
調査を続けたところ、SuperGridCtrl.cppの1375行目で右スクロールの
判定条件に用いられているpClient.xがマルチモニタ環境だと想定外の
大きな値となるのが根本的な原因と判明しました。
追記3:(長々とすみません、最後のご報告です。)
GetMessagePosで取得する値が環境によっては負の値となるのですが
LOWORD、HIWORDは符号なしとして扱うため問題が起きていたようです。
下記のようにGET_X_LPARAM、GET_Y_LPARAMに変更したところ
他に影響を与えることなく解決できました。
特に問題なければ次のバージョンで取り込んでいただけると幸いです。
・SuperGridCtrl.cpp 1350行目
CPoint pClient(LOWORD(dwPos),HIWORD(dwPos));
↓
CPoint pClient(GET_X_LPARAM(dwPos), GET_Y_LPARAM(dwPos));
・MSの参考ページ
https://docs.microsoft.com/en-us/windows-hardware/drivers/devtest/28623-unsigned-cast-of-getmessagepos-coordinates
記事編集