質問
SetSysColorsを使用して、なし単一プロセスのプレーンWin32メニュー(背景、テキスト、およびハイライト)で使用される色を変更する方法はありますか?
(SetSysColorsはグローバルな変更を行いますが、これは悪いことです。クラッシュするか、終了する前にSetSysColorsで色を元に戻すのを忘れると、ログアウトするまで復元されません。)
解決
Robへのコメントを信じるなら、それは特別なルックアンドフィールを備えたスキンアプリケーションです。だから行く方法はおそらく、フェレックが所有者が描いたメニューを使用することを(非友好的な方法で...)指摘しているように、おそらくあなたはそれらの外観を正確に定義することができるでしょう。
他のヒント
SetMenuInfo()APIはあなたの友達です。ブラシを適用してメニューの背景をペイントできます。
これらの線に沿って何かが問題を解決するはずです:
MENUINFO mi = { 0 };
mi.cbSize = sizeof(mi);
mi.fMask = MIM_BACKGROUND|MIM_APPLYTOSUBMENUS;
mi.hbrBack = hBrush;
HMENU hMenu = ::GetMenu(hWnd);
SetMenuInfo(hMenu, &mi);
質問する必要があるのはなぜですか?通常のWindowsのルックアンドフィールを採用するのは良いことです。つまり、ユーザーはユーザーインターフェースに一貫した要素があり、プラットフォームの他のソフトウェアを使用してエクスペリエンスをマッピングできることに自信を持つことができます。
[もちろん、私は改宗者に説教しているが、この答えを読んだ人がすべてのメニューを空色ピンクに見せ始めないように、私はポイントを作りたいと思った。かなり。]
所属していません StackOverflow