Question

Existe-t-il un moyen de modifier les couleurs utilisées par les menus Win32 standard (arrière-plan, texte et surbrillance) pour un processus unique, sans utiliser SetSysColors?

(SetSysColors effectue une modification globale, ce qui est mauvais. Si vous tombez en panne ou si vous oubliez de redéfinir les couleurs avec SetSysColors avant de quitter, elles ne seront pas restaurées tant que vous ne vous serez pas déconnecté.)

Était-ce utile?

La solution

Si je crois votre commentaire à Rob, il s’agit d’une application écorchée, à l’aspect particulier. Donc, comme le souligne ferek (de manière peu conviviale ...), il est probablement préférable de faire appel à des menus créés par le propriétaire: vous pourrez définir précisément leur apparence.

Autres conseils

L’API SetMenuInfo () est votre ami. Il vous permet d’appliquer n’importe quel pinceau pour peindre le fond de votre menu.

Quelque chose dans ce sens devrait résoudre votre problème:

MENUINFO mi = { 0 }; 
mi.cbSize = sizeof(mi); 
mi.fMask = MIM_BACKGROUND|MIM_APPLYTOSUBMENUS; 
mi.hbrBack = hBrush; 

HMENU hMenu = ::GetMenu(hWnd); 
SetMenuInfo(hMenu, &mi); 

Je dois demander pourquoi? Adopter l'apparence normale de Windows est une bonne chose. cela signifie que les utilisateurs peuvent être sûrs que votre interface utilisateur contient des éléments cohérents sur lesquels ils peuvent mapper leur expérience en utilisant un autre logiciel pour la plate-forme.

[Je suis probablement en train de prêcher aux convertis, bien sûr, mais j'ai pensé que je ferais comprendre ce point afin que quiconque lit une réponse à cette question ne commence pas à créer tous ses menus bleu ciel-rose, car il semble jolie.]

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top