Compartir a través de


Administrador de visualización

El administrador visual es un objeto que controla la apariencia de una aplicación completa. Actúa como una clase única en la que se puede colocar todo el código de dibujo de la aplicación. La biblioteca MFC incluye varios administradores visuales. También puede crear su propio administrador visual si quiere crear una vista personalizada para la aplicación. Las imágenes siguientes muestran la misma aplicación cuando hay distintos administradores visuales habilitados:

MyApp as rendered by CMFCVisualManagerWindows.
MyApp cuando usa el administrador visual CMFCVisualManagerWindows

MyApp as rendered by CMFCVisualManagerVS2005.
MyApp cuando usa el administrador visual CMFCVisualManagerVS2005

MyApp as rendered by CMFCVisualManagerOfficeXP.
MyApp cuando usa el administrador visual CMFCVisualManagerOfficeXP

MyApp as rendered by CMFCVisualManagerOffice2003.
MyApp cuando usa el administrador visual CMFCVisualManagerOffice2003

MyApp as rendered by CMFCVisualManagerOffice2007.
MyApp cuando usa el administrador visual CMFCVisualManagerOffice2007

De forma predeterminada, el administrador visual mantiene el código de dibujo para varios elementos de la GUI. Para proporcionar elementos de interfaz de usuario personalizados, debe invalidar los métodos de dibujo relacionados del administrador visual. Para obtener la lista de estos métodos, consulte CMFCVisualManager Class. Los métodos que se pueden invalidar para proporcionar una apariencia personalizada son todos los que comienzan por OnDraw.

La aplicación solo puede tener un objeto CMFCVisualManager. Para obtener un puntero al administrador visual de la aplicación, llame a la función estática CMFCVisualManager::GetInstance. Dado que todos los administradores visuales se heredan de CMFCVisualManager, el método CMFCVisualManager::GetInstance obtendrá un puntero al administrador visual adecuado, incluso si crea un administrador visual personalizado.

Si quiere crear un administrador visual personalizado, debe derivarlo de un administrador visual que ya exista. La clase predeterminada para la derivación es CMFCVisualManager. Sin embargo, puede usar un administrador visual diferente si se parece más a lo que quiere para la aplicación. Por ejemplo, si quiere usar el administrador visual CMFCVisualManagerOffice2007, pero solo quería cambiar el aspecto de los separadores, podría derivar la clase personalizada de CMFCVisualManagerOffice2007. En este escenario, solo debe sobrescribir los métodos para dibujar los separadores.

Hay dos maneras posibles de usar un administrador visual específico para la aplicación. Una manera es llamar al método CMFCVisualManager::SetDefaultManager y pasar el administrador visual adecuado como parámetro. En el ejemplo de código siguiente se muestra cómo usar el administrador visual CMFCVisualManagerVS2005 con este método:

CMFCVisualManager::SetDefaultManager (RUNTIME_CLASS (CMFCVisualManagerVS2005));

La otra manera de usar un administrador visual en la aplicación es crearlo manualmente. A continuación, la aplicación usará este nuevo administrador visual para toda la representación. Sin embargo, dado que solo puede haber un objeto CMFCVisualManager por aplicación, tendrá que eliminar el administrador visual actual antes de crear uno nuevo. En el ejemplo siguiente, CMyVisualManager es un administrador visual personalizado que se deriva de CMFCVisualManager. El método siguiente cambiará el administrador visual se usará para mostrar la aplicación, en función de un índice:

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

Consulte también

Elementos de la interfaz de usuario
CMFCVisualManager (clase)