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. 调用 IInitializeWithWindow 对象的 Initialize 方法,传入代理核心窗口的 HWND。 必须在调用任何“set”方法之前完成此操作,并且每个进程仅成功一次。 有关代码示例,请参阅 [显示依赖于 CoreWindow 的 WinRT UI 对象] (/windows/apps/develop/ui-input/display-ui-objects#winui-3-with-c) 。
  4. 调用 QueryInterface for IApplicationDesignModeSettings ,并通过调用其适当的方法 (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)