次の方法で共有


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" メソッドが呼び出される前に行う必要があり、プロセスごとに 1 回だけ成功します。 コード例については、「CoreWindow に依存する WinRT UI オブジェクトの表示](/windows/apps/develop/ui-input/display-ui-objects#winui-3-with-c)」を参照してください。
  4. IApplicationDesignModeSettingsQueryInterface を呼び出し、適切なメソッド (SetNativeDisplaySizeSetScaleFactor など) を呼び出して、必要なテスト状態をスプーフィングします。 これらのメソッドは、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 を含む)