mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
sys/windows: added rudimentary User32.lib bindings
This commit is contained in:
@@ -21,7 +21,15 @@ HINSTANCE :: HANDLE
|
|||||||
HMODULE :: distinct HINSTANCE
|
HMODULE :: distinct HINSTANCE
|
||||||
HRESULT :: distinct LONG
|
HRESULT :: distinct LONG
|
||||||
HWND :: distinct HANDLE
|
HWND :: distinct HANDLE
|
||||||
|
HDC :: distinct HANDLE
|
||||||
HMONITOR :: distinct HANDLE
|
HMONITOR :: distinct HANDLE
|
||||||
|
HICON :: distinct HANDLE
|
||||||
|
HCURSOR :: distinct HANDLE
|
||||||
|
HMENU :: distinct HANDLE
|
||||||
|
HBRUSH :: distinct HANDLE
|
||||||
|
WPARAM :: distinct UINT_PTR
|
||||||
|
LPARAM :: distinct LONG_PTR
|
||||||
|
LRESULT :: distinct LONG_PTR
|
||||||
BOOL :: distinct b32
|
BOOL :: distinct b32
|
||||||
BYTE :: distinct u8
|
BYTE :: distinct u8
|
||||||
BOOLEAN :: distinct b8
|
BOOLEAN :: distinct b8
|
||||||
@@ -42,6 +50,7 @@ PULONG_PTR :: ^ULONG_PTR
|
|||||||
LPULONG_PTR :: ^ULONG_PTR
|
LPULONG_PTR :: ^ULONG_PTR
|
||||||
DWORD_PTR :: ULONG_PTR
|
DWORD_PTR :: ULONG_PTR
|
||||||
LONG_PTR :: int
|
LONG_PTR :: int
|
||||||
|
UINT_PTR :: uintptr
|
||||||
ULONG :: c_ulong
|
ULONG :: c_ulong
|
||||||
UCHAR :: BYTE
|
UCHAR :: BYTE
|
||||||
NTSTATUS :: c.long
|
NTSTATUS :: c.long
|
||||||
@@ -178,6 +187,83 @@ GetFileExInfoStandard: GET_FILEEX_INFO_LEVELS : 0
|
|||||||
GetFileExMaxInfoLevel: GET_FILEEX_INFO_LEVELS : 1
|
GetFileExMaxInfoLevel: GET_FILEEX_INFO_LEVELS : 1
|
||||||
|
|
||||||
|
|
||||||
|
WNDPROC :: #type proc "stdcall" (HWND, UINT, WPARAM, LPARAM) -> LRESULT
|
||||||
|
|
||||||
|
WNDCLASSA :: struct {
|
||||||
|
style: UINT,
|
||||||
|
lpfnWndProc: WNDPROC,
|
||||||
|
cbClsExtra: c_int,
|
||||||
|
cbWndExtra: c_int,
|
||||||
|
hInstance: HINSTANCE,
|
||||||
|
hIcon: HICON,
|
||||||
|
hCursor: HCURSOR,
|
||||||
|
hbrBackground: HBRUSH,
|
||||||
|
lpszMenuName: LPCSTR,
|
||||||
|
lpszClassName: LPCSTR,
|
||||||
|
}
|
||||||
|
|
||||||
|
WNDCLASSW :: struct {
|
||||||
|
style: UINT,
|
||||||
|
lpfnWndProc: WNDPROC,
|
||||||
|
cbClsExtra: c_int,
|
||||||
|
cbWndExtra: c_int,
|
||||||
|
hInstance: HINSTANCE,
|
||||||
|
hIcon: HICON,
|
||||||
|
hCursor: HCURSOR,
|
||||||
|
hbrBackground: HBRUSH,
|
||||||
|
lpszMenuName: LPCWSTR,
|
||||||
|
lpszClassName: LPCWSTR,
|
||||||
|
}
|
||||||
|
|
||||||
|
WNDCLASSEXA :: struct {
|
||||||
|
cbSize: UINT,
|
||||||
|
style: UINT,
|
||||||
|
lpfnWndProc: WNDPROC,
|
||||||
|
cbClsExtra: c_int,
|
||||||
|
cbWndExtra: c_int,
|
||||||
|
hInstance: HINSTANCE,
|
||||||
|
hIcon: HICON,
|
||||||
|
hCursor: HCURSOR,
|
||||||
|
hbrBackground: HBRUSH,
|
||||||
|
lpszMenuName: LPCSTR,
|
||||||
|
lpszClassName: LPCSTR,
|
||||||
|
hIconSm: HICON,
|
||||||
|
}
|
||||||
|
|
||||||
|
WNDCLASSEXW :: struct {
|
||||||
|
cbSize: UINT,
|
||||||
|
style: UINT,
|
||||||
|
lpfnWndProc: WNDPROC,
|
||||||
|
cbClsExtra: c_int,
|
||||||
|
cbWndExtra: c_int,
|
||||||
|
hInstance: HINSTANCE,
|
||||||
|
hIcon: HICON,
|
||||||
|
hCursor: HCURSOR,
|
||||||
|
hbrBackground: HBRUSH,
|
||||||
|
lpszMenuName: LPCWSTR,
|
||||||
|
lpszClassName: LPCWSTR,
|
||||||
|
hIconSm: HICON,
|
||||||
|
}
|
||||||
|
|
||||||
|
MSG :: struct {
|
||||||
|
hwnd: HWND,
|
||||||
|
message: UINT,
|
||||||
|
wParam: WPARAM,
|
||||||
|
lParam: LPARAM,
|
||||||
|
time: DWORD,
|
||||||
|
pt: POINT,
|
||||||
|
}
|
||||||
|
|
||||||
|
PAINTSTRUCT :: struct {
|
||||||
|
hdc: HDC,
|
||||||
|
fErase: BOOL,
|
||||||
|
rcPaint: RECT,
|
||||||
|
fRestore: BOOL,
|
||||||
|
fIncUpdate: BOOL,
|
||||||
|
rgbReserved: [32]BYTE,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
WIN32_FIND_DATAW :: struct {
|
WIN32_FIND_DATAW :: struct {
|
||||||
dwFileAttributes: DWORD,
|
dwFileAttributes: DWORD,
|
||||||
ftCreationTime: FILETIME,
|
ftCreationTime: FILETIME,
|
||||||
|
|||||||
@@ -0,0 +1,82 @@
|
|||||||
|
// +build windows
|
||||||
|
package sys_windows
|
||||||
|
|
||||||
|
foreign import user32 "system:User32.lib"
|
||||||
|
|
||||||
|
@(default_calling_convention="stdcall")
|
||||||
|
foreign user32 {
|
||||||
|
RegisterClassA :: proc(lpWndClass: ^WNDCLASSA) -> ATOM ---
|
||||||
|
RegisterClassW :: proc(lpWndClass: ^WNDCLASSW) -> ATOM ---
|
||||||
|
RegisterClassExA :: proc(^WNDCLASSEXA) -> ATOM ---
|
||||||
|
RegisterClassExW :: proc(^WNDCLASSEXW) -> ATOM ---
|
||||||
|
|
||||||
|
CreateWindowExA :: proc(
|
||||||
|
dwExStyle: DWORD,
|
||||||
|
lpClassName: LPCSTR,
|
||||||
|
lpWindowName: LPCSTR,
|
||||||
|
dwStyle: DWORD,
|
||||||
|
X: c_int,
|
||||||
|
Y: c_int,
|
||||||
|
nWidth: c_int,
|
||||||
|
nHeight: c_int,
|
||||||
|
hWndParent: HWND,
|
||||||
|
hMenu: HMENU,
|
||||||
|
hInstance: HINSTANCE,
|
||||||
|
lpParam: LPVOID,
|
||||||
|
) -> HWND ---
|
||||||
|
CreateWindowExW :: proc(
|
||||||
|
dwExStyle: DWORD,
|
||||||
|
lpClassName: LPCWSTR,
|
||||||
|
lpWindowName: LPCWSTR,
|
||||||
|
dwStyle: DWORD,
|
||||||
|
X: c_int,
|
||||||
|
Y: c_int,
|
||||||
|
nWidth: c_int,
|
||||||
|
nHeight: c_int,
|
||||||
|
hWndParent: HWND,
|
||||||
|
hMenu: HMENU,
|
||||||
|
hInstance: HINSTANCE,
|
||||||
|
lpParam: LPVOID,
|
||||||
|
) -> HWND ---
|
||||||
|
|
||||||
|
DestroyWindow :: proc(hWnd: HWND) -> BOOL ---
|
||||||
|
ShowWindow :: proc(hWnd: HWND, nCmdShow: c_int) -> BOOL ---
|
||||||
|
|
||||||
|
GetMessageA :: proc(lpMsg: ^MSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT) -> BOOL ---
|
||||||
|
GetMessageW :: proc(lpMsg: ^MSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT) -> BOOL ---
|
||||||
|
|
||||||
|
TranslateMessage :: proc(lpMsg: ^MSG) -> BOOL ---
|
||||||
|
DispatchMessageA :: proc(lpMsg: ^MSG) -> LRESULT ---
|
||||||
|
DispatchMessageW :: proc(lpMsg: ^MSG) -> LRESULT ---
|
||||||
|
|
||||||
|
PeekMessageA :: proc(lpMsg: ^MSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT) -> BOOL ---
|
||||||
|
PeekMessageW :: proc(lpMsg: ^MSG, hWnd: HWND, wMsgFilterMin: UINT, wMsgFilterMax: UINT, wRemoveMsg: UINT) -> BOOL ---
|
||||||
|
|
||||||
|
PostMessageA :: proc(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM) -> BOOL ---
|
||||||
|
PostMessageW :: proc(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM) -> BOOL ---
|
||||||
|
SendMessageA :: proc(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM) -> LRESULT ---
|
||||||
|
SendMessageW :: proc(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM) -> LRESULT ---
|
||||||
|
|
||||||
|
PostThreadMessageA :: proc(idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM) -> BOOL ---
|
||||||
|
PostThreadMessageW :: proc(idThread: DWORD, Msg: UINT, wParam: WPARAM, lParam: LPARAM) -> BOOL ---
|
||||||
|
|
||||||
|
DefWindowProcA :: proc(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM) -> LRESULT ---
|
||||||
|
DefWindowProcW :: proc(hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM) -> LRESULT ---
|
||||||
|
|
||||||
|
FindWindowExA :: proc(hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCSTR, lpszWindow: LPCSTR) -> HWND ---
|
||||||
|
FindWindowExW :: proc(hWndParent: HWND, hWndChildAfter: HWND, lpszClass: LPCWSTR, lpszWindow: LPCWSTR) -> HWND ---
|
||||||
|
|
||||||
|
LoadIconA :: proc(hInstance: HINSTANCE, lpIconName: LPCSTR) -> HICON ---
|
||||||
|
LoadIconW :: proc(hInstance: HINSTANCE, lpIconName: LPCWSTR) -> HICON ---
|
||||||
|
LoadCursorA :: proc(hInstance: HINSTANCE, lpCursorName: LPCSTR) -> HCURSOR ---
|
||||||
|
LoadCursorW :: proc(hInstance: HINSTANCE, lpCursorName: LPCWSTR) -> HCURSOR ---
|
||||||
|
|
||||||
|
GetClientRect :: proc(hWnd: HWND, lpRect: ^RECT) -> BOOL ---
|
||||||
|
|
||||||
|
GetWindowDC :: proc(hWnd: HWND) -> HDC ---
|
||||||
|
GetDC :: proc(hWnd: HWND) -> HDC ---
|
||||||
|
ReleaseDC :: proc(hWnd: HWND, hDC: HDC) -> c_int ---
|
||||||
|
|
||||||
|
BeginPaint :: proc(hWnd: HWND, lpPaint: ^PAINTSTRUCT) -> HDC ---
|
||||||
|
EndPaint :: proc(hWnd: HWND, lpPaint: ^PAINTSTRUCT) -> BOOL ---
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user