Visual studio C++, MFCの MDIでアプリを作成しています。
アプリを黒を基調とした画面にしたく、クライアントウィンドウ内に表示する
子のタイトルバーの色を変更したいのですが、方法をご教示ください。
色々とWeb上で検索しているのですが、C#、XAML のやり方は見つけたのですが、
MFCでのやり方が見つけられません。
https://learn.microsoft.com/ja-jp/windows/apps/develop/title-bar
追記
hiroki-o さんコメントありがとうございます。
・自分の環境は Windows 10 ですが、Windows 7 以上では、同様の表示ができるようにしたいです。
(無理なら Win10 以上とか限定してでもやりたいです)
・アプリを単独で黒くしたいです。
Windous の設定 → 個人設定 → 色 から、ダークモードを選ぶと、
親ウィンドウのタイトルバーだけが ダークモード になり、子のタイトルバーの色は
変更されていませんでした。
Windous の設定で選んだ色で、子のタイトルバーも同じ色になるなら
それでも良いです。
・親ウィンドウの全体的な色は 新しいプロジェクト を作成する時、
Visual スタイルと色 の設定で「Office 2007 (Black theme」 を選択すると
設定できました。
以下の情報を、「質問を編集して」追記すると、回答が得られる可能性が高まります。
・対象とするWindows(11,10,8,7,...)
・アプリをダークモード対応にしたいのか、アプリ単独で黒くしたいのか
・親ウィンドウのタイトルバーの色変更には成功しているのか
・Visual Studioのバージョン(MFCなら、あまり関係ないかもですが)
かなり大変そうですが、下記の記事にて成功しているようです。
http://kitano.plala.jp/~kitano/winfaq/9/9-1.htm
kikukiku さんありがとうございます。
サイト確認させて頂きました。 おっしゃる通り大変そうですね。
Windowsのダークモードの設定がそのまま、アプリ、子ウィンドウまで適用されるような
方法があれば、それでも良いのですが・・・。
もう少し、何か方法を募らせて頂きたいです。
Windows Vista以降ではデスクトップウィンドウマネージャーと言うものが画面の描画を管理しており、WM_NCPAINTをプログラマーの意図通りにハンドリングするのはかなり難しいです。あれに対応すればこれができないみたいにハマりますので要注意ですね。
タイトルバーに関してはWindowsのバージョンを選びますが、DwmSetWindowAttributeと言うAPIがウィンドウ毎にハンドリングできるので、MFCでのMDIの子ウィンドウに適用できる可能性があります。
[Change the color of the title bar (caption) of a win32 application - Stackoverflow]
https://stackoverflow.com/questions/39261826/change-the-color-of-the-title-bar-caption-of-a-win32-application
※興味深いご質問だったのでWM_NCPAINT含め当方でも少し試していましたが、Windows 11での検証環境が無いもので、、、

回答1件
あなたの回答
tips
プレビュー