Descubra quais cores estão em uso ao usar o MFC Feature pack no estilo Office 2007

StackOverflow https://stackoverflow.com/questions/8761

  •  08-06-2019
  •  | 
  •  

Pergunta

Estou atualizando alguns de nossos códigos C++ legados para usar o "pacote de recursos MFC" que a Microsoft lançou para o Visual Studio 2008.Usamos as novas classes para derivar nosso aplicativo de CFrameWndEx e estamos aplicando os estilos do Office 2007 para dar ao nosso aplicativo uma aparência mais moderna.Isso nos dá títulos de janelas preenchidos com gradiente, barras de status, etc., e o uso das barras de ferramentas da faixa de opções.

No entanto, nosso aplicativo contém alguns controles desenhados pelo proprietário e gostaria de atualizá-los para corresponder ao esquema de cores usado pelo feature pack.Idealmente, gostaria de saber as cores claras e sombreadas da barra de ferramentas que estão em uso atualmente.

Pesquisei na documentação e na web e ainda não encontrei nada.Alguém sabe como descobrir essa informação?

[Editar]

Em particular, precisamos descobrir quais cores estão sendo usadas em tempo de execução.Você pode alterar a aparência do seu aplicativo em tempo de execução usando a nova função estática CMFCVisualManager::SetDefaultManager.

A página msdn a seguir mostra que tipos de estilos estão disponíveis, em particular a aparência do Office2007:link para msdn

Foi útil?

Solução

Você já olhou no código-fonte do MFC, que encontrará em algo como

C:\Arquivos de programas\Microsoft Visual Studio 9.0\VC\atlmfc\src\mfc

Outras dicas

Parece que CMFCVisualManager oferece vários métodos para obter informações de cores, por exemplo.

CmfcVisualManager :: getSmartDockingBaseguidecolors () cmfcVisualManager :: getToolbarHighlightColor ()

Dê uma olhada na documentação do MSDN para CMFCVisualManager.

Boa sugestão, mas infelizmente eles apenas retornam vários tons de cinza, quando atualmente estou executando minha aplicação com o estilo CMFCVisualManagerOffice2007::Office2007_LunaBlue

Irritantemente, a ajuda do MSDN está "em construção", então nem sequer diz o que eles deveriam estar fazendo!

afxGlobalData contém algumas informações úteis sobre as cores, pincéis e fontes atuais usadas pelo MFC Feature Pack.Em particular eu uso afxGlobalData.m_clrBarFace ao pintar meus próprios planos de fundo da barra de controle.

(observe que não estou na frente do meu PC de trabalho, portanto a sintaxe acima não está correta.)

Acho que você poderia usar seu editor de imagens favorito e escolher as cores em uma captura de tela.

"Acho que você poderia usar seu editor de imagens favorito e escolher as cores em uma captura de tela."

Isso é essencialmente o que estou fazendo no momento e defini uma lista de constantes das quais retiro as cores.Não parece muito elegante!

Parece que CMFCVisualManager oferece vários métodos para obter informações de cores, por exemplo.

CMFCVisualManager::GetSmartDockingBaseGuideColors()
CMFCVisualManager::GetToolbarHighlightColor()

Dê uma olhada na documentação do MSDN para CMFCVisualManager.

@GateKiller, o OP não está desenvolvendo um suplemento do Office 2007, então as diretrizes da UI não vão ajudar muito.É um aplicativo MFC usando o Pacote de recursos do Visual C++ 2008 que permite que os aplicativos MFC assumam a aparência do Office 2007.

Boa sugestão, mas infelizmente eles apenas retornam vários tons de cinza, quando atualmente estou executando minha aplicação com o estilo CMFCVisualManagerOffice2007::Office2007_LunaBlue

CMFCVisualManagerOffice2007::GetTabFrameColors - o parâmetro de saída clrFace está cinza?

Talvez sejam todas máscaras em cima de uma única tonalidade base para cada tema?Supondo que você possa determinar qual esquema de cores está em vigor com CMFCVisualManagerOffice2007::GetStyle(), talvez você possa descobrir qual é esse matiz e então fazer algumas máscaras com os métodos GetxxxColor().

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