Amministratore di visualizzazione
Il gestore visualizzazione è un oggetto che controlla l'aspetto dell'intera applicazione.Funge da una singola classe in cui è possibile inserire tutto il codice di disegno per l'applicazione.La libreria MFC include diversi gestori visualizzazione.È inoltre possibile creare un gestore visualizzazione se si desidera creare una visualizzazione personalizzata per l'applicazione.Le immagini seguenti mostrano la stessa applicazione quando i gestori visualizzazione differenti sono abilitati:
MyApp che utilizza il gestore visualizzazione di CMFCVisualManagerWindows
MyApp che utilizza il gestore visualizzazione CMFCVisualManagerVS2005
MyApp che utilizza il gestore visualizzazione di CMFCVisualManagerOfficeXP
MyApp che utilizza il gestore visualizzazione CMFCVisualManagerOffice2003
MyApp che utilizza il gestore visualizzazione CMFCVisualManagerOffice2007
Per impostazione predefinita, il gestore visualizzazione gestisce il codice di disegno per diversi elementi di interfaccia utente grafica.Per specificare gli elementi dell'interfaccia utente personalizzati, è necessario eseguire l'override dei metodi correlati di disegno del gestore visualizzazione.Per l'elenco di questi metodi, vedere Classe CMFCVisualManager.I metodi che è possibile sottoporre a override per fornire un aspetto personalizzato sono tutti i metodi che iniziano con OnDraw.
L'applicazione può avere un solo oggetto di CMFCVisualManager .Per ottenere un puntatore al gestore visualizzazione per l'applicazione, chiamare la funzione statica CMFCVisualManager::GetInstance.Poiché tutti i gestori visualizzazione ereditano da CMFCVisualManager, il metodo di CMFCVisualManager::GetInstance ottiene un puntatore al gestore visualizzazione appropriato, anche se si crea un gestore visualizzazione personalizzato.
Se si desidera creare un gestore visualizzazione personalizzato, è necessario derivarlo da un gestore visualizzazione già esistente.La classe predefinita da derivare da è CMFCVisualManager.Tuttavia, è possibile utilizzare un gestore visualizzazione diversa se è meglio agli elementi desiderati per l'applicazione.Ad esempio, se si desidera utilizzare il gestore visualizzazione di CMFCVisualManagerOffice2007 , ma desiderato per modificare solo l'aspetto dei separatori, è possibile derivare la classe personalizzata da CMFCVisualManagerOffice2007.In questo scenario, è necessario sovrascrivere solo i metodi per tracciare i separatori.
Esistono due possibili modi per utilizzare un gestore visualizzazione specifico per l'applicazione.Un modo consiste nel chiamare il metodo di CMFCVisualManager::SetDefaultManager e di passare il gestore visualizzazione appropriato come parametro.Nell'esempio di codice seguente viene illustrato come utilizzare il gestore visualizzazione di CMFCVisualManagerVS2005 con questo metodo:
CMFCVisualManager::SetDefaultManager (RUNTIME_CLASS (CMFCVisualManagerVS2005));
L'altro modo di utilizzare un gestore visualizzazione nell'applicazione è di crearlo manualmente.L'applicazione viene quindi utilizzerà questo nuovo gestore visualizzazione per tutto il rendering.Tuttavia, poiché può esistere un solo oggetto di CMFCVisualManager per applicazione, è necessario eliminare il gestore visualizzazione corrente prima di creare un nuovo oggetto.Nell'esempio seguente, CMyVisualManager è un gestore visualizzazione personalizzato derivato da CMFCVisualManager.Il metodo seguente modificherà il gestore visualizzazione viene utilizzato per visualizzare l'applicazione, come un indice:
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();
}