// // App.xaml.cpp // App 类的实现。 // #include "pch.h" #include "DirectXPage.xaml.h" using namespace $safeprojectname$; using namespace Platform; using namespace Windows::ApplicationModel; using namespace Windows::ApplicationModel::Activation; using namespace Windows::Foundation; using namespace Windows::Foundation::Collections; using namespace Windows::Storage; using namespace Windows::UI::Xaml; using namespace Windows::UI::Xaml::Controls; using namespace Windows::UI::Xaml::Controls::Primitives; using namespace Windows::UI::Xaml::Data; using namespace Windows::UI::Xaml::Input; using namespace Windows::UI::Xaml::Interop; using namespace Windows::UI::Xaml::Media; using namespace Windows::UI::Xaml::Navigation; /// /// 初始化单一实例应用程序对象。这是执行的创作代码的第一行, /// 已执行,逻辑上等同于 main() 或 WinMain()。 /// App::App() { InitializeComponent(); Suspending += ref new SuspendingEventHandler(this, &App::OnSuspending); Resuming += ref new EventHandler(this, &App::OnResuming); } /// /// 在应用程序由最终用户正常启动时进行调用。 /// 当启动应用程序以打开特定的文件或显示时使用 /// 搜索结果等 /// /// 有关启动请求和过程的详细信息。 void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ e) { #if _DEBUG if (IsDebuggerPresent()) { DebugSettings->EnableFrameRateCounter = true; } #endif auto rootFrame = dynamic_cast(Window::Current->Content); // 不要在窗口已包含内容时重复应用程序初始化, // 只需确保窗口处于活动状态 if (rootFrame == nullptr) { // 创建一个 Frame 以用作导航上下文并将其与 // SuspensionManager 键关联 rootFrame = ref new Frame(); rootFrame->NavigationFailed += ref new Windows::UI::Xaml::Navigation::NavigationFailedEventHandler(this, &App::OnNavigationFailed); // 将框架放在当前窗口中 Window::Current->Content = rootFrame; } if (rootFrame->Content == nullptr) { // 当导航堆栈尚未还原时,导航到第一页, // 并通过将所需信息作为导航参数传入来配置 // 参数 rootFrame->Navigate(TypeName(DirectXPage::typeid), e->Arguments); } if (m_directXPage == nullptr) { m_directXPage = dynamic_cast(rootFrame->Content); } if (e->PreviousExecutionState == ApplicationExecutionState::Terminated) { m_directXPage->LoadInternalState(ApplicationData::Current->LocalSettings->Values); } // 确保当前窗口处于活动状态 Window::Current->Activate(); } /// /// 在将要挂起应用程序执行时调用。 在不知道应用程序 /// 无需知道应用程序会被终止还是会恢复, /// 并让内存内容保持不变。 /// /// 挂起的请求的源。 /// 有关挂起请求的详细信息。 void App::OnSuspending(Object^ sender, SuspendingEventArgs^ e) { (void) sender; // 未使用的参数 (void) e; // 未使用的参数 m_directXPage->SaveInternalState(ApplicationData::Current->LocalSettings->Values); } /// /// 在恢复应用程序执行时调用。 /// /// 恢复请求的源。 /// 有关恢复请求的详细信息。 void App::OnResuming(Object ^sender, Object ^args) { (void) sender; // 未使用的参数 (void) args; // 未使用的参数 m_directXPage->LoadInternalState(ApplicationData::Current->LocalSettings->Values); } /// /// 导航到特定页失败时调用 /// ///导航失败的框架 ///有关导航失败的详细信息 void App::OnNavigationFailed(Platform::Object ^sender, Windows::UI::Xaml::Navigation::NavigationFailedEventArgs ^e) { throw ref new FailureException("Failed to load Page " + e->SourcePageType.Name); }