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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

SE

妻に勧められて、この本を呼んでみました。 SEのフシギな生態―失敗談から学ぶ成功のための30ヶ条 作者: きたみ りゅうじ 出版社/メーカー: 幻冬舎 発売日: 2005/12 メディア: 文庫 一言 …

Vectorに作者登録の申し込みをしてみた

Vectorとはフリーウェア、シェアウェアのダウンロードサイト。最近はあまり使わなくなった。もちろんフリーソフトはよく使っているんだけど、マイナーなものはあまり使わなくなってきていて、メジャーどころは …

PDFアレコレをコマンドラインから実行できるようにするための設計

PDFアレコレ起動時のパラメータを受け取って、アレコレの操作をコマンドラインから実行できるようにするプランを考えた。 これによって、UI操作なしで大量のPDFファイルに対して一括でアレコレの操作が可能 …

電子印鑑のつくり方

PDFアレコレで捺印ができるようにしたわけだけど、PDFアレコレで印鑑を作ることはできない。別途つくったpdfまたはpngをnatsuinフォルダに入れておけば、捺印時にそいつらが指定可能になる。 電 …

WinMergeで複数拡張子を対象とするファイルフィルタと簡単な行フィルタ指定をやってみた

WinMergeでファイル比較することは、SEだったらみんなやっていることと思う。でもファイルフィルタと行フィルタは使ったことがないと思う。おいらだって、何年もWinMergeを使ってきたけど、正規表 …