Pergunta

Eu tenho um programa de diálogo MFC no qual crio alguns controles CSTATIC e CEDIT em tempo de execução. De alguma forma, o texto nesses controles não é habilitado para o ClearType (o ClearType no Windows suaviza textos por posicionamento e coloração do sub-pixel).

No entanto, quando alguém adiciona manualmente um controle de "controle de edição" ou um "texto estático" no tempo de design a partir da caixa de ferramentas do Visual Studio, esses controles são ativados pelo ClearType.

Então, de alguma forma, os controles da caixa de ferramentas são diferentes dos controles criados em tempo de execução? Alguém sabe como ativar o ClearType para controles de texto criados em tempo de execução? Aqui está um trecho de código de uma criação de controle cSTATIC na função OnCreate da caixa de diálogo:

CRect crc; crc.SetRect(100, 10, 300, 40);
m_static.Create(_T("Personeelsnummer?"), WS_CHILD | WS_VISIBLE, crc, this, IDC_STATIC1);

O texto neste controle CSTATIC não está ativado pelo ClearType. Definir uma fonte diferente não tem efeito.

Estou perdido.

Foi útil?

Solução

Encontrei a resposta para minha própria pergunta. A falta de ClearType sobre os controles criados em tempo de execução está relacionada à fonte. Quando alguém cria um controle em tempo de execução, uma fonte padrão é usada que não é afetada pelo ClearType e deve ser substituída por uma fonte diferente.

Na minha pergunta, observei que tentei definir uma fonte diferente, no entanto, criei uma fonte em uma função local. Depois de sair da função em que a fonte foi definida, a fonte foi destruída, então eu não vi nenhuma diferença. Agora tenho uma variável de membro da classe para a fonte que é destruída apenas quando o pai ou mãe é destruído.

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