Commit 8e9e126d41

daurnimator <quae@daurnimator.com>
2020-04-12 05:59:20
std: add some basic windows user32 definitions
1 parent 20b2457
Changed files (4)
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;
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;
 
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;
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");