From d88e4e55e094b1205071b37b12dc3bfe6412e507 Mon Sep 17 00:00:00 2001 From: Petr Kraus Date: Wed, 23 Jan 2019 18:45:04 +0100 Subject: vkcube: Implement key events in Windows --- cube/cube.cpp | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'cube/cube.cpp') diff --git a/cube/cube.cpp b/cube/cube.cpp index 5b90fd2e..a6ac4ff6 100644 --- a/cube/cube.cpp +++ b/cube/cube.cpp @@ -2400,7 +2400,7 @@ void Demo::run() { draw(); curFrame++; - if (frameCount != INT_MAX && curFrame == frameCount) { + if (frameCount != UINT32_MAX && curFrame == frameCount) { PostQuitMessage(validation_error); } } @@ -2837,7 +2837,7 @@ void Demo::run_display() { draw(); curFrame++; - if (frameCount != INT32_MAX && curFrame == frameCount) { + if (frameCount != UINT32_MAX && curFrame == frameCount) { quit = true; } } @@ -2874,6 +2874,22 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { demo.resize(); } break; + case WM_KEYDOWN: + switch (wParam) { + case VK_ESCAPE: + PostQuitMessage(validation_error); + break; + case VK_LEFT: + demo.spin_angle -= demo.spin_increment; + break; + case VK_RIGHT: + demo.spin_angle += demo.spin_increment; + break; + case VK_SPACE: + demo.pause = !demo.pause; + break; + } + return 0; default: break; } @@ -2944,6 +2960,15 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, // main message loop while (!done) { + if (demo.pause) { + const BOOL succ = WaitMessage(); + + if (!succ) { + const auto &suppress_popups = demo.suppress_popups; + ERR_EXIT("WaitMessage() failed on paused demo", "event loop error"); + } + } + PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE); if (msg.message == WM_QUIT) // check for a quit message { -- cgit v1.2.3