text: ﻿//// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  //// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  //// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  //// PARTICULAR PURPOSE.
  ////
  //// Copyright (c) Microsoft Corporation. All rights reserved
  
  #pragma once
  
  #include "pch.h"
  #include "DeviceResources.h"
  #include "DWriteVerticalHelloWorldMain.h"
  
  namespace DWriteVerticalHelloWorld
  {
      // Main entry point for our app. Connects the app with the Windows shell and handles application lifecycle events.
      ref class App sealed : public Windows::ApplicationModel::Core::IFrameworkView
      {
      public:
          App();
  
          // IFrameworkView Methods.
          virtual void Initialize(Windows::ApplicationModel::Core::CoreApplicationView^ applicationView);
          virtual void SetWindow(Windows::UI::Core::CoreWindow^ window);
          virtual void Load(Platform::String^ entryPoint);
          virtual void Run();
          virtual void Uninitialize();
  
      protected:
          // Application lifecycle event handlers.
          void OnActivated(Windows::ApplicationModel::Core::CoreApplicationView^ applicationView, Windows::ApplicationModel::Activation::IActivatedEventArgs^ args);
          void OnSuspending(Platform::Object^ sender, Windows::ApplicationModel::SuspendingEventArgs^ args);
          void OnResuming(Platform::Object^ sender, Platform::Object^ args);
  
          // Window event handlers.
          void OnWindowSizeChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::WindowSizeChangedEventArgs^ args);
          void OnVisibilityChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::VisibilityChangedEventArgs^ args);
          void OnWindowClosed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::CoreWindowEventArgs^ args);
  
          // DisplayInformation event handlers.
          void OnDpiChanged(Windows::Graphics::Display::DisplayInformation^ sender, Platform::Object^ args);
          void OnOrientationChanged(Windows::Graphics::Display::DisplayInformation^ sender, Platform::Object^ args);
          void OnDisplayContentsInvalidated(Windows::Graphics::Display::DisplayInformation^ sender, Platform::Object^ args);
  
      private:
          std::shared_ptr<DX::DeviceResources> m_deviceResources;
          std::unique_ptr<DWriteVerticalHelloWorldMain> m_main;
          bool m_windowClosed;
          bool m_windowVisible;
      };
  }
  
  ref class DirectXApplicationSource sealed : Windows::ApplicationModel::Core::IFrameworkViewSource
  {
  public:
      virtual Windows::ApplicationModel::Core::IFrameworkView^ CreateView();
  };
  