Question

J'ai un programme de dialogue MFC dans lequel je crée quelques contrôles CStatic et CEdit lors de l'exécution. D'une certaine manière le texte de ces contrôles ne sont pas ClearType activé (ClearType dans les textes de Windows en positionnement sous-pixel et la coloration).

Cependant, lorsque l'on ajoute manuellement une « Edit Control » ou « Texte statique » contrôle au moment de la conception de la boîte à outils Visual Studio ces contrôles sont ClearType activé.

Alors en quelque sorte les contrôles de la boîte à outils sont différents des contrôles créés lors de l'exécution? Est-ce que quelqu'un sait comment activer ClearType pour les contrôles de texte créés lors de l'exécution? Voici un extrait de code d'une création de contrôle CStatic dans la fonction OnCreate de la boîte de dialogue:

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

Le texte de ce contrôle CStatic est ClearType pas activé. Définition d'une autre police n'a pas d'effet.

Je suis perdu.

Était-ce utile?

La solution

J'ai trouvé la réponse à ma propre question. Le manque ClearType sur les contrôles créés lors de l'exécution est liée police. Quand on crée un contrôle à l'exécution d'une police par défaut est utilisé qui est affectée par ClearType et devrait être remplacée par une autre police.

Dans ma question, je note que j'avais essayé d'installer une autre police, mais j'avais créé une police dans une fonction locale. Après avoir quitté la fonction dans laquelle la police a été mis la police a été détruit alors je ne vois pas de différence. J'ai maintenant une variable membre de classe pour la police qui est détruite que lorsque le CWnd parent est détruit.

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