sys/windows: add functions and constants

This commit is contained in:
hikari
2022-06-09 17:44:51 +03:00
parent d19fc54c3d
commit 88e9eb7d0c
3 changed files with 221 additions and 0 deletions

View File

@@ -7,6 +7,8 @@ foreign import gdi32 "system:Gdi32.lib"
foreign gdi32 {
GetStockObject :: proc(i: c_int) -> HGDIOBJ ---
SelectObject :: proc(hdc: HDC, h: HGDIOBJ) -> HGDIOBJ ---
DeleteObject :: proc(ho: HGDIOBJ) -> BOOL ---
SetBkColor :: proc(hdc: HDC, color: COLORREF) -> COLORREF ---
CreateDIBPatternBrush :: proc(h: HGLOBAL, iUsage: UINT) -> HBRUSH ---
@@ -65,6 +67,15 @@ foreign gdi32 {
SetDCBrushColor :: proc(hdc: HDC, color: COLORREF) -> COLORREF ---
GetDCBrushColor :: proc(hdc: HDC) -> COLORREF ---
PatBlt :: proc(hdc: HDC, x, y, w, h: c_int, rop: DWORD) -> BOOL ---
Rectangle :: proc(hdc: HDC, left, top, right, bottom: c_int) -> BOOL ---
CreateFontW :: proc(
cHeight, cWidth, cEscapement, cOrientation, cWeight: c_int,
bItalic, bUnderline, bStrikeOut, iCharSet, iOutPrecision: DWORD,
iClipPrecision, iQuality, iPitchAndFamily: DWORD,
pszFaceName: LPCWSTR,
) -> HFONT ---
TextOutW :: proc(hdc: HDC, x, y: c_int, lpString: LPCWSTR, c: c_int) -> BOOL ---
}
RGB :: #force_inline proc "contextless" (r, g, b: u8) -> COLORREF {

View File

@@ -35,6 +35,7 @@ HGLOBAL :: distinct HANDLE
HHOOK :: distinct HANDLE
HKEY :: distinct HANDLE
HDESK :: distinct HANDLE
HFONT :: distinct HANDLE
BOOL :: distinct b32
BYTE :: distinct u8
BOOLEAN :: distinct b8
@@ -455,6 +456,201 @@ BROADCAST_QUERY_DENY :: 0x424D5144
HWND_BROADCAST :: HWND(uintptr(0xffff))
HWND_MESSAGE :: HWND(~uintptr(0) - 2) // -3
// Color Types
CTLCOLOR_MSGBOX :: 0
CTLCOLOR_EDIT :: 1
CTLCOLOR_LISTBOX :: 2
CTLCOLOR_BTN :: 3
CTLCOLOR_DLG :: 4
CTLCOLOR_SCROLLBAR :: 5
CTLCOLOR_STATIC :: 6
CTLCOLOR_MAX :: 7
COLOR_SCROLLBAR :: 0
COLOR_BACKGROUND :: 1
COLOR_ACTIVECAPTION :: 2
COLOR_INACTIVECAPTION :: 3
COLOR_MENU :: 4
COLOR_WINDOW :: 5
COLOR_WINDOWFRAME :: 6
COLOR_MENUTEXT :: 7
COLOR_WINDOWTEXT :: 8
COLOR_CAPTIONTEXT :: 9
COLOR_ACTIVEBORDER :: 10
COLOR_INACTIVEBORDER :: 11
COLOR_APPWORKSPACE :: 12
COLOR_HIGHLIGHT :: 13
COLOR_HIGHLIGHTTEXT :: 14
COLOR_BTNFACE :: 15
COLOR_BTNSHADOW :: 16
COLOR_GRAYTEXT :: 17
COLOR_BTNTEXT :: 18
COLOR_INACTIVECAPTIONTEXT :: 19
COLOR_BTNHIGHLIGHT :: 20
COLOR_3DDKSHADOW :: 21
COLOR_3DLIGHT :: 22
COLOR_INFOTEXT :: 23
COLOR_INFOBK :: 24
COLOR_HOTLIGHT :: 26
COLOR_GRADIENTACTIVECAPTION :: 27
COLOR_GRADIENTINACTIVECAPTION :: 28
COLOR_MENUHILIGHT :: 29
COLOR_MENUBAR :: 30
COLOR_DESKTOP :: COLOR_BACKGROUND
COLOR_3DFACE :: COLOR_BTNFACE
COLOR_3DSHADOW :: COLOR_BTNSHADOW
COLOR_3DHIGHLIGHT :: COLOR_BTNHIGHLIGHT
COLOR_3DHILIGHT :: COLOR_BTNHIGHLIGHT
COLOR_BTNHILIGHT :: COLOR_BTNHIGHLIGHT
// Combo Box Notification Codes
CBN_ERRSPACE :: -1
CBN_SELCHANGE :: 1
CBN_DBLCLK :: 2
CBN_SETFOCUS :: 3
CBN_KILLFOCUS :: 4
CBN_EDITCHANGE :: 5
CBN_EDITUPDATE :: 6
CBN_DROPDOWN :: 7
CBN_CLOSEUP :: 8
CBN_SELENDOK :: 9
CBN_SELENDCANCEL :: 10
// Combo Box styles
CBS_SIMPLE :: 0x0001
CBS_DROPDOWN :: 0x0002
CBS_DROPDOWNLIST :: 0x0003
CBS_OWNERDRAWFIXED :: 0x0010
CBS_OWNERDRAWVARIABLE :: 0x0020
CBS_AUTOHSCROLL :: 0x0040
CBS_OEMCONVERT :: 0x0080
CBS_SORT :: 0x0100
CBS_HASSTRINGS :: 0x0200
CBS_NOINTEGRALHEIGHT :: 0x0400
CBS_DISABLENOSCROLL :: 0x0800
CBS_UPPERCASE :: 0x2000
CBS_LOWERCASE :: 0x4000
// User Button Notification Codes
BN_CLICKED :: 0
BN_PAINT :: 1
BN_HILITE :: 2
BN_UNHILITE :: 3
BN_DISABLE :: 4
BN_DOUBLECLICKED :: 5
BN_PUSHED :: BN_HILITE
BN_UNPUSHED :: BN_UNHILITE
BN_DBLCLK :: BN_DOUBLECLICKED
BN_SETFOCUS :: 6
BN_KILLFOCUS :: 7
// Button Control Styles
BS_PUSHBUTTON :: 0x00000000
BS_DEFPUSHBUTTON :: 0x00000001
BS_CHECKBOX :: 0x00000002
BS_AUTOCHECKBOX :: 0x00000003
BS_RADIOBUTTON :: 0x00000004
BS_3STATE :: 0x00000005
BS_AUTO3STATE :: 0x00000006
BS_GROUPBOX :: 0x00000007
BS_USERBUTTON :: 0x00000008
BS_AUTORADIOBUTTON :: 0x00000009
BS_PUSHBOX :: 0x0000000A
BS_OWNERDRAW :: 0x0000000B
BS_TYPEMASK :: 0x0000000F
BS_LEFTTEXT :: 0x00000020
BS_TEXT :: 0x00000000
BS_ICON :: 0x00000040
BS_BITMAP :: 0x00000080
BS_LEFT :: 0x00000100
BS_RIGHT :: 0x00000200
BS_CENTER :: 0x00000300
BS_TOP :: 0x00000400
BS_BOTTOM :: 0x00000800
BS_VCENTER :: 0x00000C00
BS_PUSHLIKE :: 0x00001000
BS_MULTILINE :: 0x00002000
BS_NOTIFY :: 0x00004000
BS_FLAT :: 0x00008000
BS_RIGHTBUTTON :: BS_LEFTTEXT
// Button Control Messages
BST_UNCHECKED :: 0x0000
BST_CHECKED :: 0x0001
BST_INDETERMINATE :: 0x0002
BST_PUSHED :: 0x0004
BST_FOCUS :: 0x0008
// Static Control Constants
SS_LEFT :: 0x00000000
SS_CENTER :: 0x00000001
SS_RIGHT :: 0x00000002
SS_ICON :: 0x00000003
SS_BLACKRECT :: 0x00000004
SS_GRAYRECT :: 0x00000005
SS_WHITERECT :: 0x00000006
SS_BLACKFRAME :: 0x00000007
SS_GRAYFRAME :: 0x00000008
SS_WHITEFRAME :: 0x00000009
SS_USERITEM :: 0x0000000A
SS_SIMPLE :: 0x0000000B
SS_LEFTNOWORDWRAP :: 0x0000000C
SS_OWNERDRAW :: 0x0000000D
SS_BITMAP :: 0x0000000E
SS_ENHMETAFILE :: 0x0000000F
SS_ETCHEDHORZ :: 0x00000010
SS_ETCHEDVERT :: 0x00000011
SS_ETCHEDFRAME :: 0x00000012
SS_TYPEMASK :: 0x0000001F
SS_REALSIZECONTROL :: 0x00000040
SS_NOPREFIX :: 0x00000080
SS_NOTIFY :: 0x00000100
SS_CENTERIMAGE :: 0x00000200
SS_RIGHTJUST :: 0x00000400
SS_REALSIZEIMAGE :: 0x00000800
SS_SUNKEN :: 0x00001000
SS_EDITCONTROL :: 0x00002000
SS_ENDELLIPSIS :: 0x00004000
SS_PATHELLIPSIS :: 0x00008000
SS_WORDELLIPSIS :: 0x0000C000
SS_ELLIPSISMASK :: 0x0000C000
// Edit Control Styles
ES_LEFT :: 0x0000
ES_CENTER :: 0x0001
ES_RIGHT :: 0x0002
ES_MULTILINE :: 0x0004
ES_UPPERCASE :: 0x0008
ES_LOWERCASE :: 0x0010
ES_PASSWORD :: 0x0020
ES_AUTOVSCROLL :: 0x0040
ES_AUTOHSCROLL :: 0x0080
ES_NOHIDESEL :: 0x0100
ES_OEMCONVERT :: 0x0400
ES_READONLY :: 0x0800
ES_WANTRETURN :: 0x1000
ES_NUMBER :: 0x2000
// Font Weights
FW_DONTCARE :: 0
FW_THIN :: 100
FW_EXTRALIGHT :: 200
FW_LIGHT :: 300
FW_NORMAL :: 400
FW_MEDIUM :: 500
FW_SEMIBOLD :: 600
FW_BOLD :: 700
FW_EXTRABOLD :: 800
FW_HEAVY :: 900
FW_ULTRALIGHT :: FW_EXTRALIGHT
FW_REGULAR :: FW_NORMAL
FW_DEMIBOLD :: FW_SEMIBOLD
FW_ULTRABOLD :: FW_EXTRABOLD
FW_BLACK :: FW_HEAVY
PTIMERAPCROUTINE :: #type proc "stdcall" (lpArgToCompletionRoutine: LPVOID, dwTimerLowValue, dwTimerHighValue: DWORD)
TIMERPROC :: #type proc "stdcall" (HWND, UINT, UINT_PTR, DWORD)
@@ -544,6 +740,8 @@ MSG :: struct {
pt: POINT,
}
LPMSG :: ^MSG
PAINTSTRUCT :: struct {
hdc: HDC,
fErase: BOOL,

View File

@@ -161,6 +161,18 @@ foreign user32 {
uTimeout: UINT,
lpdwResult: PDWORD_PTR,
) -> LRESULT ---
GetSysColor :: proc(nIndex: c_int) -> DWORD ---
GetSysColorBrush :: proc(nIndex: c_int) -> HBRUSH ---
SetSysColors :: proc(cElements: c_int, lpaElements: ^INT, lpaRgbValues: ^COLORREF) -> BOOL ---
MessageBeep :: proc(uType: UINT) -> BOOL ---
IsDialogMessageW :: proc(hDlg: HWND, lpMsg: LPMSG) -> BOOL ---
GetWindowTextLengthW :: proc(hWnd: HWND) -> c_int ---
GetWindowTextW :: proc(hWnd: HWND, lpString: LPWSTR, nMaxCount: c_int) -> c_int ---
SetWindowTextW :: proc(hWnd: HWND, lpString: LPCWSTR) -> BOOL ---
CallWindowProcW :: proc(lpPrevWndFunc: WNDPROC, hWnd: HWND, Msg: UINT, wParam: WPARAM, lParam: LPARAM) -> LRESULT ---
EnableWindow :: proc(hWnd: HWND, bEnable: BOOL) -> BOOL ---
}
CreateWindowW :: #force_inline proc "stdcall" (