Partager via


Gestionnaire de visualisation

Le gestionnaire visuel est un objet qui contrôle l’apparence d’une application entière. Il agit en tant que classe unique où vous pouvez placer tout le code de dessin pour votre application. La bibliothèque MFC comprend plusieurs gestionnaires visuels. Vous pouvez également créer votre propre gestionnaire visuel si vous souhaitez créer une vue personnalisée pour votre application. Les images suivantes montrent la même application lorsque différents gestionnaires visuels sont activés :

MyApp tel que rendu par CMFCVisualManagerWindows.
MyApp qui utilise le gestionnaire visuel CMFCVisualManagerWindows

MyApp comme rendu par CMFCVisualManagerVS2005.
MyApp qui utilise le gestionnaire visuel CMFCVisualManagerVS2005

MyApp tel que rendu par CMFCVisualManagerOfficeXP.
MyApp qui utilise le gestionnaire visuel CMFCVisualManagerOfficeXP

MyApp tel que rendu par CMFCVisualManagerOffice2003.
MyApp qui utilise le gestionnaire visuel CMFCVisualManagerOffice2003

MyApp tel que rendu par CMFCVisualManagerOffice2007.
MyApp qui utilise le gestionnaire visuel CMFCVisualManagerOffice2007

Par défaut, le gestionnaire de visuels gère le code de dessin pour plusieurs éléments gui. Pour fournir des éléments d’interface utilisateur personnalisés, vous devez remplacer les méthodes de dessin associées du gestionnaire visuel. Pour obtenir la liste de ces méthodes, consultez CMFCVisualManager, classe. Les méthodes que vous pouvez remplacer pour fournir une apparence personnalisée sont toutes les méthodes qui commencent par OnDraw.

Votre application ne peut avoir qu’un seul CMFCVisualManager objet. Pour obtenir un pointeur vers le gestionnaire visuel de votre application, appelez la fonction statique CMFCVisualManager ::GetInstance. Étant donné que tous les gestionnaires de visuels héritent de CMFCVisualManager, la CMFCVisualManager::GetInstance méthode obtient un pointeur vers le gestionnaire visuel approprié, même si vous créez un gestionnaire visuel personnalisé.

Si vous souhaitez créer un gestionnaire de visuels personnalisé, vous devez le dériver d’un gestionnaire visuel qui existe déjà. La classe par défaut à dériver est CMFCVisualManager. Toutefois, vous pouvez utiliser un autre gestionnaire visuel s’il ressemble mieux à ce que vous souhaitez pour votre application. Par exemple, si vous souhaitez utiliser le gestionnaire visuel, mais que vous souhaitez uniquement modifier l’apparence CMFCVisualManagerOffice2007 des séparateurs, vous pouvez dériver votre classe personnalisée de CMFCVisualManagerOffice2007. Dans ce scénario, vous devez remplacer uniquement les méthodes pour les séparateurs de dessin.

Il existe deux façons d’utiliser un gestionnaire visuel spécifique pour votre application. L’une des méthodes consiste à appeler la méthode CMFCVisualManager ::SetDefaultManager et à passer le gestionnaire visuel approprié en tant que paramètre. L’exemple de code suivant montre comment utiliser le CMFCVisualManagerVS2005 gestionnaire visuel avec cette méthode :

CMFCVisualManager::SetDefaultManager (RUNTIME_CLASS (CMFCVisualManagerVS2005));

L’autre moyen d’utiliser un gestionnaire visuel dans votre application consiste à le créer manuellement. L’application utilisera ensuite ce nouveau gestionnaire visuel pour tout le rendu. Toutefois, étant donné qu’il ne peut y avoir qu’un CMFCVisualManager seul objet par application, vous devez supprimer le gestionnaire de visuels actuel avant de en créer un nouveau. Dans l’exemple suivant, CMyVisualManager est un gestionnaire visuel personnalisé dérivé de CMFCVisualManager. La méthode suivante modifie le gestionnaire visuel utilisé pour afficher votre application, en fonction d’un index :

void CMyApp::SetSkin (int index)
{
    if (CMFCVisualManager::GetInstance() != NULL)
    {
        delete CMFCVisualManager::GetInstance();
    }

    switch (index)
    {
    case DEFAULT_STYLE:
        // The following statement creates a new CMFCVisualManager
        CMFCVisualManager::GetInstance();
        break;

    case CUSTOM_STYLE:
        new CMyVisualManager;
        break;

    default:
        CMFCVisualManager::GetInstance();
        break;
    }

    CMFCVisualManager::GetInstance()->RedrawAll();
}

Voir aussi

Éléments de l’interface utilisateur
CMFCVisualManager, classe