標準の MFC メイン メニューを持つ既存の MFC アプリケーションでメニューを取得しました。
しかし、アプリケーションの残りの部分にシームレスに属しているように見えるように、背景色を変更したいと思います。
最初の写真: MFC のメイン メニュー。ツールバーに表示されているように、アプリケーションは青くスキンされていますが、メニューは標準のグレーの背景色のままです。
2 番目の写真: Spotifyのメニュー。残りの色に合わせてスキンが変更されています。
同様の例は見つかりませんでした。これを達成する方法を教えてください。
私が考えたアプローチ:
CMenu を独自の SkinnedMenu にサブクラス化しますが、これはコードによって作成されたのではなく
GetMenu()
、CFrameWnd
. ここで見つけることができる唯一のものは、で定義されているそのメソッド シグネチャafxwin.h
です。メニュー全体を削除し、独自のカスタム メニュー ボタンを連続して追加して、メニューのように見せます。おそらく、これは Spotify が行ったことであり、Windows のウィンドウ フレームも削除されています。
何らかの方法で既存の CMenu を編集していますが、現在見つけられる唯一のカスタマイズは、その
MENUINFO
. たとえばinfo.hbrBack = skin.GetSysColorBrush(COLOR_MENU)
、変更する唯一の色をドロップダウンの背景に設定すると、メイン メニュー自体ではありません。他の :)