diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2018-04-01 03:55:13 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2018-04-01 03:55:13 +0000 |
| commit | f3ac2ce9dc0ae329ac2deeed96f038e0c8e07330 (patch) | |
| tree | c86dc8a42127dcab8721c80000b9e861b378d2b8 /Common/NativeApp/src | |
| parent | Added sync interval to Present. (diff) | |
| download | DiligentEngine-f3ac2ce9dc0ae329ac2deeed96f038e0c8e07330.tar.gz DiligentEngine-f3ac2ce9dc0ae329ac2deeed96f038e0c8e07330.zip | |
Implemented switching to fullscreen on shift+enter in UWP
Diffstat (limited to 'Common/NativeApp/src')
| -rw-r--r-- | Common/NativeApp/src/UWP/App.cpp | 47 | ||||
| -rw-r--r-- | Common/NativeApp/src/UWP/App.h | 8 |
2 files changed, 53 insertions, 2 deletions
diff --git a/Common/NativeApp/src/UWP/App.cpp b/Common/NativeApp/src/UWP/App.cpp index 6767b49..e0af485 100644 --- a/Common/NativeApp/src/UWP/App.cpp +++ b/Common/NativeApp/src/UWP/App.cpp @@ -103,6 +103,12 @@ void App::SetWindow(CoreWindow^ window) window->Closed += ref new TypedEventHandler<CoreWindow^, CoreWindowEventArgs^>(this, &App::OnWindowClosed); + window->KeyDown += + ref new TypedEventHandler<CoreWindow^, KeyEventArgs^>(this, &App::OnKeyDown); + + window->KeyUp += + ref new TypedEventHandler<CoreWindow^, KeyEventArgs^>(this, &App::OnKeyUp); + DisplayInformation^ currentDisplayInformation = DisplayInformation::GetForCurrentView(); currentDisplayInformation->DpiChanged += @@ -243,6 +249,47 @@ void App::OnDisplayContentsInvalidated(DisplayInformation^ sender, Object^ args) GetDeviceResources()->ValidateDevice(); } +void App::OnKeyDown(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args) +{ + auto Key = args->VirtualKey; + switch(Key) + { + case VirtualKey::Escape: + CoreApplication::Exit(); + break; + + case VirtualKey::Enter: + if(m_bShiftPressed) + { + auto applicationView = Windows::UI::ViewManagement::ApplicationView::GetForCurrentView(); + if (applicationView->IsFullScreenMode) + { + applicationView->ExitFullScreenMode(); + } + else + { + applicationView->TryEnterFullScreenMode(); + } + } + break; + + case VirtualKey::Shift: + m_bShiftPressed = true; + break; + } +} + +void App::OnKeyUp(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args) +{ + auto Key = args->VirtualKey; + switch (Key) + { + case VirtualKey::Shift: + m_bShiftPressed = false; + break; + } +} + std::shared_ptr<DX::DeviceResources> App::GetDeviceResources() { if (m_deviceResources != nullptr && m_deviceResources->IsDeviceRemoved()) diff --git a/Common/NativeApp/src/UWP/App.h b/Common/NativeApp/src/UWP/App.h index b480a52..1b09441 100644 --- a/Common/NativeApp/src/UWP/App.h +++ b/Common/NativeApp/src/UWP/App.h @@ -57,11 +57,15 @@ namespace SampleApp void OnOrientationChanged(Windows::Graphics::Display::DisplayInformation^ sender, Platform::Object^ args); void OnDisplayContentsInvalidated(Windows::Graphics::Display::DisplayInformation^ sender, Platform::Object^ args); + void OnKeyDown(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args); + void OnKeyUp(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args); + private: std::shared_ptr<DX::DeviceResources> GetDeviceResources(); std::unique_ptr<NativeAppBase> m_Main; std::shared_ptr<DX::DeviceResources> m_deviceResources; - bool m_windowClosed; - bool m_windowVisible; + bool m_windowClosed = false; + bool m_windowVisible = false; + bool m_bShiftPressed = false; }; } |
