vkdoom_m/libraries/ZWidget/src/window/win32/win32window.h
Magnus Norddahl b2d2f61be0 Add zwidget
2023-12-27 00:44:40 +01:00

69 lines
1.8 KiB
C++

#pragma once
#define NOMINMAX
#define WIN32_MEAN_AND_LEAN
#ifndef WINVER
#define WINVER 0x0605
#endif
#include <Windows.h>
#include <list>
#include <zwidget/window/window.h>
class Win32Window : public DisplayWindow
{
public:
Win32Window(DisplayWindowHost* windowHost);
~Win32Window();
void SetWindowTitle(const std::string& text) override;
void SetWindowFrame(const Rect& box) override;
void SetClientFrame(const Rect& box) override;
void Show() override;
void ShowFullscreen() override;
void ShowMaximized() override;
void ShowMinimized() override;
void ShowNormal() override;
void Hide() override;
void Activate() override;
void ShowCursor(bool enable) override;
void LockCursor() override;
void UnlockCursor() override;
void Update() override;
bool GetKeyState(EInputKey key) override;
Rect GetWindowFrame() const override;
Size GetClientSize() const override;
int GetPixelWidth() const override;
int GetPixelHeight() const override;
double GetDpiScale() const override;
void PresentBitmap(int width, int height, const uint32_t* pixels) override;
void SetBorderColor(uint32_t bgra8) override;
void SetCaptionColor(uint32_t bgra8) override;
void SetCaptionTextColor(uint32_t bgra8) override;
Point GetLParamPos(LPARAM lparam) const;
static void ProcessEvents();
static void RunLoop();
static void ExitLoop();
static bool ExitRunLoop;
static std::list<Win32Window*> Windows;
std::list<Win32Window*>::iterator WindowsIterator;
LRESULT OnWindowMessage(UINT msg, WPARAM wparam, LPARAM lparam);
static LRESULT CALLBACK WndProc(HWND windowhandle, UINT msg, WPARAM wparam, LPARAM lparam);
DisplayWindowHost* WindowHost = nullptr;
HWND WindowHandle = 0;
bool Fullscreen = false;
bool MouseLocked = false;
POINT MouseLockPos = {};
HDC PaintDC = 0;
};