フォルダ,メール一覧,メッセージのウィNo.13523
やなぎ さん 25/06/04 18:00
 
Windows 11 Pro (24H2) で 秀丸メール Ver. 7.39 (64bit版)を使用しています。

秀丸メールのフォルダやメール,メッセージペインを区切っている「枠」(スプリッ
ター)をドラッグすると,画面上で秀丸メールの枠の左方向の約1900ピクセル程度の
あたりに,スプリッターと同じ大きさの黒い線がゴミとして描画されるようです。

Shiftキーを押しながらスプリッターをドラッグするとこのゴミは描画されません。

また,マルチディスプレイ環境で左右に拡張して使っているときも,右側ディスプレ
イで秀丸メールを上記のように操作すると,ディスプレイを超えて左側のディスプレ
イまで影響します。

黒いゴミが描かれた後,他のウィンドウを動かすなどすると,黒いゴミは消えます。

また,Snipping Toolで黒いゴミをキャプチャしようとしましたが,Snipping Toolが
キャプチャモード(画面全体がやや暗くなる)になった際に,黒いゴミは消えてしま
います。

使用しているグラフィックボードは,NVIDIA Quadro P620, ディスプレイドライバは,
2025/05/12のVer.32.0.15.7324です。
PC本体は,Dell Optiplex 7010 (スモールフォームファクタ)で,PCに元々ついてい
るHDMI,DisplayPortには何も繋げず,上記のフラフィックボードにディスプレイを2
台つないでいます。

特に実害があるわけではないのですが,気になるので報告します。

よろしくお願いいたします。

[ ]
RE:13523 フォルダ,メール一覧,メッセーNo.13524
秀まるお2 さん 25/06/04 19:03
 
こちらで同じグラフィックボードでのテストはできないんですが、たぶんディスプレ
イドライバー側の問題なんだろうと思います。

一応、秀丸メールではドラッグ中の線はウィンドウの中にのみ描画していて、ウィン
ドウの外に線が描画されるのは仕組み的におかしいです。なのでWindows側かドライ
バー側の問題なんだろうと思います。

僕パソコン(IntelのCPU内蔵グラフィック)では再現しないようでした。

対処は無理だと思うので、一応、今後のサポートの参考情報とさせていただきます。

[ ]
RE:13524 フォルダ,メール一覧,メッセーNo.13525
秀まるお2 さん 25/06/05 08:39
 
テストしてたらメール内容枠タイトルバーをドラッグした後にメール内容枠の中に枠
線のゴミが残るケースを見つけてしまいました。これはこれで修正させていただきま
す。


[ ]
RE:13524 フォルダ,メール一覧,メッセーNo.13526
やなぎ さん 25/06/05 13:37
 
>僕パソコン(IntelのCPU内蔵グラフィック)では再現しないようでした。

問題のPCで,グラフィックボードを引っこ抜いて内蔵グラフィックに切り替えて同じ
ことをしたら,ゴミは表示されませんでした。

お騒がせしました。ありがとうございました。

[ ]
RE:13526 フォルダ,メール一覧,メッセーNo.13527
秀まるお2 さん 25/06/05 15:11
 
枠のドラッグ終了後に画面全体を再描画させればいいんだろうと思うので、一応、そ
ういう処理を入れてみます。

画面全体を再描画させる方法はChatGPTに聞いてみてやり方が出てきたんですが、そ
れではうまくいかず、自分なりに改良してうまく動くように出来たかなぁと思います。
次のβ版(Version 7.40β1)を今日アップロードするので、もし良かったらお試し
お願いします。


void RedrawDesktop() {
    SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, NULL, SPIF_UPDATEINIFILE |
 SPIF_SENDCHANGE);
    HWND    hwndDesktop = GetDesktopWindow();
    RedrawWindow( hwndDesktop, NULL, NULL, RDW_INVALIDATE | RDW_ERASE);
    HWND    hwndFind = GetWindow( hwndDesktop, GW_CHILD );
    while( hwndFind != NULL ) {
        RedrawWindow( hwndFind, NULL, NULL, RDW_INVALIDATE | RDW_ERASE | RDW
_ALLCHILDREN);
        hwndFind = GetWindow( hwndFind, GW_HWNDNEXT );
    }
}

[ ]