2009-09-23 12 views
4

Je n'arrive pas à obtenir un CMFCButton à afficher dans le style Vista dans une application de boîte de dialogue. J'utilise VS2008 avec MFC Feature Pack.CMFCButton avec le style Vista

Voici quelques étapes pour reproduire mon problème:

  • Créer un nouveau projet MFC;
  • Spécifiez un projet basé sur un dialogue.
  • Ajouter deux boutons à la boîte de dialogue principale.
  • Ajoutez une variable pour chaque bouton. Rendre une des variables un CButton, l'autre un CMFCButton.
  • Compilez et exécutez.

test app picture http://img7.imageshack.us/img7/3/testapp.png

Comme vous pouvez le voir, le CButton a le style correct mais le CMFCButton ne fonctionne pas.

Qu'est-ce qui me manque ici?

Répondre

7

Le CMFCButton a le BS_OWNERDRAW style défini par défaut - vous pouvez le supprimer dans la OnInitDialog() pour votre dialogue:

mfcButton.ModifyStyle(BS_OWNERDRAW, 0, 0); 

Toutefois, la suppression du propriétaire dessiner les résultats de style dans la plupart des méthodes de CMFCButton étant rendu inutile (par exemple SetTextColor). Vous pouvez obtenir le bouton pour rendre en utilisant le thème des fenêtres actuelles en mettant en place le gestionnaire visuel:

CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); 

Cela se fait au lieu de l'ModifyStyle ci-dessus, ce qui dans les boutons qui correspondent au style par défaut mais encore les nouvelles fonctionnalités de rendu .

+0

Merci, cela a résolu le problème. Mais est-ce que cela signifie que je n'aurai pas accès aux fonctionnalités spécifiques de CMFCButton, comme changer la couleur du texte? – djeidot

+0

Bon point - il y a un autre moyen, réponse mise à jour avec des détails. –

+0

Voilà, merci. – djeidot

Questions connexes