Поделиться через


Интерфейс 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. Вызовите CoCreateInstance с CLSID_ApplicationDesignModeSettings, чтобы создать объект параметров режима конструктора приложения в потоке в процессе приложения Магазина Windows.
  2. Вызовите QueryInterface для объекта параметров режима конструктора приложения, чтобы получить объект IInitializeWithWindow .
  3. Вызовите метод Initialize объекта IInitializeWithWindow , передав HWND для основного окна прокси-сервера. Это необходимо сделать до вызова каких-либо "методов set" и будет выполнено только один раз для каждого процесса. Пример кода см. в разделе [Отображение объектов пользовательского интерфейса WinRT, зависящих от CoreWindow](/windows/apps/develop/ui-input/display-ui-objects#winui-3-with-c).
  4. Вызовите QueryInterface для IApplicationDesignModeSettings и подделывание необходимого состояния теста, вызвав соответствующие методы (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
Header shobjidl_core.h (включая Shobjidl.h)