Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе показано, как определить возможности активации для приложения DirectX универсальной платформы Windows (UWP).
Регистрация обработчика событий активации приложения
Сначала зарегистрируйтесь для обработки события 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();
}
Начало обработки сообщения о событии для главного окна приложения
Ваши обратные вызовы происходят по мере того как сообщения о событиях обрабатываются CoreDispatcher для CoreWindowприложения. Этот обратный вызов не будет вызываться, если вы не используете CoreDispatcher::ProcessEvents в основном цикле вашего приложения (реализованного в методе IFrameworkView::Run вашего поставщика представлений).
// 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);
}
}
}
Связанные темы