From ec7b77fc0f6ed20eecf25039c6acbe2050cef877 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20H=C3=B6ltermann?= Date: Fri, 14 Jun 2024 16:32:41 +0200 Subject: [PATCH] Improved win32 bindings according to Kelimions suggestions with enums and bitsets --- core/sys/windows/kernel32.odin | 21 ++++++++++++++++++--- core/sys/windows/user32.odin | 12 +++++++++++- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index e50f18984..86f6b86f0 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -1214,13 +1214,28 @@ SYSTEM_LOGICAL_PROCESSOR_INFORMATION :: struct { } SYSTEM_POWER_STATUS :: struct { - ACLineStatus: BYTE, - BatteryFlag: BYTE, + ACLineStatus: AC_Line_Status, + BatteryFlag: Battery_Flags, BatteryLifePercent: BYTE, SystemStatusFlag: BYTE, BatteryLifeTime: DWORD, BatteryFullLifeTime: DWORD, -} +} + +AC_Line_Status :: enum BYTE { + Offline = 0, + Online = 1, + Unknown = 255, +} + +Battery_Flag :: enum BYTE { + High = 0, + Low = 1, + Critical = 2, + Charging = 3, + No_Battery = 7, +} +Battery_Flags :: bit_set[Battery_Flag; BYTE] /* Global Memory Flags */ GMEM_FIXED :: 0x0000 diff --git a/core/sys/windows/user32.odin b/core/sys/windows/user32.odin index 6c053fed0..380c0ac56 100644 --- a/core/sys/windows/user32.odin +++ b/core/sys/windows/user32.odin @@ -23,7 +23,8 @@ foreign user32 { eventMin, eventMax: DWORD, hmodWinEventProc: HMODULE, pfnWinEvenProc: WINEVENTPROC, - idProcess, idThread, dwmFlags: DWORD, + idProcess, idThread: DWORD, + dwFlags: WinEventFlags, ) -> HWINEVENTHOOK --- IsChild :: proc(hWndParent, hWnd: HWND) -> BOOL --- @@ -579,3 +580,12 @@ RedrawWindowFlags :: enum UINT { RDW_FRAME = 0x0400, RDW_NOFRAME = 0x0800, } + +WinEventFlags :: bit_set[WinEventFlag; DWORD] + +WinEventFlag :: enum DWORD { + WINEVENT_OUTOFCONTEXT = 0, + WINEVENT_SKIPOWNTHREAD = 1, + WINEVENT_SKIPOWNPROCESS = 2, + WINEVENT_INCONTEXT = 4, +}