Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird erläutert, wie Sie die Aktivierungsoberfläche für eine DirectX-App für die universelle Windows-Plattform (UWP) definieren.
Registrieren des App-Aktivierungsereignishandlers
Registrieren Sie sich zunächst für die Behandlung des CoreApplicationView::Activated-Ereignisses, das ausgelöst wird, wenn Ihre App vom Betriebssystem gestartet und initialisiert wird.
Fügen Sie diesen Code zur Implementierung der IFrameworkView::Initialize Methode Ihres Ansichtsanbieters hinzu (benannt MyViewProvider im Beispiel):
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);
//...
}
Aktivieren der CoreWindow-Instanz für die App
Wenn Ihre App gestartet wird, müssen Sie einen Verweis auf die CoreWindow- für Ihre App abrufen. CoreWindow- enthält den Nachrichtendispatcher für Fensterereignisse, den Ihre App zum Verarbeiten von Fensterereignissen verwendet. Rufen Sie diesen Verweis in Ihrem Rückruf für das App-Aktivierungsereignis ab, indem Sie CoreWindow::GetForCurrentThreadaufrufen. Nachdem Sie diesen Verweis abgerufen haben, aktivieren Sie das Hauptanwendungsfenster, indem Sie CoreWindow::Activateaufrufen.
void App::OnActivated(CoreApplicationView^ applicationView, IActivatedEventArgs^ args)
{
// Run() won't start until the CoreWindow is activated.
CoreWindow::GetForCurrentThread()->Activate();
}
Bearbeitung der Ereignisnachricht für das Hauptfenster der App beginnen
Ihre Rückrufe treten auf, wenn Ereignismeldungen vom CoreDispatcher- für die CoreWindow-der App verarbeitet werden. Dieser Callback wird nicht aufgerufen, wenn Sie nicht CoreDispatcher::ProcessEvents aus der Hauptschleife Ihrer App aufrufen (in der IFrameworkView::Run Methode Ihres Ansichtsanbieters implementiert).
// 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);
}
}
}
Zugehörige Themen