Диспетчер визуализации
Визуальный диспетчер — это объект, который управляет внешним видом всего приложения. Он выступает в качестве одного класса, где можно поместить весь код рисования для приложения. Библиотека MFC включает несколько визуальных менеджеров. Вы также можете создать собственный визуальный менеджер, если вы хотите создать пользовательское представление для приложения. На следующих изображениях показано одно и то же приложение, если включены различные визуальные диспетчеры:
MyApp, использующий визуальный менеджер CMFCVisualManagerWindows
MyApp, использующий визуальный диспетчер CMFCVisualManagerVS2005
MyApp, использующий визуальный диспетчер CMFCVisualManagerOfficeXP
MyApp, использующий визуальный диспетчер CMFCVisualManagerOffice2003
MyApp, использующий визуальный диспетчер CMFCVisualManagerOffice2007
По умолчанию визуальный диспетчер поддерживает код рисования для нескольких элементов графического интерфейса. Чтобы предоставить пользовательские элементы пользовательского интерфейса, необходимо переопределить связанные методы рисования визуального диспетчера. Список этих методов см. в разделе "Класс CMFCVisualManager". Методы, которые можно переопределить для предоставления пользовательского внешнего вида, — это все методы, начинающиеся с OnDraw
.
Приложение может иметь только один CMFCVisualManager
объект. Чтобы получить указатель на визуальный диспетчер приложения, вызовите статическую функцию CMFCVisualManager::GetInstance. Так как все визуальные диспетчеры наследуют от CMFCVisualManager
, CMFCVisualManager::GetInstance
метод получит указатель на соответствующий визуальный диспетчер, даже если вы создаете пользовательский визуальный менеджер.
Если вы хотите создать пользовательский визуальный менеджер, необходимо наследовать его от визуального руководителя, который уже существует. Класс по умолчанию, производный от.CMFCVisualManager
Однако вы можете использовать другой визуальный диспетчер, если он лучше похож на то, что вы хотите для вашего приложения. Например, если вы хотите использовать визуальный CMFCVisualManagerOffice2007
диспетчер, но хотел изменить способ внешнего вида разделителей, можно получить пользовательский класс из CMFCVisualManagerOffice2007
. В этом сценарии следует перезаписать только методы для разделителей рисования.
Существует два возможных способа использования определенного визуального диспетчера для приложения. Одним из способов является вызов метода 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