CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

ソフト開発 Windows

デュアルモニターでツールバーをドラッグすると枠非表示で残像が出る

投稿日:

デュアルモニター環境で、MFCで作ったアプリをメインモニター側に出して、アプリのツールーバー(CToolBar)をドラッグすると、枠がメインモニター側に表示されずに、サブモニター側に枠と残像が表示されるという現象が、ここ最近出はじめた。
どうやらWindows 11 24H2のバグのようだが、MFC(Microsoft Foundation Class)という枯れた技術を使ったアプリなため、ネットで騒がれることもなく、問題視されていない。動作速度が重要視されるCAD界隈で少し話題になっており、おいらも自分とこのCADで現象が出ることを確認し、最初は自分とこだけの問題かと怪しんだが、VisualStudioのウィザードで作った簡単なアプリでも再現したので一般性のある問題だと確信できた。アプリはこんな。

ツールバーをドッキングしている分には問題ない。マウス操作でドラッグしてフローティング状態にしようとすると枠が表示されずに、ドラッグを完了させるべくマウス左ボタンをはなすと指定位置に移動されている。メインモニターではそんな挙動となるのに対して、左側にあるサブモニターで枠と残像が表示されている。つまり、メインモニターの左側にサブモニターがあると現象が顕著になるということ。1がサブモニターで、2がメインモニター。

サブモニター側の残像はこんな感じ。ドラッグ終了時に消えることもあるし、消えないこともある。アクティブウインドウ切り替えで消えるので、ずっと残っているわけでもない。

以下、実装面での考察。MFCのツールバークラスはCToolBar。ドラッグ時に中身が表示されずに枠しか出ないという動きなので、今っぽくなくて昔々から使われてきた過去の遺跡なのかもしれない。CMFCToolBarというクラスもあって、こっちであればこの問題がおきないのはわかっている。ただ、CToolBarをCMFCToolBarに置き換えるだけではダメで、親クラスのCMainFrameの継承元をCFrameWndからCFrameWndExに変えるなど、周囲を取り巻く関係クラスをごっそりと変更しなければいけないっぽい。つまり、PG実装面から回避することは容易ではないということ。

さて、この問題についてマイクロソフトさんはいつ直してくるだろうか。おいらが積極的に働きかけるつもりはない。ネットの動向を見守ろう。

-ソフト開発, Windows

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

関連記事

no image

Windows 10の内部バージョン

Windows 10 Technical Preview 9926が出たので、 早速インストールしてみた。 スタートメニューが復活して、従来のスタート画面のミニマム版が 表示されるようになったなんて、 …

秀丸マクロ第3弾は「指定した列数、レコード数でCSVファイルを作る」

秀丸マクロがおもしろいという記事を書いて以来、何か要件はないだろうかとさがしていた。 秀丸マクロがおもしろくて練習のため2つのマクロを作ってみた 「指定した列数、レコード数でCSVファイルを作る」なん …

no image

複数ファイルの名前やパスを取得するのに便利なフリーソフト

ファイル名の一覧を作りたいときに使えるものはこれだ。 NameToClipboard64 インストーラは付いていないが、以下の簡単な操作でセットアップができる。 1.zipをダウンロード後解凍して適当 …

zipcopy Ver1.02リリース

昨日に引き続きリビジョンアップを実施して、Ver1.02とした。 Ver1.02での変更点は以下の通り。 ・7zipを使わずに、DotNetZipの機能で圧縮・解凍を行えるようにした。 ・ファイル削除 …

PDFアレコレVer1.01リリース

趣味のプログラムってホント楽しくて、平日の夜中だってのに眠りを忘れて取り組んでしまった。