mirror of
https://github.com/odin-lang/Odin.git
synced 2026-04-20 13:25:19 +00:00
sys/windows: add functions and constants
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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" (
|
||||
|
||||
Reference in New Issue
Block a user