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 korzystająca z menedżera wizualizacji CMFCVisualManagerWindows
MyApp korzystająca z menedżera wizualizacji CMFCVisualManagerVS2005
MyApp korzystająca z menedżera wizualizacji CMFCVisualManagerOfficeXP
MyApp korzystająca z menedżera wizualizacji CMFCVisualManagerOffice2003
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 CMFCVisualManager
klasy , 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 CMFCVisualManager
programu . 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();
}