다음을 통해 공유


시각화 관리자

시각적 관리자는 전체 애플리케이션의 모양을 제어하는 개체입니다. 애플리케이션에 대한 모든 그리기 코드를 넣을 수 있는 단일 클래스로 작동합니다. MFC 라이브러리에는 여러 시각적 관리자가 포함되어 있습니다. 애플리케이션에 대한 사용자 지정 보기를 만들려는 경우 사용자 고유의 시각적 관리자를 만들 수도 있습니다. 다음 이미지는 다른 시각적 관리자가 사용하도록 설정된 경우 동일한 애플리케이션을 보여 줍니다.

MyApp as rendered by CMFCVisualManagerWindows.
CMFCVisualManagerWindows 시각적 관리자를 사용하는 MyApp

MyApp as rendered by CMFCVisualManagerVS2005.
CMFCVisualManagerVS2005 시각적 관리자를 사용하는 MyApp

MyApp as rendered by CMFCVisualManagerOfficeXP.
CMFCVisualManagerOfficeXP 시각적 관리자를 사용하는 MyApp

MyApp as rendered by CMFCVisualManagerOffice2003.
CMFCVisualManagerOffice2003 시각적 관리자를 사용하는 MyApp

MyApp as rendered by CMFCVisualManagerOffice2007.
CMFCVisualManagerOffice2007 시각적 관리자를 사용하는 MyApp

기본적으로 시각적 관리자는 여러 GUI 요소에 대한 그리기 코드를 기본. 사용자 지정 UI 요소를 제공하려면 시각적 관리자의 관련 그리기 메서드를 재정의해야 합니다. 이러한 메서드 목록은 CMFCVisualManager 클래스를 참조 하세요. 사용자 지정 모양을 제공하기 위해 재정의할 수 있는 메서드는 모두 .로 OnDraw시작하는 메서드입니다.

애플리케이션에는 하나의 CMFCVisualManager 개체만 있을 수 있습니다. 애플리케이션의 시각적 관리자에 대한 포인터를 가져오려면 정적 함수 CMFCVisualManager::GetInstance를 호출합니다. 모든 시각적 관리자가 CMFCVisualManagerCMFCVisualManager::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 클래스