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