Pergunta

Existe uma maneira de mudar as cores usadas pelos menus Win32 simples (fundo, texto e destaque) para um único processo, sem usando SetSysColors?

(SetSysColors faz uma mudança global, o que é ruim, e se você falhar ou se esqueça de definir as cores de volta com SetSysColors novamente antes de sair, eles não serão restauradas até que você sair.)

Foi útil?

Solução

Se eu acredito que o seu comentário para Rob, é para uma aplicação de pele clara, com olhar especial e sensação. Então, o caminho a percorrer é, provavelmente, de fato, como pontos ferek fora (de forma hostil ...) para usar menus desenhados pelo proprietário:. Você será capaz de definir com precisão a sua aparência

Outras dicas

O SetMenuInfo () API é seu amigo. Ele permite que você aplicar qualquer pincel para pintar o fundo do seu menu.

Algo ao longo destas linhas deve resolver o seu problema:

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

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

Eu tenho que perguntar, por quê? Adotando as do Windows regulares look-and-feel é bom; isso significa que os usuários podem ter a certeza de que existem elementos consistentes em sua interface de usuário, no qual eles podem mapear sua experiência usando outros softwares para a plataforma.

[Eu provavelmente estou pregando para os convertidos, é claro, mas eu pensei que eu ia fazer o ponto para que qualquer pessoa que lê uma resposta para isso não começar a fazer todos os seus menus céu-azul-de-rosa porque parece bonita.]

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top