Pergunta

Estou tendo um problema estranho (bem, pelo menos eu encontrá-lo = estranhos)). Estou escrevendo a minha própria biblioteca GUI, que é um invólucro em torno da API do Windows (e sim, eu estou ciente de WTL e frameworks como MFC =)). No estágio atual eu tenho incapsulated controles comuns em tal maneira: por exemplo, Editar classe consiste em uma simples janela e uma janela de edição padrão acima dela (MainWindow -> GhostWindow -> EditBox). É assim que eu posso, por exemplo, mudança de uma cor de fundo de uma edição dentro de uma classe em si edit:

myedit->SetBkColor ( RGB ( 0, 0, 0 ) );

E funcionou bem, até que eu chamei InitCommonControlsEx e anexado arquivo de manifesto para meu programa. Após fazer isso, as minhas edições tornam-se capazes de mudar as cores apenas quando têm foco. Para ser honesto, eu não tenho um pensamento abrangentes sobre por que se comportam como este e o que estou fazendo de errado, então eu aprecio qualquer ajuda.

Obrigado, # 535.

Foi útil?

Solução 2

Bem, tudo é muito mais fácil do que eu pensava. Eu estava apenas = muito desatento (Quando um não usar styling, uma cana de uso :: SetBkColor (...) a cor mudança de fundo, e retornar uma escova de WM_CTLCOLOR * para mudar a cor da borda. As coisas se tornam diferente depois de ativar styling . Agora :: SetBkColor (...) correspondem a focagem cor e escova de retornar muda de cor de fundo. Shame on me = (

Outras dicas

  1. Quando você anexa a versão 6 manifesto, a chamada para InitCommonControlsEx torna-se desnecessário.

  2. De qualquer forma. Com a versão 6 controles comuns carregado, XP theming é usado até mesmo para os controles padrão do Windows. As cores de fundo para os controles são pintadas usando a cor xp-tema, de modo que o WM_CTLCOLOR * mensagens são usadas menos.

  3. Você está substituindo o coolor de vários elementos de controle usando o WM_CTLCOLOR * mensagens?

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