Správce vizualizace
Správce vizuálů je objekt, který řídí vzhled celé aplikace. Funguje jako jedna třída, kde můžete vložit veškerý kód výkresu pro vaši aplikaci. Knihovna MFC obsahuje několik vizuálních manažerů. Pokud chcete vytvořit vlastní zobrazení pro vaši aplikaci, můžete také vytvořit vlastního správce vizuálů. Následující obrázky ukazují stejnou aplikaci, když jsou povoleni různí správci vizuálů:
MyApp, která používá správce vizuálu CMFCVisualManagerWindows
MyApp, která používá správce vizuálů CMFCVisualManagerVS2005
MyApp, který používá správce vizuálu CMFCVisualManagerOfficeXP
MyApp, který používá správce vizuálů CMFCVisualManagerOffice2003
MyApp, který používá správce vizuálu CMFCVisualManagerOffice2007
Ve výchozím nastavení správce vizuálů udržuje kód výkresu pro několik prvků grafického uživatelského rozhraní. Pokud chcete poskytnout vlastní prvky uživatelského rozhraní, musíte přepsat související metody kreslení správce vizuálů. Seznam těchto metod naleznete v tématu CMFCVisualManager – třída. Metody, které můžete přepsat tak, aby poskytovaly vlastní vzhled, jsou všechny metody, které začínají OnDraw
.
Aplikace může mít pouze jeden CMFCVisualManager
objekt. Pokud chcete získat ukazatel na správce vizuálů pro vaši aplikaci, zavolejte statickou funkci CMFCVisualManager::GetInstance. Vzhledem k tomu, že všichni správci vizuálů dědí z CMFCVisualManager
, CMFCVisualManager::GetInstance
metoda získá ukazatel na příslušného správce vizuálů, i když vytvoříte vlastního správce vizuálů.
Pokud chcete vytvořit vlastního správce vizuálů, musíte ho odvodit z správce vizuálů, který již existuje. Výchozí třída, ze které má být odvozena, je CMFCVisualManager
. Pokud se ale bude lépe podobat tomu, co chcete pro svou aplikaci, můžete použít jiný správce vizuálů. Například pokud jste chtěli použít správce vizuálů CMFCVisualManagerOffice2007
, ale chtěli změnit pouze vzhled oddělovačů, mohli byste odvodit vlastní třídu z CMFCVisualManagerOffice2007
. V tomto scénáři byste měli přepsat pouze metody pro oddělovače výkresu.
Existují dva možné způsoby použití konkrétního správce vizuálů pro vaši aplikaci. Jedním ze způsobů je volat CMFCVisualManager::SetDefaultManager metoda a předat příslušného vizuálního manažera jako parametr. Následující příklad kódu ukazuje, jak byste použili správce vizuálů CMFCVisualManagerVS2005
s touto metodou:
CMFCVisualManager::SetDefaultManager (RUNTIME_CLASS (CMFCVisualManagerVS2005));
Dalším způsobem, jak ve své aplikaci použít správce vizuálů, je vytvořit ho ručně. Aplikace pak použije tento nový správce vizuálů pro veškeré vykreslování. Vzhledem k tomu, že pro každou aplikaci může existovat pouze jeden CMFCVisualManager
objekt, budete muset před vytvořením nového objektu odstranit aktuálního správce vizuálů. V následujícím příkladu CMyVisualManager
je vlastní správce vizuálů odvozený z CMFCVisualManager
. Následující metoda změní, jaký správce vizuálů se používá k zobrazení aplikace v závislosti na indexu:
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();
}