Udostępnij przez


Menedżer wizualizacji

Menedżer wizualizacji to obiekt, który kontroluje wygląd całej aplikacji. Działa jako pojedyncza klasa, w której można umieścić cały kod rysunku dla aplikacji. Biblioteka MFC zawiera kilka menedżerów wizualizacji. Możesz również utworzyć własny menedżer wizualizacji, jeśli chcesz utworzyć widok niestandardowy dla aplikacji. Na poniższych obrazach przedstawiono tę samą aplikację, gdy są włączone różne menedżery wizualizacji:

MyApp as rendered by CMFCVisualManagerWindows.
MyApp korzystająca z menedżera wizualizacji CMFCVisualManagerWindows

MyApp as rendered by CMFCVisualManagerVS2005.
MyApp korzystająca z menedżera wizualizacji CMFCVisualManagerVS2005

MyApp as rendered by CMFCVisualManagerOfficeXP.
MyApp korzystająca z menedżera wizualizacji CMFCVisualManagerOfficeXP

MyApp as rendered by CMFCVisualManagerOffice2003.
MyApp korzystająca z menedżera wizualizacji CMFCVisualManagerOffice2003

MyApp as rendered by CMFCVisualManagerOffice2007.
MyApp korzystająca z menedżera wizualizacji CMFCVisualManagerOffice2007

Domyślnie menedżer wizualizacji obsługuje kod rysunku dla kilku elementów graficznego interfejsu użytkownika. Aby udostępnić niestandardowe elementy interfejsu użytkownika, należy zastąpić powiązane metody rysowania menedżera wizualizacji. Aby uzyskać listę tych metod, zobacz CMFCVisualManager Class (Klasa CMFCVisualManager). Metody, które można zastąpić w celu zapewnienia niestandardowego wyglądu, to wszystkie metody rozpoczynające się od OnDraw.

Aplikacja może mieć tylko jeden CMFCVisualManager obiekt. Aby uzyskać wskaźnik do menedżera wizualizacji dla aplikacji, wywołaj funkcję statyczną CMFCVisualManager::GetInstance. Ponieważ wszyscy menedżerowie wizualizacji dziedziczą z CMFCVisualManagerklasy , CMFCVisualManager::GetInstance metoda pobierze wskaźnik do odpowiedniego menedżera wizualizacji, nawet jeśli utworzysz niestandardowego menedżera wizualizacji.

Jeśli chcesz utworzyć niestandardowego menedżera wizualizacji, musisz utworzyć go z poziomu menedżera wizualizacji, który już istnieje. Domyślna klasa, z którego ma pochodzić, to CMFCVisualManager. Można jednak użyć innego menedżera wizualizacji, jeśli lepiej przypomina to, co chcesz dla aplikacji. Jeśli na przykład chcesz użyć CMFCVisualManagerOffice2007 menedżera wizualizacji, ale chcesz zmienić tylko sposób wyglądu separatorów, możesz utworzyć klasę niestandardową z klasy CMFCVisualManagerOffice2007. W tym scenariuszu należy zastąpić tylko metody separatorów rysunków.

Istnieją dwa możliwe sposoby użycia określonego menedżera wizualizacji dla aplikacji. Jednym ze sposobów jest wywołanie metody CMFCVisualManager::SetDefaultManager i przekazanie odpowiedniego menedżera wizualizacji jako parametru. W poniższym przykładzie kodu pokazano, jak używać menedżera wizualizacji CMFCVisualManagerVS2005 z tą metodą:

CMFCVisualManager::SetDefaultManager (RUNTIME_CLASS (CMFCVisualManagerVS2005));

Innym sposobem korzystania z menedżera wizualizacji w aplikacji jest ręczne utworzenie go. Aplikacja będzie następnie używać tego nowego menedżera wizualizacji dla całego renderowania. Jednak ponieważ może istnieć tylko jeden CMFCVisualManager obiekt na aplikację, przed utworzeniem nowego musisz usunąć bieżący menedżer wizualizacji. W poniższym przykładzie CMyVisualManager jest niestandardowym menedżerem wizualizacji pochodzącym z CMFCVisualManagerprogramu . Poniższa metoda spowoduje zmianę sposobu użycia menedżera wizualizacji do wyświetlania aplikacji w zależności od indeksu:

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

Zobacz też

Elementy interfejsu użytkownika
Klasa CMFCVisualManager