Condividi tramite


Gestione visualizzazione

Gestione oggetti visivi è un oggetto che controlla l'aspetto di un'intera applicazione. Funge da singola classe in cui è possibile inserire tutto il codice di disegno per l'applicazione. La libreria MFC include diversi gestori visivi. È anche possibile creare un gestore visivo personalizzato se si vuole creare una visualizzazione personalizzata per l'applicazione. Le immagini seguenti mostrano la stessa applicazione quando sono abilitati diversi gestori visivi:

MyApp as rendered by CMFCVisualManagerWindows.
MyApp che usa la gestione visiva CMFCVisualManagerWindows

MyApp as rendered by CMFCVisualManagerVS2005.
MyApp che usa gestione oggetti visivi CMFCVisualManagerVS2005

MyApp as rendered by CMFCVisualManagerOfficeXP.
MyApp che usa la gestione visiva CMFCVisualManagerOfficeXP

MyApp as rendered by CMFCVisualManagerOffice2003.
MyApp che usa gestione oggetti visivi CMFCVisualManagerOffice2003

MyApp as rendered by CMFCVisualManagerOffice2007.
MyApp che usa gestione oggetti visivi CMFCVisualManagerOffice2007

Per impostazione predefinita, gestione oggetti visivi mantiene il codice di disegno per diversi elementi GUI. Per fornire elementi dell'interfaccia utente personalizzati, è necessario eseguire l'override dei metodi di disegno correlati di Gestione oggetti visivi. Per l'elenco di questi metodi, vedere Classe CMFCVisualManager. I metodi di cui è possibile eseguire l'override per fornire un aspetto personalizzato sono tutti i metodi che iniziano con OnDraw.

L'applicazione può avere un CMFCVisualManager solo oggetto. Per ottenere un puntatore alla gestione visiva per l'applicazione, chiamare la funzione statica CMFCVisualManager::GetInstance. Poiché tutti i gestori visivi ereditano da CMFCVisualManager, il CMFCVisualManager::GetInstance metodo otterrà un puntatore al gestore visivo appropriato, anche se si crea uno strumento di gestione oggetti visivi personalizzato.

Se si vuole creare uno strumento di gestione oggetti visivi personalizzato, è necessario derivarlo da un gestore visivo già esistente. La classe predefinita da cui derivare è CMFCVisualManager. Tuttavia, è possibile usare un gestore visivo diverso se è più simile a quello desiderato per l'applicazione. Ad esempio, se si vuole usare gestione oggetti visivi, ma si vuole solo modificare l'aspetto CMFCVisualManagerOffice2007 dei separatori, è possibile derivare la classe personalizzata da CMFCVisualManagerOffice2007. In questo scenario è consigliabile sovrascrivere solo i metodi per i separatori di disegno.

Esistono due modi possibili per usare uno specifico strumento di gestione degli oggetti visivi per l'applicazione. Un modo consiste nel chiamare il metodo CMFCVisualManager::SetDefaultManager e passare il gestore visivo appropriato come parametro. Nell'esempio di codice seguente viene illustrato come usare Gestione CMFCVisualManagerVS2005 oggetti visivi con questo metodo:

CMFCVisualManager::SetDefaultManager (RUNTIME_CLASS (CMFCVisualManagerVS2005));

L'altro modo per usare uno strumento di gestione oggetti visivi nell'applicazione consiste nel crearlo manualmente. L'applicazione userà quindi questo nuovo gestore visivo per tutto il rendering. Tuttavia, poiché può essere presente un CMFCVisualManager solo oggetto per applicazione, è necessario eliminare il gestore di oggetti visivi corrente prima di crearne uno nuovo. Nell'esempio seguente è CMyVisualManager una gestione visiva personalizzata derivata da CMFCVisualManager. Il metodo seguente modificherà la gestione visiva usata per visualizzare l'applicazione, a seconda di 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();
}

Vedi anche

Elementi dell'interfaccia utente
Classe CMFCVisualManager