視覺化管理員
視覺管理員是一個物件,可控制整個應用程式的外觀。 它可作為單一類別,您可以在其中放置應用程式的所有繪圖程式碼。 MFC 程式庫包含數個視覺管理員。 如果您想要為應用程式建立自訂檢視,您也可以建立自己的視覺管理員。 下列影像顯示啟用不同視覺管理員時的相同應用程式:
使用 CMFCVisualManagerWindows 視覺效果管理員的 MyApp
使用 CMFCVisualManagerVS2005 視覺效果管理員的 MyApp
使用 CMFCVisualManagerOfficeXP 視覺效果管理員的 MyApp
使用 CMFCVisualManagerOffice2003 視覺效果管理員的 MyApp
使用 CMFCVisualManagerOffice2007 視覺效果管理員的 MyApp
根據預設,視覺效果管理員會維護數個 GUI 元素的繪圖程式碼。 若要提供自訂 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();
}