0

標準の MFC メイン メニューを持つ既存の MFC アプリケーションでメニューを取得しました。

しかし、アプリケーションの残りの部分にシームレスに属しているように見えるように、背景色を変更したいと思います。

  • 最初の写真: MFC のメイン メニュー。ツールバーに表示されているように、アプリケーションは青くスキンされていますが、メニューは標準のグレーの背景色のままです。

  • 2 番目の写真: Spotifyのメニュー。残りの色に合わせてスキンが変更されています。

メニュー

同様の例は見つかりませんでした。これを達成する方法を教えてください。

私が考えたアプローチ:

  1. CMenu を独自の SkinnedMenu にサブクラス化しますが、これはコードによって作成されたのではなくGetMenu()CFrameWnd. ここで見つけることができる唯一のものは、で定義されているそのメソッド シグネチャafxwin.hです。

  2. メニュー全体を削除し、独自のカスタム メニュー ボタンを連続して追加して、メニューのように見せます。おそらく、これは Spotify が行ったことであり、Windows のウィンドウ フレームも削除されています。

  3. 何らかの方法で既存の CMenu を編集していますが、現在見つけられる唯一のカスタマイズは、そのMENUINFO. たとえばinfo.hbrBack = skin.GetSysColorBrush(COLOR_MENU)、変更する唯一の色をドロップダウンの背景に設定すると、メイン メニュー自体ではありません。

  4. 他の :)

4

0 に答える 0