Visualisierungs-Manager

Der visuelle Manager ist ein Objekt, das die Darstellung einer gesamten Anwendung steuert. Sie fungiert als eine einzelne Klasse, in der Sie den gesamten Zeichnungscode für Ihre Anwendung einfügen können. Die MFC-Bibliothek enthält mehrere visuelle Manager. Sie können auch einen eigenen visuellen Manager erstellen, wenn Sie eine benutzerdefinierte Ansicht für Ihre Anwendung erstellen möchten. Die folgenden Bilder zeigen die gleiche Anwendung, wenn verschiedene visuelle Manager aktiviert sind:

MyApp as rendered by CMFCVisualManagerWindows.
MyApp, die den visuellen Manager cmFCVisualManagerWindows verwendet

MyApp as rendered by CMFCVisualManagerVS2005.
MyApp, die den visuellen Manager CMFCVisualManagerVS2005 verwendet

MyApp as rendered by CMFCVisualManagerOfficeXP.
MyApp, die den visuellen Manager CMFCVisualManagerOfficeXP verwendet

MyApp as rendered by CMFCVisualManagerOffice2003.
MyApp, die den visuellen Manager CMFCVisualManagerOffice2003 verwendet

MyApp as rendered by CMFCVisualManagerOffice2007.
MyApp, die den visuellen Manager CMFCVisualManagerOffice2007 verwendet

Standardmäßig enthält der visuelle Manager den Zeichnungscode für mehrere GUI-Elemente Standard. Um benutzerdefinierte UI-Elemente bereitzustellen, müssen Sie die zugehörigen Zeichenmethoden des visuellen Managers überschreiben. Eine Liste dieser Methoden finden Sie unter CMFCVisualManager Class. Die Methoden, die Sie außer Kraft setzen können, um eine benutzerdefinierte Darstellung bereitzustellen, sind alle Methoden, mit denen Sie beginnen OnDraw.

Ihre Anwendung kann nur ein CMFCVisualManager Objekt haben. Rufen Sie zum Abrufen eines Zeigers auf den visuellen Manager für Ihre Anwendung die statische Funktion CMFCVisualManager::GetInstance auf. Da alle visuellen Manager erben CMFCVisualManager, erhält die CMFCVisualManager::GetInstance Methode einen Zeiger auf den entsprechenden visuellen Manager, auch wenn Sie einen benutzerdefinierten visuellen Manager erstellen.

Wenn Sie einen benutzerdefinierten visuellen Manager erstellen möchten, müssen Sie ihn von einem bereits vorhandenen visuellen Manager ableiten. Die Standardklasse, von der abgeleitet werden soll, ist CMFCVisualManager. Sie können jedoch einen anderen visuellen Manager verwenden, wenn es besser dem entspricht, was Sie für Ihre Anwendung wünschen. Wenn Sie z. B. den CMFCVisualManagerOffice2007 visuellen Manager verwenden möchten, aber nur ändern möchten, wie Trennzeichen aussehen, könnten Sie Ihre benutzerdefinierte Klasse von CMFCVisualManagerOffice2007. In diesem Szenario sollten Sie nur die Methoden für Zeichnungstrennzeichen überschreiben.

Es gibt zwei möglichkeiten, einen bestimmten visuellen Manager für Ihre Anwendung zu verwenden. Eine Möglichkeit besteht darin, die CMFCVisualManager::SetDefaultManager-Methode aufzurufen und den entsprechenden visuellen Manager als Parameter zu übergeben. Das folgende Codebeispiel zeigt, wie Sie den CMFCVisualManagerVS2005 visuellen Manager mit dieser Methode verwenden würden:

CMFCVisualManager::SetDefaultManager (RUNTIME_CLASS (CMFCVisualManagerVS2005));

Die andere Möglichkeit, einen visuellen Manager in Ihrer Anwendung zu verwenden, besteht darin, ihn manuell zu erstellen. Die Anwendung verwendet dann diesen neuen visuellen Manager für das gesamte Rendering. Da jedoch nur ein CMFCVisualManager Objekt pro Anwendung vorhanden sein kann, müssen Sie den aktuellen visuellen Manager löschen, bevor Sie eine neue erstellen. Im folgenden Beispiel ist ein benutzerdefinierter visueller Manager, CMyVisualManager der von CMFCVisualManager. Die folgende Methode ändert abhängig von einem Index, welcher visuelle Manager verwendet wird, um Ihre Anwendung anzuzeigen:

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();
}

Siehe auch

Benutzeroberflächenelemente
CMFCVisualManager-Klasse