可视化管理器
视觉管理器是对象控制整个应用程序的外观。 作为可放在应用程序的所有绘图代码的单个类。 MFC 库包含几种视觉管理器。 ,如果要创建自己的应用程序,自定义视图还可以创建自己的视觉管理器。 ,在不同的视觉管理器启用时,下面的图像显示同一应用程序:
使用 CMFCVisualManagerWindows 视觉管理器的 MyApp
使用 CMFCVisualManagerVS2005 视觉管理器的 MyApp
使用 CMFCVisualManagerOfficeXP 视觉管理器的 MyApp
使用 CMFCVisualManagerOffice2003 视觉管理器的 MyApp
使用 CMFCVisualManagerOffice2007 视觉管理器的 MyApp
默认情况下,视觉管理器维护几个编程元素的绘图代码。 若要提供自定义 UI 元素,则需要重写视觉管理器的相关绘制方法。 有关这些方法的列表,请参见 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();
}