2009-04-22 9 views
1

J'ai une application ATL avec une boîte de dialogue contenant un contrôle TAB. L'application utilise un manifeste de contrôles commun.Arrière-plan de contrôle TAB dans l'application ATL, styles XP

Sous XP avec des styles visuels, l'arrière-plan de contrôle des onglets est d'une couleur différente de celle de la boîte de dialogue et des contrôles (pour la plupart des cases à cocher), donc il est plutôt moche.

Screenshot

Comment puis-je résoudre ce problème?

Répondre

0

Here vous pourriez trouver réponse à votre question.

+0

Pas parfait mais fait son travail - merci! – peterchen

0

Les cases à cocher afficheront les notifications WM_CTLCOLORBTN à leur parent. Si, pour les ID de contrôle de case à cocher, le gestionnaire de messages de la fenêtre parent renvoie le résultat de

GetStockObject(HOLLOW_BRUSH) 

alors les cases à cocher doivent être dessinés avec un fond transparent, ce qui devrait vous donner le look que vous voulez.

5

Il y a - apparemment - une chose à faire pour obtenir des pages de contrôle de tabulation colorées correctement en utilisant les styles visuels XP.

Dans le gestionnaire WM_INITDIALOG pour chaque page, appelez l'API uxtheme EnableThemeDialogTexture

Avec le drapeau ETDT_ENABLETAB cela change automatiquement la couleur de fond de la boîte de dialogue et tous ses contrôles enfants à peindre de façon appropriée sur un onglet.

Les pages de dialogue n'ont pas besoin d'un type d'indicateur transparent ou d'un bit de style différent de celui précédemment défini. Si vous avez écrasé WM_ERASEBKGND ou WM_CTLCOLORDLG dans vos pages DialogProc, vous devrez revenir à la gestion par défaut (retourner FALSE).