diff options
| author | ladevieq <ladevie.quentin@gmail.com> | 2021-01-16 23:22:30 +0100 |
|---|---|---|
| committer | ladevieq <ladevie.quentin@gmail.com> | 2021-01-16 23:25:16 +0100 |
| commit | dfc9a9b37d544d3a357b560829d2a9a48e5e5f5b (patch) | |
| tree | ed7233644518f134081ca2878b526ae90812e130 /src | |
| parent | c4ed9a51d9630ceb87d5e4a256aee6cbdb82b0b9 (diff) | |
Add windows window event loop
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.cpp | 2 | ||||
| -rw-r--r-- | src/window.cpp | 19 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp index 0a357f8..0176fdf 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -153,6 +153,8 @@ int main() { vkrenderer renderer { wnd, inputs }; while(wnd.isOpen) { + wnd.poll_events(); + // To start a frame capture, call StartFrameCapture. // You can specify NULL, NULL for the device to capture on if you have only one device and // either no windows at all or only one window, and it will capture from that device. diff --git a/src/window.cpp b/src/window.cpp index a55a439..489473b 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -41,6 +41,7 @@ LRESULT CALLBACK window::window_procedure(HWND hwnd, UINT umsg, WPARAM wparam, L SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)win); } else { win = (window*)GetWindowLongPtr(hwnd, GWLP_USERDATA); + return win->message_handler(hwnd, umsg, wparam, lparam); } return DefWindowProc(hwnd, umsg, wparam, lparam); @@ -82,4 +83,22 @@ window::window(uint32_t width, uint32_t height) isOpen = true; } + +void window::poll_events() { + MSG msg = {}; + + while (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) { + TranslateMessage(&msg); + DispatchMessage(&msg); + } +} + +LRESULT window::message_handler(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lparam) { + switch(umsg) { + default: + return DefWindowProc(hwnd, umsg, wparam, lparam); + } + + return 0; +} #endif |
