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

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

PDFアレコレのユーザーインターフェース改良と回転角度を追加

PDFアレコレのユーザーインターフェース改良と回転角度を追加。 Ver2.07 2020/5/4 ・プレビュー画面のメニューをツールバー形式にして整理した。 ・ページ回転について左90度と180度の回 …

PDFium第2弾はPDFを画像化するWindowsフォームアプリケーションなり

「PDFium ViewerによるPDFレンダリングがイケてる」では、最低限のWindowsフォームアプリケーションを作ったわけだが、その第2弾は普通の人(非プログラマー)でも使えるPDFの画像変換ア …

VCランタイムのバージョン

VCランタイムのバージョンは数多くあって、まずは年号の数字的な違いから明らかにしていく。 最新はこんな風に、2015・2017・2019・2022の4つのバージョンを包含した名前になっている。 Mic …

PDFiumViewerのソースコード

GitHubで公開されているPDFiumViewerのソースコードをダウンロードして、PDFiumそのものの使い勝手を調査いていたが、なかなか困難な取り組みであり、頓挫しているところ。 PDFiumV …

no image

ライセンス認証

Vistaのライセンス認証のことが頭から離れない。 会社での出来事。 30日のライセンス認証期間のうちに、ライセンス認証を行わなかったことにより、 Windowsにログオンできなくなったマシンが2台発 …