Gerenciador de visualização
O gerenciador visual é um objeto que controla a aparência de um aplicativo inteiro. Ele atua como uma única classe em que você pode colocar todo o código de desenho para seu aplicativo. A Biblioteca do MFC inclui vários gerenciadores visuais. Você também poderá criar seu próprio gerenciador visual se quiser criar uma exibição personalizada para seu aplicativo. As seguintes imagens mostram o mesmo aplicativo quando diferentes gerenciadores visuais estão habilitados:
MyApp que usa o gerenciador visual CMFCVisualManagerWindows
MyApp que usa o gerenciador visual CMFCVisualManagerVS2005
MyApp que usa o gerenciador visual CMFCVisualManagerOfficeXP
MyApp que usa o gerenciador visual CMFCVisualManagerOffice2003
MyApp que usa o gerenciador visual CMFCVisualManagerOffice2007
Por padrão, o gerenciador visual mantém o código de desenho para vários elementos de GUI. Para fornecer elementos personalizados da interface do usuário, você precisa substituir os métodos de desenho relacionados do gerenciador visual. Para obter a lista desses métodos, confira Classe CMFCVisualManager. Os métodos que você pode substituir para fornecer uma aparência personalizada são todos os métodos que começam com OnDraw
.
Seu aplicativo pode ter apenas um objeto CMFCVisualManager
. Para obter um ponteiro para o gerenciador visual do aplicativo, chame a função estática CMFCVisualManager::GetInstance. Como todos os gerenciadores visuais herdam CMFCVisualManager
, o método CMFCVisualManager::GetInstance
obterá um ponteiro para o gerenciador visual apropriado, mesmo se você criar um gerenciador visual personalizado.
Se você quiser criar um gerenciador visual personalizado, deverá derivá-lo de um gerenciador visual que já existe. A classe padrão a ser derivada é CMFCVisualManager
. No entanto, você poderá usar um gerenciador visual diferente se ele for mais parecido com o que você deseja para seu aplicativo. Por exemplo, se você quisesse usar o gerenciador visual CMFCVisualManagerOffice2007
, mas quisesse apenas alterar a aparência dos separadores, você poderia derivar sua classe personalizada de CMFCVisualManagerOffice2007
. Nesse cenário, você deve substituir apenas os métodos para desenhar separadores.
Há duas maneiras possíveis de usar um gerenciador visual específico para seu aplicativo. Uma maneira é chamar o método CMFCVisualManager::SetDefaultManager e passar o gerenciador visual apropriado como um parâmetro. O seguinte exemplo de código mostra como você usaria o gerenciador visual CMFCVisualManagerVS2005
com este método:
CMFCVisualManager::SetDefaultManager (RUNTIME_CLASS (CMFCVisualManagerVS2005));
A outra maneira de usar um gerenciador visual em seu aplicativo é criá-lo manualmente. Em seguida, o aplicativo usará esse novo gerenciador visual para toda a renderização. No entanto, como pode haver apenas um objeto CMFCVisualManager
por aplicativo, você precisará excluir o gerenciador visual atual antes de criar outro. No exemplo a seguir, CMyVisualManager
é um gerenciador visual personalizado derivado de CMFCVisualManager
. O seguinte método alterará o que o gerenciador visual usa para exibir seu aplicativo, dependendo de um í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();
}