다음을 통해 공유


IApplicationDesignModeSettings 인터페이스(shobjidl_core.h)

개발 도구 애플리케이션은 실제 하드웨어 없이 다양한 폼 팩터에 대한 디자인 모드에서 실행되는 Windows 스토어 앱을 테스트하기 위해 네이티브 디스플레이 해상도, 디바이스 배율, 애플리케이션 보기 상태와 같은 시스템 및 사용자 상태를 동적으로 스푸핑할 수 있습니다. 또한 일반적으로 사용자가 제어하는 상태의 변경 내용을 테스트하여 다양한 시나리오에서 Windows 스토어 앱을 테스트할 수 있습니다.

상속

IApplicationDesignModeSettings 인터페이스는IUnknown 인터페이스에서 상속됩니다. IApplicationDesignModeSettings 에는 다음과 같은 유형의 멤버도 있습니다.

메서드

IApplicationDesignModeSettings 인터페이스에는 이러한 메서드가 있습니다.

 
IApplicationDesignModeSettings::ComputeApplicationSize

스푸핑된 설정의 현재 집합에 따라 Windows 스토어 앱의 크기를 가져옵니다.
IApplicationDesignModeSettings::IsApplicationViewStateSupported

특정 스푸핑된 디스플레이 크기 및 배율 인수 설정에 대해 특정 애플리케이션 보기 상태가 지원되는지 여부를 결정합니다.
IApplicationDesignModeSettings::SetApplicationViewState

디자인 모드에서 실행되는 Windows 스토어 앱에 사용할 스푸핑된 애플리케이션 보기 상태(전체 화면 가로, 전체 화면 세로, 채워진 또는 스냅됨)를 설정합니다.
IApplicationDesignModeSettings::SetNativeDisplaySize

디자인 모드에서 실행되는 Windows 스토어 앱에 사용할 스푸핑된 네이티브 디스플레이 크기를 설정합니다.
IApplicationDesignModeSettings::SetScaleFactor

디자인 모드에서 실행되는 Windows 스토어 앱에 사용할 스푸핑된 디바이스 배율 인수를 설정합니다.
IApplicationDesignModeSettings::TriggerEdgeGesture

스푸핑된 에지 제스처 이벤트를 호출자 스레드의 프록시 코어 창으로 보냅니다. 이 제스처는 앱이 지원하는 경우 앱의 앱 표시줄을 전환합니다. 호출자는 에지 제스처를 트리거한 입력 유형을 지정할 수 있습니다.

설명

이 인터페이스는 CLSID_ApplicationDesignModeSettings 공동 생성하여 가져옵니다.

사용자는 일반적으로 다음과 유사한 사용 패턴을 따릅니다.

  1. CLSID_ApplicationDesignModeSettings 사용하여 CoCreateInstance 를 호출하여 Windows 스토어 앱 프로세스의 스레드에서 애플리케이션 디자인 모드 설정 개체를 만듭니다.
  2. 애플리케이션 디자인 모드 설정 개체에서 QueryInterface 를 호출하여 IInitializeWithWindow 개체를 가져옵니다.
  3. 프록시 코어 창에 대한 HWND를 전달하여 IInitializeWithWindow 개체의 Initialize 메서드를 호출합니다. "set" 메서드가 호출되기 전에 이 작업을 수행해야 하며 프로세스당 한 번만 성공합니다. 코드 예제는 [CoreWindow에 의존하는 WinRT UI 개체 표시](/windows/apps/develop/ui-input/display-ui-objects#winui-3-with-c)를 참조하세요.
  4. IApplicationDesignModeSettings에 대해 QueryInterface를 호출하고 적절한 메서드(SetNativeDisplaySize, SetScaleFactor 등)를 호출하여 필요한 테스트 상태를 스푸핑합니다. 이러한 메서드는 Windows 스토어 앱에 대해 적절한 Windows 런타임 이벤트를 트리거합니다.
  5. ComputeApplicationSize 메서드를 호출하여 현재 스푸핑된 상태에 따라 앱의 적절한 크기를 결정합니다. 모든 레이아웃 "set" 메서드가 이미 호출되었거나 이 호출이 실패해야 합니다. 개발자 도구 애플리케이션은 적절한 경우 앱 창의 위치를 지정하고 크기를 조정합니다.

구현 시기

이 인터페이스를 구현하지 마세요. 구현은 Windows와 함께 제공됩니다.

사용 시기

이 인터페이스의 메서드를 사용하여 다양한 스푸핑된 구성 및 시나리오에서 Windows 스토어 앱을 테스트합니다.

예제

이 예제에서는 사용 중인 이 인터페이스의 메서드를 보여 줍니다.


IApplicationDesignModeSettings *pDesignModeSettings;

// CoCreate the design mode settings object
HRESULT hr = CoCreateInstance(CLSID_ApplicationDesignModeSettings, nullptr, CLSCTX_INPROC, IID_PPV_ARGS(&pDesignModeSettings));
if (SUCCEEDED(hr))
{
    IInitializeWithWindow *pInitializeWithWindow;
    hr = pDesignModeSettings->QueryInterface(IID_PPV_ARGS(&pInitializeWithWindow);
    if (SUCCEEDED(hr))
    {
        // Before we spoof any state, we must first initialize the design
        // mode settings object with a proxy core window. Since apps
        // running in design mode don't have an actual core window, we must
        // supply an HWND that can be used as a proxy.
        hr = pInitializeWithWindow->Initialize(hwndProxyCoreWindow);
        pInitializeWithWindow->Release();
    }

    if (SUCCEEDED(hr))
    {
        // Verify that our desired spoofed settings are supported.
        SIZE sizeNativeDisplay = {1366, 768};
        SCALE_FACTOR scaleFactor = SCALE_100_PERCENT;
        APPLICATION_VIEW_STATE viewState = AVS_FULLSCREEN_LANDSCAPE;
        BOOL fSupported;
        hr = pDesignModeSettings->IsApplicationViewStateSupported(viewState,
                                                                  sizeNativeDisplay,
                                                                  scaleFactor,
                                                                  &fSupported);
    }

    if (SUCCEEDED(hr) && fSupported))
    {
        // Set the spoofed native display size.
        hr = pDesignModeSettings->SetNativeDisplaySize(sizeNativeDisplay);

        if (SUCCEEDED(hr))
        {
            // Set the spoofed scale factor to 100%.
            hr = pDesignModeSettings->SetScaleFactor(SCALE_100_PERCENT);
        }

        if (SUCCEEDED(hr))
        {
            // Set the spoofed application view state to full-screen landscape.
            hr = pDesignModeSettings->SetApplicationViewState(AVS_FULLSCREEN_LANDSCAPE);
        }

        if (SUCCEEDED(hr))
        {
            // Now that all the necessary state has been spoofed, calculate
            // the size that the app should occupy.
            SIZE sizeApplication;
            hr = pDesignModeSettings->ComputeApplicationSize(&sizeApplication);
        }
    }

    pDesignModeSettings->Release();
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2012 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 shobjidl_core.h(Shobjidl.h 포함)