#lang racket/base
(provide (all-defined-out))

(define WM_NULL                         #x0000)
(define WM_CREATE                       #x0001)
(define WM_DESTROY                      #x0002)
(define WM_MOVE                         #x0003)
(define WM_SIZE                         #x0005)

(define WM_ACTIVATE                     #x0006)


;; WM_ACTIVATE state values
(define     WA_INACTIVE     0)
(define     WA_ACTIVE       1)
(define     WA_CLICKACTIVE  2)

(define WM_SETFOCUS                     #x0007)
(define WM_KILLFOCUS                    #x0008)
(define WM_ENABLE                       #x000A)
(define WM_SETREDRAW                    #x000B)
(define WM_SETTEXT                      #x000C)
(define WM_GETTEXT                      #x000D)
(define WM_GETTEXTLENGTH                #x000E)
(define WM_PAINT                        #x000F)
(define WM_CLOSE                        #x0010)
(define WM_QUIT                         #x0012)
(define WM_ERASEBKGND                   #x0014)
(define WM_SYSCOLORCHANGE               #x0015)
(define WM_SHOWWINDOW                   #x0018)
(define WM_WININICHANGE                 #x001A)
(define WM_SETTINGCHANGE                WM_WININICHANGE)

(define WM_DEVMODECHANGE                #x001B)
(define WM_ACTIVATEAPP                  #x001C)
(define WM_FONTCHANGE                   #x001D)
(define WM_TIMECHANGE                   #x001E)
(define WM_CANCELMODE                   #x001F)
(define WM_SETCURSOR                    #x0020)
(define WM_MOUSEACTIVATE                #x0021)
(define WM_CHILDACTIVATE                #x0022)
(define WM_QUEUESYNC                    #x0023)

(define WM_GETMINMAXINFO                #x0024)

(define WM_PAINTICON                    #x0026)
(define WM_ICONERASEBKGND               #x0027)
(define WM_NEXTDLGCTL                   #x0028)
(define WM_SPOOLERSTATUS                #x002A)
(define WM_DRAWITEM                     #x002B)
(define WM_MEASUREITEM                  #x002C)
(define WM_DELETEITEM                   #x002D)
(define WM_VKEYTOITEM                   #x002E)
(define WM_CHARTOITEM                   #x002F)
(define WM_SETFONT                      #x0030)
(define WM_GETFONT                      #x0031)
(define WM_SETHOTKEY                    #x0032)
(define WM_GETHOTKEY                    #x0033)
(define WM_QUERYDRAGICON                #x0037)
(define WM_COMPAREITEM                  #x0039)
(define WM_GETOBJECT                    #x003D)
(define WM_COMPACTING                   #x0041)
(define WM_WINDOWPOSCHANGING            #x0046)
(define WM_WINDOWPOSCHANGED             #x0047)

(define WM_POWER                        #x0048)

;; wParam for WM_POWER window message and DRV_POWER driver notification
(define PWR_OK              1)
(define PWR_FAIL            -1)
(define PWR_SUSPENDREQUEST  1)
(define PWR_SUSPENDRESUME   2)
(define PWR_CRITICALRESUME  3)

(define WM_COPYDATA                     #x004A)
(define WM_CANCELJOURNAL                #x004B)

(define WM_NOTIFY                       #x004E)
(define WM_INPUTLANGCHANGEREQUEST       #x0050)
(define WM_INPUTLANGCHANGE              #x0051)
(define WM_TCARD                        #x0052)
(define WM_HELP                         #x0053)
(define WM_USERCHANGED                  #x0054)
(define WM_NOTIFYFORMAT                 #x0055)

(define NFR_ANSI                             1)
(define NFR_UNICODE                          2)
(define NF_QUERY                             3)
(define NF_REQUERY                           4)

(define WM_CONTEXTMENU                  #x007B)
(define WM_STYLECHANGING                #x007C)
(define WM_STYLECHANGED                 #x007D)
(define WM_DISPLAYCHANGE                #x007E)
(define WM_GETICON                      #x007F)
(define WM_SETICON                      #x0080)

(define WM_NCCREATE                     #x0081)
(define WM_NCDESTROY                    #x0082)
(define WM_NCCALCSIZE                   #x0083)
(define WM_NCHITTEST                    #x0084)
(define WM_NCPAINT                      #x0085)
(define WM_NCACTIVATE                   #x0086)
(define WM_GETDLGCODE                   #x0087)
(define WM_NCMOUSEMOVE                  #x00A0)
(define WM_NCLBUTTONDOWN                #x00A1)
(define WM_NCLBUTTONUP                  #x00A2)
(define WM_NCLBUTTONDBLCLK              #x00A3)
(define WM_NCRBUTTONDOWN                #x00A4)
(define WM_NCRBUTTONUP                  #x00A5)
(define WM_NCRBUTTONDBLCLK              #x00A6)
(define WM_NCMBUTTONDOWN                #x00A7)
(define WM_NCMBUTTONUP                  #x00A8)
(define WM_NCMBUTTONDBLCLK              #x00A9)

(define WM_NCXBUTTONDOWN                #x00AB)
(define WM_NCXBUTTONUP                  #x00AC)
(define WM_NCXBUTTONDBLCLK              #x00AD)

(define WM_INPUT                        #x00FF)

(define WM_KEYFIRST                     #x0100)
(define WM_KEYDOWN                      #x0100)
(define WM_KEYUP                        #x0101)
(define WM_CHAR                         #x0102)
(define WM_DEADCHAR                     #x0103)
(define WM_SYSKEYDOWN                   #x0104)
(define WM_SYSKEYUP                     #x0105)
(define WM_SYSCHAR                      #x0106)
(define WM_SYSDEADCHAR                  #x0107)
(define WM_UNICHAR                      #x0109)
(define WM_KEYLAST                      #x0109)
(define UNICODE_NOCHAR                  #xFFFF)

(define WM_IME_STARTCOMPOSITION         #x010D)
(define WM_IME_ENDCOMPOSITION           #x010E)
(define WM_IME_COMPOSITION              #x010F)
(define WM_IME_KEYLAST                  #x010F)

(define WM_INITDIALOG                   #x0110)
(define WM_COMMAND                      #x0111)
(define WM_SYSCOMMAND                   #x0112)
(define WM_TIMER                        #x0113)
(define WM_HSCROLL                      #x0114)
(define WM_VSCROLL                      #x0115)
(define WM_INITMENU                     #x0116)
(define WM_INITMENUPOPUP                #x0117)
(define WM_MENUSELECT                   #x011F)
(define WM_MENUCHAR                     #x0120)
(define WM_ENTERIDLE                    #x0121)
(define WM_MENURBUTTONUP                #x0122)
(define WM_MENUDRAG                     #x0123)
(define WM_MENUGETOBJECT                #x0124)
(define WM_UNINITMENUPOPUP              #x0125)
(define WM_MENUCOMMAND                  #x0126)

(define WM_CHANGEUISTATE                #x0127)
(define WM_UPDATEUISTATE                #x0128)
(define WM_QUERYUISTATE                 #x0129)

;; LOWORD(wParam) values in WM_*UISTATE*
(define UIS_SET                         1)
(define UIS_CLEAR                       2)
(define UIS_INITIALIZE                  3)

;; HIWORD(wParam) values in WM_*UISTATE*
(define UISF_HIDEFOCUS                  #x1)
(define UISF_HIDEACCEL                  #x2)
(define UISF_ACTIVE                     #x4)

(define WM_CTLCOLORMSGBOX               #x0132)
(define WM_CTLCOLOREDIT                 #x0133)
(define WM_CTLCOLORLISTBOX              #x0134)
(define WM_CTLCOLORBTN                  #x0135)
(define WM_CTLCOLORDLG                  #x0136)
(define WM_CTLCOLORSCROLLBAR            #x0137)
(define WM_CTLCOLORSTATIC               #x0138)
(define MN_GETHMENU                     #x01E1)

(define WM_MOUSEFIRST                   #x0200)
(define WM_MOUSEMOVE                    #x0200)
(define WM_LBUTTONDOWN                  #x0201)
(define WM_LBUTTONUP                    #x0202)
(define WM_LBUTTONDBLCLK                #x0203)
(define WM_RBUTTONDOWN                  #x0204)
(define WM_RBUTTONUP                    #x0205)
(define WM_RBUTTONDBLCLK                #x0206)
(define WM_MBUTTONDOWN                  #x0207)
(define WM_MBUTTONUP                    #x0208)
(define WM_MBUTTONDBLCLK                #x0209)
(define WM_MOUSEWHEEL                   #x020A)
(define WM_XBUTTONDOWN                  #x020B)
(define WM_XBUTTONUP                    #x020C)
(define WM_XBUTTONDBLCLK                #x020D)
(define WM_MOUSEHWHEEL                  #x020E)

;; Value for rolling one detent
(define WHEEL_DELTA                     120)
;; (define WHEEL_PAGESCROLL                UINT_MAX)

;; XButton values are WORD flags
(define XBUTTON1      #x0001)
(define XBUTTON2      #x0002)

(define WM_PARENTNOTIFY                 #x0210)
(define WM_ENTERMENULOOP                #x0211)
(define WM_EXITMENULOOP                 #x0212)

(define WM_NEXTMENU                     #x0213)
(define WM_SIZING                       #x0214)
(define WM_CAPTURECHANGED               #x0215)
(define WM_MOVING                       #x0216)

(define WM_DEVICECHANGE                 #x0219)

(define WM_MDICREATE                    #x0220)
(define WM_MDIDESTROY                   #x0221)
(define WM_MDIACTIVATE                  #x0222)
(define WM_MDIRESTORE                   #x0223)
(define WM_MDINEXT                      #x0224)
(define WM_MDIMAXIMIZE                  #x0225)
(define WM_MDITILE                      #x0226)
(define WM_MDICASCADE                   #x0227)
(define WM_MDIICONARRANGE               #x0228)
(define WM_MDIGETACTIVE                 #x0229)


(define WM_MDISETMENU                   #x0230)
(define WM_ENTERSIZEMOVE                #x0231)
(define WM_EXITSIZEMOVE                 #x0232)
(define WM_DROPFILES                    #x0233)
(define WM_MDIREFRESHMENU               #x0234)


(define WM_IME_SETCONTEXT               #x0281)
(define WM_IME_NOTIFY                   #x0282)
(define WM_IME_CONTROL                  #x0283)
(define WM_IME_COMPOSITIONFULL          #x0284)
(define WM_IME_SELECT                   #x0285)
(define WM_IME_CHAR                     #x0286)
(define WM_IME_REQUEST                  #x0288)
(define WM_IME_KEYDOWN                  #x0290)
(define WM_IME_KEYUP                    #x0291)

(define WM_MOUSEHOVER                   #x02A1)
(define WM_MOUSELEAVE                   #x02A3)
(define WM_NCMOUSEHOVER                 #x02A0)
(define WM_NCMOUSELEAVE                 #x02A2)

(define WM_WTSSESSION_CHANGE            #x02B1)

(define WM_TABLET_FIRST                 #x02c0)
(define WM_TABLET_LAST                  #x02df)

(define WM_CUT                          #x0300)
(define WM_COPY                         #x0301)
(define WM_PASTE                        #x0302)
(define WM_CLEAR                        #x0303)
(define WM_UNDO                         #x0304)
(define WM_RENDERFORMAT                 #x0305)
(define WM_RENDERALLFORMATS             #x0306)
(define WM_DESTROYCLIPBOARD             #x0307)
(define WM_DRAWCLIPBOARD                #x0308)
(define WM_PAINTCLIPBOARD               #x0309)
(define WM_VSCROLLCLIPBOARD             #x030A)
(define WM_SIZECLIPBOARD                #x030B)
(define WM_ASKCBFORMATNAME              #x030C)
(define WM_CHANGECBCHAIN                #x030D)
(define WM_HSCROLLCLIPBOARD             #x030E)
(define WM_QUERYNEWPALETTE              #x030F)
(define WM_PALETTEISCHANGING            #x0310)
(define WM_PALETTECHANGED               #x0311)
(define WM_HOTKEY                       #x0312)

(define WM_USER                         #x0400)

;; Class styles
(define CS_VREDRAW          #x0001)
(define CS_HREDRAW          #x0002)
(define CS_DBLCLKS          #x0008)
(define CS_OWNDC            #x0020)
(define CS_CLASSDC          #x0040)
(define CS_PARENTDC         #x0080)
(define CS_NOCLOSE          #x0200)
(define CS_SAVEBITS         #x0800)
(define CS_BYTEALIGNCLIENT  #x1000)
(define CS_BYTEALIGNWINDOW  #x2000)
(define CS_GLOBALCLASS      #x4000)

;; Window styles
(define WS_OVERLAPPED   #x00000000)
(define WS_POPUP        #x80000000)
(define WS_CHILD        #x40000000)
(define WS_CLIPSIBLINGS #x04000000)
(define WS_CLIPCHILDREN #x02000000)
(define WS_VISIBLE      #x10000000)
(define WS_DISABLED     #x08000000)
(define WS_MINIMIZE     #x20000000)
(define WS_MAXIMIZE     #x01000000)
(define WS_CAPTION      #x00C00000)
(define WS_BORDER       #x00800000)
(define WS_DLGFRAME     #x00400000)
(define WS_VSCROLL      #x00200000)
(define WS_HSCROLL      #x00100000)
(define WS_SYSMENU      #x00080000)
(define WS_THICKFRAME   #x00040000)
(define WS_MINIMIZEBOX  #x00020000)
(define WS_MAXIMIZEBOX  #x00010000)
(define WS_GROUP        #x00020000)
(define WS_TABSTOP      #x00010000)

(define WS_OVERLAPPEDWINDOW (bitwise-ior WS_OVERLAPPED  WS_CAPTION  WS_SYSMENU 
					 WS_THICKFRAME  WS_MINIMIZEBOX  WS_MAXIMIZEBOX))

(define PM_NOREMOVE         #x0000)
(define PM_REMOVE           #x0001)
(define PM_NOYIELD          #x0002)

(define QS_KEY              #x0001)
(define QS_MOUSEMOVE        #x0002)
(define QS_MOUSEBUTTON      #x0004)
(define QS_POSTMESSAGE      #x0008)
(define QS_TIMER            #x0010)
(define QS_PAINT            #x0020)
(define QS_SENDMESSAGE      #x0040)
(define QS_HOTKEY           #x0080)
(define QS_ALLPOSTMESSAGE   #x0100)
(define QS_RAWINPUT         #x0400)
(define QS_MOUSE           (bitwise-ior QS_MOUSEMOVE
                                        QS_MOUSEBUTTON))

(define QS_INPUT           (bitwise-ior QS_MOUSE
                                        QS_KEY
                                        QS_RAWINPUT))
(define QS_ALLEVENTS       (bitwise-ior QS_INPUT
                                        QS_POSTMESSAGE
                                        QS_TIMER
                                        QS_PAINT
                                        QS_HOTKEY))

(define QS_ALLINPUT        (bitwise-ior QS_INPUT
                                        QS_POSTMESSAGE
                                        QS_TIMER
                                        QS_PAINT
                                        QS_HOTKEY
                                        QS_SENDMESSAGE))

(define GWLP_WNDPROC        -4)
(define GWLP_USERDATA       -21)


(define COLOR_SCROLLBAR         0)
(define COLOR_BACKGROUND        1)
(define COLOR_ACTIVECAPTION     2)
(define COLOR_INACTIVECAPTION   3)
(define COLOR_MENU              4)
(define COLOR_WINDOW            5)
(define COLOR_WINDOWFRAME       6)
(define COLOR_MENUTEXT          7)
(define COLOR_WINDOWTEXT        8)
(define COLOR_CAPTIONTEXT       9)
(define COLOR_ACTIVEBORDER      10)
(define COLOR_INACTIVEBORDER    11)
(define COLOR_APPWORKSPACE      12)
(define COLOR_HIGHLIGHT         13)
(define COLOR_HIGHLIGHTTEXT     14)
(define COLOR_BTNFACE           15)
(define COLOR_BTNSHADOW         16)
(define COLOR_GRAYTEXT          17)
(define COLOR_BTNTEXT           18)
(define COLOR_INACTIVECAPTIONTEXT 19)
(define COLOR_BTNHIGHLIGHT      20)

(define BS_PUSHBUTTON       #x00000000)
(define BS_DEFPUSHBUTTON    #x00000001)
(define BS_CHECKBOX         #x00000002)
(define BS_AUTOCHECKBOX     #x00000003)
(define BS_RADIOBUTTON      #x00000004)
(define BS_3STATE           #x00000005)
(define BS_AUTO3STATE       #x00000006)
(define BS_GROUPBOX         #x00000007)
(define BS_USERBUTTON       #x00000008)
(define BS_AUTORADIOBUTTON  #x00000009)
(define BS_PUSHBOX          #x0000000A)
(define BS_OWNERDRAW        #x0000000B)
(define BS_TYPEMASK         #x0000000F)
(define BS_LEFTTEXT         #x00000020)
(define BS_TEXT             #x00000000)
(define BS_ICON             #x00000040)
(define BS_BITMAP           #x00000080)
(define BS_LEFT             #x00000100)
(define BS_RIGHT            #x00000200)
(define BS_CENTER           #x00000300)
(define BS_TOP              #x00000400)
(define BS_BOTTOM           #x00000800)
(define BS_VCENTER          #x00000C00)
(define BS_PUSHLIKE         #x00001000)
(define BS_MULTILINE        #x00002000)
(define BS_NOTIFY           #x00004000)
(define BS_FLAT             #x00008000)
(define BS_RIGHTBUTTON      BS_LEFTTEXT)

(define CW_USEDEFAULT       (- #x80000000)) ; minus sign => int instead of uint

(define WS_EX_LAYERED       #x00080000)
(define WS_EX_TRANSPARENT   #x00000020)

(define LWA_ALPHA #x00000002)

(define MB_OK                       #x00000000)
(define MB_OKCANCEL                 #x00000001)
(define MB_ABORTRETRYIGNORE         #x00000002)
(define MB_YESNOCANCEL              #x00000003)
(define MB_YESNO                    #x00000004)
(define MB_RETRYCANCEL              #x00000005)

(define SIZE_RESTORED       0)
(define SIZE_MINIMIZED      1)
(define SIZE_MAXIMIZED      2)
(define SIZE_MAXSHOW        3)
(define SIZE_MAXHIDE        4)

(define SB_LINEUP           0)
(define SB_LINELEFT         0)
(define SB_LINEDOWN         1)
(define SB_LINERIGHT        1)
(define SB_PAGEUP           2)
(define SB_PAGELEFT         2)
(define SB_PAGEDOWN         3)
(define SB_PAGERIGHT        3)
(define SB_THUMBPOSITION    4)
(define SB_THUMBTRACK       5)
(define SB_TOP              6)
(define SB_LEFT             6)
(define SB_BOTTOM           7)
(define SB_RIGHT            7)
(define SB_ENDSCROLL        8)

(define SB_HORZ             0)
(define SB_VERT             1)
(define SB_CTL              2)
(define SB_BOTH             3)

(define SIF_RANGE           #x0001)
(define SIF_PAGE            #x0002)
(define SIF_POS             #x0004)
(define SIF_DISABLENOSCROLL #x0008)
(define SIF_TRACKPOS        #x0010)
(define SIF_ALL             (bitwise-ior SIF_RANGE SIF_PAGE SIF_POS SIF_TRACKPOS))

(define VK_LBUTTON        #x01)
(define VK_RBUTTON        #x02)
(define VK_CANCEL         #x03)
(define VK_MBUTTON        #x04)
(define VK_XBUTTON1       #x05)
(define VK_XBUTTON2       #x06)
(define VK_BACK           #x08)
(define VK_TAB            #x09)
(define VK_CLEAR          #x0C)
(define VK_RETURN         #x0D)
(define VK_SHIFT          #x10)
(define VK_CONTROL        #x11)
(define VK_MENU           #x12)
(define VK_PAUSE          #x13)
(define VK_CAPITAL        #x14)
(define VK_KANA           #x15)
(define VK_HANGUL         #x15)
(define VK_JUNJA          #x17)
(define VK_FINAL          #x18)
(define VK_HANJA          #x19)
(define VK_KANJI          #x19)
(define VK_ESCAPE         #x1B)
(define VK_CONVERT        #x1C)
(define VK_NONCONVERT     #x1D)
(define VK_ACCEPT         #x1E)
(define VK_MODECHANGE     #x1F)
(define VK_SPACE          #x20)
(define VK_PRIOR          #x21)
(define VK_NEXT           #x22)
(define VK_END            #x23)
(define VK_HOME           #x24)
(define VK_LEFT           #x25)
(define VK_UP             #x26)
(define VK_RIGHT          #x27)
(define VK_DOWN           #x28)
(define VK_SELECT         #x29)
(define VK_PRINT          #x2A)
(define VK_EXECUTE        #x2B)
(define VK_SNAPSHOT       #x2C)
(define VK_INSERT         #x2D)
(define VK_DELETE         #x2E)
(define VK_HELP           #x2F)
(define VK_LWIN           #x5B)
(define VK_RWIN           #x5C)
(define VK_APPS           #x5D)
(define VK_SLEEP          #x5F)
(define VK_NUMPAD0        #x60)
(define VK_NUMPAD1        #x61)
(define VK_NUMPAD2        #x62)
(define VK_NUMPAD3        #x63)
(define VK_NUMPAD4        #x64)
(define VK_NUMPAD5        #x65)
(define VK_NUMPAD6        #x66)
(define VK_NUMPAD7        #x67)
(define VK_NUMPAD8        #x68)
(define VK_NUMPAD9        #x69)
(define VK_MULTIPLY       #x6A)
(define VK_ADD            #x6B)
(define VK_SEPARATOR      #x6C)
(define VK_SUBTRACT       #x6D)
(define VK_DECIMAL        #x6E)
(define VK_DIVIDE         #x6F)
(define VK_F1             #x70)
(define VK_F2             #x71)
(define VK_F3             #x72)
(define VK_F4             #x73)
(define VK_F5             #x74)
(define VK_F6             #x75)
(define VK_F7             #x76)
(define VK_F8             #x77)
(define VK_F9             #x78)
(define VK_F10            #x79)
(define VK_F11            #x7A)
(define VK_F12            #x7B)
(define VK_F13            #x7C)
(define VK_F14            #x7D)
(define VK_F15            #x7E)
(define VK_F16            #x7F)
(define VK_F17            #x80)
(define VK_F18            #x81)
(define VK_F19            #x82)
(define VK_F20            #x83)
(define VK_F21            #x84)
(define VK_F22            #x85)
(define VK_F23            #x86)
(define VK_F24            #x87)
(define VK_NUMLOCK        #x90)
(define VK_SCROLL         #x91)
(define VK_LSHIFT         #xA0)
(define VK_RSHIFT         #xA1)
(define VK_LCONTROL       #xA2)
(define VK_RCONTROL       #xA3)
(define VK_LMENU          #xA4)
(define VK_RMENU          #xA5)
(define VK_OEM_1          #xBA)
(define VK_OEM_PLUS       #xBB)
(define VK_OEM_COMMA      #xBC)
(define VK_OEM_MINUS      #xBD)
(define VK_OEM_PERIOD     #xBE)
(define VK_OEM_2          #xBF)
(define VK_OEM_3          #xC0)
(define VK_OEM_4          #xDB)
(define VK_OEM_5          #xDC)
(define VK_OEM_6          #xDD)
(define VK_OEM_7          #xDE)
(define VK_OEM_8          #xDF)

(define KF_EXTENDED       #x0100)
(define KF_DLGMODE        #x0800)
(define KF_MENUMODE       #x1000)
(define KF_ALTDOWN        #x2000)
(define KF_REPEAT         #x4000)
(define KF_UP             #x8000)

(define GW_HWNDFIRST        0)
(define GW_HWNDLAST         1)
(define GW_HWNDNEXT         2)
(define GW_HWNDPREV         3)
(define GW_OWNER            4)
(define GW_CHILD            5)

(define MF_INSERT           #x00000000)
(define MF_CHANGE           #x00000080)
(define MF_APPEND           #x00000100)
(define MF_DELETE           #x00000200)
(define MF_REMOVE           #x00001000)
(define MF_BYCOMMAND        #x00000000)
(define MF_BYPOSITION       #x00000400)
(define MF_SEPARATOR        #x00000800)
(define MF_ENABLED          #x00000000)
(define MF_GRAYED           #x00000001)
(define MF_DISABLED         #x00000002)
(define MF_UNCHECKED        #x00000000)
(define MF_CHECKED          #x00000008)
(define MF_USECHECKBITMAPS  #x00000200)
(define MF_STRING           #x00000000)
(define MF_BITMAP           #x00000004)
(define MF_OWNERDRAW        #x00000100)
(define MF_POPUP            #x00000010)
(define MF_MENUBARBREAK     #x00000020)
(define MF_MENUBREAK        #x00000040)
(define MF_UNHILITE         #x00000000)
(define MF_HILITE           #x00000080)

(define BM_SETIMAGE        #x00F7)
(define IMAGE_BITMAP        0)
(define BN_CLICKED          0)

(define SW_SHOW 5)
(define SW_HIDE 0)
(define SW_SHOWNORMAL       1)
(define SW_SHOWMINIMIZED    2)
(define SW_SHOWMAXIMIZED    3)
(define SW_MAXIMIZE         3)
(define SW_SHOWNOACTIVATE   4)
(define SW_MINIMIZE         6)
(define SW_SHOWMINNOACTIVE  7)
(define SW_RESTORE          9)
(define SW_SHOWDEFAULT      10)
(define SW_FORCEMINIMIZE    11)

(define HORZRES       8)
(define VERTRES       10)

(define CBS_DROPDOWNLIST #x0003)
(define CB_INSERTSTRING #x014A)
(define CB_SETCURSEL #x014E)
(define CB_GETCURSEL #x0147)
(define CB_ADDSTRING #x0143)
(define CB_RESETCONTENT #x014B)

(define CBN_SELENDOK 9)
(define CBN_DROPDOWN        7)
(define CBN_CLOSEUP         8)
(define CBN_SELENDCANCEL    10)
