summaryrefslogtreecommitdiff
path: root/windows.go
diff options
context:
space:
mode:
Diffstat (limited to 'windows.go')
-rw-r--r--windows.go382
1 files changed, 0 insertions, 382 deletions
diff --git a/windows.go b/windows.go
deleted file mode 100644
index 2378aba..0000000
--- a/windows.go
+++ /dev/null
@@ -1,382 +0,0 @@
-// 8 february 2014
-package main
-
-import (
- "syscall"
- "unsafe"
-)
-
-// Window styles.
-const (
- WS_BORDER = 0x00800000
- WS_CAPTION = 0x00C00000
- WS_CHILD = 0x40000000
- WS_CHILDWINDOW = 0x40000000
- WS_CLIPCHILDREN = 0x02000000
- WS_CLIPSIBLINGS = 0x04000000
- WS_DISABLED = 0x08000000
- WS_DLGFRAME = 0x00400000
- WS_GROUP = 0x00020000
- WS_HSCROLL = 0x00100000
- WS_ICONIC = 0x20000000
- WS_MAXIMIZE = 0x01000000
- WS_MAXIMIZEBOX = 0x00010000
- WS_MINIMIZE = 0x20000000
- WS_MINIMIZEBOX = 0x00020000
- WS_OVERLAPPED = 0x00000000
- WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
- WS_POPUP = 0x80000000
- WS_POPUPWINDOW = (WS_POPUP | WS_BORDER | WS_SYSMENU)
- WS_SIZEBOX = 0x00040000
- WS_SYSMENU = 0x00080000
- WS_TABSTOP = 0x00010000
- WS_THICKFRAME = 0x00040000
- WS_TILED = 0x00000000
- WS_TILEDWINDOW = (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
- WS_VISIBLE = 0x10000000
- WS_VSCROLL = 0x00200000
-)
-
-// Extended window styles.
-const (
- WS_EX_ACCEPTFILES = 0x00000010
- WS_EX_APPWINDOW = 0x00040000
- WS_EX_CLIENTEDGE = 0x00000200
-// WS_EX_COMPOSITED = 0x02000000 // [Windows 2000:This style is not supported.]
- WS_EX_CONTEXTHELP = 0x00000400
- WS_EX_CONTROLPARENT = 0x00010000
- WS_EX_DLGMODALFRAME = 0x00000001
- WS_EX_LAYERED = 0x00080000
- WS_EX_LAYOUTRTL = 0x00400000
- WS_EX_LEFT = 0x00000000
- WS_EX_LEFTSCROLLBAR = 0x00004000
- WS_EX_LTRREADING = 0x00000000
- WS_EX_MDICHILD = 0x00000040
- WS_EX_NOACTIVATE = 0x08000000
- WS_EX_NOINHERITLAYOUT = 0x00100000
- WS_EX_NOPARENTNOTIFY = 0x00000004
- WS_EX_OVERLAPPEDWINDOW = (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE)
- WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST)
- WS_EX_RIGHT = 0x00001000
- WS_EX_RIGHTSCROLLBAR = 0x00000000
- WS_EX_RTLREADING = 0x00002000
- WS_EX_STATICEDGE = 0x00020000
- WS_EX_TOOLWINDOW = 0x00000080
- WS_EX_TOPMOST = 0x00000008
- WS_EX_TRANSPARENT = 0x00000020
- WS_EX_WINDOWEDGE = 0x00000100
-)
-
-// bizarrely, this value is given on the page for CreateMDIWindow, but not CreateWindow or CreateWindowEx
-// I do it this way because Go won't let me shove the exact value into an int
-var (
- _uCW_USEDEFAULT uint = 0x80000000
- CW_USEDEFAULT = int(_uCW_USEDEFAULT)
-)
-
-// GetSysColor values. These can be cast to HBRUSH (after adding 1) for WNDCLASS as well.
-const (
- COLOR_3DDKSHADOW = 21
- COLOR_3DFACE = 15
- COLOR_3DHIGHLIGHT = 20
- COLOR_3DHILIGHT = 20
- COLOR_3DLIGHT = 22
- COLOR_3DSHADOW = 16
- COLOR_ACTIVEBORDER = 10
- COLOR_ACTIVECAPTION = 2
- COLOR_APPWORKSPACE = 12
- COLOR_BACKGROUND = 1
- COLOR_BTNFACE = 15
- COLOR_BTNHIGHLIGHT = 20
- COLOR_BTNHILIGHT = 20
- COLOR_BTNSHADOW = 16
- COLOR_BTNTEXT = 18
- COLOR_CAPTIONTEXT = 9
- COLOR_DESKTOP = 1
- COLOR_GRADIENTACTIVECAPTION = 27
- COLOR_GRADIENTINACTIVECAPTION = 28
- COLOR_GRAYTEXT = 17
- COLOR_HIGHLIGHT = 13
- COLOR_HIGHLIGHTTEXT = 14
- COLOR_HOTLIGHT = 26
- COLOR_INACTIVEBORDER = 11
- COLOR_INACTIVECAPTION = 3
- COLOR_INACTIVECAPTIONTEXT = 19
- COLOR_INFOBK = 24
- COLOR_INFOTEXT = 23
- COLOR_MENU = 4
-// COLOR_MENUHILIGHT = 29 // [Windows 2000:This value is not supported.]
-// COLOR_MENUBAR = 30 // [Windows 2000:This value is not supported.]
- COLOR_MENUTEXT = 7
- COLOR_SCROLLBAR = 0
- COLOR_WINDOW = 5
- COLOR_WINDOWFRAME = 6
- COLOR_WINDOWTEXT = 8
-)
-
-// SetWindowPos hWndInsertAfter values.
-const (
- HWND_BOTTOM = HWND(1)
- HWND_TOP = HWND(0)
-)
-
-// SetWindowPos hWndInsertAfter values that Go won't allow as constants.
-var (
- _HWND_NOTOPMOST = -2
- HWND_NOTOPMOST = HWND(_HWND_NOTOPMOST)
- _HWND_TOPMOST = -1
- HWND_TOPMOST = HWND(_HWND_TOPMOST)
-)
-
-// SetWindowPos uFlags values.
-const (
- SWP_DRAWFRAME = 0x0020
- SWP_FRAMECHANGED = 0x0020
- SWP_HIDEWINDOW = 0x0080
- SWP_NOACTIVATE = 0x0010
- SWP_NOCOPYBITS = 0x0100
- SWP_NOMOVE = 0x0002
- SWP_NOOWNERZORDER = 0x0200
- SWP_NOREDRAW = 0x0008
- SWP_NOREPOSITION = 0x0200
- SWP_NOSENDCHANGING = 0x0400
- SWP_NOSIZE = 0x0001
- SWP_NOZORDER = 0x0004
- SWP_SHOWWINDOW = 0x0040
- SWP_ASYNCWINDOWPOS = 0x4000
- SWP_DEFERERASE = 0x2000
-)
-
-// ShowWindow settings.
-const (
- SW_FORCEMINIMIZE = 11
- SW_HIDE = 0
- SW_MAXIMIZE = 3
- SW_MINIMIZE = 6
- SW_RESTORE = 9
- SW_SHOW = 5
- SW_SHOWDEFAULT = 10
- SW_SHOWMAXIMIZED = 3
- SW_SHOWMINIMIZED = 2
- SW_SHOWMINNOACTIVE = 7
- SW_SHOWNA = 8
- SW_SHOWNOACTIVATE = 4
- SW_SHOWNORMAL = 1
-)
-
-var (
- createWindowEx = user32.NewProc("CreateWindowExW")
- destroyWindow = user32.NewProc("DestroyWindow")
- getClientRect = user32.NewProc("GetClientRect")
- enumChildWindows = user32.NewProc("EnumChildWindows")
- setWindowPos = user32.NewProc("SetWindowPos")
- showWindow = user32.NewProc("ShowWindow")
-)
-
-// TODO use lpParam
-func CreateWindowEx(dwExStyle uint32, lpClassName string, lpWindowName string, dwStyle uint32, x int, y int, nWidth int, nHeight int, hwndParent HWND, hMenu HMENU, hInstance HANDLE, lpParam interface{}) (hwnd HWND, err error) {
- r1, _, err := createWindowEx.Call(
- uintptr(dwExStyle),
- uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(lpClassName))),
- uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(lpWindowName))),
- uintptr(dwStyle),
- uintptr(x),
- uintptr(y),
- uintptr(nWidth),
- uintptr(nHeight),
- uintptr(hwndParent),
- uintptr(hMenu),
- uintptr(hInstance),
- uintptr(0))
- if r1 == 0 { // failure
- return NULL, err
- }
- return HWND(r1), nil
-}
-
-func DestroyWindow(hWnd HWND) (err error) {
- r1, _, err := destroyWindow.Call(uintptr(hWnd))
- if r1 == 0 { // failure
- return err
- }
- return nil
-}
-
-type WNDENUMPROC func(hwnd HWND, lParam LPARAM) (cont bool)
-type _WNDENUMPROC func(hwnd HWND, lParam LPARAM) int
-
-func enumChildProc(p WNDENUMPROC) _WNDENUMPROC {
- return func(hwnd HWND, lParam LPARAM) int {
- if p(hwnd, lParam) {
- return TRUE
- }
- return FALSE
- }
-}
-
-// TODO figure out how to handle errors
-func EnumChildWindows(hWndParent HWND, lpEnumFunc WNDENUMPROC, lParam LPARAM) (err error) {
- enumChildWindows.Call(
- uintptr(hWndParent),
- syscall.NewCallback(enumChildProc(lpEnumFunc)),
- uintptr(lParam))
- return nil
-}
-
-// TODO return the rect itself?
-func GetClientRect(hWnd HWND) (lpRect *RECT, err error) {
- lpRect = new(RECT)
- r1, _, err := getClientRect.Call(
- uintptr(hWnd),
- uintptr(unsafe.Pointer(lpRect)))
- if r1 == 0 { // failure
- return nil, err
- }
- return lpRect, nil
-}
-
-func SetWindowPos(hWnd HWND, hWndInsertAfter HWND, X int, Y int, cx int, cy int, uFlags uint32) (err error) {
- r1, _, err := setWindowPos.Call(
- uintptr(hWnd),
- uintptr(hWndInsertAfter),
- uintptr(X),
- uintptr(Y),
- uintptr(cx),
- uintptr(cy),
- uintptr(uFlags))
- if r1 == 0 { // failure
- return err
- }
- return nil
-}
-
-// TODO figure out how to handle errors
-func ShowWindow(hWnd HWND, nCmdShow int) (previouslyVisible bool, err error) {
- r1, _, _ := showWindow.Call(
- uintptr(hWnd),
- uintptr(nCmdShow))
- return r1 != 0, nil
-}
-
-// WM_SETICON and WM_GETICON values.
-const (
- ICON_BIG = 1
- ICON_SMALL = 0
- ICON_SMALL2 = 2 // WM_GETICON only?
-)
-
-// Window messages.
-const (
- MN_GETHMENU = 0x01E1
- WM_ERASEBKGND = 0x0014
- WM_GETFONT = 0x0031
- WM_GETTEXT = 0x000D
- WM_GETTEXTLENGTH = 0x000E
- WM_SETFONT = 0x0030
- WM_SETICON = 0x0080
- WM_SETTEXT = 0x000C
-)
-
-// WM_INPUTLANGCHANGEREQUEST values.
-const (
- INPUTLANGCHANGE_BACKWARD = 0x0004
- INPUTLANGCHANGE_FORWARD = 0x0002
- INPUTLANGCHANGE_SYSCHARSET = 0x0001
-)
-
-// WM_NCCALCSIZE return values.
-const (
- WVR_ALIGNTOP = 0x0010
- WVR_ALIGNRIGHT = 0x0080
- WVR_ALIGNLEFT = 0x0020
- WVR_ALIGNBOTTOM = 0x0040
- WVR_HREDRAW = 0x0100
- WVR_VREDRAW = 0x0200
- WVR_REDRAW = 0x0300
- WVR_VALIDRECTS = 0x0400
-)
-
-// WM_SHOWWINDOW reasons (lParam).
-const (
- SW_OTHERUNZOOM = 4
- SW_OTHERZOOM = 2
- SW_PARENTCLOSING = 1
- SW_PARENTOPENING = 3
-)
-
-// WM_SIZE values.
-const (
- SIZE_MAXHIDE = 4
- SIZE_MAXIMIZED = 2
- SIZE_MAXSHOW = 3
- SIZE_MINIMIZED = 1
- SIZE_RESTORED = 0
-)
-
-// WM_SIZING edge values (wParam).
-const (
- WMSZ_BOTTOM = 6
- WMSZ_BOTTOMLEFT = 7
- WMSZ_BOTTOMRIGHT = 8
- WMSZ_LEFT = 1
- WMSZ_RIGHT = 2
- WMSZ_TOP = 3
- WMSZ_TOPLEFT = 4
- WMSZ_TOPRIGHT = 5
-)
-
-// WM_STYLECHANGED and WM_STYLECHANGING values (wParam).
-const (
- GWL_EXSTYLE = -20
- GWL_STYLE = -16
-)
-
-// Window notifications.
-const (
- WM_ACTIVATEAPP = 0x001C
- WM_CANCELMODE = 0x001F
- WM_CHILDACTIVATE = 0x0022
- WM_CLOSE = 0x0010
- WM_COMPACTING = 0x0041
- WM_CREATE = 0x0001
- WM_DESTROY = 0x0002
-// WM_DPICHANGED = 0x02E0 // Windows 8.1 and newer only
- WM_ENABLE = 0x000A
- WM_ENTERSIZEMOVE = 0x0231
- WM_EXITSIZEMOVE = 0x0232
- WM_GETICON = 0x007F
- WM_GETMINMAXINFO = 0x0024
- WM_INPUTLANGCHANGE = 0x0051
- WM_INPUTLANGCHANGEREQUEST = 0x0050
- WM_MOVE = 0x0003
- WM_MOVING = 0x0216
- WM_NCACTIVATE = 0x0086
- WM_NCCALCSIZE = 0x0083
- WM_NCCREATE = 0x0081
- WM_NCDESTROY = 0x0082
- WM_NULL = 0x0000
- WM_QUERYDRAGICON = 0x0037
- WM_QUERYOPEN = 0x0013
- WM_QUIT = 0x0012
- WM_SHOWWINDOW = 0x0018
- WM_SIZE = 0x0005
- WM_SIZING = 0x0214
- WM_STYLECHANGED = 0x007D
- WM_STYLECHANGING = 0x007C
-// WM_THEMECHANGED = 0x031A // Windows XP and newer only
-// WM_USERCHANGED = 0x0054 // Windows XP only: [Note This message is not supported as of Windows Vista.; also listed as not supported by server Windows]
- WM_WINDOWPOSCHANGED = 0x0047
- WM_WINDOWPOSCHANGING = 0x0046
-)
-
-type MINMAXINFO struct {
- PtReserved POINT
- PtMaxSize POINT
- PtMaxPosition POINT
- PtMinTrackSize POINT
- PtMaxTrackSize POINT
-}
-
-func (l LPARAM) MINMAXINFO() *MINMAXINFO {
- return (*MINMAXINFO)(unsafe.Pointer(l))
-}