Win32 API 日本語リファレンス
ホームUI.Shell › IApplicationDesignModeSettings2

IApplicationDesignModeSettings2

COM
IID490514e1-675a-4d6e-a58d-e54901b4ca2f継承元IApplicationDesignModeSettings自前メソッド開始 vtbl9

公式ドキュメント

開発ツールアプリケーションが、ネイティブの表示解像度、デバイスのスケール ファクター、アプリケーションのビュー レイアウトなど、Windows ストア アプリに報告されるシステムおよびユーザーの状態を動的に制御できるようにします。これにより、実機を用意することなく、幅広いフォーム ファクターに対してデザイン モードで動作する Windows ストア アプリをテストできます。また、通常はユーザーが制御する状態への変更をテストできるようにし、さまざまなシナリオで Windows ストア アプリをテストできます。

解説(Remarks)

このインターフェイスは、CLSID_ApplicationDesignModeSettings を CoCreate することで取得します。これは、元の IApplicationDesignModeSettings インターフェイスの拡張です。

この例では、Visual Studio が、サイズ 1366x768 のディスプレイで最小幅をオーバーライドしたアプリケーションをデザイン モードで起動しています。次に、アプリケーションの幅をユーザーが動的に変更できるスライダー コントロールを有効にしています。これを行うには、この種類のアプリケーションで許可される最小サイズと最大サイズを計算するために、新しい SetApplicationViewMinWidthGetApplicationSizeBounds API を使用する必要があります。

IInitializeWithWindow::Initialize の詳細については、CoreWindow に依存する WinRT UI オブジェクトの表示を参照してください。

ComPtr<IApplicationDesignModeSettings> spDesignModeSettings;

// CoCreate the design mode settings object
HRESULT hr = CoCreateInstance(CLSID_ApplicationDesignModeSettings, nullptr, CLSCTX_INPROC, IID_PPV_ARGS(&spDesignModeSettings));
if (SUCCEEDED(hr))
{
    ComPtr<IInitializeWithWindow> spInitializeWithWindow;
    hr = pDesignModeSettings->QueryInterface(IID_PPV_ARGS(&spInitializeWithWindow);
    if (SUCCEEDED(hr))
    {
        // Before we set any design mode 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 = spInitializeWithWindow->Initialize(hwndProxyCoreWindow);
    }

    if (SUCCEEDED(hr))
    {
        // Set the native display size to 1366x768
        SIZE sizeDisplay = {1366, 768};
        hr = spDesignModeSettings->SetNativeDisplaySize(sizeDisplay);
        if (SUCCEEDED(hr))
        {
            // Set the native display orientation to landscape
            hr = spDesignModeSettings->SetNativeDisplayOrientation(NDO_LANDSCAPE);
            if (SUCCEEDED(hr))
            {
                // Set the scale factor to 100%
                DEVICE_SCALE_FACTOR scaleFactor = SCALE_100_PERCENT;
                hr = spDesignModeSettings->SetScaleFactor(scaleFactor);
            }
        }
    }

    if (SUCCEEDED(hr))
    {

        // Override the app’s minimum width
        hr = spDesignModeSettings->SetApplicationViewMinWidth(AVMW_320);
        if (SUCCEEDED(hr))
        {
            SIZE sizeAppMin;
            SIZE sizeAppMax;
            hr = spDesignModeSettings->GetApplicationSizeBounds(&sizeAppMin, &sizeAppMax);
            if (SUCCEEDED(hr))
            {
                // Push the min and max size to the slider control,
                // to update the values that it maps to
                …

                // Start by sizing the app to its min bound, so compute the                         
                // resulting view orientation
                APPLICATION_VIEW_ORIENTATION viewOrientation;
                hr = spDesignModeSettings->GetApplicationViewOrientation(sizeAppMin, &viewOrientation);
                if (SUCCEEDED(hr))
                {
                    // Set the app view orientation
                    hr = spDesignModeSettings->SetApplicationViewOrientation(viewOrientation);
                }
            }
        }
    }

    if (SUCCEEDED(hr))
    {
        // Set the adjacent display edges so that the app is touching just the left edge of the screen
        hr = spDesignModeSettings->SetAdjacentDisplayEdges(ADE_LEFT);
    }
}

メソッド 7

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 9 HRESULT SetNativeDisplayOrientation(NATIVE_DISPLAY_ORIENTATION nativeDisplayOrientation)

デザイン モード ウィンドウ用にエミュレートされるディスプレイの向きを設定します。

nativeDisplayOrientationNATIVE_DISPLAY_ORIENTATIONin

エミュレートするディスプレイのネイティブの向き。

NDO_LANDSCAPE (0)

横向き。表示の幅が高さより大きくなります。

NDO_PORTRAIT (1)

縦向き。表示の高さが幅より大きくなります。

戻り値

種類: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

vtbl 10 HRESULT SetApplicationViewOrientation(APPLICATION_VIEW_ORIENTATION viewOrientation)

デザイン モード ウィンドウで使用するウィンドウの向きを設定します。

viewOrientationAPPLICATION_VIEW_ORIENTATIONin使用するデザイン モード ウィンドウの向き。AVO_LANDSCAPE または AVO_PORTRAIT のいずれかです。

戻り値

種類: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

vtbl 11 HRESULT SetAdjacentDisplayEdges(ADJACENT_DISPLAY_EDGES adjacentDisplayEdges)

アプリケーション ウィンドウを、エミュレートされたディスプレイの端に隣接させるかどうかを設定します。

adjacentDisplayEdgesADJACENT_DISPLAY_EDGESin

隣接させる端。

ADE_NONE (0x0)

ウィンドウはいずれの端にも隣接しません。

ADE_LEFT (0x1)

ウィンドウの左端が隣接します。

ADE_RIGHT (0x2)

ウィンドウの右端が隣接します。

戻り値

種類: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

vtbl 12 HRESULT SetIsOnLockScreen(BOOL isOnLockScreen)

このメソッドは、デザイン モードのアプリケーションが Windows 8 のロック画面に情報を表示できるかどうかを決定します。

isOnLockScreenBOOLinTRUE に設定すると、アプリケーションはロック画面に情報を表示します。FALSE に設定すると、情報は表示されません。

戻り値

種類: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

vtbl 13 HRESULT SetApplicationViewMinWidth(APPLICATION_VIEW_MIN_WIDTH viewMinWidth)

アプリケーションのデザイン モード ウィンドウで望ましい最小幅を設定します。

viewMinWidthAPPLICATION_VIEW_MIN_WIDTHin

最小幅の値。

AVMW_DEFAULT (0)

既定の最小幅を使用します。

AVMW_320 (1)

最小幅を 320 ピクセルに設定します。

AVMW_500 (2)

最小幅を 500 ピクセルに設定します。

戻り値

種類: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

vtbl 14 HRESULT GetApplicationSizeBounds(SIZE* minApplicationSizePixels, SIZE* maxApplicationSizePixels)

このメソッドは、アプリケーションがサポートするサイズの境界を取得します。

minApplicationSizePixelsSIZE*outこのメソッドが正常に返された場合、可能な最小のウィンドウ サイズを定義する SIZE 構造体へのポインターを受け取ります。
maxApplicationSizePixelsSIZE*outこのメソッドが正常に返された場合、可能な最大のウィンドウ サイズを定義する SIZE 構造体へのポインターを受け取ります。

戻り値

種類: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

vtbl 15 HRESULT GetApplicationViewOrientation(SIZE applicationSizePixels, APPLICATION_VIEW_ORIENTATION* viewOrientation)

アプリケーションのデザイン モード ウィンドウの向きを取得します。

applicationSizePixelsSIZEinアプリケーション ウィンドウのサイズ。
viewOrientationAPPLICATION_VIEW_ORIENTATION*outこのメソッドが正常に返された場合、APPLICATION_VIEW_ORIENTATION 構造体へのポインターを受け取ります。

戻り値

種類: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IApplicationDesignModeSettings2 "{490514E1-675A-4D6E-A58D-E54901B4CA2F}"
#usecom global IApplicationDesignModeSettings2 IID_IApplicationDesignModeSettings2 "{958A6FB5-DCB2-4FAF-AAFD-7FB054AD1A3B}"
#comfunc global IApplicationDesignModeSettings2_SetNativeDisplayOrientation    9 int
#comfunc global IApplicationDesignModeSettings2_SetApplicationViewOrientation  10 int
#comfunc global IApplicationDesignModeSettings2_SetAdjacentDisplayEdges        11 int
#comfunc global IApplicationDesignModeSettings2_SetIsOnLockScreen              12 int
#comfunc global IApplicationDesignModeSettings2_SetApplicationViewMinWidth     13 int
#comfunc global IApplicationDesignModeSettings2_GetApplicationSizeBounds       14 var,var
#comfunc global IApplicationDesignModeSettings2_GetApplicationViewOrientation  15 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。