aboutsummaryrefslogtreecommitdiff
path: root/cube/cube.cpp
diff options
context:
space:
mode:
authorPetr Kraus <petr_kraus@email.cz>2019-01-23 18:45:04 +0100
committerTony Barbour <tony@lunarg.com>2019-02-14 12:02:54 -0700
commitd88e4e55e094b1205071b37b12dc3bfe6412e507 (patch)
tree101fc49fceca19616b07512305844feba9dd3772 /cube/cube.cpp
parent87076bda7daf9def8eb7d14df51456b052560065 (diff)
downloadusermoji-d88e4e55e094b1205071b37b12dc3bfe6412e507.tar.xz
vkcube: Implement key events in Windows
Diffstat (limited to 'cube/cube.cpp')
-rw-r--r--cube/cube.cpp29
1 files changed, 27 insertions, 2 deletions
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
{