ToastOcclusionManagerPreview.SetToastWindowMargin(WindowId, Double) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
要求 OS 顯示具有指定垂直位移的應用程式通知,以檢視圖元為單位,以避免通知遮蔽指定視窗中的內容。
重要
ToastOcclusionManagerPreview.SetToastWindowMargin API 是有限存取功能的一部分, (請參閱 LimitedAccessFeatures 類別) 。 如需詳細資訊或要求解除鎖定令牌,請使用 LAF存取令牌要求表單。
public:
static void SetToastWindowMargin(WindowId appWindowId, double margin);
static void SetToastWindowMargin(WindowId const& appWindowId, double const& margin);
public static void SetToastWindowMargin(WindowId appWindowId, double margin);
function setToastWindowMargin(appWindowId, margin)
Public Shared Sub SetToastWindowMargin (appWindowId As WindowId, margin As Double)
參數
- appWindowId
- WindowId
與通知位移要求相關聯之視窗的 WindowId 。 若要套用位移,指定的窗口必須最大化、焦點、主要畫面上,而且無法看見螢幕上的鍵盤。
- margin
-
Double
double
顯示應用程式通知的垂直位移,以檢視圖元為單位。 邊界目前的最大值為 180 像素。 大於 180 像素的邊界要求將會成功,但會限製為 180 圖元。 如果指定負值,則會限製為 0。
備註
此 API 即將發行為預覽版,可供企業客戶測試功能。 未來版本中可能會移除和/或修改此 API。 使用 API 之前,應用程式應該呼叫 LimitedAccessFeatures.TryUnlockFeature,並傳入 Microsoft 提供的功能識別碼和應用程式令牌,以確認應用程式已獲授權使用 API。 未經授權的應用程式呼叫將不會有任何作用。
下列範例程式代碼示範如何檢查 呼叫應用程式的 SetToastWindowMargin 可用性,如果可用,請呼叫 API 要求應用程式通知向上移 90 圖元。 這些呼叫應在應用程式啟動期間進行。
// App.xaml.cpp
static Platform::String^ FeatureName = L"com.microsoft.windows.ui.notifications.preview.toastOcclusionManagerPreview";
static Platform::String^ ApiToken = L"[API token]";
static Platform::String^ ApiAttestation = L"[Package family name] has registered their use of com.microsoft.windows.ui.notifications.preview.toastOcclusionManagerPreview with Microsoft and agrees to the terms of use.";
App::App()
{
InitializeComponent();
Suspending += ref new SuspendingEventHandler(this, &App::OnSuspending);
m_isToastOcclusionManagerPreviewAvailable = DetectToastOcclusionManagerPreview();
}
bool App::DetectToastOcclusionManagerPreview()
{
LimitedAccessFeatureRequestResult^ result = LimitedAccessFeatures::TryUnlockFeature(FeatureName, ApiToken, ApiAttestation);
switch (result->Status)
{
case LimitedAccessFeatureStatus::Available:
case LimitedAccessFeatureStatus::AvailableWithoutToken:
return true;
}
return false;
}
void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ e)
{
...
// Request for toast window to be shifted up 90 pixels
// Toasts will only be shifted up if the window is maximized,
// on the primary screen and the software keyboard isn't present.
if (!m_isRegistered && m_isToastOcclusionManagerPreviewAvailable)
{
HWND window;
IInspectable* inspectable = reinterpret_cast<IInspectable*>(CoreWindow::GetForCurrentThread());
winrt::com_ptr<ICoreWindowInterop> interop;
if (SUCCEEDED(inspectable->QueryInterface(IID_PPV_ARGS(&interop))) && SUCCEEDED(interop->get_WindowHandle(&window)))
{
// Get the windowId
winrt::Windows::UI::WindowId windowId{ reinterpret_cast<uint64_t>(window) };
ToastOcclusionManagerPreview::SetToastWindowMargin(windowId, 90);
}
m_isRegistered = true;
}
}