From 8e9e126d41cbca619a2a4658fb38d10120388e8f Mon Sep 17 00:00:00 2001 From: daurnimator Date: Sun, 12 Apr 2020 13:59:20 +1000 Subject: [PATCH] std: add some basic windows user32 definitions --- lib/std/os/windows.zig | 1 + lib/std/os/windows/bits.zig | 9 ++++++++ lib/std/os/windows/kernel32.zig | 4 +++- lib/std/os/windows/user32.zig | 37 +++++++++++++++++++++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 lib/std/os/windows/user32.zig diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig index 72593b92c7d0814e8423e36facb26edbb6ade496..882e5dbedf16d2305940554e672fe9b4d4390e3d 100644 --- a/lib/std/os/windows.zig +++ b/lib/std/os/windows.zig @@ -17,6 +17,7 @@ pub const ntdll = @import("windows/ntdll.zig"); pub const ole32 = @import("windows/ole32.zig"); pub const psapi = @import("windows/psapi.zig"); pub const shell32 = @import("windows/shell32.zig"); +pub const user32 = @import("windows/user32.zig"); pub const ws2_32 = @import("windows/ws2_32.zig"); pub usingnamespace @import("windows/bits.zig"); diff --git a/lib/std/os/windows/bits.zig b/lib/std/os/windows/bits.zig index 16cc6d744156f31c92d202cd5adfd7975258f67c..6d6f3644cc2e3fd9043bdb796bfabbe565ce8a0c 100644 --- a/lib/std/os/windows/bits.zig +++ b/lib/std/os/windows/bits.zig @@ -27,8 +27,13 @@ pub const UCHAR = u8; pub const FLOAT = f32; pub const HANDLE = *c_void; pub const HCRYPTPROV = ULONG_PTR; +pub const HBRUSH = *@OpaqueType(); +pub const HCURSOR = *@OpaqueType(); +pub const HICON = *@OpaqueType(); pub const HINSTANCE = *@OpaqueType(); +pub const HMENU = *@OpaqueType(); pub const HMODULE = *@OpaqueType(); +pub const HWND = *@OpaqueType(); pub const FARPROC = *@OpaqueType(); pub const INT = c_int; pub const LPBYTE = *BYTE; @@ -65,6 +70,10 @@ pub const LONGLONG = i64; pub const HLOCAL = HANDLE; pub const LANGID = c_ushort; +pub const WPARAM = usize; +pub const LPARAM = ?*c_void; +pub const LRESULT = ?*c_void; + pub const va_list = *@OpaqueType(); pub const TRUE = 1; diff --git a/lib/std/os/windows/kernel32.zig b/lib/std/os/windows/kernel32.zig index 2e5214eb20681fe01998b239706fdbb1347d9968..8cdf07c1aae7fa7eb9b2c34d68fd18a3ff474432 100644 --- a/lib/std/os/windows/kernel32.zig +++ b/lib/std/os/windows/kernel32.zig @@ -103,7 +103,9 @@ pub extern "kernel32" fn GetFileAttributesW(lpFileName: [*]const WCHAR) callconv pub extern "kernel32" fn GetModuleFileNameW(hModule: ?HMODULE, lpFilename: [*]u16, nSize: DWORD) callconv(.Stdcall) DWORD; -pub extern "kernel32" fn GetModuleHandleW(lpModuleName: ?[*]const WCHAR) callconv(.Stdcall) ?HMODULE; +pub extern "kernel32" fn GetModuleHandleA(lpModuleName: ?LPCSTR) callconv(.Stdcall) ?HMODULE; + +pub extern "kernel32" fn GetModuleHandleW(lpModuleName: ?[*:0]const WCHAR) callconv(.Stdcall) ?HMODULE; pub extern "kernel32" fn GetLastError() callconv(.Stdcall) Win32Error; diff --git a/lib/std/os/windows/user32.zig b/lib/std/os/windows/user32.zig new file mode 100644 index 0000000000000000000000000000000000000000..f24f20cfc8859e3d79b1f6f99cd751cafeafba24 --- /dev/null +++ b/lib/std/os/windows/user32.zig @@ -0,0 +1,37 @@ +usingnamespace @import("bits.zig"); + +pub const WNDPROC = fn (HWND, UINT, WPARAM, LPARAM) callconv(.Stdcall) LRESULT; + +pub const WNDCLASSEXA = extern struct { + cbSize: UINT = @sizeOf(WNDCLASSEXA), + style: UINT, + lpfnWndProc: WNDPROC, + cbClsExtra: i32, + cbWndExtra: i32, + hInstance: HINSTANCE, + hIcon: ?HICON, + hCursor: ?HCURSOR, + hbrBackground: ?HBRUSH, + lpszMenuName: ?LPCSTR, + lpszClassName: LPCSTR, + hIconSm: ?HICON, +}; + +pub extern "user32" fn CreateWindowExA( + dwExStyle: DWORD, + lpClassName: LPCSTR, + lpWindowName: LPCSTR, + dwStyle: DWORD, + X: i32, + Y: i32, + nWidth: i32, + nHeight: i32, + hWindParent: ?HWND, + hMenu: ?HMENU, + hInstance: HINSTANCE, + lpParam: ?LPVOID, +) callconv(.Stdcall) ?HWND; + +pub extern "user32" fn DefWindowProcA(HWND, Msg: UINT, WPARAM, LPARAM) callconv(.Stdcall) LRESULT; + +pub extern "user32" fn RegisterClassExA(*const WNDCLASSEXA) callconv(.Stdcall) c_ushort; -- 2.54.0