Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie przedstawiono sposób definiowania środowiska aktywacji dla aplikacji DirectX platformy uniwersalnej systemu Windows (UWP).
Zarejestruj procedurę obsługi zdarzenia aktywacji aplikacji
Najpierw zarejestruj się, aby obsłużyć zdarzenie CoreApplicationView::Activated, które jest zgłaszane podczas uruchamiania aplikacji i inicjowane przez system operacyjny.
Dodaj ten kod do implementacji IFrameworkView::Initialize metody dostawcy widoku (o nazwie MyViewProvider w przykładzie):
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);
//...
}
Aktywowanie wystąpienia CoreWindow dla aplikacji
Po uruchomieniu aplikacji należy uzyskać odwołanie do CoreWindow aplikacji. CoreWindow zawiera dyspozytor komunikatów dotyczących zdarzeń okna, którego aplikacja używa do ich przetwarzania. Uzyskaj to odwołanie w wywołaniu zwrotnym zdarzenia aktywacji aplikacji, wywołując CoreWindow::GetForCurrentThread. Po uzyskaniu tego odwołania aktywuj główne okno aplikacji, wywołując CoreWindow::Activate.
void App::OnActivated(CoreApplicationView^ applicationView, IActivatedEventArgs^ args)
{
// Run() won't start until the CoreWindow is activated.
CoreWindow::GetForCurrentThread()->Activate();
}
Rozpoczynanie przetwarzania komunikatu o zdarzeniu dla głównego okna aplikacji
Wywołania zwrotne występują, gdy komunikaty o zdarzeniach są przetwarzane przez CoreDispatcher dla aplikacji CoreWindow. To wywołanie zwrotne nie zostanie wywołane, jeśli nie wywołasz metody CoreDispatcher::ProcessEvents z głównej pętli aplikacji (zaimplementowanej w metodzie IFrameworkView::Run dostawcy widoku).
// 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);
}
}
}
Tematy pokrewne