次の方法で共有


ビジュアル マネージャー

ビジュアル マネージャーは、アプリケーション全体の外観を制御するオブジェクトです。 アプリケーションのすべての描画コードを配置可能な単一のクラスとして機能します。 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 オブジェクトを 1 つだけ持つことができます。 アプリケーションのビジュアル マネージャーへのポインターを取得するには、静的関数 CMFCVisualManager::GetInstance を呼び出します。 すべてのビジュアル マネージャーが CMFCVisualManager から継承されるため、カスタム ビジュアル マネージャーを作成する場合でも、CMFCVisualManager::GetInstance メソッドは適切なビジュアル マネージャーへのポインターを取得します。

カスタム ビジュアル マネージャーを作成する場合は、既に存在するビジュアル マネージャーからそれを派生させる必要があります。 派生元の既定のクラスは CMFCVisualManager です。 ただし、アプリケーションの場合と同様に、別のビジュアル マネージャーを使用することもできます。 たとえば、CMFCVisualManagerOffice2007 ビジュアル マネージャーを使用するが、区切り記号の表示方法を変更したい場合は、CMFCVisualManagerOffice2007 からカスタム クラスを派生させることができます。 このシナリオでは、区切り記号を描画するメソッドのみを上書きする必要があります。

アプリケーションに特定のビジュアル マネージャーを使用するには、次の 2 つの方法があります。 1 つの方法は、CMFCVisualManager::SetDefaultManager メソッドを呼び出して、該当するビジュアル マネージャーをパラメーターとして渡すことです。 次のコード例は、このメソッドで CMFCVisualManagerVS2005 ビジュアル マネージャーを使用する方法を示しています。

CMFCVisualManager::SetDefaultManager (RUNTIME_CLASS (CMFCVisualManagerVS2005));

アプリケーションでビジュアル マネージャーを使用するもう 1 つの方法は、手動で作成することです。 アプリケーションでは、すべてのレンダリングにこの新しいビジュアル マネージャーを使用します。 ただし、アプリケーションごとに CMFCVisualManager オブジェクトは 1 つしか存在できないため、新しいビジュアル マネージャーを作成する前に、現在のビジュアル マネージャーを削除する必要があります。 次の例では、CMyVisualManagerCMFCVisualManager から派生したカスタム ビジュアル マネージャーです。 次のメソッドは、インデックスに応じて、アプリケーションの表示に使用されるビジュアル マネージャーを変更します。

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 クラス