Поделиться через


Диспетчер визуализации

Диспетчер визуального представления объект, элементы управления представление всего приложения.Она действует как один класс, в котором можно помещать весь код документа для приложения.Библиотека MFC включает несколько диспетчеров визуального представления.Кроме того, можно создать собственный диспетчер визуального представления если необходимо создать пользовательское представление для приложения.Следующие образы демонстрируют то же приложение при различных диспетчеров визуального представления входят:

Приложение MyApp, которое использует диспетчер визуального представления CMFCVisualManagerWindows

MyApp, преобразованный CMFCVisualManagerWindows

Приложение MyApp, которое использует диспетчер визуального представления CMFCVisualManagerVS2005

MyApp, преобразованный CMFCVisualManager VS2005

Приложение MyApp, которое использует диспетчер визуального представления CMFCVisualManagerOfficeXP

MyApp, преобразованный CMFCVisualManagerOfficeXP

Приложение MyApp, которое использует диспетчер визуального представления CMFCVisualManagerOffice2003

MyApp, преобразованный CMFCVisualManagerOffice2003

Приложение MyApp, которое использует диспетчер визуального представления CMFCVisualManagerOffice2007

MyApp, преобразованный CMFCVisualManagerOffice2007

По умолчанию диспетчер визуального представления поддерживает код документа для нескольких элементов графического интерфейса пользователя.Для предоставления пользовательских элементов пользовательского интерфейса, необходимо переопределить связанные методы рисования диспетчеров визуального представления.Список этих методах см. в разделе Класс CMFCVisualManager.Методы, которые можно переопределить, чтобы предоставить пользовательское представление все методы, которые начинаются с OnDraw.

Приложение может иметь только один объект CMFCVisualManager.Для получения указателя на него визуального представления для приложения, вызовите статическая функция CMFCVisualManager::GetInstance.Поскольку всех диспетчеров визуального представления наследующие от CMFCVisualManager, метод CMFCVisualManager::GetInstance получает указатель к соответствующему диспетчеру визуального представления, даже если создать пользовательский диспетчер визуального представления.

Если нужно создать пользовательский диспетчер визуального представления, необходимо наследовать его от диспетчера визуального представления, уже существует.Класс по умолчанию, который должен быть производным от CMFCVisualManager.Однако можно использовать другой диспетчер визуального представления, если она лучше напоминает, что требуется для приложения.Например, если необходимо использовать диспетчер визуального представления CMFCVisualManagerOffice2007, но о изменить только в качестве разделителей списке, можно создать пользовательский класс от CMFCVisualManagerOffice2007.В этом сценарии необходимо переписать только методы для рисования разделители.

2 Возможных способа использования указанного диспетчера визуального представления для приложения.Один из способов вызова метода CMFCVisualManager::SetDefaultManager и передать нужный диспетчер визуального представления в качестве параметра.В следующем примере кода показано, как можно использовать диспетчер визуального представления CMFCVisualManagerVS2005 с этим методом.

CMFCVisualManager::SetDefaultManager (RUNTIME_CLASS (CMFCVisualManagerVS2005));

Другой способ - использовать диспетчер визуального представления в приложении создать его вручную.После этого приложение будет использовать этот новый диспетчер визуального представления для всех отрисовки.Однако поскольку может существовать только один объект в приложение, CMFCVisualManager удаление текущий диспетчер визуального представления прежде чем создать новый.В следующем примере CMyVisualManager пользовательского диспетчера визуального представления, который является производным от CMFCVisualManager.Следующий метод изменяет какой диспетчер визуального представления используется для отображения приложения, в зависимости от индекса:

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

См. также

Ссылки

Класс CMFCVisualManager

Другие ресурсы

Пользовательский интерфейс