2017-08-09 16 views
0

J'ai créé une application MDI basée sur le framework MFC mais le style de CMFCTabCtrl ne répond pas à nos exigences. Je veux changer la hauteur des onglets, les couleurs et ajouter quelques images et boutons.Comment personnaliser MFC MDI CMFCTabCtrl

Mais je ne sais pas comment. Y a-t-il des exemples ou des articles qui m'aideront?

Répondre

2

Vous pouvez facilement personnaliser votre contrôle onglet MFC. Il y a plein d'options.

Pour activer Fermer boutons vous avez juste besoin d'appeler m_TabControl.EnableActiveTabCloseButton();

Assurez-vous d'ajouter un gestionnaire de messages WM_CLOSE dans la fenêtre de votre enfant:

void CMyTabWindow::OnClose() 
{ 
    CMFCTabCtrl *pTab = static_cast<CMFCTabCtrl*>(GetParent()); 
    pTab->RemoveTab(pTab->GetActiveTab()); 
} 

Vous pouvez personnaliser les couleurs en utilisant SetTabBkColor() ou SetAutoColors(). Vous pouvez également définir des images à l'aide de SetImageList(). La hauteur peut également être personnalisée en utilisant le SetTabsHeight().

+0

Merci pour votre réponse. Je trouve que ces méthodes sont basées sur le style de cadre d'application MDI. Est-il possible de personnaliser le contrôle de tabulation sans tous les styles? Je veux personnaliser le contrôle de tabulation comme dessiner des rectangles par GDI dans la méthode OnDraw. Mais je ne peux pas écraser le message WM_DRAWITEM dans ma classe d'image enfant. J'ai été créé mon propre contrôle de tabulation dérivé de la classe de contrôle de tabulation standard. et mettez-le sur le dessus sur le client MDI. répondre au message WM_LBUTTONDOWN pour activer les vues. Mais ce n'est pas la méthode que je veux utiliser. –

+0

Si vous voulez une solution complète de dessin du propriétaire, vous devrez ré-implémenter le contrôle entier. Et vous devrez également créer votre propre cadre MDI. Je ne recommanderais pas de le faire. Les normes MS UI ont été développées par des concepteurs professionnels et ont été testées par de nombreux utilisateurs. –