시각 형상 관리자
비주얼 관리자는 전체 응용 프로그램의 모양을 제어 하는 개체입니다.이 단일 클래스로 응용 프로그램에 대 한 모든 드로잉 코드를 넣을 수 있습니다 역할을 합니다.MFC 라이브러리 여러 비주얼 관리자를 포함합니다.응용 프로그램에 대 한 사용자 지정 보기를 만들려면 원하는 경우 직접 비주얼 관리자를 만들 수도 있습니다.다른 비주얼 관리자를 사용 하는 경우 다음 이미지가 동일한 응용 프로그램을 보여 줍니다.
CMFCVisualManagerWindows 비주얼 관리자를 사용 하 여 MyApp
CMFCVisualManagerVS2005 비주얼 관리자를 사용 하 여 MyApp
CMFCVisualManagerOfficeXP 비주얼 관리자를 사용 하 여 MyApp
CMFCVisualManagerOffice2003 비주얼 관리자를 사용 하 여 MyApp
CMFCVisualManagerOffice2007 비주얼 관리자를 사용 하 여 MyApp
기본적으로 비주얼 관리자 GUI의 여러 요소에 대 한 그리기 코드를 유지 관리합니다.사용자 지정 UI 요소를 제공 하기 위해 비주얼 관리자의 관련된 드로잉 메서드를 재정의 해야 합니다.이러한 메서드의 목록은 CMFCVisualManager 클래스.사용자 지정 모양을 제공 하도록 재정의할 수 있는 메서드를 시작 하는 모든 메서드는 OnDraw.
응용 프로그램을 하나만 가질 수 있습니다 CMFCVisualManager 개체입니다.비주얼 관리자 응용 프로그램에 대 한 포인터를 얻을 수 있는 정적 함수를 호출 합니다. CMFCVisualManager::GetInstance.모든 비주얼 관리자에서 상속 하기 때문에 CMFCVisualManager, CMFCVisualManager::GetInstance 메서드는 get 포인터 적절 한 비주얼 관리자에 시각적 사용자 지정 관리자를 만드는 경우에.
사용자 지정 비주얼 관리자를 만들려면 이미 비주얼 관리자에서 파생 되어야 합니다.기본 클래스에서 파생 된 CMFCVisualManager.그러나 더 나은 원하는 응용 프로그램에 대해 유사한 경우 다른 비주얼 관리자를 사용할 수 있습니다.예를 들어, 사용 하고자 하는 경우는 CMFCVisualManagerOffice2007 하지만 비주얼 관리자를 원했습니다만 구분 기호 모양을 변경 하려면, 사용자 지정 클래스에서 파생 될 수 있습니다 CMFCVisualManagerOffice2007.이 시나리오에서는 그리기 구분 기호에 대 한 메서드만 덮어쓰지 마십시오.
비주얼 관리자는 특정 응용 프로그램에 사용 하는 두 가지 방법이 있습니다.단방향 호출 하는 것은 CMFCVisualManager::SetDefaultManager 메서드와 해당 비주얼 관리자 매개 변수로 전달 합니다.다음 코드 예제에서는 사용 하는 방법 보여 줍니다는 CMFCVisualManagerVS2005 이 방법을 비주얼 관리자:
CMFCVisualManager::SetDefaultManager (RUNTIME_CLASS (CMFCVisualManagerVS2005));
비주얼 관리자는 응용 프로그램에서 사용 하는 다른 방법은를 수동으로 만드는 것입니다.응용 프로그램에서 다음이 새로운 비주얼 관리자 모든 렌더링을 사용 합니다.그러나 하나만 있을 수 있으므로 CMFCVisualManager 개체 당 응용 프로그램을 새로 만들기 전에 현재 비주얼 관리자를 삭제 해야 합니다.다음 예제에서는 CMyVisualManager 에서 파생 되는 사용자 지정 visual 관리자입니다 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();
}