如何啟用應用程式 (DirectX 和 C++)
本主題說明如何定義 Universal Windows Platform (UWP) DirectX 應用程式的啟用體驗。
註冊應用程式啟用事件處理常式
首先,註冊以處理 CoreApplicationView::Activated 事件,此事件會在您的應用程式啟動後由作業系統初始化時引發。
將此程式碼新增至檢視提供者的 IFrameworkView::Initialize (範例中名為 MyViewProvider) 的實作:
void App::Initialize(CoreApplicationView^ applicationView)
{
// Register event handlers for the app lifecycle. This example includes Activated, so that we
// can make the CoreWindow active and start rendering on the window.
applicationView->Activated +=
ref new TypedEventHandler<CoreApplicationView^, IActivatedEventArgs^>(this, &App::OnActivated);
//...
}
啟動應用程式的 CoreWindow 執行個體
當應用程式啟動時,您必須取得應用程式的 CoreWindow。 CoreWindow,包含您的應用用於處理視窗事件的視窗事件消息分發程式。 呼叫 CoreWindow::GetForCurrentThread,在應用程式啟用事件的回呼中取得此參考。 取得此參照後,請呼叫 CoreWindow::Activate,啟動主應用程式視窗。
void App::OnActivated(CoreApplicationView^ applicationView, IActivatedEventArgs^ args)
{
// Run() won't start until the CoreWindow is activated.
CoreWindow::GetForCurrentThread()->Activate();
}
開始處理主應用程式視窗的事件訊息
您的回呼會在應用程式的 CoreWindow,由 CoreDispatcher 處理事件訊息時發生。 如果您沒有從應用程式的主回圈 (在檢視提供者的 IFrameworkView::Run 方法中實作) 呼叫 CoreDispatcher::ProcessEvents,將不會呼叫此回呼。
// This method is called after the window becomes active.
void App::Run()
{
while (!m_windowClosed)
{
if (m_windowVisible)
{
CoreWindow::GetForCurrentThread()->Dispatcher->ProcessEvents(CoreProcessEventsOption::ProcessAllIfPresent);
m_main->Update();
if (m_main->Render())
{
m_deviceResources->Present();
}
}
else
{
CoreWindow::GetForCurrentThread()->Dispatcher->ProcessEvents(CoreProcessEventsOption::ProcessOneAndAllPending);
}
}
}
相關主題