Question

J'ai une sous-classe CTabCtrl que je suis en train d'effectuer WM_PAINT remplaçant dessin personnalisé. Le seul problème est, quand je change l'onglet sélectionné, je reçois des objets laissés sur la boîte de dialogue où l'ancien code de peinture n'a pas été effacé avant que le nouveau code est peint sur le dessus. (Les commandes de l'onglet standard ont l'onglet sélectionné apparaît 2 pixels plus grands que les onglets non sélectionnés, donc lorsque vous changez de sélectionné pour non-sélectionnée, il vous reste les objets de peinture précédents).

Quelle est la meilleure façon de « repeindre » ce domaine? J'ai essayé d'obtenir le DC de contrôle parent et BitBlt'ing que sur DC de l'enfant, mais cela ne fonctionne pas parce que le parent DC contient déjà une image de ce contrôle.

Était-ce utile?

La solution

Avez-vous substituez le message WM_ERASEBACKGROUND ainsi? Vous devriez probablement faire et d'effacer la zone dans le contrôle.

Vous pouvez utiliser DrawThemeParentBackground pour dessiner l'arrière-plan (XP et plus tard) si vous ne souhaitez pas remplacer toute la logique de dessin.

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