"Fossies" - the Fresh Open Source Software Archive

Member "FreeBASIC-1.09.0-win64/inc/win/winuser.bi" (1 Jan 2022, 281063 Bytes) of package /windows/misc/FreeBASIC-1.09.0-win64.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Visual Basic source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

A hint: This file contains one or more very long lines, so maybe it is better readable using the pure text view mode that shows the contents as wrapped lines within the browser window.


    1 '' FreeBASIC binding for mingw-w64-v4.0.4
    2 ''
    3 '' based on the C header files:
    4 ''   This Software is provided under the Zope Public License (ZPL) Version 2.1.
    5 ''
    6 ''   Copyright (c) 2009, 2010 by the mingw-w64 project
    7 ''
    8 ''   See the AUTHORS file for the list of contributors to the mingw-w64 project.
    9 ''
   10 ''   This license has been certified as open source. It has also been designated
   11 ''   as GPL compatible by the Free Software Foundation (FSF).
   12 ''
   13 ''   Redistribution and use in source and binary forms, with or without
   14 ''   modification, are permitted provided that the following conditions are met:
   15 ''
   16 ''     1. Redistributions in source code must retain the accompanying copyright
   17 ''        notice, this list of conditions, and the following disclaimer.
   18 ''     2. Redistributions in binary form must reproduce the accompanying
   19 ''        copyright notice, this list of conditions, and the following disclaimer
   20 ''        in the documentation and/or other materials provided with the
   21 ''        distribution.
   22 ''     3. Names of the copyright holders must not be used to endorse or promote
   23 ''        products derived from this software without prior written permission
   24 ''        from the copyright holders.
   25 ''     4. The right to distribute this software or to use it for any purpose does
   26 ''        not give you the right to use Servicemarks (sm) or Trademarks (tm) of
   27 ''        the copyright holders.  Use of them is covered by separate agreement
   28 ''        with the copyright holders.
   29 ''     5. If any files are modified, you must cause the modified files to carry
   30 ''        prominent notices stating that you changed the files and the date of
   31 ''        any change.
   32 ''
   33 ''   Disclaimer
   34 ''
   35 ''   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESSED
   36 ''   OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   37 ''   OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
   38 ''   EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
   39 ''   INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   40 ''   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
   41 ''   OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   42 ''   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   43 ''   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
   44 ''   EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   45 ''
   46 '' translated to FreeBASIC by:
   47 ''   Copyright © 2015 FreeBASIC development team
   48 
   49 #pragma once
   50 
   51 #inclib "user32"
   52 
   53 #include once "winapifamily.bi"
   54 #include once "_mingw_unicode.bi"
   55 #include once "_mingw.bi"
   56 #include once "crt/stdarg.bi"
   57 #include once "guiddef.bi"
   58 
   59 '' The following symbols have been renamed:
   60 ''     typedef INPUT => INPUT_
   61 
   62 extern "Windows"
   63 
   64 #define _WINUSER_
   65 type HDWP as HANDLE
   66 type MENUTEMPLATEA as any
   67 type MENUTEMPLATEW as any
   68 type LPMENUTEMPLATEA as PVOID
   69 type LPMENUTEMPLATEW as PVOID
   70 
   71 #ifdef UNICODE
   72     type MENUTEMPLATE as MENUTEMPLATEW
   73     type LPMENUTEMPLATE as LPMENUTEMPLATEW
   74 #else
   75     type MENUTEMPLATE as MENUTEMPLATEA
   76     type LPMENUTEMPLATE as LPMENUTEMPLATEA
   77 #endif
   78 
   79 type WNDPROC as function(byval as HWND, byval as UINT, byval as WPARAM, byval as LPARAM) as LRESULT
   80 type DLGPROC as function(byval as HWND, byval as UINT, byval as WPARAM, byval as LPARAM) as INT_PTR
   81 type TIMERPROC as sub(byval as HWND, byval as UINT, byval as UINT_PTR, byval as DWORD)
   82 type GRAYSTRINGPROC as function(byval as HDC, byval as LPARAM, byval as long) as WINBOOL
   83 type WNDENUMPROC as function(byval as HWND, byval as LPARAM) as WINBOOL
   84 type ENUMWINDOWSPROC as WNDENUMPROC  '' custom name for backwards-compatibility (it existed in old headers despite being undocumented)
   85 type HOOKPROC as function(byval code as long, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
   86 type SENDASYNCPROC as sub(byval as HWND, byval as UINT, byval as ULONG_PTR, byval as LRESULT)
   87 type PROPENUMPROCA as function(byval as HWND, byval as LPCSTR, byval as HANDLE) as WINBOOL
   88 type PROPENUMPROCW as function(byval as HWND, byval as LPCWSTR, byval as HANDLE) as WINBOOL
   89 type PROPENUMPROCEXA as function(byval as HWND, byval as LPSTR, byval as HANDLE, byval as ULONG_PTR) as WINBOOL
   90 type PROPENUMPROCEXW as function(byval as HWND, byval as LPWSTR, byval as HANDLE, byval as ULONG_PTR) as WINBOOL
   91 type EDITWORDBREAKPROCA as function(byval lpch as LPSTR, byval ichCurrent as long, byval cch as long, byval code as long) as long
   92 type EDITWORDBREAKPROCW as function(byval lpch as LPWSTR, byval ichCurrent as long, byval cch as long, byval code as long) as long
   93 type DRAWSTATEPROC as function(byval hdc as HDC, byval lData as LPARAM, byval wData as WPARAM, byval cx as long, byval cy as long) as WINBOOL
   94 
   95 #ifdef UNICODE
   96     type PROPENUMPROC as PROPENUMPROCW
   97     type PROPENUMPROCEX as PROPENUMPROCEXW
   98     type EDITWORDBREAKPROC as EDITWORDBREAKPROCW
   99 #else
  100     type PROPENUMPROC as PROPENUMPROCA
  101     type PROPENUMPROCEX as PROPENUMPROCEXA
  102     type EDITWORDBREAKPROC as EDITWORDBREAKPROCA
  103 #endif
  104 
  105 type NAMEENUMPROCA as function(byval as LPSTR, byval as LPARAM) as WINBOOL
  106 type NAMEENUMPROCW as function(byval as LPWSTR, byval as LPARAM) as WINBOOL
  107 type WINSTAENUMPROCA as NAMEENUMPROCA
  108 type WINSTAENUMPROCW as NAMEENUMPROCW
  109 type DESKTOPENUMPROCA as NAMEENUMPROCA
  110 type DESKTOPENUMPROCW as NAMEENUMPROCW
  111 
  112 #ifdef UNICODE
  113     type WINSTAENUMPROC as WINSTAENUMPROCW
  114     type DESKTOPENUMPROC as DESKTOPENUMPROCW
  115 #else
  116     type WINSTAENUMPROC as WINSTAENUMPROCA
  117     type DESKTOPENUMPROC as DESKTOPENUMPROCA
  118 #endif
  119 
  120 #define IS_INTRESOURCE(_r) ((cast(ULONG_PTR, (_r)) shr 16) = 0)
  121 #define MAKEINTRESOURCEA(i) cast(LPSTR, cast(ULONG_PTR, cast(WORD, (i))))
  122 #define MAKEINTRESOURCEW(i) cast(LPWSTR, cast(ULONG_PTR, cast(WORD, (i))))
  123 
  124 #ifdef UNICODE
  125     #define MAKEINTRESOURCE MAKEINTRESOURCEW
  126 #else
  127     #define MAKEINTRESOURCE MAKEINTRESOURCEA
  128 #endif
  129 
  130 #define RT_CURSOR MAKEINTRESOURCE(1)
  131 #define RT_BITMAP MAKEINTRESOURCE(2)
  132 #define RT_ICON MAKEINTRESOURCE(3)
  133 #define RT_MENU MAKEINTRESOURCE(4)
  134 #define RT_DIALOG MAKEINTRESOURCE(5)
  135 #define RT_STRING MAKEINTRESOURCE(6)
  136 #define RT_FONTDIR MAKEINTRESOURCE(7)
  137 #define RT_FONT MAKEINTRESOURCE(8)
  138 #define RT_ACCELERATOR MAKEINTRESOURCE(9)
  139 #define RT_RCDATA MAKEINTRESOURCE(10)
  140 #define RT_MESSAGETABLE MAKEINTRESOURCE(11)
  141 const DIFFERENCE = 11
  142 #define RT_GROUP_CURSOR MAKEINTRESOURCE(cast(ULONG_PTR, RT_CURSOR) + DIFFERENCE)
  143 #define RT_GROUP_ICON MAKEINTRESOURCE(cast(ULONG_PTR, RT_ICON) + DIFFERENCE)
  144 #define RT_VERSION MAKEINTRESOURCE(16)
  145 #define RT_DLGINCLUDE MAKEINTRESOURCE(17)
  146 #define RT_PLUGPLAY MAKEINTRESOURCE(19)
  147 #define RT_VXD MAKEINTRESOURCE(20)
  148 #define RT_ANICURSOR MAKEINTRESOURCE(21)
  149 #define RT_ANIICON MAKEINTRESOURCE(22)
  150 #define RT_HTML MAKEINTRESOURCE(23)
  151 #define RT_MANIFEST MAKEINTRESOURCE(24)
  152 #define CREATEPROCESS_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1)
  153 #define ISOLATIONAWARE_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(2)
  154 #define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(3)
  155 #define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1)
  156 #define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(16)
  157 
  158 #ifdef UNICODE
  159     #define wvsprintf wvsprintfW
  160     #define wsprintf wsprintfW
  161 #else
  162     #define wvsprintf wvsprintfA
  163     #define wsprintf wsprintfA
  164 #endif
  165 
  166 declare function wvsprintfA(byval as LPSTR, byval as LPCSTR, byval arglist as va_list) as long
  167 declare function wvsprintfW(byval as LPWSTR, byval as LPCWSTR, byval arglist as va_list) as long
  168 declare function wsprintfA cdecl(byval as LPSTR, byval as LPCSTR, ...) as long
  169 declare function wsprintfW cdecl(byval as LPWSTR, byval as LPCWSTR, ...) as long
  170 
  171 const SETWALLPAPER_DEFAULT = cast(LPWSTR, -1)
  172 const SB_HORZ = 0
  173 const SB_VERT = 1
  174 const SB_CTL = 2
  175 const SB_BOTH = 3
  176 const SB_LINEUP = 0
  177 const SB_LINELEFT = 0
  178 const SB_LINEDOWN = 1
  179 const SB_LINERIGHT = 1
  180 const SB_PAGEUP = 2
  181 const SB_PAGELEFT = 2
  182 const SB_PAGEDOWN = 3
  183 const SB_PAGERIGHT = 3
  184 const SB_THUMBPOSITION = 4
  185 const SB_THUMBTRACK = 5
  186 const SB_TOP = 6
  187 const SB_LEFT = 6
  188 const SB_BOTTOM = 7
  189 const SB_RIGHT = 7
  190 const SB_ENDSCROLL = 8
  191 const SW_HIDE = 0
  192 const SW_SHOWNORMAL = 1
  193 const SW_NORMAL = 1
  194 const SW_SHOWMINIMIZED = 2
  195 const SW_SHOWMAXIMIZED = 3
  196 const SW_MAXIMIZE = 3
  197 const SW_SHOWNOACTIVATE = 4
  198 const SW_SHOW = 5
  199 const SW_MINIMIZE = 6
  200 const SW_SHOWMINNOACTIVE = 7
  201 const SW_SHOWNA = 8
  202 const SW_RESTORE = 9
  203 const SW_SHOWDEFAULT = 10
  204 const SW_FORCEMINIMIZE = 11
  205 const SW_MAX = 11
  206 const HIDE_WINDOW = 0
  207 const SHOW_OPENWINDOW = 1
  208 const SHOW_ICONWINDOW = 2
  209 const SHOW_FULLSCREEN = 3
  210 const SHOW_OPENNOACTIVATE = 4
  211 const SW_PARENTCLOSING = 1
  212 const SW_OTHERZOOM = 2
  213 const SW_PARENTOPENING = 3
  214 const SW_OTHERUNZOOM = 4
  215 const AW_HOR_POSITIVE = &h00000001
  216 const AW_HOR_NEGATIVE = &h00000002
  217 const AW_VER_POSITIVE = &h00000004
  218 const AW_VER_NEGATIVE = &h00000008
  219 const AW_CENTER = &h00000010
  220 const AW_HIDE = &h00010000
  221 const AW_ACTIVATE = &h00020000
  222 const AW_SLIDE = &h00040000
  223 const AW_BLEND = &h00080000
  224 const KF_EXTENDED = &h0100
  225 const KF_DLGMODE = &h0800
  226 const KF_MENUMODE = &h1000
  227 const KF_ALTDOWN = &h2000
  228 const KF_REPEAT = &h4000
  229 const KF_UP = &h8000
  230 const VK_LBUTTON = &h01
  231 const VK_RBUTTON = &h02
  232 const VK_CANCEL = &h03
  233 const VK_MBUTTON = &h04
  234 const VK_XBUTTON1 = &h05
  235 const VK_XBUTTON2 = &h06
  236 const VK_BACK = &h08
  237 const VK_TAB = &h09
  238 const VK_CLEAR = &h0C
  239 const VK_RETURN = &h0D
  240 const VK_SHIFT = &h10
  241 const VK_CONTROL = &h11
  242 const VK_MENU = &h12
  243 const VK_PAUSE = &h13
  244 const VK_CAPITAL = &h14
  245 const VK_KANA = &h15
  246 const VK_HANGEUL = &h15
  247 const VK_HANGUL = &h15
  248 const VK_JUNJA = &h17
  249 const VK_FINAL = &h18
  250 const VK_HANJA = &h19
  251 const VK_KANJI = &h19
  252 const VK_ESCAPE = &h1B
  253 const VK_CONVERT = &h1C
  254 const VK_NONCONVERT = &h1D
  255 const VK_ACCEPT = &h1E
  256 const VK_MODECHANGE = &h1F
  257 const VK_SPACE = &h20
  258 const VK_PRIOR = &h21
  259 const VK_NEXT = &h22
  260 const VK_END = &h23
  261 const VK_HOME = &h24
  262 const VK_LEFT = &h25
  263 const VK_UP = &h26
  264 const VK_RIGHT = &h27
  265 const VK_DOWN = &h28
  266 const VK_SELECT = &h29
  267 const VK_PRINT = &h2A
  268 const VK_EXECUTE = &h2B
  269 const VK_SNAPSHOT = &h2C
  270 const VK_INSERT = &h2D
  271 const VK_DELETE = &h2E
  272 const VK_HELP = &h2F
  273 const VK_0 = &h30
  274 const VK_1 = &h31
  275 const VK_2 = &h32
  276 const VK_3 = &h33
  277 const VK_4 = &h34
  278 const VK_5 = &h35
  279 const VK_6 = &h36
  280 const VK_7 = &h37
  281 const VK_8 = &h38
  282 const VK_9 = &h39
  283 const VK_A = &h41
  284 const VK_B = &h42
  285 const VK_C = &h43
  286 const VK_D = &h44
  287 const VK_E = &h45
  288 const VK_F = &h46
  289 const VK_G = &h47
  290 const VK_H = &h48
  291 const VK_I = &h49
  292 const VK_J = &h4A
  293 const VK_K = &h4B
  294 const VK_L = &h4C
  295 const VK_M = &h4D
  296 const VK_N = &h4E
  297 const VK_O = &h4F
  298 const VK_P = &h50
  299 const VK_Q = &h51
  300 const VK_R = &h52
  301 const VK_S = &h53
  302 const VK_T = &h54
  303 const VK_U = &h55
  304 const VK_V = &h56
  305 const VK_W = &h57
  306 const VK_X = &h58
  307 const VK_Y = &h59
  308 const VK_Z = &h5A
  309 const VK_LWIN = &h5B
  310 const VK_RWIN = &h5C
  311 const VK_APPS = &h5D
  312 const VK_SLEEP = &h5F
  313 const VK_NUMPAD0 = &h60
  314 const VK_NUMPAD1 = &h61
  315 const VK_NUMPAD2 = &h62
  316 const VK_NUMPAD3 = &h63
  317 const VK_NUMPAD4 = &h64
  318 const VK_NUMPAD5 = &h65
  319 const VK_NUMPAD6 = &h66
  320 const VK_NUMPAD7 = &h67
  321 const VK_NUMPAD8 = &h68
  322 const VK_NUMPAD9 = &h69
  323 const VK_MULTIPLY = &h6A
  324 const VK_ADD = &h6B
  325 const VK_SEPARATOR = &h6C
  326 const VK_SUBTRACT = &h6D
  327 const VK_DECIMAL = &h6E
  328 const VK_DIVIDE = &h6F
  329 const VK_F1 = &h70
  330 const VK_F2 = &h71
  331 const VK_F3 = &h72
  332 const VK_F4 = &h73
  333 const VK_F5 = &h74
  334 const VK_F6 = &h75
  335 const VK_F7 = &h76
  336 const VK_F8 = &h77
  337 const VK_F9 = &h78
  338 const VK_F10 = &h79
  339 const VK_F11 = &h7A
  340 const VK_F12 = &h7B
  341 const VK_F13 = &h7C
  342 const VK_F14 = &h7D
  343 const VK_F15 = &h7E
  344 const VK_F16 = &h7F
  345 const VK_F17 = &h80
  346 const VK_F18 = &h81
  347 const VK_F19 = &h82
  348 const VK_F20 = &h83
  349 const VK_F21 = &h84
  350 const VK_F22 = &h85
  351 const VK_F23 = &h86
  352 const VK_F24 = &h87
  353 const VK_NUMLOCK = &h90
  354 const VK_SCROLL = &h91
  355 const VK_OEM_NEC_EQUAL = &h92
  356 const VK_OEM_FJ_JISHO = &h92
  357 const VK_OEM_FJ_MASSHOU = &h93
  358 const VK_OEM_FJ_TOUROKU = &h94
  359 const VK_OEM_FJ_LOYA = &h95
  360 const VK_OEM_FJ_ROYA = &h96
  361 const VK_LSHIFT = &hA0
  362 const VK_RSHIFT = &hA1
  363 const VK_LCONTROL = &hA2
  364 const VK_RCONTROL = &hA3
  365 const VK_LMENU = &hA4
  366 const VK_RMENU = &hA5
  367 const VK_BROWSER_BACK = &hA6
  368 const VK_BROWSER_FORWARD = &hA7
  369 const VK_BROWSER_REFRESH = &hA8
  370 const VK_BROWSER_STOP = &hA9
  371 const VK_BROWSER_SEARCH = &hAA
  372 const VK_BROWSER_FAVORITES = &hAB
  373 const VK_BROWSER_HOME = &hAC
  374 const VK_VOLUME_MUTE = &hAD
  375 const VK_VOLUME_DOWN = &hAE
  376 const VK_VOLUME_UP = &hAF
  377 const VK_MEDIA_NEXT_TRACK = &hB0
  378 const VK_MEDIA_PREV_TRACK = &hB1
  379 const VK_MEDIA_STOP = &hB2
  380 const VK_MEDIA_PLAY_PAUSE = &hB3
  381 const VK_LAUNCH_MAIL = &hB4
  382 const VK_LAUNCH_MEDIA_SELECT = &hB5
  383 const VK_LAUNCH_APP1 = &hB6
  384 const VK_LAUNCH_APP2 = &hB7
  385 const VK_OEM_1 = &hBA
  386 const VK_OEM_PLUS = &hBB
  387 const VK_OEM_COMMA = &hBC
  388 const VK_OEM_MINUS = &hBD
  389 const VK_OEM_PERIOD = &hBE
  390 const VK_OEM_2 = &hBF
  391 const VK_OEM_3 = &hC0
  392 const VK_OEM_4 = &hDB
  393 const VK_OEM_5 = &hDC
  394 const VK_OEM_6 = &hDD
  395 const VK_OEM_7 = &hDE
  396 const VK_OEM_8 = &hDF
  397 const VK_OEM_AX = &hE1
  398 const VK_OEM_102 = &hE2
  399 const VK_ICO_HELP = &hE3
  400 const VK_ICO_00 = &hE4
  401 const VK_PROCESSKEY = &hE5
  402 const VK_ICO_CLEAR = &hE6
  403 const VK_PACKET = &hE7
  404 const VK_OEM_RESET = &hE9
  405 const VK_OEM_JUMP = &hEA
  406 const VK_OEM_PA1 = &hEB
  407 const VK_OEM_PA2 = &hEC
  408 const VK_OEM_PA3 = &hED
  409 const VK_OEM_WSCTRL = &hEE
  410 const VK_OEM_CUSEL = &hEF
  411 const VK_OEM_ATTN = &hF0
  412 const VK_OEM_FINISH = &hF1
  413 const VK_OEM_COPY = &hF2
  414 const VK_OEM_AUTO = &hF3
  415 const VK_OEM_ENLW = &hF4
  416 const VK_OEM_BACKTAB = &hF5
  417 const VK_ATTN = &hF6
  418 const VK_CRSEL = &hF7
  419 const VK_EXSEL = &hF8
  420 const VK_EREOF = &hF9
  421 const VK_PLAY = &hFA
  422 const VK_ZOOM = &hFB
  423 const VK_NONAME = &hFC
  424 const VK_PA1 = &hFD
  425 const VK_OEM_CLEAR = &hFE
  426 const WH_MIN = -1
  427 const WH_MSGFILTER = -1
  428 const WH_JOURNALRECORD = 0
  429 const WH_JOURNALPLAYBACK = 1
  430 const WH_KEYBOARD = 2
  431 const WH_GETMESSAGE = 3
  432 const WH_CALLWNDPROC = 4
  433 const WH_CBT = 5
  434 const WH_SYSMSGFILTER = 6
  435 const WH_MOUSE = 7
  436 const WH_HARDWARE = 8
  437 const WH_DEBUG = 9
  438 const WH_SHELL = 10
  439 const WH_FOREGROUNDIDLE = 11
  440 const WH_CALLWNDPROCRET = 12
  441 const WH_KEYBOARD_LL = 13
  442 const WH_MOUSE_LL = 14
  443 const WH_MAX = 14
  444 const WH_MINHOOK = WH_MIN
  445 const WH_MAXHOOK = WH_MAX
  446 const HC_ACTION = 0
  447 const HC_GETNEXT = 1
  448 const HC_SKIP = 2
  449 const HC_NOREMOVE = 3
  450 const HC_NOREM = HC_NOREMOVE
  451 const HC_SYSMODALON = 4
  452 const HC_SYSMODALOFF = 5
  453 const HCBT_MOVESIZE = 0
  454 const HCBT_MINMAX = 1
  455 const HCBT_QS = 2
  456 const HCBT_CREATEWND = 3
  457 const HCBT_DESTROYWND = 4
  458 const HCBT_ACTIVATE = 5
  459 const HCBT_CLICKSKIPPED = 6
  460 const HCBT_KEYSKIPPED = 7
  461 const HCBT_SYSCOMMAND = 8
  462 const HCBT_SETFOCUS = 9
  463 type tagCREATESTRUCTA as tagCREATESTRUCTA_
  464 
  465 type tagCBT_CREATEWNDA
  466     lpcs as tagCREATESTRUCTA ptr
  467     hwndInsertAfter as HWND
  468 end type
  469 
  470 type CBT_CREATEWNDA as tagCBT_CREATEWNDA
  471 type LPCBT_CREATEWNDA as tagCBT_CREATEWNDA ptr
  472 type tagCREATESTRUCTW as tagCREATESTRUCTW_
  473 
  474 type tagCBT_CREATEWNDW
  475     lpcs as tagCREATESTRUCTW ptr
  476     hwndInsertAfter as HWND
  477 end type
  478 
  479 type CBT_CREATEWNDW as tagCBT_CREATEWNDW
  480 type LPCBT_CREATEWNDW as tagCBT_CREATEWNDW ptr
  481 
  482 #ifdef UNICODE
  483     type CBT_CREATEWND as CBT_CREATEWNDW
  484     type LPCBT_CREATEWND as LPCBT_CREATEWNDW
  485 #else
  486     type CBT_CREATEWND as CBT_CREATEWNDA
  487     type LPCBT_CREATEWND as LPCBT_CREATEWNDA
  488 #endif
  489 
  490 type tagCBTACTIVATESTRUCT
  491     fMouse as WINBOOL
  492     hWndActive as HWND
  493 end type
  494 
  495 type CBTACTIVATESTRUCT as tagCBTACTIVATESTRUCT
  496 type LPCBTACTIVATESTRUCT as tagCBTACTIVATESTRUCT ptr
  497 
  498 type tagWTSSESSION_NOTIFICATION
  499     cbSize as DWORD
  500     dwSessionId as DWORD
  501 end type
  502 
  503 type WTSSESSION_NOTIFICATION as tagWTSSESSION_NOTIFICATION
  504 type PWTSSESSION_NOTIFICATION as tagWTSSESSION_NOTIFICATION ptr
  505 const WTS_CONSOLE_CONNECT = &h1
  506 const WTS_CONSOLE_DISCONNECT = &h2
  507 const WTS_REMOTE_CONNECT = &h3
  508 const WTS_REMOTE_DISCONNECT = &h4
  509 const WTS_SESSION_LOGON = &h5
  510 const WTS_SESSION_LOGOFF = &h6
  511 const WTS_SESSION_LOCK = &h7
  512 const WTS_SESSION_UNLOCK = &h8
  513 const WTS_SESSION_REMOTE_CONTROL = &h9
  514 const WTS_SESSION_CREATE = &ha
  515 const WTS_SESSION_TERMINATE = &hb
  516 const MSGF_DIALOGBOX = 0
  517 const MSGF_MESSAGEBOX = 1
  518 const MSGF_MENU = 2
  519 const MSGF_SCROLLBAR = 5
  520 const MSGF_NEXTWINDOW = 6
  521 const MSGF_MAX = 8
  522 const MSGF_USER = 4096
  523 const HSHELL_WINDOWCREATED = 1
  524 const HSHELL_WINDOWDESTROYED = 2
  525 const HSHELL_ACTIVATESHELLWINDOW = 3
  526 const HSHELL_WINDOWACTIVATED = 4
  527 const HSHELL_GETMINRECT = 5
  528 const HSHELL_REDRAW = 6
  529 const HSHELL_TASKMAN = 7
  530 const HSHELL_LANGUAGE = 8
  531 const HSHELL_SYSMENU = 9
  532 const HSHELL_ENDTASK = 10
  533 const HSHELL_ACCESSIBILITYSTATE = 11
  534 const HSHELL_APPCOMMAND = 12
  535 const HSHELL_WINDOWREPLACED = 13
  536 const HSHELL_WINDOWREPLACING = 14
  537 
  538 #if _WIN32_WINNT = &h0602
  539     const HSHELL_MONITORCHANGED = 16
  540 #endif
  541 
  542 const HSHELL_HIGHBIT = &h8000
  543 const HSHELL_FLASH = HSHELL_REDRAW or HSHELL_HIGHBIT
  544 const HSHELL_RUDEAPPACTIVATED = HSHELL_WINDOWACTIVATED or HSHELL_HIGHBIT
  545 const ACCESS_STICKYKEYS = &h0001
  546 const ACCESS_FILTERKEYS = &h0002
  547 const ACCESS_MOUSEKEYS = &h0003
  548 const APPCOMMAND_BROWSER_BACKWARD = 1
  549 const APPCOMMAND_BROWSER_FORWARD = 2
  550 const APPCOMMAND_BROWSER_REFRESH = 3
  551 const APPCOMMAND_BROWSER_STOP = 4
  552 const APPCOMMAND_BROWSER_SEARCH = 5
  553 const APPCOMMAND_BROWSER_FAVORITES = 6
  554 const APPCOMMAND_BROWSER_HOME = 7
  555 const APPCOMMAND_VOLUME_MUTE = 8
  556 const APPCOMMAND_VOLUME_DOWN = 9
  557 const APPCOMMAND_VOLUME_UP = 10
  558 const APPCOMMAND_MEDIA_NEXTTRACK = 11
  559 const APPCOMMAND_MEDIA_PREVIOUSTRACK = 12
  560 const APPCOMMAND_MEDIA_STOP = 13
  561 const APPCOMMAND_MEDIA_PLAY_PAUSE = 14
  562 const APPCOMMAND_LAUNCH_MAIL = 15
  563 const APPCOMMAND_LAUNCH_MEDIA_SELECT = 16
  564 const APPCOMMAND_LAUNCH_APP1 = 17
  565 const APPCOMMAND_LAUNCH_APP2 = 18
  566 const APPCOMMAND_BASS_DOWN = 19
  567 const APPCOMMAND_BASS_BOOST = 20
  568 const APPCOMMAND_BASS_UP = 21
  569 const APPCOMMAND_TREBLE_DOWN = 22
  570 const APPCOMMAND_TREBLE_UP = 23
  571 const APPCOMMAND_MICROPHONE_VOLUME_MUTE = 24
  572 const APPCOMMAND_MICROPHONE_VOLUME_DOWN = 25
  573 const APPCOMMAND_MICROPHONE_VOLUME_UP = 26
  574 const APPCOMMAND_HELP = 27
  575 const APPCOMMAND_FIND = 28
  576 const APPCOMMAND_NEW = 29
  577 const APPCOMMAND_OPEN = 30
  578 const APPCOMMAND_CLOSE = 31
  579 const APPCOMMAND_SAVE = 32
  580 const APPCOMMAND_PRINT = 33
  581 const APPCOMMAND_UNDO = 34
  582 const APPCOMMAND_REDO = 35
  583 const APPCOMMAND_COPY = 36
  584 const APPCOMMAND_CUT = 37
  585 const APPCOMMAND_PASTE = 38
  586 const APPCOMMAND_REPLY_TO_MAIL = 39
  587 const APPCOMMAND_FORWARD_MAIL = 40
  588 const APPCOMMAND_SEND_MAIL = 41
  589 const APPCOMMAND_SPELL_CHECK = 42
  590 const APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE = 43
  591 const APPCOMMAND_MIC_ON_OFF_TOGGLE = 44
  592 const APPCOMMAND_CORRECTION_LIST = 45
  593 const APPCOMMAND_MEDIA_PLAY = 46
  594 const APPCOMMAND_MEDIA_PAUSE = 47
  595 const APPCOMMAND_MEDIA_RECORD = 48
  596 const APPCOMMAND_MEDIA_FAST_FORWARD = 49
  597 const APPCOMMAND_MEDIA_REWIND = 50
  598 const APPCOMMAND_MEDIA_CHANNEL_UP = 51
  599 const APPCOMMAND_MEDIA_CHANNEL_DOWN = 52
  600 
  601 #if _WIN32_WINNT >= &h0600
  602     const APPCOMMAND_DELETE = 53
  603     const APPCOMMAND_DWM_FLIP3D = 54
  604 #endif
  605 
  606 const FAPPCOMMAND_MOUSE = &h8000
  607 const FAPPCOMMAND_KEY = 0
  608 const FAPPCOMMAND_OEM = &h1000
  609 const FAPPCOMMAND_MASK = &hF000
  610 #define GET_APPCOMMAND_LPARAM(lParam) cshort(HIWORD(lParam) and (not FAPPCOMMAND_MASK))
  611 #define GET_DEVICE_LPARAM(lParam) cast(WORD, HIWORD(lParam) and FAPPCOMMAND_MASK)
  612 #define GET_MOUSEORKEY_LPARAM GET_DEVICE_LPARAM
  613 #define GET_FLAGS_LPARAM(lParam) LOWORD(lParam)
  614 #define GET_KEYSTATE_LPARAM(lParam) GET_FLAGS_LPARAM(lParam)
  615 
  616 type SHELLHOOKINFO
  617     hwnd as HWND
  618     rc as RECT
  619 end type
  620 
  621 type LPSHELLHOOKINFO as SHELLHOOKINFO ptr
  622 
  623 type tagEVENTMSG
  624     message as UINT
  625     paramL as UINT
  626     paramH as UINT
  627     time as DWORD
  628     hwnd as HWND
  629 end type
  630 
  631 type EVENTMSG as tagEVENTMSG
  632 type PEVENTMSGMSG as tagEVENTMSG ptr
  633 type NPEVENTMSGMSG as tagEVENTMSG ptr
  634 type LPEVENTMSGMSG as tagEVENTMSG ptr
  635 type PEVENTMSG as tagEVENTMSG ptr
  636 type NPEVENTMSG as tagEVENTMSG ptr
  637 type LPEVENTMSG as tagEVENTMSG ptr
  638 
  639 type tagCWPSTRUCT
  640     lParam as LPARAM
  641     wParam as WPARAM
  642     message as UINT
  643     hwnd as HWND
  644 end type
  645 
  646 type CWPSTRUCT as tagCWPSTRUCT
  647 type PCWPSTRUCT as tagCWPSTRUCT ptr
  648 type NPCWPSTRUCT as tagCWPSTRUCT ptr
  649 type LPCWPSTRUCT as tagCWPSTRUCT ptr
  650 
  651 type tagCWPRETSTRUCT
  652     lResult as LRESULT
  653     lParam as LPARAM
  654     wParam as WPARAM
  655     message as UINT
  656     hwnd as HWND
  657 end type
  658 
  659 type CWPRETSTRUCT as tagCWPRETSTRUCT
  660 type PCWPRETSTRUCT as tagCWPRETSTRUCT ptr
  661 type NPCWPRETSTRUCT as tagCWPRETSTRUCT ptr
  662 type LPCWPRETSTRUCT as tagCWPRETSTRUCT ptr
  663 
  664 const LLKHF_EXTENDED = KF_EXTENDED shr 8
  665 const LLKHF_INJECTED = &h00000010
  666 const LLKHF_ALTDOWN = KF_ALTDOWN shr 8
  667 const LLKHF_UP = KF_UP shr 8
  668 const LLMHF_INJECTED = &h00000001
  669 
  670 type tagKBDLLHOOKSTRUCT
  671     vkCode as DWORD
  672     scanCode as DWORD
  673     flags as DWORD
  674     time as DWORD
  675     dwExtraInfo as ULONG_PTR
  676 end type
  677 
  678 type KBDLLHOOKSTRUCT as tagKBDLLHOOKSTRUCT
  679 type LPKBDLLHOOKSTRUCT as tagKBDLLHOOKSTRUCT ptr
  680 type PKBDLLHOOKSTRUCT as tagKBDLLHOOKSTRUCT ptr
  681 
  682 type tagMSLLHOOKSTRUCT
  683     pt as POINT
  684     mouseData as DWORD
  685     flags as DWORD
  686     time as DWORD
  687     dwExtraInfo as ULONG_PTR
  688 end type
  689 
  690 type MSLLHOOKSTRUCT as tagMSLLHOOKSTRUCT
  691 type LPMSLLHOOKSTRUCT as tagMSLLHOOKSTRUCT ptr
  692 type PMSLLHOOKSTRUCT as tagMSLLHOOKSTRUCT ptr
  693 
  694 type tagDEBUGHOOKINFO
  695     idThread as DWORD
  696     idThreadInstaller as DWORD
  697     lParam as LPARAM
  698     wParam as WPARAM
  699     code as long
  700 end type
  701 
  702 type DEBUGHOOKINFO as tagDEBUGHOOKINFO
  703 type PDEBUGHOOKINFO as tagDEBUGHOOKINFO ptr
  704 type NPDEBUGHOOKINFO as tagDEBUGHOOKINFO ptr
  705 type LPDEBUGHOOKINFO as tagDEBUGHOOKINFO ptr
  706 
  707 type tagMOUSEHOOKSTRUCT
  708     pt as POINT
  709     hwnd as HWND
  710     wHitTestCode as UINT
  711     dwExtraInfo as ULONG_PTR
  712 end type
  713 
  714 type MOUSEHOOKSTRUCT as tagMOUSEHOOKSTRUCT
  715 type LPMOUSEHOOKSTRUCT as tagMOUSEHOOKSTRUCT ptr
  716 type PMOUSEHOOKSTRUCT as tagMOUSEHOOKSTRUCT ptr
  717 
  718 type tagMOUSEHOOKSTRUCTEX
  719     __unnamed as MOUSEHOOKSTRUCT
  720     mouseData as DWORD
  721 end type
  722 
  723 type MOUSEHOOKSTRUCTEX as tagMOUSEHOOKSTRUCTEX
  724 type LPMOUSEHOOKSTRUCTEX as tagMOUSEHOOKSTRUCTEX ptr
  725 type PMOUSEHOOKSTRUCTEX as tagMOUSEHOOKSTRUCTEX ptr
  726 
  727 type tagHARDWAREHOOKSTRUCT
  728     hwnd as HWND
  729     message as UINT
  730     wParam as WPARAM
  731     lParam as LPARAM
  732 end type
  733 
  734 type HARDWAREHOOKSTRUCT as tagHARDWAREHOOKSTRUCT
  735 type LPHARDWAREHOOKSTRUCT as tagHARDWAREHOOKSTRUCT ptr
  736 type PHARDWAREHOOKSTRUCT as tagHARDWAREHOOKSTRUCT ptr
  737 
  738 const HKL_PREV = 0
  739 const HKL_NEXT = 1
  740 const KLF_ACTIVATE = &h00000001
  741 const KLF_SUBSTITUTE_OK = &h00000002
  742 const KLF_REORDER = &h00000008
  743 const KLF_REPLACELANG = &h00000010
  744 const KLF_NOTELLSHELL = &h00000080
  745 const KLF_SETFORPROCESS = &h00000100
  746 const KLF_SHIFTLOCK = &h00010000
  747 const KLF_RESET = &h40000000
  748 const INPUTLANGCHANGE_SYSCHARSET = &h0001
  749 const INPUTLANGCHANGE_FORWARD = &h0002
  750 const INPUTLANGCHANGE_BACKWARD = &h0004
  751 const KL_NAMELENGTH = 9
  752 declare function LoadKeyboardLayoutA(byval pwszKLID as LPCSTR, byval Flags as UINT) as HKL
  753 
  754 #ifndef UNICODE
  755     declare function LoadKeyboardLayout alias "LoadKeyboardLayoutA"(byval pwszKLID as LPCSTR, byval Flags as UINT) as HKL
  756 #endif
  757 
  758 declare function LoadKeyboardLayoutW(byval pwszKLID as LPCWSTR, byval Flags as UINT) as HKL
  759 
  760 #ifdef UNICODE
  761     declare function LoadKeyboardLayout alias "LoadKeyboardLayoutW"(byval pwszKLID as LPCWSTR, byval Flags as UINT) as HKL
  762 #endif
  763 
  764 declare function ActivateKeyboardLayout(byval hkl as HKL, byval Flags as UINT) as HKL
  765 declare function ToUnicodeEx(byval wVirtKey as UINT, byval wScanCode as UINT, byval lpKeyState as const UBYTE ptr, byval pwszBuff as LPWSTR, byval cchBuff as long, byval wFlags as UINT, byval dwhkl as HKL) as long
  766 declare function UnloadKeyboardLayout(byval hkl as HKL) as WINBOOL
  767 declare function GetKeyboardLayoutNameA(byval pwszKLID as LPSTR) as WINBOOL
  768 
  769 #ifndef UNICODE
  770     declare function GetKeyboardLayoutName alias "GetKeyboardLayoutNameA"(byval pwszKLID as LPSTR) as WINBOOL
  771 #endif
  772 
  773 declare function GetKeyboardLayoutNameW(byval pwszKLID as LPWSTR) as WINBOOL
  774 
  775 #ifdef UNICODE
  776     declare function GetKeyboardLayoutName alias "GetKeyboardLayoutNameW"(byval pwszKLID as LPWSTR) as WINBOOL
  777 #endif
  778 
  779 declare function GetKeyboardLayoutList(byval nBuff as long, byval lpList as HKL ptr) as long
  780 declare function GetKeyboardLayout(byval idThread as DWORD) as HKL
  781 
  782 type tagMOUSEMOVEPOINT
  783     x as long
  784     y as long
  785     time as DWORD
  786     dwExtraInfo as ULONG_PTR
  787 end type
  788 
  789 type MOUSEMOVEPOINT as tagMOUSEMOVEPOINT
  790 type PMOUSEMOVEPOINT as tagMOUSEMOVEPOINT ptr
  791 type LPMOUSEMOVEPOINT as tagMOUSEMOVEPOINT ptr
  792 declare function GetMouseMovePointsEx(byval cbSize as UINT, byval lppt as LPMOUSEMOVEPOINT, byval lpptBuf as LPMOUSEMOVEPOINT, byval nBufPoints as long, byval resolution as DWORD) as long
  793 
  794 const GMMP_USE_DISPLAY_POINTS = 1
  795 const GMMP_USE_HIGH_RESOLUTION_POINTS = 2
  796 const DESKTOP_READOBJECTS = &h0001
  797 const DESKTOP_CREATEWINDOW = &h0002
  798 const DESKTOP_CREATEMENU = &h0004
  799 const DESKTOP_HOOKCONTROL = &h0008
  800 const DESKTOP_JOURNALRECORD = &h0010
  801 const DESKTOP_JOURNALPLAYBACK = &h0020
  802 const DESKTOP_ENUMERATE = &h0040
  803 const DESKTOP_WRITEOBJECTS = &h0080
  804 const DESKTOP_SWITCHDESKTOP = &h0100
  805 const DF_ALLOWOTHERACCOUNTHOOK = &h0001
  806 declare function CreateDesktopA(byval lpszDesktop as LPCSTR, byval lpszDevice as LPCSTR, byval pDevmode as LPDEVMODEA, byval dwFlags as DWORD, byval dwDesiredAccess as ACCESS_MASK, byval lpsa as LPSECURITY_ATTRIBUTES) as HDESK
  807 
  808 #ifndef UNICODE
  809     declare function CreateDesktop alias "CreateDesktopA"(byval lpszDesktop as LPCSTR, byval lpszDevice as LPCSTR, byval pDevmode as LPDEVMODEA, byval dwFlags as DWORD, byval dwDesiredAccess as ACCESS_MASK, byval lpsa as LPSECURITY_ATTRIBUTES) as HDESK
  810 #endif
  811 
  812 declare function CreateDesktopW(byval lpszDesktop as LPCWSTR, byval lpszDevice as LPCWSTR, byval pDevmode as LPDEVMODEW, byval dwFlags as DWORD, byval dwDesiredAccess as ACCESS_MASK, byval lpsa as LPSECURITY_ATTRIBUTES) as HDESK
  813 
  814 #ifdef UNICODE
  815     declare function CreateDesktop alias "CreateDesktopW"(byval lpszDesktop as LPCWSTR, byval lpszDevice as LPCWSTR, byval pDevmode as LPDEVMODEW, byval dwFlags as DWORD, byval dwDesiredAccess as ACCESS_MASK, byval lpsa as LPSECURITY_ATTRIBUTES) as HDESK
  816 #endif
  817 
  818 declare function CreateDesktopExA(byval lpszDesktop as LPCSTR, byval lpszDevice as LPCSTR, byval pDevmode as DEVMODEA ptr, byval dwFlags as DWORD, byval dwDesiredAccess as ACCESS_MASK, byval lpsa as LPSECURITY_ATTRIBUTES, byval ulHeapSize as ULONG, byval pvoid as PVOID) as HDESK
  819 
  820 #ifndef UNICODE
  821     declare function CreateDesktopEx alias "CreateDesktopExA"(byval lpszDesktop as LPCSTR, byval lpszDevice as LPCSTR, byval pDevmode as DEVMODEA ptr, byval dwFlags as DWORD, byval dwDesiredAccess as ACCESS_MASK, byval lpsa as LPSECURITY_ATTRIBUTES, byval ulHeapSize as ULONG, byval pvoid as PVOID) as HDESK
  822 #endif
  823 
  824 declare function CreateDesktopExW(byval lpszDesktop as LPCWSTR, byval lpszDevice as LPCWSTR, byval pDevmode as DEVMODEW ptr, byval dwFlags as DWORD, byval dwDesiredAccess as ACCESS_MASK, byval lpsa as LPSECURITY_ATTRIBUTES, byval ulHeapSize as ULONG, byval pvoid as PVOID) as HDESK
  825 
  826 #ifdef UNICODE
  827     declare function CreateDesktopEx alias "CreateDesktopExW"(byval lpszDesktop as LPCWSTR, byval lpszDevice as LPCWSTR, byval pDevmode as DEVMODEW ptr, byval dwFlags as DWORD, byval dwDesiredAccess as ACCESS_MASK, byval lpsa as LPSECURITY_ATTRIBUTES, byval ulHeapSize as ULONG, byval pvoid as PVOID) as HDESK
  828 #endif
  829 
  830 declare function OpenDesktopA(byval lpszDesktop as LPCSTR, byval dwFlags as DWORD, byval fInherit as WINBOOL, byval dwDesiredAccess as ACCESS_MASK) as HDESK
  831 
  832 #ifndef UNICODE
  833     declare function OpenDesktop alias "OpenDesktopA"(byval lpszDesktop as LPCSTR, byval dwFlags as DWORD, byval fInherit as WINBOOL, byval dwDesiredAccess as ACCESS_MASK) as HDESK
  834 #endif
  835 
  836 declare function OpenDesktopW(byval lpszDesktop as LPCWSTR, byval dwFlags as DWORD, byval fInherit as WINBOOL, byval dwDesiredAccess as ACCESS_MASK) as HDESK
  837 
  838 #ifdef UNICODE
  839     declare function OpenDesktop alias "OpenDesktopW"(byval lpszDesktop as LPCWSTR, byval dwFlags as DWORD, byval fInherit as WINBOOL, byval dwDesiredAccess as ACCESS_MASK) as HDESK
  840 #endif
  841 
  842 declare function OpenInputDesktop(byval dwFlags as DWORD, byval fInherit as WINBOOL, byval dwDesiredAccess as ACCESS_MASK) as HDESK
  843 declare function EnumDesktopsA(byval hwinsta as HWINSTA, byval lpEnumFunc as DESKTOPENUMPROCA, byval lParam as LPARAM) as WINBOOL
  844 
  845 #ifndef UNICODE
  846     declare function EnumDesktops alias "EnumDesktopsA"(byval hwinsta as HWINSTA, byval lpEnumFunc as DESKTOPENUMPROCA, byval lParam as LPARAM) as WINBOOL
  847 #endif
  848 
  849 declare function EnumDesktopsW(byval hwinsta as HWINSTA, byval lpEnumFunc as DESKTOPENUMPROCW, byval lParam as LPARAM) as WINBOOL
  850 
  851 #ifdef UNICODE
  852     declare function EnumDesktops alias "EnumDesktopsW"(byval hwinsta as HWINSTA, byval lpEnumFunc as DESKTOPENUMPROCW, byval lParam as LPARAM) as WINBOOL
  853 #endif
  854 
  855 declare function EnumDesktopWindows(byval hDesktop as HDESK, byval lpfn as WNDENUMPROC, byval lParam as LPARAM) as WINBOOL
  856 declare function SwitchDesktop(byval hDesktop as HDESK) as WINBOOL
  857 declare function SetThreadDesktop(byval hDesktop as HDESK) as WINBOOL
  858 declare function CloseDesktop(byval hDesktop as HDESK) as WINBOOL
  859 declare function GetThreadDesktop(byval dwThreadId as DWORD) as HDESK
  860 
  861 const WINSTA_ENUMDESKTOPS = &h0001
  862 const WINSTA_READATTRIBUTES = &h0002
  863 const WINSTA_ACCESSCLIPBOARD = &h0004
  864 const WINSTA_CREATEDESKTOP = &h0008
  865 const WINSTA_WRITEATTRIBUTES = &h0010
  866 const WINSTA_ACCESSGLOBALATOMS = &h0020
  867 const WINSTA_EXITWINDOWS = &h0040
  868 const WINSTA_ENUMERATE = &h0100
  869 const WINSTA_READSCREEN = &h0200
  870 const WINSTA_ALL_ACCESS = (((((((WINSTA_ENUMDESKTOPS or WINSTA_READATTRIBUTES) or WINSTA_ACCESSCLIPBOARD) or WINSTA_CREATEDESKTOP) or WINSTA_WRITEATTRIBUTES) or WINSTA_ACCESSGLOBALATOMS) or WINSTA_EXITWINDOWS) or WINSTA_ENUMERATE) or WINSTA_READSCREEN
  871 const CWF_CREATE_ONLY = &h00000001
  872 const WSF_VISIBLE = &h0001
  873 declare function CreateWindowStationA(byval lpwinsta as LPCSTR, byval dwFlags as DWORD, byval dwDesiredAccess as ACCESS_MASK, byval lpsa as LPSECURITY_ATTRIBUTES) as HWINSTA
  874 
  875 #ifndef UNICODE
  876     declare function CreateWindowStation alias "CreateWindowStationA"(byval lpwinsta as LPCSTR, byval dwFlags as DWORD, byval dwDesiredAccess as ACCESS_MASK, byval lpsa as LPSECURITY_ATTRIBUTES) as HWINSTA
  877 #endif
  878 
  879 declare function CreateWindowStationW(byval lpwinsta as LPCWSTR, byval dwFlags as DWORD, byval dwDesiredAccess as ACCESS_MASK, byval lpsa as LPSECURITY_ATTRIBUTES) as HWINSTA
  880 
  881 #ifdef UNICODE
  882     declare function CreateWindowStation alias "CreateWindowStationW"(byval lpwinsta as LPCWSTR, byval dwFlags as DWORD, byval dwDesiredAccess as ACCESS_MASK, byval lpsa as LPSECURITY_ATTRIBUTES) as HWINSTA
  883 #endif
  884 
  885 declare function OpenWindowStationA(byval lpszWinSta as LPCSTR, byval fInherit as WINBOOL, byval dwDesiredAccess as ACCESS_MASK) as HWINSTA
  886 
  887 #ifndef UNICODE
  888     declare function OpenWindowStation alias "OpenWindowStationA"(byval lpszWinSta as LPCSTR, byval fInherit as WINBOOL, byval dwDesiredAccess as ACCESS_MASK) as HWINSTA
  889 #endif
  890 
  891 declare function OpenWindowStationW(byval lpszWinSta as LPCWSTR, byval fInherit as WINBOOL, byval dwDesiredAccess as ACCESS_MASK) as HWINSTA
  892 
  893 #ifdef UNICODE
  894     declare function OpenWindowStation alias "OpenWindowStationW"(byval lpszWinSta as LPCWSTR, byval fInherit as WINBOOL, byval dwDesiredAccess as ACCESS_MASK) as HWINSTA
  895 #endif
  896 
  897 declare function EnumWindowStationsA(byval lpEnumFunc as WINSTAENUMPROCA, byval lParam as LPARAM) as WINBOOL
  898 
  899 #ifndef UNICODE
  900     declare function EnumWindowStations alias "EnumWindowStationsA"(byval lpEnumFunc as WINSTAENUMPROCA, byval lParam as LPARAM) as WINBOOL
  901 #endif
  902 
  903 declare function EnumWindowStationsW(byval lpEnumFunc as WINSTAENUMPROCW, byval lParam as LPARAM) as WINBOOL
  904 
  905 #ifdef UNICODE
  906     declare function EnumWindowStations alias "EnumWindowStationsW"(byval lpEnumFunc as WINSTAENUMPROCW, byval lParam as LPARAM) as WINBOOL
  907 #endif
  908 
  909 declare function CloseWindowStation(byval hWinSta as HWINSTA) as WINBOOL
  910 declare function SetProcessWindowStation(byval hWinSta as HWINSTA) as WINBOOL
  911 declare function GetProcessWindowStation() as HWINSTA
  912 declare function SetUserObjectSecurity(byval hObj as HANDLE, byval pSIRequested as PSECURITY_INFORMATION, byval pSID as PSECURITY_DESCRIPTOR) as WINBOOL
  913 declare function GetUserObjectSecurity(byval hObj as HANDLE, byval pSIRequested as PSECURITY_INFORMATION, byval pSID as PSECURITY_DESCRIPTOR, byval nLength as DWORD, byval lpnLengthNeeded as LPDWORD) as WINBOOL
  914 
  915 const UOI_FLAGS = 1
  916 const UOI_NAME = 2
  917 const UOI_TYPE = 3
  918 const UOI_USER_SID = 4
  919 
  920 #if _WIN32_WINNT >= &h0600
  921     const UOI_HEAPSIZE = 5
  922     const UOI_IO = 6
  923 #endif
  924 
  925 type tagUSEROBJECTFLAGS
  926     fInherit as WINBOOL
  927     fReserved as WINBOOL
  928     dwFlags as DWORD
  929 end type
  930 
  931 type USEROBJECTFLAGS as tagUSEROBJECTFLAGS
  932 type PUSEROBJECTFLAGS as tagUSEROBJECTFLAGS ptr
  933 declare function GetUserObjectInformationA(byval hObj as HANDLE, byval nIndex as long, byval pvInfo as PVOID, byval nLength as DWORD, byval lpnLengthNeeded as LPDWORD) as WINBOOL
  934 
  935 #ifndef UNICODE
  936     declare function GetUserObjectInformation alias "GetUserObjectInformationA"(byval hObj as HANDLE, byval nIndex as long, byval pvInfo as PVOID, byval nLength as DWORD, byval lpnLengthNeeded as LPDWORD) as WINBOOL
  937 #endif
  938 
  939 declare function GetUserObjectInformationW(byval hObj as HANDLE, byval nIndex as long, byval pvInfo as PVOID, byval nLength as DWORD, byval lpnLengthNeeded as LPDWORD) as WINBOOL
  940 
  941 #ifdef UNICODE
  942     declare function GetUserObjectInformation alias "GetUserObjectInformationW"(byval hObj as HANDLE, byval nIndex as long, byval pvInfo as PVOID, byval nLength as DWORD, byval lpnLengthNeeded as LPDWORD) as WINBOOL
  943 #endif
  944 
  945 declare function SetUserObjectInformationA(byval hObj as HANDLE, byval nIndex as long, byval pvInfo as PVOID, byval nLength as DWORD) as WINBOOL
  946 
  947 #ifndef UNICODE
  948     declare function SetUserObjectInformation alias "SetUserObjectInformationA"(byval hObj as HANDLE, byval nIndex as long, byval pvInfo as PVOID, byval nLength as DWORD) as WINBOOL
  949 #endif
  950 
  951 declare function SetUserObjectInformationW(byval hObj as HANDLE, byval nIndex as long, byval pvInfo as PVOID, byval nLength as DWORD) as WINBOOL
  952 
  953 #ifdef UNICODE
  954     declare function SetUserObjectInformation alias "SetUserObjectInformationW"(byval hObj as HANDLE, byval nIndex as long, byval pvInfo as PVOID, byval nLength as DWORD) as WINBOOL
  955 #endif
  956 
  957 type tagWNDCLASSEXA
  958     cbSize as UINT
  959     style as UINT
  960     lpfnWndProc as WNDPROC
  961     cbClsExtra as long
  962     cbWndExtra as long
  963     hInstance as HINSTANCE
  964     hIcon as HICON
  965     hCursor as HCURSOR
  966     hbrBackground as HBRUSH
  967     lpszMenuName as LPCSTR
  968     lpszClassName as LPCSTR
  969     hIconSm as HICON
  970 end type
  971 
  972 type WNDCLASSEXA as tagWNDCLASSEXA
  973 type PWNDCLASSEXA as tagWNDCLASSEXA ptr
  974 type NPWNDCLASSEXA as tagWNDCLASSEXA ptr
  975 type LPWNDCLASSEXA as tagWNDCLASSEXA ptr
  976 
  977 type tagWNDCLASSEXW
  978     cbSize as UINT
  979     style as UINT
  980     lpfnWndProc as WNDPROC
  981     cbClsExtra as long
  982     cbWndExtra as long
  983     hInstance as HINSTANCE
  984     hIcon as HICON
  985     hCursor as HCURSOR
  986     hbrBackground as HBRUSH
  987     lpszMenuName as LPCWSTR
  988     lpszClassName as LPCWSTR
  989     hIconSm as HICON
  990 end type
  991 
  992 type WNDCLASSEXW as tagWNDCLASSEXW
  993 type PWNDCLASSEXW as tagWNDCLASSEXW ptr
  994 type NPWNDCLASSEXW as tagWNDCLASSEXW ptr
  995 type LPWNDCLASSEXW as tagWNDCLASSEXW ptr
  996 
  997 #ifdef UNICODE
  998     type WNDCLASSEX as WNDCLASSEXW
  999     type PWNDCLASSEX as PWNDCLASSEXW
 1000     type NPWNDCLASSEX as NPWNDCLASSEXW
 1001     type LPWNDCLASSEX as LPWNDCLASSEXW
 1002 #else
 1003     type WNDCLASSEX as WNDCLASSEXA
 1004     type PWNDCLASSEX as PWNDCLASSEXA
 1005     type NPWNDCLASSEX as NPWNDCLASSEXA
 1006     type LPWNDCLASSEX as LPWNDCLASSEXA
 1007 #endif
 1008 
 1009 type tagWNDCLASSA
 1010     style as UINT
 1011     lpfnWndProc as WNDPROC
 1012     cbClsExtra as long
 1013     cbWndExtra as long
 1014     hInstance as HINSTANCE
 1015     hIcon as HICON
 1016     hCursor as HCURSOR
 1017     hbrBackground as HBRUSH
 1018     lpszMenuName as LPCSTR
 1019     lpszClassName as LPCSTR
 1020 end type
 1021 
 1022 type WNDCLASSA as tagWNDCLASSA
 1023 type PWNDCLASSA as tagWNDCLASSA ptr
 1024 type NPWNDCLASSA as tagWNDCLASSA ptr
 1025 type LPWNDCLASSA as tagWNDCLASSA ptr
 1026 
 1027 type tagWNDCLASSW
 1028     style as UINT
 1029     lpfnWndProc as WNDPROC
 1030     cbClsExtra as long
 1031     cbWndExtra as long
 1032     hInstance as HINSTANCE
 1033     hIcon as HICON
 1034     hCursor as HCURSOR
 1035     hbrBackground as HBRUSH
 1036     lpszMenuName as LPCWSTR
 1037     lpszClassName as LPCWSTR
 1038 end type
 1039 
 1040 type WNDCLASSW as tagWNDCLASSW
 1041 type PWNDCLASSW as tagWNDCLASSW ptr
 1042 type NPWNDCLASSW as tagWNDCLASSW ptr
 1043 type LPWNDCLASSW as tagWNDCLASSW ptr
 1044 
 1045 #ifdef UNICODE
 1046     type WNDCLASS as WNDCLASSW
 1047     type PWNDCLASS as PWNDCLASSW
 1048     type NPWNDCLASS as NPWNDCLASSW
 1049     type LPWNDCLASS as LPWNDCLASSW
 1050 #else
 1051     type WNDCLASS as WNDCLASSA
 1052     type PWNDCLASS as PWNDCLASSA
 1053     type NPWNDCLASS as NPWNDCLASSA
 1054     type LPWNDCLASS as LPWNDCLASSA
 1055 #endif
 1056 
 1057 declare function IsHungAppWindow(byval hwnd as HWND) as WINBOOL
 1058 declare sub DisableProcessWindowsGhosting()
 1059 
 1060 type tagMSG
 1061     hwnd as HWND
 1062     message as UINT
 1063     wParam as WPARAM
 1064     lParam as LPARAM
 1065     time as DWORD
 1066     pt as POINT
 1067 end type
 1068 
 1069 type MSG as tagMSG
 1070 type PMSG as tagMSG ptr
 1071 type NPMSG as tagMSG ptr
 1072 type LPMSG as tagMSG ptr
 1073 
 1074 #macro POINTSTOPOINT(pt, pts)
 1075     scope
 1076         (pt).x = cast(LONG, cast(SHORT, LOWORD(*cptr(LONG ptr, @pts))))
 1077         (pt).y = cast(LONG, cast(SHORT, HIWORD(*cptr(LONG ptr, @pts))))
 1078     end scope
 1079 #endmacro
 1080 #define POINTTOPOINTS(pt) MAKELONG(cshort((pt).x), cshort((pt).y))
 1081 #define MAKEWPARAM(l, h) cast(WPARAM, cast(DWORD, MAKELONG(l, h)))
 1082 #define MAKELPARAM(l, h) cast(LPARAM, cast(DWORD, MAKELONG(l, h)))
 1083 #define MAKELRESULT(l, h) cast(LRESULT, cast(DWORD, MAKELONG(l, h)))
 1084 const GWL_WNDPROC = -4
 1085 const GWL_HINSTANCE = -6
 1086 const GWL_HWNDPARENT = -8
 1087 const GWL_STYLE = -16
 1088 const GWL_EXSTYLE = -20
 1089 const GWL_USERDATA = -21
 1090 const GWL_ID = -12
 1091 
 1092 #ifdef __FB_64BIT__
 1093     #undef GWL_WNDPROC
 1094     #undef GWL_HINSTANCE
 1095     #undef GWL_HWNDPARENT
 1096     #undef GWL_USERDATA
 1097 #endif
 1098 
 1099 const GWLP_WNDPROC = -4
 1100 const GWLP_HINSTANCE = -6
 1101 const GWLP_HWNDPARENT = -8
 1102 const GWLP_USERDATA = -21
 1103 const GWLP_ID = -12
 1104 const GCL_MENUNAME = -8
 1105 const GCL_HBRBACKGROUND = -10
 1106 const GCL_HCURSOR = -12
 1107 const GCL_HICON = -14
 1108 const GCL_HMODULE = -16
 1109 const GCL_CBWNDEXTRA = -18
 1110 const GCL_CBCLSEXTRA = -20
 1111 const GCL_WNDPROC = -24
 1112 const GCL_STYLE = -26
 1113 const GCW_ATOM = -32
 1114 const GCL_HICONSM = -34
 1115 
 1116 #ifdef __FB_64BIT__
 1117     #undef GCL_MENUNAME
 1118     #undef GCL_HBRBACKGROUND
 1119     #undef GCL_HCURSOR
 1120     #undef GCL_HICON
 1121     #undef GCL_HMODULE
 1122     #undef GCL_WNDPROC
 1123     #undef GCL_HICONSM
 1124 #endif
 1125 
 1126 const GCLP_MENUNAME = -8
 1127 const GCLP_HBRBACKGROUND = -10
 1128 const GCLP_HCURSOR = -12
 1129 const GCLP_HICON = -14
 1130 const GCLP_HMODULE = -16
 1131 const GCLP_WNDPROC = -24
 1132 const GCLP_HICONSM = -34
 1133 const WM_NULL = &h0000
 1134 const WM_CREATE = &h0001
 1135 const WM_DESTROY = &h0002
 1136 const WM_MOVE = &h0003
 1137 const WM_SIZE = &h0005
 1138 const WM_ACTIVATE = &h0006
 1139 const WA_INACTIVE = 0
 1140 const WA_ACTIVE = 1
 1141 const WA_CLICKACTIVE = 2
 1142 const WM_SETFOCUS = &h0007
 1143 const WM_KILLFOCUS = &h0008
 1144 const WM_ENABLE = &h000A
 1145 const WM_SETREDRAW = &h000B
 1146 const WM_SETTEXT = &h000C
 1147 const WM_GETTEXT = &h000D
 1148 const WM_GETTEXTLENGTH = &h000E
 1149 const WM_PAINT = &h000F
 1150 const WM_CLOSE = &h0010
 1151 const WM_QUERYENDSESSION = &h0011
 1152 const WM_QUERYOPEN = &h0013
 1153 const WM_ENDSESSION = &h0016
 1154 const WM_QUIT = &h0012
 1155 const WM_ERASEBKGND = &h0014
 1156 const WM_SYSCOLORCHANGE = &h0015
 1157 const WM_SHOWWINDOW = &h0018
 1158 const WM_WININICHANGE = &h001A
 1159 const WM_SETTINGCHANGE = WM_WININICHANGE
 1160 const WM_DEVMODECHANGE = &h001B
 1161 const WM_ACTIVATEAPP = &h001C
 1162 const WM_FONTCHANGE = &h001D
 1163 const WM_TIMECHANGE = &h001E
 1164 const WM_CANCELMODE = &h001F
 1165 const WM_SETCURSOR = &h0020
 1166 const WM_MOUSEACTIVATE = &h0021
 1167 const WM_CHILDACTIVATE = &h0022
 1168 const WM_QUEUESYNC = &h0023
 1169 const WM_GETMINMAXINFO = &h0024
 1170 
 1171 type tagMINMAXINFO
 1172     ptReserved as POINT
 1173     ptMaxSize as POINT
 1174     ptMaxPosition as POINT
 1175     ptMinTrackSize as POINT
 1176     ptMaxTrackSize as POINT
 1177 end type
 1178 
 1179 type MINMAXINFO as tagMINMAXINFO
 1180 type PMINMAXINFO as tagMINMAXINFO ptr
 1181 type LPMINMAXINFO as tagMINMAXINFO ptr
 1182 
 1183 const WM_PAINTICON = &h0026
 1184 const WM_ICONERASEBKGND = &h0027
 1185 const WM_NEXTDLGCTL = &h0028
 1186 const WM_SPOOLERSTATUS = &h002A
 1187 const WM_DRAWITEM = &h002B
 1188 const WM_MEASUREITEM = &h002C
 1189 const WM_DELETEITEM = &h002D
 1190 const WM_VKEYTOITEM = &h002E
 1191 const WM_CHARTOITEM = &h002F
 1192 const WM_SETFONT = &h0030
 1193 const WM_GETFONT = &h0031
 1194 const WM_SETHOTKEY = &h0032
 1195 const WM_GETHOTKEY = &h0033
 1196 const WM_QUERYDRAGICON = &h0037
 1197 const WM_COMPAREITEM = &h0039
 1198 const WM_GETOBJECT = &h003D
 1199 const WM_COMPACTING = &h0041
 1200 const WM_COMMNOTIFY = &h0044
 1201 const WM_WINDOWPOSCHANGING = &h0046
 1202 const WM_WINDOWPOSCHANGED = &h0047
 1203 const WM_POWER = &h0048
 1204 const PWR_OK = 1
 1205 const PWR_FAIL = -1
 1206 const PWR_SUSPENDREQUEST = 1
 1207 const PWR_SUSPENDRESUME = 2
 1208 const PWR_CRITICALRESUME = 3
 1209 const WM_COPYDATA = &h004A
 1210 const WM_CANCELJOURNAL = &h004B
 1211 
 1212 type tagCOPYDATASTRUCT
 1213     dwData as ULONG_PTR
 1214     cbData as DWORD
 1215     lpData as PVOID
 1216 end type
 1217 
 1218 type COPYDATASTRUCT as tagCOPYDATASTRUCT
 1219 type PCOPYDATASTRUCT as tagCOPYDATASTRUCT ptr
 1220 
 1221 type tagMDINEXTMENU
 1222     hmenuIn as HMENU
 1223     hmenuNext as HMENU
 1224     hwndNext as HWND
 1225 end type
 1226 
 1227 type MDINEXTMENU as tagMDINEXTMENU
 1228 type PMDINEXTMENU as tagMDINEXTMENU ptr
 1229 type LPMDINEXTMENU as tagMDINEXTMENU ptr
 1230 
 1231 const WM_NOTIFY = &h004E
 1232 const WM_INPUTLANGCHANGEREQUEST = &h0050
 1233 const WM_INPUTLANGCHANGE = &h0051
 1234 const WM_TCARD = &h0052
 1235 const WM_HELP = &h0053
 1236 const WM_USERCHANGED = &h0054
 1237 const WM_NOTIFYFORMAT = &h0055
 1238 const NFR_ANSI = 1
 1239 const NFR_UNICODE = 2
 1240 const NF_QUERY = 3
 1241 const NF_REQUERY = 4
 1242 const WM_CONTEXTMENU = &h007B
 1243 const WM_STYLECHANGING = &h007C
 1244 const WM_STYLECHANGED = &h007D
 1245 const WM_DISPLAYCHANGE = &h007E
 1246 const WM_GETICON = &h007F
 1247 const WM_SETICON = &h0080
 1248 const WM_NCCREATE = &h0081
 1249 const WM_NCDESTROY = &h0082
 1250 const WM_NCCALCSIZE = &h0083
 1251 const WM_NCHITTEST = &h0084
 1252 const WM_NCPAINT = &h0085
 1253 const WM_NCACTIVATE = &h0086
 1254 const WM_GETDLGCODE = &h0087
 1255 const WM_SYNCPAINT = &h0088
 1256 const WM_NCMOUSEMOVE = &h00A0
 1257 const WM_NCLBUTTONDOWN = &h00A1
 1258 const WM_NCLBUTTONUP = &h00A2
 1259 const WM_NCLBUTTONDBLCLK = &h00A3
 1260 const WM_NCRBUTTONDOWN = &h00A4
 1261 const WM_NCRBUTTONUP = &h00A5
 1262 const WM_NCRBUTTONDBLCLK = &h00A6
 1263 const WM_NCMBUTTONDOWN = &h00A7
 1264 const WM_NCMBUTTONUP = &h00A8
 1265 const WM_NCMBUTTONDBLCLK = &h00A9
 1266 const WM_NCXBUTTONDOWN = &h00AB
 1267 const WM_NCXBUTTONUP = &h00AC
 1268 const WM_NCXBUTTONDBLCLK = &h00AD
 1269 const WM_INPUT_DEVICE_CHANGE = &h00fe
 1270 const WM_INPUT = &h00FF
 1271 const WM_KEYFIRST = &h0100
 1272 const WM_KEYDOWN = &h0100
 1273 const WM_KEYUP = &h0101
 1274 const WM_CHAR = &h0102
 1275 const WM_DEADCHAR = &h0103
 1276 const WM_SYSKEYDOWN = &h0104
 1277 const WM_SYSKEYUP = &h0105
 1278 const WM_SYSCHAR = &h0106
 1279 const WM_SYSDEADCHAR = &h0107
 1280 const WM_UNICHAR = &h0109
 1281 const WM_KEYLAST = &h0109
 1282 const UNICODE_NOCHAR = &hFFFF
 1283 const WM_IME_STARTCOMPOSITION = &h010D
 1284 const WM_IME_ENDCOMPOSITION = &h010E
 1285 const WM_IME_COMPOSITION = &h010F
 1286 const WM_IME_KEYLAST = &h010F
 1287 const WM_INITDIALOG = &h0110
 1288 const WM_COMMAND = &h0111
 1289 const WM_SYSCOMMAND = &h0112
 1290 const WM_TIMER = &h0113
 1291 const WM_HSCROLL = &h0114
 1292 const WM_VSCROLL = &h0115
 1293 const WM_INITMENU = &h0116
 1294 const WM_INITMENUPOPUP = &h0117
 1295 const WM_MENUSELECT = &h011F
 1296 
 1297 #if _WIN32_WINNT >= &h0601
 1298     const WM_GESTURE = &h0119
 1299     const WM_GESTURENOTIFY = &h011A
 1300 #endif
 1301 
 1302 const WM_MENUCHAR = &h0120
 1303 const WM_ENTERIDLE = &h0121
 1304 const WM_MENURBUTTONUP = &h0122
 1305 const WM_MENUDRAG = &h0123
 1306 const WM_MENUGETOBJECT = &h0124
 1307 const WM_UNINITMENUPOPUP = &h0125
 1308 const WM_MENUCOMMAND = &h0126
 1309 const WM_CHANGEUISTATE = &h0127
 1310 const WM_UPDATEUISTATE = &h0128
 1311 const WM_QUERYUISTATE = &h0129
 1312 const UIS_SET = 1
 1313 const UIS_CLEAR = 2
 1314 const UIS_INITIALIZE = 3
 1315 const UISF_HIDEFOCUS = &h1
 1316 const UISF_HIDEACCEL = &h2
 1317 const UISF_ACTIVE = &h4
 1318 const WM_CTLCOLORMSGBOX = &h0132
 1319 const WM_CTLCOLOREDIT = &h0133
 1320 const WM_CTLCOLORLISTBOX = &h0134
 1321 const WM_CTLCOLORBTN = &h0135
 1322 const WM_CTLCOLORDLG = &h0136
 1323 const WM_CTLCOLORSCROLLBAR = &h0137
 1324 const WM_CTLCOLORSTATIC = &h0138
 1325 const MN_GETHMENU = &h01E1
 1326 const WM_MOUSEFIRST = &h0200
 1327 const WM_MOUSEMOVE = &h0200
 1328 const WM_LBUTTONDOWN = &h0201
 1329 const WM_LBUTTONUP = &h0202
 1330 const WM_LBUTTONDBLCLK = &h0203
 1331 const WM_RBUTTONDOWN = &h0204
 1332 const WM_RBUTTONUP = &h0205
 1333 const WM_RBUTTONDBLCLK = &h0206
 1334 const WM_MBUTTONDOWN = &h0207
 1335 const WM_MBUTTONUP = &h0208
 1336 const WM_MBUTTONDBLCLK = &h0209
 1337 const WM_MOUSEWHEEL = &h020A
 1338 const WM_XBUTTONDOWN = &h020B
 1339 const WM_XBUTTONUP = &h020C
 1340 const WM_XBUTTONDBLCLK = &h020D
 1341 
 1342 #if _WIN32_WINNT <= &h0502
 1343     const WM_MOUSELAST = &h020d
 1344 #else
 1345     const WM_MOUSEHWHEEL = &h020e
 1346     const WM_MOUSELAST = &h020e
 1347 #endif
 1348 
 1349 const WHEEL_DELTA = 120
 1350 #define GET_WHEEL_DELTA_WPARAM(wParam) cshort(HIWORD(wParam))
 1351 #define GET_KEYSTATE_WPARAM(wParam) LOWORD(wParam)
 1352 #define GET_NCHITTEST_WPARAM(wParam) cshort(LOWORD(wParam))
 1353 #define GET_XBUTTON_WPARAM(wParam) HIWORD(wParam)
 1354 const XBUTTON1 = &h0001
 1355 const XBUTTON2 = &h0002
 1356 const WM_PARENTNOTIFY = &h0210
 1357 const WM_ENTERMENULOOP = &h0211
 1358 const WM_EXITMENULOOP = &h0212
 1359 const WM_NEXTMENU = &h0213
 1360 const WM_SIZING = &h0214
 1361 const WM_CAPTURECHANGED = &h0215
 1362 const WM_MOVING = &h0216
 1363 const WM_POWERBROADCAST = &h0218
 1364 const PBT_APMQUERYSUSPEND = &h0000
 1365 const PBT_APMQUERYSTANDBY = &h0001
 1366 const PBT_APMQUERYSUSPENDFAILED = &h0002
 1367 const PBT_APMQUERYSTANDBYFAILED = &h0003
 1368 const PBT_APMSUSPEND = &h0004
 1369 const PBT_APMSTANDBY = &h0005
 1370 const PBT_APMRESUMECRITICAL = &h0006
 1371 const PBT_APMRESUMESUSPEND = &h0007
 1372 const PBT_APMRESUMESTANDBY = &h0008
 1373 const PBTF_APMRESUMEFROMFAILURE = &h00000001
 1374 const PBT_APMBATTERYLOW = &h0009
 1375 const PBT_APMPOWERSTATUSCHANGE = &h000A
 1376 const PBT_APMOEMEVENT = &h000B
 1377 const PBT_APMRESUMEAUTOMATIC = &h0012
 1378 
 1379 #if _WIN32_WINNT >= &h0502
 1380     const PBT_POWERSETTINGCHANGE = 32787
 1381 
 1382     type POWERBROADCAST_SETTING
 1383         PowerSetting as GUID
 1384         DataLength as DWORD
 1385         Data(0 to 0) as UCHAR
 1386     end type
 1387 
 1388     type PPOWERBROADCAST_SETTING as POWERBROADCAST_SETTING ptr
 1389 #endif
 1390 
 1391 const WM_DEVICECHANGE = &h0219
 1392 const WM_MDICREATE = &h0220
 1393 const WM_MDIDESTROY = &h0221
 1394 const WM_MDIACTIVATE = &h0222
 1395 const WM_MDIRESTORE = &h0223
 1396 const WM_MDINEXT = &h0224
 1397 const WM_MDIMAXIMIZE = &h0225
 1398 const WM_MDITILE = &h0226
 1399 const WM_MDICASCADE = &h0227
 1400 const WM_MDIICONARRANGE = &h0228
 1401 const WM_MDIGETACTIVE = &h0229
 1402 const WM_MDISETMENU = &h0230
 1403 const WM_ENTERSIZEMOVE = &h0231
 1404 const WM_EXITSIZEMOVE = &h0232
 1405 const WM_DROPFILES = &h0233
 1406 const WM_MDIREFRESHMENU = &h0234
 1407 
 1408 #if _WIN32_WINNT = &h0602
 1409     const WM_POINTERDEVICECHANGE = &h238
 1410     const WM_POINTERDEVICEINRANGE = &h239
 1411     const WM_POINTERDEVICEOUTOFRANGE = &h23a
 1412 #endif
 1413 
 1414 #if _WIN32_WINNT >= &h0601
 1415     const WM_TOUCH = &h0240
 1416 #endif
 1417 
 1418 #if _WIN32_WINNT = &h0602
 1419     const WM_NCPOINTERUPDATE = &h0241
 1420     const WM_NCPOINTERDOWN = &h0242
 1421     const WM_NCPOINTERUP = &h0243
 1422     const WM_POINTERUPDATE = &h0245
 1423     const WM_POINTERDOWN = &h0246
 1424     const WM_POINTERUP = &h0247
 1425     const WM_POINTERENTER = &h0249
 1426     const WM_POINTERLEAVE = &h024a
 1427     const WM_POINTERACTIVATE = &h024b
 1428     const WM_POINTERCAPTURECHANGED = &h024c
 1429     const WM_TOUCHHITTESTING = &h024d
 1430     const WM_POINTERWHEEL = &h024e
 1431     const WM_POINTERHWHEEL = &h024f
 1432 #endif
 1433 
 1434 const WM_IME_SETCONTEXT = &h0281
 1435 const WM_IME_NOTIFY = &h0282
 1436 const WM_IME_CONTROL = &h0283
 1437 const WM_IME_COMPOSITIONFULL = &h0284
 1438 const WM_IME_SELECT = &h0285
 1439 const WM_IME_CHAR = &h0286
 1440 const WM_IME_REQUEST = &h0288
 1441 const WM_IME_KEYDOWN = &h0290
 1442 const WM_IME_KEYUP = &h0291
 1443 const WM_MOUSEHOVER = &h02A1
 1444 const WM_MOUSELEAVE = &h02A3
 1445 const WM_NCMOUSEHOVER = &h02A0
 1446 const WM_NCMOUSELEAVE = &h02A2
 1447 const WM_WTSSESSION_CHANGE = &h02B1
 1448 const WM_TABLET_FIRST = &h02c0
 1449 const WM_TABLET_LAST = &h02df
 1450 const WM_CUT = &h0300
 1451 const WM_COPY = &h0301
 1452 const WM_PASTE = &h0302
 1453 const WM_CLEAR = &h0303
 1454 const WM_UNDO = &h0304
 1455 const WM_RENDERFORMAT = &h0305
 1456 const WM_RENDERALLFORMATS = &h0306
 1457 const WM_DESTROYCLIPBOARD = &h0307
 1458 const WM_DRAWCLIPBOARD = &h0308
 1459 const WM_PAINTCLIPBOARD = &h0309
 1460 const WM_VSCROLLCLIPBOARD = &h030A
 1461 const WM_SIZECLIPBOARD = &h030B
 1462 const WM_ASKCBFORMATNAME = &h030C
 1463 const WM_CHANGECBCHAIN = &h030D
 1464 const WM_HSCROLLCLIPBOARD = &h030E
 1465 const WM_QUERYNEWPALETTE = &h030F
 1466 const WM_PALETTEISCHANGING = &h0310
 1467 const WM_PALETTECHANGED = &h0311
 1468 const WM_HOTKEY = &h0312
 1469 const WM_PRINT = &h0317
 1470 const WM_PRINTCLIENT = &h0318
 1471 const WM_APPCOMMAND = &h0319
 1472 const WM_THEMECHANGED = &h031A
 1473 const WM_CLIPBOARDUPDATE = &h031d
 1474 
 1475 #if _WIN32_WINNT >= &h0600
 1476     const WM_DWMCOMPOSITIONCHANGED = &h031e
 1477     const WM_DWMNCRENDERINGCHANGED = &h031f
 1478     const WM_DWMCOLORIZATIONCOLORCHANGED = &h0320
 1479     const WM_DWMWINDOWMAXIMIZEDCHANGE = &h0321
 1480 #endif
 1481 
 1482 #if _WIN32_WINNT >= &h0601
 1483     const WM_DWMSENDICONICTHUMBNAIL = &h0323
 1484     const WM_DWMSENDICONICLIVEPREVIEWBITMAP = &h0326
 1485 #endif
 1486 
 1487 #if _WIN32_WINNT >= &h0600
 1488     const WM_GETTITLEBARINFOEX = &h033f
 1489 #endif
 1490 
 1491 const WM_HANDHELDFIRST = &h0358
 1492 const WM_HANDHELDLAST = &h035F
 1493 const WM_AFXFIRST = &h0360
 1494 const WM_AFXLAST = &h037F
 1495 const WM_PENWINFIRST = &h0380
 1496 const WM_PENWINLAST = &h038F
 1497 const WM_APP = &h8000
 1498 const WM_USER = &h0400
 1499 const WMSZ_LEFT = 1
 1500 const WMSZ_RIGHT = 2
 1501 const WMSZ_TOP = 3
 1502 const WMSZ_TOPLEFT = 4
 1503 const WMSZ_TOPRIGHT = 5
 1504 const WMSZ_BOTTOM = 6
 1505 const WMSZ_BOTTOMLEFT = 7
 1506 const WMSZ_BOTTOMRIGHT = 8
 1507 const HTERROR = -2
 1508 const HTTRANSPARENT = -1
 1509 const HTNOWHERE = 0
 1510 const HTCLIENT = 1
 1511 const HTCAPTION = 2
 1512 const HTSYSMENU = 3
 1513 const HTGROWBOX = 4
 1514 const HTSIZE = HTGROWBOX
 1515 const HTMENU = 5
 1516 const HTHSCROLL = 6
 1517 const HTVSCROLL = 7
 1518 const HTMINBUTTON = 8
 1519 const HTMAXBUTTON = 9
 1520 const HTLEFT = 10
 1521 const HTRIGHT = 11
 1522 const HTTOP = 12
 1523 const HTTOPLEFT = 13
 1524 const HTTOPRIGHT = 14
 1525 const HTBOTTOM = 15
 1526 const HTBOTTOMLEFT = 16
 1527 const HTBOTTOMRIGHT = 17
 1528 const HTBORDER = 18
 1529 const HTREDUCE = HTMINBUTTON
 1530 const HTZOOM = HTMAXBUTTON
 1531 const HTSIZEFIRST = HTLEFT
 1532 const HTSIZELAST = HTBOTTOMRIGHT
 1533 const HTOBJECT = 19
 1534 const HTCLOSE = 20
 1535 const HTHELP = 21
 1536 const SMTO_NORMAL = &h0000
 1537 const SMTO_BLOCK = &h0001
 1538 const SMTO_ABORTIFHUNG = &h0002
 1539 const SMTO_NOTIMEOUTIFNOTHUNG = &h0008
 1540 
 1541 #if _WIN32_WINNT >= &h0600
 1542     const SMTO_ERRORONEXIT = &h0020
 1543 #endif
 1544 
 1545 const MA_ACTIVATE = 1
 1546 const MA_ACTIVATEANDEAT = 2
 1547 const MA_NOACTIVATE = 3
 1548 const MA_NOACTIVATEANDEAT = 4
 1549 const ICON_SMALL = 0
 1550 const ICON_BIG = 1
 1551 const ICON_SMALL2 = 2
 1552 declare function RegisterWindowMessageA(byval lpString as LPCSTR) as UINT
 1553 
 1554 #ifndef UNICODE
 1555     declare function RegisterWindowMessage alias "RegisterWindowMessageA"(byval lpString as LPCSTR) as UINT
 1556 #endif
 1557 
 1558 declare function RegisterWindowMessageW(byval lpString as LPCWSTR) as UINT
 1559 
 1560 #ifdef UNICODE
 1561     declare function RegisterWindowMessage alias "RegisterWindowMessageW"(byval lpString as LPCWSTR) as UINT
 1562 #endif
 1563 
 1564 const SIZE_RESTORED = 0
 1565 const SIZE_MINIMIZED = 1
 1566 const SIZE_MAXIMIZED = 2
 1567 const SIZE_MAXSHOW = 3
 1568 const SIZE_MAXHIDE = 4
 1569 const SIZENORMAL = SIZE_RESTORED
 1570 const SIZEICONIC = SIZE_MINIMIZED
 1571 const SIZEFULLSCREEN = SIZE_MAXIMIZED
 1572 const SIZEZOOMSHOW = SIZE_MAXSHOW
 1573 const SIZEZOOMHIDE = SIZE_MAXHIDE
 1574 
 1575 type tagWINDOWPOS
 1576     hwnd as HWND
 1577     hwndInsertAfter as HWND
 1578     x as long
 1579     y as long
 1580     cx as long
 1581     cy as long
 1582     flags as UINT
 1583 end type
 1584 
 1585 type WINDOWPOS as tagWINDOWPOS
 1586 type LPWINDOWPOS as tagWINDOWPOS ptr
 1587 type PWINDOWPOS as tagWINDOWPOS ptr
 1588 
 1589 type tagNCCALCSIZE_PARAMS
 1590     rgrc(0 to 2) as RECT
 1591     lppos as PWINDOWPOS
 1592 end type
 1593 
 1594 type NCCALCSIZE_PARAMS as tagNCCALCSIZE_PARAMS
 1595 type LPNCCALCSIZE_PARAMS as tagNCCALCSIZE_PARAMS ptr
 1596 const WVR_ALIGNTOP = &h0010
 1597 const WVR_ALIGNLEFT = &h0020
 1598 const WVR_ALIGNBOTTOM = &h0040
 1599 const WVR_ALIGNRIGHT = &h0080
 1600 const WVR_HREDRAW = &h0100
 1601 const WVR_VREDRAW = &h0200
 1602 const WVR_REDRAW = WVR_HREDRAW or WVR_VREDRAW
 1603 const WVR_VALIDRECTS = &h0400
 1604 const MK_LBUTTON = &h0001
 1605 const MK_RBUTTON = &h0002
 1606 const MK_SHIFT = &h0004
 1607 const MK_CONTROL = &h0008
 1608 const MK_MBUTTON = &h0010
 1609 const MK_XBUTTON1 = &h0020
 1610 const MK_XBUTTON2 = &h0040
 1611 const TME_HOVER = &h00000001
 1612 const TME_LEAVE = &h00000002
 1613 const TME_NONCLIENT = &h00000010
 1614 const TME_QUERY = &h40000000
 1615 const TME_CANCEL = &h80000000
 1616 const HOVER_DEFAULT = &hFFFFFFFF
 1617 
 1618 type tagTRACKMOUSEEVENT
 1619     cbSize as DWORD
 1620     dwFlags as DWORD
 1621     hwndTrack as HWND
 1622     dwHoverTime as DWORD
 1623 end type
 1624 
 1625 type TRACKMOUSEEVENT as tagTRACKMOUSEEVENT
 1626 type LPTRACKMOUSEEVENT as tagTRACKMOUSEEVENT ptr
 1627 declare function TrackMouseEvent(byval lpEventTrack as LPTRACKMOUSEEVENT) as WINBOOL
 1628 const WS_OVERLAPPED = &h00000000
 1629 const WS_POPUP = &h80000000
 1630 const WS_CHILD = &h40000000
 1631 const WS_MINIMIZE = &h20000000
 1632 const WS_VISIBLE = &h10000000
 1633 const WS_DISABLED = &h08000000
 1634 const WS_CLIPSIBLINGS = &h04000000
 1635 const WS_CLIPCHILDREN = &h02000000
 1636 const WS_MAXIMIZE = &h01000000
 1637 const WS_CAPTION = &h00C00000
 1638 const WS_BORDER = &h00800000
 1639 const WS_DLGFRAME = &h00400000
 1640 const WS_VSCROLL = &h00200000
 1641 const WS_HSCROLL = &h00100000
 1642 const WS_SYSMENU = &h00080000
 1643 const WS_THICKFRAME = &h00040000
 1644 const WS_GROUP = &h00020000
 1645 const WS_TABSTOP = &h00010000
 1646 const WS_MINIMIZEBOX = &h00020000
 1647 const WS_MAXIMIZEBOX = &h00010000
 1648 const WS_TILED = WS_OVERLAPPED
 1649 const WS_ICONIC = WS_MINIMIZE
 1650 const WS_SIZEBOX = WS_THICKFRAME
 1651 const WS_OVERLAPPEDWINDOW = ((((WS_OVERLAPPED or WS_CAPTION) or WS_SYSMENU) or WS_THICKFRAME) or WS_MINIMIZEBOX) or WS_MAXIMIZEBOX
 1652 const WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW
 1653 const WS_POPUPWINDOW = (WS_POPUP or WS_BORDER) or WS_SYSMENU
 1654 const WS_CHILDWINDOW = WS_CHILD
 1655 const WS_EX_DLGMODALFRAME = &h00000001
 1656 const WS_EX_NOPARENTNOTIFY = &h00000004
 1657 const WS_EX_TOPMOST = &h00000008
 1658 const WS_EX_ACCEPTFILES = &h00000010
 1659 const WS_EX_TRANSPARENT = &h00000020
 1660 const WS_EX_MDICHILD = &h00000040
 1661 const WS_EX_TOOLWINDOW = &h00000080
 1662 const WS_EX_WINDOWEDGE = &h00000100
 1663 const WS_EX_CLIENTEDGE = &h00000200
 1664 const WS_EX_CONTEXTHELP = &h00000400
 1665 const WS_EX_RIGHT = &h00001000
 1666 const WS_EX_LEFT = &h00000000
 1667 const WS_EX_RTLREADING = &h00002000
 1668 const WS_EX_LTRREADING = &h00000000
 1669 const WS_EX_LEFTSCROLLBAR = &h00004000
 1670 const WS_EX_RIGHTSCROLLBAR = &h00000000
 1671 const WS_EX_CONTROLPARENT = &h00010000
 1672 const WS_EX_STATICEDGE = &h00020000
 1673 const WS_EX_APPWINDOW = &h00040000
 1674 const WS_EX_OVERLAPPEDWINDOW = WS_EX_WINDOWEDGE or WS_EX_CLIENTEDGE
 1675 const WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE or WS_EX_TOOLWINDOW) or WS_EX_TOPMOST
 1676 const WS_EX_LAYERED = &h00080000
 1677 const WS_EX_NOINHERITLAYOUT = &h00100000
 1678 
 1679 #if _WIN32_WINNT = &h0602
 1680     const WS_EX_NOREDIRECTIONBITMAP = &h00200000
 1681 #endif
 1682 
 1683 const WS_EX_LAYOUTRTL = &h00400000
 1684 const WS_EX_COMPOSITED = &h02000000
 1685 const WS_EX_NOACTIVATE = &h08000000
 1686 const CS_VREDRAW = &h0001
 1687 const CS_HREDRAW = &h0002
 1688 const CS_DBLCLKS = &h0008
 1689 const CS_OWNDC = &h0020
 1690 const CS_CLASSDC = &h0040
 1691 const CS_PARENTDC = &h0080
 1692 const CS_NOCLOSE = &h0200
 1693 const CS_SAVEBITS = &h0800
 1694 const CS_BYTEALIGNCLIENT = &h1000
 1695 const CS_BYTEALIGNWINDOW = &h2000
 1696 const CS_GLOBALCLASS = &h4000
 1697 const CS_IME = &h00010000
 1698 const CS_DROPSHADOW = &h00020000
 1699 const PRF_CHECKVISIBLE = &h00000001
 1700 const PRF_NONCLIENT = &h00000002
 1701 const PRF_CLIENT = &h00000004
 1702 const PRF_ERASEBKGND = &h00000008
 1703 const PRF_CHILDREN = &h00000010
 1704 const PRF_OWNED = &h00000020
 1705 const BDR_RAISEDOUTER = &h0001
 1706 const BDR_SUNKENOUTER = &h0002
 1707 const BDR_RAISEDINNER = &h0004
 1708 const BDR_SUNKENINNER = &h0008
 1709 const BDR_OUTER = BDR_RAISEDOUTER or BDR_SUNKENOUTER
 1710 const BDR_INNER = BDR_RAISEDINNER or BDR_SUNKENINNER
 1711 const BDR_RAISED = BDR_RAISEDOUTER or BDR_RAISEDINNER
 1712 const BDR_SUNKEN = BDR_SUNKENOUTER or BDR_SUNKENINNER
 1713 const EDGE_RAISED = BDR_RAISEDOUTER or BDR_RAISEDINNER
 1714 const EDGE_SUNKEN = BDR_SUNKENOUTER or BDR_SUNKENINNER
 1715 const EDGE_ETCHED = BDR_SUNKENOUTER or BDR_RAISEDINNER
 1716 const EDGE_BUMP = BDR_RAISEDOUTER or BDR_SUNKENINNER
 1717 const BF_LEFT = &h0001
 1718 const BF_TOP = &h0002
 1719 const BF_RIGHT = &h0004
 1720 const BF_BOTTOM = &h0008
 1721 const BF_TOPLEFT = BF_TOP or BF_LEFT
 1722 const BF_TOPRIGHT = BF_TOP or BF_RIGHT
 1723 const BF_BOTTOMLEFT = BF_BOTTOM or BF_LEFT
 1724 const BF_BOTTOMRIGHT = BF_BOTTOM or BF_RIGHT
 1725 const BF_RECT = ((BF_LEFT or BF_TOP) or BF_RIGHT) or BF_BOTTOM
 1726 const BF_DIAGONAL = &h0010
 1727 const BF_DIAGONAL_ENDTOPRIGHT = (BF_DIAGONAL or BF_TOP) or BF_RIGHT
 1728 const BF_DIAGONAL_ENDTOPLEFT = (BF_DIAGONAL or BF_TOP) or BF_LEFT
 1729 const BF_DIAGONAL_ENDBOTTOMLEFT = (BF_DIAGONAL or BF_BOTTOM) or BF_LEFT
 1730 const BF_DIAGONAL_ENDBOTTOMRIGHT = (BF_DIAGONAL or BF_BOTTOM) or BF_RIGHT
 1731 const BF_MIDDLE = &h0800
 1732 const BF_SOFT = &h1000
 1733 const BF_ADJUST = &h2000
 1734 const BF_FLAT = &h4000
 1735 const BF_MONO = &h8000
 1736 declare function DrawEdge(byval hdc as HDC, byval qrc as LPRECT, byval edge as UINT, byval grfFlags as UINT) as WINBOOL
 1737 const DFC_CAPTION = 1
 1738 const DFC_MENU = 2
 1739 const DFC_SCROLL = 3
 1740 const DFC_BUTTON = 4
 1741 const DFC_POPUPMENU = 5
 1742 const DFCS_CAPTIONCLOSE = &h0000
 1743 const DFCS_CAPTIONMIN = &h0001
 1744 const DFCS_CAPTIONMAX = &h0002
 1745 const DFCS_CAPTIONRESTORE = &h0003
 1746 const DFCS_CAPTIONHELP = &h0004
 1747 const DFCS_MENUARROW = &h0000
 1748 const DFCS_MENUCHECK = &h0001
 1749 const DFCS_MENUBULLET = &h0002
 1750 const DFCS_MENUARROWRIGHT = &h0004
 1751 const DFCS_SCROLLUP = &h0000
 1752 const DFCS_SCROLLDOWN = &h0001
 1753 const DFCS_SCROLLLEFT = &h0002
 1754 const DFCS_SCROLLRIGHT = &h0003
 1755 const DFCS_SCROLLCOMBOBOX = &h0005
 1756 const DFCS_SCROLLSIZEGRIP = &h0008
 1757 const DFCS_SCROLLSIZEGRIPRIGHT = &h0010
 1758 const DFCS_BUTTONCHECK = &h0000
 1759 const DFCS_BUTTONRADIOIMAGE = &h0001
 1760 const DFCS_BUTTONRADIOMASK = &h0002
 1761 const DFCS_BUTTONRADIO = &h0004
 1762 const DFCS_BUTTON3STATE = &h0008
 1763 const DFCS_BUTTONPUSH = &h0010
 1764 const DFCS_INACTIVE = &h0100
 1765 const DFCS_PUSHED = &h0200
 1766 const DFCS_CHECKED = &h0400
 1767 const DFCS_TRANSPARENT = &h0800
 1768 const DFCS_HOT = &h1000
 1769 const DFCS_ADJUSTRECT = &h2000
 1770 const DFCS_FLAT = &h4000
 1771 const DFCS_MONO = &h8000
 1772 declare function DrawFrameControl(byval as HDC, byval as LPRECT, byval as UINT, byval as UINT) as WINBOOL
 1773 const DC_ACTIVE = &h0001
 1774 const DC_SMALLCAP = &h0002
 1775 const DC_ICON = &h0004
 1776 const DC_TEXT = &h0008
 1777 const DC_INBUTTON = &h0010
 1778 const DC_GRADIENT = &h0020
 1779 const DC_BUTTONS = &h1000
 1780 declare function DrawCaption(byval hwnd as HWND, byval hdc as HDC, byval lprect as const RECT ptr, byval flags as UINT) as WINBOOL
 1781 const IDANI_OPEN = 1
 1782 const IDANI_CAPTION = 3
 1783 declare function DrawAnimatedRects(byval hwnd as HWND, byval idAni as long, byval lprcFrom as const RECT ptr, byval lprcTo as const RECT ptr) as WINBOOL
 1784 const CF_TEXT = 1
 1785 const CF_BITMAP = 2
 1786 const CF_METAFILEPICT = 3
 1787 const CF_SYLK = 4
 1788 const CF_DIF = 5
 1789 const CF_TIFF = 6
 1790 const CF_OEMTEXT = 7
 1791 const CF_DIB = 8
 1792 const CF_PALETTE = 9
 1793 const CF_PENDATA = 10
 1794 const CF_RIFF = 11
 1795 const CF_WAVE = 12
 1796 const CF_UNICODETEXT = 13
 1797 const CF_ENHMETAFILE = 14
 1798 const CF_HDROP = 15
 1799 const CF_LOCALE = 16
 1800 const CF_DIBV5 = 17
 1801 const CF_MAX = 18
 1802 const CF_OWNERDISPLAY = &h0080
 1803 const CF_DSPTEXT = &h0081
 1804 const CF_DSPBITMAP = &h0082
 1805 const CF_DSPMETAFILEPICT = &h0083
 1806 const CF_DSPENHMETAFILE = &h008E
 1807 const CF_PRIVATEFIRST = &h0200
 1808 const CF_PRIVATELAST = &h02FF
 1809 const CF_GDIOBJFIRST = &h0300
 1810 const CF_GDIOBJLAST = &h03FF
 1811 const FVIRTKEY = CTRUE
 1812 const FNOINVERT = &h02
 1813 const FSHIFT = &h04
 1814 const FCONTROL = &h08
 1815 const FALT = &h10
 1816 
 1817 type tagACCEL
 1818     fVirt as UBYTE
 1819     key as WORD
 1820     cmd as WORD
 1821 end type
 1822 
 1823 type ACCEL as tagACCEL
 1824 type LPACCEL as tagACCEL ptr
 1825 
 1826 type tagPAINTSTRUCT
 1827     hdc as HDC
 1828     fErase as WINBOOL
 1829     rcPaint as RECT
 1830     fRestore as WINBOOL
 1831     fIncUpdate as WINBOOL
 1832     rgbReserved(0 to 31) as UBYTE
 1833 end type
 1834 
 1835 type PAINTSTRUCT as tagPAINTSTRUCT
 1836 type PPAINTSTRUCT as tagPAINTSTRUCT ptr
 1837 type NPPAINTSTRUCT as tagPAINTSTRUCT ptr
 1838 type LPPAINTSTRUCT as tagPAINTSTRUCT ptr
 1839 
 1840 type tagCREATESTRUCTA_
 1841     lpCreateParams as LPVOID
 1842     hInstance as HINSTANCE
 1843     hMenu as HMENU
 1844     hwndParent as HWND
 1845     cy as long
 1846     cx as long
 1847     y as long
 1848     x as long
 1849     style as LONG
 1850     lpszName as LPCSTR
 1851     lpszClass as LPCSTR
 1852     dwExStyle as DWORD
 1853 end type
 1854 
 1855 type CREATESTRUCTA as tagCREATESTRUCTA
 1856 type LPCREATESTRUCTA as tagCREATESTRUCTA ptr
 1857 
 1858 type tagCREATESTRUCTW_
 1859     lpCreateParams as LPVOID
 1860     hInstance as HINSTANCE
 1861     hMenu as HMENU
 1862     hwndParent as HWND
 1863     cy as long
 1864     cx as long
 1865     y as long
 1866     x as long
 1867     style as LONG
 1868     lpszName as LPCWSTR
 1869     lpszClass as LPCWSTR
 1870     dwExStyle as DWORD
 1871 end type
 1872 
 1873 type CREATESTRUCTW as tagCREATESTRUCTW
 1874 type LPCREATESTRUCTW as tagCREATESTRUCTW ptr
 1875 
 1876 #ifdef UNICODE
 1877     type CREATESTRUCT as CREATESTRUCTW
 1878     type LPCREATESTRUCT as LPCREATESTRUCTW
 1879 #else
 1880     type CREATESTRUCT as CREATESTRUCTA
 1881     type LPCREATESTRUCT as LPCREATESTRUCTA
 1882 #endif
 1883 
 1884 type tagWINDOWPLACEMENT
 1885     length as UINT
 1886     flags as UINT
 1887     showCmd as UINT
 1888     ptMinPosition as POINT
 1889     ptMaxPosition as POINT
 1890     rcNormalPosition as RECT
 1891 end type
 1892 
 1893 type WINDOWPLACEMENT as tagWINDOWPLACEMENT
 1894 type PWINDOWPLACEMENT as WINDOWPLACEMENT ptr
 1895 type LPWINDOWPLACEMENT as WINDOWPLACEMENT ptr
 1896 
 1897 const WPF_SETMINPOSITION = &h0001
 1898 const WPF_RESTORETOMAXIMIZED = &h0002
 1899 const WPF_ASYNCWINDOWPLACEMENT = &h0004
 1900 
 1901 type tagNMHDR
 1902     hwndFrom as HWND
 1903     idFrom as UINT_PTR
 1904     code as UINT
 1905 end type
 1906 
 1907 type NMHDR as tagNMHDR
 1908 type LPNMHDR as NMHDR ptr
 1909 
 1910 type tagSTYLESTRUCT
 1911     styleOld as DWORD
 1912     styleNew as DWORD
 1913 end type
 1914 
 1915 type STYLESTRUCT as tagSTYLESTRUCT
 1916 type LPSTYLESTRUCT as tagSTYLESTRUCT ptr
 1917 const ODT_MENU = 1
 1918 const ODT_LISTBOX = 2
 1919 const ODT_COMBOBOX = 3
 1920 const ODT_BUTTON = 4
 1921 const ODT_STATIC = 5
 1922 const ODA_DRAWENTIRE = &h0001
 1923 const ODA_SELECT = &h0002
 1924 const ODA_FOCUS = &h0004
 1925 const ODS_SELECTED = &h0001
 1926 const ODS_GRAYED = &h0002
 1927 const ODS_DISABLED = &h0004
 1928 const ODS_CHECKED = &h0008
 1929 const ODS_FOCUS = &h0010
 1930 const ODS_DEFAULT = &h0020
 1931 const ODS_COMBOBOXEDIT = &h1000
 1932 const ODS_HOTLIGHT = &h0040
 1933 const ODS_INACTIVE = &h0080
 1934 const ODS_NOACCEL = &h0100
 1935 const ODS_NOFOCUSRECT = &h0200
 1936 
 1937 type tagMEASUREITEMSTRUCT
 1938     CtlType as UINT
 1939     CtlID as UINT
 1940     itemID as UINT
 1941     itemWidth as UINT
 1942     itemHeight as UINT
 1943     itemData as ULONG_PTR
 1944 end type
 1945 
 1946 type MEASUREITEMSTRUCT as tagMEASUREITEMSTRUCT
 1947 type PMEASUREITEMSTRUCT as tagMEASUREITEMSTRUCT ptr
 1948 type LPMEASUREITEMSTRUCT as tagMEASUREITEMSTRUCT ptr
 1949 
 1950 type tagDRAWITEMSTRUCT
 1951     CtlType as UINT
 1952     CtlID as UINT
 1953     itemID as UINT
 1954     itemAction as UINT
 1955     itemState as UINT
 1956     hwndItem as HWND
 1957     hDC as HDC
 1958     rcItem as RECT
 1959     itemData as ULONG_PTR
 1960 end type
 1961 
 1962 type DRAWITEMSTRUCT as tagDRAWITEMSTRUCT
 1963 type PDRAWITEMSTRUCT as tagDRAWITEMSTRUCT ptr
 1964 type LPDRAWITEMSTRUCT as tagDRAWITEMSTRUCT ptr
 1965 
 1966 type tagDELETEITEMSTRUCT
 1967     CtlType as UINT
 1968     CtlID as UINT
 1969     itemID as UINT
 1970     hwndItem as HWND
 1971     itemData as ULONG_PTR
 1972 end type
 1973 
 1974 type DELETEITEMSTRUCT as tagDELETEITEMSTRUCT
 1975 type PDELETEITEMSTRUCT as tagDELETEITEMSTRUCT ptr
 1976 type LPDELETEITEMSTRUCT as tagDELETEITEMSTRUCT ptr
 1977 
 1978 type tagCOMPAREITEMSTRUCT
 1979     CtlType as UINT
 1980     CtlID as UINT
 1981     hwndItem as HWND
 1982     itemID1 as UINT
 1983     itemData1 as ULONG_PTR
 1984     itemID2 as UINT
 1985     itemData2 as ULONG_PTR
 1986     dwLocaleId as DWORD
 1987 end type
 1988 
 1989 type COMPAREITEMSTRUCT as tagCOMPAREITEMSTRUCT
 1990 type PCOMPAREITEMSTRUCT as tagCOMPAREITEMSTRUCT ptr
 1991 type LPCOMPAREITEMSTRUCT as tagCOMPAREITEMSTRUCT ptr
 1992 declare function GetMessageA(byval lpMsg as LPMSG, byval hWnd as HWND, byval wMsgFilterMin as UINT, byval wMsgFilterMax as UINT) as WINBOOL
 1993 
 1994 #ifndef UNICODE
 1995     declare function GetMessage alias "GetMessageA"(byval lpMsg as LPMSG, byval hWnd as HWND, byval wMsgFilterMin as UINT, byval wMsgFilterMax as UINT) as WINBOOL
 1996 #endif
 1997 
 1998 declare function GetMessageW(byval lpMsg as LPMSG, byval hWnd as HWND, byval wMsgFilterMin as UINT, byval wMsgFilterMax as UINT) as WINBOOL
 1999 
 2000 #ifdef UNICODE
 2001     declare function GetMessage alias "GetMessageW"(byval lpMsg as LPMSG, byval hWnd as HWND, byval wMsgFilterMin as UINT, byval wMsgFilterMax as UINT) as WINBOOL
 2002 #endif
 2003 
 2004 declare function TranslateMessage(byval lpMsg as const MSG ptr) as WINBOOL
 2005 declare function DispatchMessageA(byval lpMsg as const MSG ptr) as LRESULT
 2006 
 2007 #ifndef UNICODE
 2008     declare function DispatchMessage alias "DispatchMessageA"(byval lpMsg as const MSG ptr) as LRESULT
 2009 #endif
 2010 
 2011 declare function DispatchMessageW(byval lpMsg as const MSG ptr) as LRESULT
 2012 
 2013 #ifdef UNICODE
 2014     declare function DispatchMessage alias "DispatchMessageW"(byval lpMsg as const MSG ptr) as LRESULT
 2015 #endif
 2016 
 2017 declare function SetMessageQueue(byval cMessagesMax as long) as WINBOOL
 2018 declare function PeekMessageA(byval lpMsg as LPMSG, byval hWnd as HWND, byval wMsgFilterMin as UINT, byval wMsgFilterMax as UINT, byval wRemoveMsg as UINT) as WINBOOL
 2019 
 2020 #ifndef UNICODE
 2021     declare function PeekMessage alias "PeekMessageA"(byval lpMsg as LPMSG, byval hWnd as HWND, byval wMsgFilterMin as UINT, byval wMsgFilterMax as UINT, byval wRemoveMsg as UINT) as WINBOOL
 2022 #endif
 2023 
 2024 declare function PeekMessageW(byval lpMsg as LPMSG, byval hWnd as HWND, byval wMsgFilterMin as UINT, byval wMsgFilterMax as UINT, byval wRemoveMsg as UINT) as WINBOOL
 2025 
 2026 #ifdef UNICODE
 2027     declare function PeekMessage alias "PeekMessageW"(byval lpMsg as LPMSG, byval hWnd as HWND, byval wMsgFilterMin as UINT, byval wMsgFilterMax as UINT, byval wRemoveMsg as UINT) as WINBOOL
 2028 #endif
 2029 
 2030 const PM_NOREMOVE = &h0000
 2031 const PM_REMOVE = &h0001
 2032 const PM_NOYIELD = &h0002
 2033 #define PM_QS_INPUT (QS_INPUT shl 16)
 2034 #define PM_QS_POSTMESSAGE (((QS_POSTMESSAGE or QS_HOTKEY) or QS_TIMER) shl 16)
 2035 #define PM_QS_PAINT (QS_PAINT shl 16)
 2036 #define PM_QS_SENDMESSAGE (QS_SENDMESSAGE shl 16)
 2037 declare function RegisterHotKey(byval hWnd as HWND, byval id as long, byval fsModifiers as UINT, byval vk as UINT) as WINBOOL
 2038 declare function UnregisterHotKey(byval hWnd as HWND, byval id as long) as WINBOOL
 2039 const MOD_ALT = &h0001
 2040 const MOD_CONTROL = &h0002
 2041 const MOD_SHIFT = &h0004
 2042 const MOD_WIN = &h0008
 2043 
 2044 #if _WIN32_WINNT >= &h0601
 2045     const MOD_NOREPEAT = &h4000
 2046 #endif
 2047 
 2048 const IDHOT_SNAPWINDOW = -1
 2049 const IDHOT_SNAPDESKTOP = -2
 2050 const ENDSESSION_CLOSEAPP = &h00000001
 2051 const ENDSESSION_CRITICAL = &h40000000
 2052 const ENDSESSION_LOGOFF = &h80000000
 2053 const EWX_LOGOFF = &h00000000
 2054 const EWX_SHUTDOWN = &h00000001
 2055 const EWX_REBOOT = &h00000002
 2056 const EWX_FORCE = &h00000004
 2057 const EWX_POWEROFF = &h00000008
 2058 const EWX_FORCEIFHUNG = &h00000010
 2059 const EWX_QUICKRESOLVE = &h00000020
 2060 
 2061 #if _WIN32_WINNT >= &h0600
 2062     const EWX_RESTARTAPPS = &h00000040
 2063 #endif
 2064 
 2065 const EWX_HYBRID_SHUTDOWN = &h00400000
 2066 const EWX_BOOTOPTIONS = &h01000000
 2067 #define ExitWindows(dwReserved, Code) ExitWindowsEx(EWX_LOGOFF, &hFFFFFFFF)
 2068 
 2069 declare function ExitWindowsEx(byval uFlags as UINT, byval dwReason as DWORD) as WINBOOL
 2070 declare function SwapMouseButton(byval fSwap as WINBOOL) as WINBOOL
 2071 declare function GetMessagePos() as DWORD
 2072 declare function GetMessageTime() as LONG
 2073 declare function GetMessageExtraInfo() as LPARAM
 2074 
 2075 #if _WIN32_WINNT = &h0602
 2076     declare function GetUnpredictedMessagePos() as DWORD
 2077 #endif
 2078 
 2079 declare function IsWow64Message() as WINBOOL
 2080 declare function SetMessageExtraInfo(byval lParam as LPARAM) as LPARAM
 2081 declare function SendMessageA(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2082 
 2083 #ifndef UNICODE
 2084     declare function SendMessage alias "SendMessageA"(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2085 #endif
 2086 
 2087 declare function SendMessageW(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2088 
 2089 #ifdef UNICODE
 2090     declare function SendMessage alias "SendMessageW"(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2091 #endif
 2092 
 2093 declare function SendMessageTimeoutA(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM, byval fuFlags as UINT, byval uTimeout as UINT, byval lpdwResult as PDWORD_PTR) as LRESULT
 2094 
 2095 #ifndef UNICODE
 2096     declare function SendMessageTimeout alias "SendMessageTimeoutA"(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM, byval fuFlags as UINT, byval uTimeout as UINT, byval lpdwResult as PDWORD_PTR) as LRESULT
 2097 #endif
 2098 
 2099 declare function SendMessageTimeoutW(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM, byval fuFlags as UINT, byval uTimeout as UINT, byval lpdwResult as PDWORD_PTR) as LRESULT
 2100 
 2101 #ifdef UNICODE
 2102     declare function SendMessageTimeout alias "SendMessageTimeoutW"(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM, byval fuFlags as UINT, byval uTimeout as UINT, byval lpdwResult as PDWORD_PTR) as LRESULT
 2103 #endif
 2104 
 2105 declare function SendNotifyMessageA(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as WINBOOL
 2106 
 2107 #ifndef UNICODE
 2108     declare function SendNotifyMessage alias "SendNotifyMessageA"(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as WINBOOL
 2109 #endif
 2110 
 2111 declare function SendNotifyMessageW(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as WINBOOL
 2112 
 2113 #ifdef UNICODE
 2114     declare function SendNotifyMessage alias "SendNotifyMessageW"(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as WINBOOL
 2115 #endif
 2116 
 2117 declare function SendMessageCallbackA(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM, byval lpResultCallBack as SENDASYNCPROC, byval dwData as ULONG_PTR) as WINBOOL
 2118 
 2119 #ifndef UNICODE
 2120     declare function SendMessageCallback alias "SendMessageCallbackA"(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM, byval lpResultCallBack as SENDASYNCPROC, byval dwData as ULONG_PTR) as WINBOOL
 2121 #endif
 2122 
 2123 declare function SendMessageCallbackW(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM, byval lpResultCallBack as SENDASYNCPROC, byval dwData as ULONG_PTR) as WINBOOL
 2124 
 2125 #ifdef UNICODE
 2126     declare function SendMessageCallback alias "SendMessageCallbackW"(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM, byval lpResultCallBack as SENDASYNCPROC, byval dwData as ULONG_PTR) as WINBOOL
 2127 #endif
 2128 
 2129 type BSMINFO
 2130     cbSize as UINT
 2131     hdesk as HDESK
 2132     hwnd as HWND
 2133     luid as LUID
 2134 end type
 2135 
 2136 type PBSMINFO as BSMINFO ptr
 2137 declare function BroadcastSystemMessageExA(byval flags as DWORD, byval lpInfo as LPDWORD, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM, byval pbsmInfo as PBSMINFO) as long
 2138 
 2139 #ifndef UNICODE
 2140     declare function BroadcastSystemMessageEx alias "BroadcastSystemMessageExA"(byval flags as DWORD, byval lpInfo as LPDWORD, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM, byval pbsmInfo as PBSMINFO) as long
 2141 #endif
 2142 
 2143 declare function BroadcastSystemMessageExW(byval flags as DWORD, byval lpInfo as LPDWORD, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM, byval pbsmInfo as PBSMINFO) as long
 2144 
 2145 #ifdef UNICODE
 2146     declare function BroadcastSystemMessageEx alias "BroadcastSystemMessageExW"(byval flags as DWORD, byval lpInfo as LPDWORD, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM, byval pbsmInfo as PBSMINFO) as long
 2147 #endif
 2148 
 2149 declare function BroadcastSystemMessageA(byval flags as DWORD, byval lpInfo as LPDWORD, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as long
 2150 
 2151 #ifndef UNICODE
 2152     declare function BroadcastSystemMessage alias "BroadcastSystemMessageA"(byval flags as DWORD, byval lpInfo as LPDWORD, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as long
 2153 #endif
 2154 
 2155 declare function BroadcastSystemMessageW(byval flags as DWORD, byval lpInfo as LPDWORD, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as long
 2156 
 2157 #ifdef UNICODE
 2158     declare function BroadcastSystemMessage alias "BroadcastSystemMessageW"(byval flags as DWORD, byval lpInfo as LPDWORD, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as long
 2159 #endif
 2160 
 2161 const BSM_ALLCOMPONENTS = &h00000000
 2162 const BSM_VXDS = &h00000001
 2163 const BSM_NETDRIVER = &h00000002
 2164 const BSM_INSTALLABLEDRIVERS = &h00000004
 2165 const BSM_APPLICATIONS = &h00000008
 2166 const BSM_ALLDESKTOPS = &h00000010
 2167 const BSF_QUERY = &h00000001
 2168 const BSF_IGNORECURRENTTASK = &h00000002
 2169 const BSF_FLUSHDISK = &h00000004
 2170 const BSF_NOHANG = &h00000008
 2171 const BSF_POSTMESSAGE = &h00000010
 2172 const BSF_FORCEIFHUNG = &h00000020
 2173 const BSF_NOTIMEOUTIFNOTHUNG = &h00000040
 2174 const BSF_ALLOWSFW = &h00000080
 2175 const BSF_SENDNOTIFYMESSAGE = &h00000100
 2176 const BSF_RETURNHDESK = &h00000200
 2177 const BSF_LUID = &h00000400
 2178 const BROADCAST_QUERY_DENY = &h424D5144
 2179 type HDEVNOTIFY as PVOID
 2180 type PHDEVNOTIFY as HDEVNOTIFY ptr
 2181 const DEVICE_NOTIFY_WINDOW_HANDLE = &h00000000
 2182 const DEVICE_NOTIFY_SERVICE_HANDLE = &h00000001
 2183 const DEVICE_NOTIFY_ALL_INTERFACE_CLASSES = &h00000004
 2184 
 2185 #ifdef UNICODE
 2186     #define PostAppMessage PostAppMessageW
 2187 #elseif (not defined(UNICODE)) and (_WIN32_WINNT >= &h0502)
 2188     #define PostAppMessage PostAppMessageA
 2189 #endif
 2190 
 2191 #if _WIN32_WINNT >= &h0502
 2192     #define _HPOWERNOTIFY_DEF_
 2193     type HPOWERNOTIFY as HANDLE
 2194     type PHPOWERNOTIFY as HPOWERNOTIFY ptr
 2195     declare function RegisterPowerSettingNotification(byval hRecipient as HANDLE, byval PowerSettingGuid as LPCGUID, byval Flags as DWORD) as HPOWERNOTIFY
 2196     declare function UnregisterPowerSettingNotification(byval Handle as HPOWERNOTIFY) as WINBOOL
 2197     declare function RegisterSuspendResumeNotification(byval hRecipient as HANDLE, byval Flags as DWORD) as HPOWERNOTIFY
 2198     declare function UnregisterSuspendResumeNotification(byval Handle as HPOWERNOTIFY) as WINBOOL
 2199 #elseif (not defined(UNICODE)) and (_WIN32_WINNT <= &h0501)
 2200     #define PostAppMessage PostAppMessageA
 2201 #endif
 2202 
 2203 declare function PostMessageA(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as WINBOOL
 2204 
 2205 #ifndef UNICODE
 2206     declare function PostMessage alias "PostMessageA"(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as WINBOOL
 2207 #endif
 2208 
 2209 declare function PostMessageW(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as WINBOOL
 2210 
 2211 #ifdef UNICODE
 2212     declare function PostMessage alias "PostMessageW"(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as WINBOOL
 2213 #endif
 2214 
 2215 declare function PostThreadMessageA(byval idThread as DWORD, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as WINBOOL
 2216 
 2217 #ifndef UNICODE
 2218     declare function PostThreadMessage alias "PostThreadMessageA"(byval idThread as DWORD, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as WINBOOL
 2219 #endif
 2220 
 2221 declare function PostThreadMessageW(byval idThread as DWORD, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as WINBOOL
 2222 
 2223 #ifdef UNICODE
 2224     declare function PostThreadMessage alias "PostThreadMessageW"(byval idThread as DWORD, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as WINBOOL
 2225 #endif
 2226 
 2227 #define PostAppMessageA(idThread, wMsg, wParam, lParam) PostThreadMessageA(cast(DWORD, idThread), wMsg, wParam, lParam)
 2228 #define PostAppMessageW(idThread, wMsg, wParam, lParam) PostThreadMessageW(cast(DWORD, idThread), wMsg, wParam, lParam)
 2229 declare function AttachThreadInput(byval idAttach as DWORD, byval idAttachTo as DWORD, byval fAttach as WINBOOL) as WINBOOL
 2230 declare function ReplyMessage(byval lResult as LRESULT) as WINBOOL
 2231 declare function WaitMessage() as WINBOOL
 2232 declare function WaitForInputIdle(byval hProcess as HANDLE, byval dwMilliseconds as DWORD) as DWORD
 2233 declare function DefWindowProcA(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2234 
 2235 #ifndef UNICODE
 2236     declare function DefWindowProc alias "DefWindowProcA"(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2237 #endif
 2238 
 2239 declare function DefWindowProcW(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2240 
 2241 #ifdef UNICODE
 2242     declare function DefWindowProc alias "DefWindowProcW"(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2243 #endif
 2244 
 2245 declare sub PostQuitMessage(byval nExitCode as long)
 2246 declare function InSendMessage() as WINBOOL
 2247 declare function InSendMessageEx(byval lpReserved as LPVOID) as DWORD
 2248 declare function GetDoubleClickTime() as UINT
 2249 declare function SetDoubleClickTime(byval as UINT) as WINBOOL
 2250 declare function RegisterClassA(byval lpWndClass as const WNDCLASSA ptr) as ATOM
 2251 
 2252 #ifndef UNICODE
 2253     declare function RegisterClass alias "RegisterClassA"(byval lpWndClass as const WNDCLASSA ptr) as ATOM
 2254 #endif
 2255 
 2256 declare function RegisterClassW(byval lpWndClass as const WNDCLASSW ptr) as ATOM
 2257 
 2258 #ifdef UNICODE
 2259     declare function RegisterClass alias "RegisterClassW"(byval lpWndClass as const WNDCLASSW ptr) as ATOM
 2260 #endif
 2261 
 2262 declare function UnregisterClassA(byval lpClassName as LPCSTR, byval hInstance as HINSTANCE) as WINBOOL
 2263 
 2264 #ifndef UNICODE
 2265     declare function UnregisterClass alias "UnregisterClassA"(byval lpClassName as LPCSTR, byval hInstance as HINSTANCE) as WINBOOL
 2266 #endif
 2267 
 2268 declare function UnregisterClassW(byval lpClassName as LPCWSTR, byval hInstance as HINSTANCE) as WINBOOL
 2269 
 2270 #ifdef UNICODE
 2271     declare function UnregisterClass alias "UnregisterClassW"(byval lpClassName as LPCWSTR, byval hInstance as HINSTANCE) as WINBOOL
 2272 #endif
 2273 
 2274 declare function GetClassInfoA(byval hInstance as HINSTANCE, byval lpClassName as LPCSTR, byval lpWndClass as LPWNDCLASSA) as WINBOOL
 2275 
 2276 #ifndef UNICODE
 2277     declare function GetClassInfo alias "GetClassInfoA"(byval hInstance as HINSTANCE, byval lpClassName as LPCSTR, byval lpWndClass as LPWNDCLASSA) as WINBOOL
 2278 #endif
 2279 
 2280 declare function GetClassInfoW(byval hInstance as HINSTANCE, byval lpClassName as LPCWSTR, byval lpWndClass as LPWNDCLASSW) as WINBOOL
 2281 
 2282 #ifdef UNICODE
 2283     declare function GetClassInfo alias "GetClassInfoW"(byval hInstance as HINSTANCE, byval lpClassName as LPCWSTR, byval lpWndClass as LPWNDCLASSW) as WINBOOL
 2284 #endif
 2285 
 2286 declare function RegisterClassExA(byval as const WNDCLASSEXA ptr) as ATOM
 2287 
 2288 #ifndef UNICODE
 2289     declare function RegisterClassEx alias "RegisterClassExA"(byval as const WNDCLASSEXA ptr) as ATOM
 2290 #endif
 2291 
 2292 declare function RegisterClassExW(byval as const WNDCLASSEXW ptr) as ATOM
 2293 
 2294 #ifdef UNICODE
 2295     declare function RegisterClassEx alias "RegisterClassExW"(byval as const WNDCLASSEXW ptr) as ATOM
 2296 #endif
 2297 
 2298 declare function GetClassInfoExA(byval hInstance as HINSTANCE, byval lpszClass as LPCSTR, byval lpwcx as LPWNDCLASSEXA) as WINBOOL
 2299 
 2300 #ifndef UNICODE
 2301     declare function GetClassInfoEx alias "GetClassInfoExA"(byval hInstance as HINSTANCE, byval lpszClass as LPCSTR, byval lpwcx as LPWNDCLASSEXA) as WINBOOL
 2302 #endif
 2303 
 2304 declare function GetClassInfoExW(byval hInstance as HINSTANCE, byval lpszClass as LPCWSTR, byval lpwcx as LPWNDCLASSEXW) as WINBOOL
 2305 
 2306 #ifdef UNICODE
 2307     declare function GetClassInfoEx alias "GetClassInfoExW"(byval hInstance as HINSTANCE, byval lpszClass as LPCWSTR, byval lpwcx as LPWNDCLASSEXW) as WINBOOL
 2308 #endif
 2309 
 2310 declare function CallWindowProcA(byval lpPrevWndFunc as WNDPROC, byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2311 
 2312 #ifndef UNICODE
 2313     declare function CallWindowProc alias "CallWindowProcA"(byval lpPrevWndFunc as WNDPROC, byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2314 #endif
 2315 
 2316 declare function CallWindowProcW(byval lpPrevWndFunc as WNDPROC, byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2317 
 2318 #ifdef UNICODE
 2319     declare function CallWindowProc alias "CallWindowProcW"(byval lpPrevWndFunc as WNDPROC, byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2320 #endif
 2321 
 2322 const CW_USEDEFAULT = clng(&h80000000)
 2323 const HWND_BROADCAST = cast(HWND, &hffff)
 2324 const HWND_MESSAGE = cast(HWND, -3)
 2325 const HWND_DESKTOP = cast(HWND, 0)
 2326 const ISMEX_NOSEND = &h00000000
 2327 const ISMEX_SEND = &h00000001
 2328 const ISMEX_NOTIFY = &h00000002
 2329 const ISMEX_CALLBACK = &h00000004
 2330 const ISMEX_REPLIED = &h00000008
 2331 
 2332 #if _WIN32_WINNT >= &h0502
 2333     extern GUID_POWERSCHEME_PERSONALITY as const GUID
 2334     extern GUID_MIN_POWER_SAVINGS as const GUID
 2335     extern GUID_MAX_POWER_SAVINGS as const GUID
 2336     extern GUID_TYPICAL_POWER_SAVINGS as const GUID
 2337     extern GUID_ACDC_POWER_SOURCE as const GUID
 2338     extern GUID_BATTERY_PERCENTAGE_REMAINING as const GUID
 2339     extern GUID_IDLE_BACKGROUND_TASK as const GUID
 2340     extern GUID_SYSTEM_AWAYMODE as const GUID
 2341     extern GUID_MONITOR_POWER_ON as const GUID
 2342 #endif
 2343 
 2344 declare function RegisterDeviceNotificationA(byval hRecipient as HANDLE, byval NotificationFilter as LPVOID, byval Flags as DWORD) as HDEVNOTIFY
 2345 
 2346 #ifndef UNICODE
 2347     declare function RegisterDeviceNotification alias "RegisterDeviceNotificationA"(byval hRecipient as HANDLE, byval NotificationFilter as LPVOID, byval Flags as DWORD) as HDEVNOTIFY
 2348 #endif
 2349 
 2350 declare function RegisterDeviceNotificationW(byval hRecipient as HANDLE, byval NotificationFilter as LPVOID, byval Flags as DWORD) as HDEVNOTIFY
 2351 
 2352 #ifdef UNICODE
 2353     declare function RegisterDeviceNotification alias "RegisterDeviceNotificationW"(byval hRecipient as HANDLE, byval NotificationFilter as LPVOID, byval Flags as DWORD) as HDEVNOTIFY
 2354 #endif
 2355 
 2356 declare function UnregisterDeviceNotification(byval Handle as HDEVNOTIFY) as WINBOOL
 2357 type PREGISTERCLASSNAMEW as function(byval as LPCWSTR) as WINBOOLEAN
 2358 
 2359 #ifdef UNICODE
 2360     #define CreateWindow CreateWindowW
 2361 #else
 2362     #define CreateWindow CreateWindowA
 2363 #endif
 2364 
 2365 declare function CreateWindowExA(byval dwExStyle as DWORD, byval lpClassName as LPCSTR, byval lpWindowName as LPCSTR, byval dwStyle as DWORD, byval X as long, byval Y as long, byval nWidth as long, byval nHeight as long, byval hWndParent as HWND, byval hMenu as HMENU, byval hInstance as HINSTANCE, byval lpParam as LPVOID) as HWND
 2366 
 2367 #ifndef UNICODE
 2368     declare function CreateWindowEx alias "CreateWindowExA"(byval dwExStyle as DWORD, byval lpClassName as LPCSTR, byval lpWindowName as LPCSTR, byval dwStyle as DWORD, byval X as long, byval Y as long, byval nWidth as long, byval nHeight as long, byval hWndParent as HWND, byval hMenu as HMENU, byval hInstance as HINSTANCE, byval lpParam as LPVOID) as HWND
 2369 #endif
 2370 
 2371 declare function CreateWindowExW(byval dwExStyle as DWORD, byval lpClassName as LPCWSTR, byval lpWindowName as LPCWSTR, byval dwStyle as DWORD, byval X as long, byval Y as long, byval nWidth as long, byval nHeight as long, byval hWndParent as HWND, byval hMenu as HMENU, byval hInstance as HINSTANCE, byval lpParam as LPVOID) as HWND
 2372 
 2373 #ifdef UNICODE
 2374     declare function CreateWindowEx alias "CreateWindowExW"(byval dwExStyle as DWORD, byval lpClassName as LPCWSTR, byval lpWindowName as LPCWSTR, byval dwStyle as DWORD, byval X as long, byval Y as long, byval nWidth as long, byval nHeight as long, byval hWndParent as HWND, byval hMenu as HMENU, byval hInstance as HINSTANCE, byval lpParam as LPVOID) as HWND
 2375 #endif
 2376 
 2377 #define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam) CreateWindowExA(cast(DWORD, 0), lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
 2378 #define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam) CreateWindowExW(cast(DWORD, 0), lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
 2379 declare function IsWindow(byval hWnd as HWND) as WINBOOL
 2380 declare function IsMenu(byval hMenu as HMENU) as WINBOOL
 2381 declare function IsChild(byval hWndParent as HWND, byval hWnd as HWND) as WINBOOL
 2382 declare function DestroyWindow(byval hWnd as HWND) as WINBOOL
 2383 declare function ShowWindow(byval hWnd as HWND, byval nCmdShow as long) as WINBOOL
 2384 declare function AnimateWindow(byval hWnd as HWND, byval dwTime as DWORD, byval dwFlags as DWORD) as WINBOOL
 2385 declare function UpdateLayeredWindow(byval hWnd as HWND, byval hdcDst as HDC, byval pptDst as POINT ptr, byval psize as SIZE ptr, byval hdcSrc as HDC, byval pptSrc as POINT ptr, byval crKey as COLORREF, byval pblend as BLENDFUNCTION ptr, byval dwFlags as DWORD) as WINBOOL
 2386 
 2387 type tagUPDATELAYEREDWINDOWINFO
 2388     cbSize as DWORD
 2389     hdcDst as HDC
 2390     pptDst as const POINT ptr
 2391     psize as const SIZE ptr
 2392     hdcSrc as HDC
 2393     pptSrc as const POINT ptr
 2394     crKey as COLORREF
 2395     pblend as const BLENDFUNCTION ptr
 2396     dwFlags as DWORD
 2397     prcDirty as const RECT ptr
 2398 end type
 2399 
 2400 type UPDATELAYEREDWINDOWINFO as tagUPDATELAYEREDWINDOWINFO
 2401 type PUPDATELAYEREDWINDOWINFO as tagUPDATELAYEREDWINDOWINFO ptr
 2402 
 2403 #if _WIN32_WINNT >= &h0502
 2404     declare function UpdateLayeredWindowIndirect(byval hWnd as HWND, byval pULWInfo as const UPDATELAYEREDWINDOWINFO ptr) as WINBOOL
 2405 #endif
 2406 
 2407 declare function GetLayeredWindowAttributes(byval hwnd as HWND, byval pcrKey as COLORREF ptr, byval pbAlpha as UBYTE ptr, byval pdwFlags as DWORD ptr) as WINBOOL
 2408 const PW_CLIENTONLY = &h00000001
 2409 declare function PrintWindow(byval hwnd as HWND, byval hdcBlt as HDC, byval nFlags as UINT) as WINBOOL
 2410 declare function SetLayeredWindowAttributes(byval hwnd as HWND, byval crKey as COLORREF, byval bAlpha as UBYTE, byval dwFlags as DWORD) as WINBOOL
 2411 const LWA_COLORKEY = &h00000001
 2412 const LWA_ALPHA = &h00000002
 2413 const ULW_COLORKEY = &h00000001
 2414 const ULW_ALPHA = &h00000002
 2415 const ULW_OPAQUE = &h00000004
 2416 const ULW_EX_NORESIZE = &h00000008
 2417 const FLASHW_STOP = 0
 2418 const FLASHW_CAPTION = &h00000001
 2419 const FLASHW_TRAY = &h00000002
 2420 const FLASHW_ALL = FLASHW_CAPTION or FLASHW_TRAY
 2421 const FLASHW_TIMER = &h00000004
 2422 const FLASHW_TIMERNOFG = &h0000000c
 2423 
 2424 type FLASHWINFO
 2425     cbSize as UINT
 2426     hwnd as HWND
 2427     dwFlags as DWORD
 2428     uCount as UINT
 2429     dwTimeout as DWORD
 2430 end type
 2431 
 2432 type PFLASHWINFO as FLASHWINFO ptr
 2433 declare function ShowWindowAsync(byval hWnd as HWND, byval nCmdShow as long) as WINBOOL
 2434 declare function FlashWindow(byval hWnd as HWND, byval bInvert as WINBOOL) as WINBOOL
 2435 declare function FlashWindowEx(byval pfwi as PFLASHWINFO) as WINBOOL
 2436 declare function ShowOwnedPopups(byval hWnd as HWND, byval fShow as WINBOOL) as WINBOOL
 2437 declare function OpenIcon(byval hWnd as HWND) as WINBOOL
 2438 declare function CloseWindow(byval hWnd as HWND) as WINBOOL
 2439 declare function MoveWindow(byval hWnd as HWND, byval X as long, byval Y as long, byval nWidth as long, byval nHeight as long, byval bRepaint as WINBOOL) as WINBOOL
 2440 declare function SetWindowPos(byval hWnd as HWND, byval hWndInsertAfter as HWND, byval X as long, byval Y as long, byval cx as long, byval cy as long, byval uFlags as UINT) as WINBOOL
 2441 declare function GetWindowPlacement(byval hWnd as HWND, byval lpwndpl as WINDOWPLACEMENT ptr) as WINBOOL
 2442 declare function SetWindowPlacement(byval hWnd as HWND, byval lpwndpl as const WINDOWPLACEMENT ptr) as WINBOOL
 2443 
 2444 #if _WIN32_WINNT >= &h0601
 2445     const WDA_NONE = &h00000000
 2446     const WDA_MONITOR = &h00000001
 2447     declare function GetWindowDisplayAffinity(byval hWnd as HWND, byval pdwAffinity as DWORD ptr) as WINBOOL
 2448     declare function SetWindowDisplayAffinity(byval hWnd as HWND, byval dwAffinity as DWORD) as WINBOOL
 2449 #endif
 2450 
 2451 declare function BeginDeferWindowPos(byval nNumWindows as long) as HDWP
 2452 declare function DeferWindowPos(byval hWinPosInfo as HDWP, byval hWnd as HWND, byval hWndInsertAfter as HWND, byval x as long, byval y as long, byval cx as long, byval cy as long, byval uFlags as UINT) as HDWP
 2453 declare function EndDeferWindowPos(byval hWinPosInfo as HDWP) as WINBOOL
 2454 declare function IsWindowVisible(byval hWnd as HWND) as WINBOOL
 2455 declare function IsIconic(byval hWnd as HWND) as WINBOOL
 2456 declare function AnyPopup() as WINBOOL
 2457 declare function BringWindowToTop(byval hWnd as HWND) as WINBOOL
 2458 declare function IsZoomed(byval hWnd as HWND) as WINBOOL
 2459 
 2460 const SWP_NOSIZE = &h0001
 2461 const SWP_NOMOVE = &h0002
 2462 const SWP_NOZORDER = &h0004
 2463 const SWP_NOREDRAW = &h0008
 2464 const SWP_NOACTIVATE = &h0010
 2465 const SWP_FRAMECHANGED = &h0020
 2466 const SWP_SHOWWINDOW = &h0040
 2467 const SWP_HIDEWINDOW = &h0080
 2468 const SWP_NOCOPYBITS = &h0100
 2469 const SWP_NOOWNERZORDER = &h0200
 2470 const SWP_NOSENDCHANGING = &h0400
 2471 const SWP_DRAWFRAME = SWP_FRAMECHANGED
 2472 const SWP_NOREPOSITION = SWP_NOOWNERZORDER
 2473 const SWP_DEFERERASE = &h2000
 2474 const SWP_ASYNCWINDOWPOS = &h4000
 2475 const HWND_TOP = cast(HWND, 0)
 2476 const HWND_BOTTOM = cast(HWND, 1)
 2477 const HWND_TOPMOST = cast(HWND, -1)
 2478 const HWND_NOTOPMOST = cast(HWND, -2)
 2479 
 2480 type DLGTEMPLATE field = 2
 2481     style as DWORD
 2482     dwExtendedStyle as DWORD
 2483     cdit as WORD
 2484     x as short
 2485     y as short
 2486     cx as short
 2487     cy as short
 2488 end type
 2489 
 2490 type LPDLGTEMPLATEA as DLGTEMPLATE ptr
 2491 type LPDLGTEMPLATEW as DLGTEMPLATE ptr
 2492 
 2493 #ifdef UNICODE
 2494     type LPDLGTEMPLATE as LPDLGTEMPLATEW
 2495 #else
 2496     type LPDLGTEMPLATE as LPDLGTEMPLATEA
 2497 #endif
 2498 
 2499 type LPCDLGTEMPLATEA as const DLGTEMPLATE ptr
 2500 type LPCDLGTEMPLATEW as const DLGTEMPLATE ptr
 2501 
 2502 #ifdef UNICODE
 2503     type LPCDLGTEMPLATE as LPCDLGTEMPLATEW
 2504 #else
 2505     type LPCDLGTEMPLATE as LPCDLGTEMPLATEA
 2506 #endif
 2507 
 2508 type DLGITEMTEMPLATE field = 2
 2509     style as DWORD
 2510     dwExtendedStyle as DWORD
 2511     x as short
 2512     y as short
 2513     cx as short
 2514     cy as short
 2515     id as WORD
 2516 end type
 2517 
 2518 type PDLGITEMTEMPLATEA as DLGITEMTEMPLATE ptr
 2519 type PDLGITEMTEMPLATEW as DLGITEMTEMPLATE ptr
 2520 
 2521 #ifdef UNICODE
 2522     type PDLGITEMTEMPLATE as PDLGITEMTEMPLATEW
 2523 #else
 2524     type PDLGITEMTEMPLATE as PDLGITEMTEMPLATEA
 2525 #endif
 2526 
 2527 type LPDLGITEMTEMPLATEA as DLGITEMTEMPLATE ptr
 2528 type LPDLGITEMTEMPLATEW as DLGITEMTEMPLATE ptr
 2529 
 2530 #ifdef UNICODE
 2531     type LPDLGITEMTEMPLATE as LPDLGITEMTEMPLATEW
 2532     #define CreateDialog CreateDialogW
 2533     #define CreateDialogIndirect CreateDialogIndirectW
 2534     #define DialogBox DialogBoxW
 2535     #define DialogBoxIndirect DialogBoxIndirectW
 2536 #else
 2537     type LPDLGITEMTEMPLATE as LPDLGITEMTEMPLATEA
 2538     #define CreateDialog CreateDialogA
 2539     #define CreateDialogIndirect CreateDialogIndirectA
 2540     #define DialogBox DialogBoxA
 2541     #define DialogBoxIndirect DialogBoxIndirectA
 2542 #endif
 2543 
 2544 declare function CreateDialogParamA(byval hInstance as HINSTANCE, byval lpTemplateName as LPCSTR, byval hWndParent as HWND, byval lpDialogFunc as DLGPROC, byval dwInitParam as LPARAM) as HWND
 2545 
 2546 #ifndef UNICODE
 2547     declare function CreateDialogParam alias "CreateDialogParamA"(byval hInstance as HINSTANCE, byval lpTemplateName as LPCSTR, byval hWndParent as HWND, byval lpDialogFunc as DLGPROC, byval dwInitParam as LPARAM) as HWND
 2548 #endif
 2549 
 2550 declare function CreateDialogParamW(byval hInstance as HINSTANCE, byval lpTemplateName as LPCWSTR, byval hWndParent as HWND, byval lpDialogFunc as DLGPROC, byval dwInitParam as LPARAM) as HWND
 2551 
 2552 #ifdef UNICODE
 2553     declare function CreateDialogParam alias "CreateDialogParamW"(byval hInstance as HINSTANCE, byval lpTemplateName as LPCWSTR, byval hWndParent as HWND, byval lpDialogFunc as DLGPROC, byval dwInitParam as LPARAM) as HWND
 2554 #endif
 2555 
 2556 declare function CreateDialogIndirectParamA(byval hInstance as HINSTANCE, byval lpTemplate as LPCDLGTEMPLATEA, byval hWndParent as HWND, byval lpDialogFunc as DLGPROC, byval dwInitParam as LPARAM) as HWND
 2557 
 2558 #ifndef UNICODE
 2559     declare function CreateDialogIndirectParam alias "CreateDialogIndirectParamA"(byval hInstance as HINSTANCE, byval lpTemplate as LPCDLGTEMPLATEA, byval hWndParent as HWND, byval lpDialogFunc as DLGPROC, byval dwInitParam as LPARAM) as HWND
 2560 #endif
 2561 
 2562 declare function CreateDialogIndirectParamW(byval hInstance as HINSTANCE, byval lpTemplate as LPCDLGTEMPLATEW, byval hWndParent as HWND, byval lpDialogFunc as DLGPROC, byval dwInitParam as LPARAM) as HWND
 2563 
 2564 #ifdef UNICODE
 2565     declare function CreateDialogIndirectParam alias "CreateDialogIndirectParamW"(byval hInstance as HINSTANCE, byval lpTemplate as LPCDLGTEMPLATEW, byval hWndParent as HWND, byval lpDialogFunc as DLGPROC, byval dwInitParam as LPARAM) as HWND
 2566 #endif
 2567 
 2568 #define CreateDialogA(hInstance, lpName, hWndParent, lpDialogFunc) CreateDialogParamA(hInstance, lpName, hWndParent, lpDialogFunc, cast(LPARAM, 0))
 2569 #define CreateDialogW(hInstance, lpName, hWndParent, lpDialogFunc) CreateDialogParamW(hInstance, lpName, hWndParent, lpDialogFunc, cast(LPARAM, 0))
 2570 #define CreateDialogIndirectA(hInstance, lpTemplate, hWndParent, lpDialogFunc) CreateDialogIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, cast(LPARAM, 0))
 2571 #define CreateDialogIndirectW(hInstance, lpTemplate, hWndParent, lpDialogFunc) CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, cast(LPARAM, 0))
 2572 declare function DialogBoxParamA(byval hInstance as HINSTANCE, byval lpTemplateName as LPCSTR, byval hWndParent as HWND, byval lpDialogFunc as DLGPROC, byval dwInitParam as LPARAM) as INT_PTR
 2573 
 2574 #ifndef UNICODE
 2575     declare function DialogBoxParam alias "DialogBoxParamA"(byval hInstance as HINSTANCE, byval lpTemplateName as LPCSTR, byval hWndParent as HWND, byval lpDialogFunc as DLGPROC, byval dwInitParam as LPARAM) as INT_PTR
 2576 #endif
 2577 
 2578 declare function DialogBoxParamW(byval hInstance as HINSTANCE, byval lpTemplateName as LPCWSTR, byval hWndParent as HWND, byval lpDialogFunc as DLGPROC, byval dwInitParam as LPARAM) as INT_PTR
 2579 
 2580 #ifdef UNICODE
 2581     declare function DialogBoxParam alias "DialogBoxParamW"(byval hInstance as HINSTANCE, byval lpTemplateName as LPCWSTR, byval hWndParent as HWND, byval lpDialogFunc as DLGPROC, byval dwInitParam as LPARAM) as INT_PTR
 2582 #endif
 2583 
 2584 declare function DialogBoxIndirectParamA(byval hInstance as HINSTANCE, byval hDialogTemplate as LPCDLGTEMPLATEA, byval hWndParent as HWND, byval lpDialogFunc as DLGPROC, byval dwInitParam as LPARAM) as INT_PTR
 2585 
 2586 #ifndef UNICODE
 2587     declare function DialogBoxIndirectParam alias "DialogBoxIndirectParamA"(byval hInstance as HINSTANCE, byval hDialogTemplate as LPCDLGTEMPLATEA, byval hWndParent as HWND, byval lpDialogFunc as DLGPROC, byval dwInitParam as LPARAM) as INT_PTR
 2588 #endif
 2589 
 2590 declare function DialogBoxIndirectParamW(byval hInstance as HINSTANCE, byval hDialogTemplate as LPCDLGTEMPLATEW, byval hWndParent as HWND, byval lpDialogFunc as DLGPROC, byval dwInitParam as LPARAM) as INT_PTR
 2591 
 2592 #ifdef UNICODE
 2593     declare function DialogBoxIndirectParam alias "DialogBoxIndirectParamW"(byval hInstance as HINSTANCE, byval hDialogTemplate as LPCDLGTEMPLATEW, byval hWndParent as HWND, byval lpDialogFunc as DLGPROC, byval dwInitParam as LPARAM) as INT_PTR
 2594 #endif
 2595 
 2596 #define DialogBoxA(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, cast(LPARAM, 0))
 2597 #define DialogBoxW(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, cast(LPARAM, 0))
 2598 #define DialogBoxIndirectA(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, cast(LPARAM, 0))
 2599 #define DialogBoxIndirectW(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, cast(LPARAM, 0))
 2600 
 2601 declare function EndDialog(byval hDlg as HWND, byval nResult as INT_PTR) as WINBOOL
 2602 declare function GetDlgItem(byval hDlg as HWND, byval nIDDlgItem as long) as HWND
 2603 declare function SetDlgItemInt(byval hDlg as HWND, byval nIDDlgItem as long, byval uValue as UINT, byval bSigned as WINBOOL) as WINBOOL
 2604 declare function GetDlgItemInt(byval hDlg as HWND, byval nIDDlgItem as long, byval lpTranslated as WINBOOL ptr, byval bSigned as WINBOOL) as UINT
 2605 declare function SetDlgItemTextA(byval hDlg as HWND, byval nIDDlgItem as long, byval lpString as LPCSTR) as WINBOOL
 2606 
 2607 #ifndef UNICODE
 2608     declare function SetDlgItemText alias "SetDlgItemTextA"(byval hDlg as HWND, byval nIDDlgItem as long, byval lpString as LPCSTR) as WINBOOL
 2609 #endif
 2610 
 2611 declare function SetDlgItemTextW(byval hDlg as HWND, byval nIDDlgItem as long, byval lpString as LPCWSTR) as WINBOOL
 2612 
 2613 #ifdef UNICODE
 2614     declare function SetDlgItemText alias "SetDlgItemTextW"(byval hDlg as HWND, byval nIDDlgItem as long, byval lpString as LPCWSTR) as WINBOOL
 2615 #endif
 2616 
 2617 declare function GetDlgItemTextA(byval hDlg as HWND, byval nIDDlgItem as long, byval lpString as LPSTR, byval cchMax as long) as UINT
 2618 
 2619 #ifndef UNICODE
 2620     declare function GetDlgItemText alias "GetDlgItemTextA"(byval hDlg as HWND, byval nIDDlgItem as long, byval lpString as LPSTR, byval cchMax as long) as UINT
 2621 #endif
 2622 
 2623 declare function GetDlgItemTextW(byval hDlg as HWND, byval nIDDlgItem as long, byval lpString as LPWSTR, byval cchMax as long) as UINT
 2624 
 2625 #ifdef UNICODE
 2626     declare function GetDlgItemText alias "GetDlgItemTextW"(byval hDlg as HWND, byval nIDDlgItem as long, byval lpString as LPWSTR, byval cchMax as long) as UINT
 2627 #endif
 2628 
 2629 declare function CheckDlgButton(byval hDlg as HWND, byval nIDButton as long, byval uCheck as UINT) as WINBOOL
 2630 declare function CheckRadioButton(byval hDlg as HWND, byval nIDFirstButton as long, byval nIDLastButton as long, byval nIDCheckButton as long) as WINBOOL
 2631 declare function IsDlgButtonChecked(byval hDlg as HWND, byval nIDButton as long) as UINT
 2632 declare function SendDlgItemMessageA(byval hDlg as HWND, byval nIDDlgItem as long, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2633 
 2634 #ifndef UNICODE
 2635     declare function SendDlgItemMessage alias "SendDlgItemMessageA"(byval hDlg as HWND, byval nIDDlgItem as long, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2636 #endif
 2637 
 2638 declare function SendDlgItemMessageW(byval hDlg as HWND, byval nIDDlgItem as long, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2639 
 2640 #ifdef UNICODE
 2641     declare function SendDlgItemMessage alias "SendDlgItemMessageW"(byval hDlg as HWND, byval nIDDlgItem as long, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2642 #endif
 2643 
 2644 declare function GetNextDlgGroupItem(byval hDlg as HWND, byval hCtl as HWND, byval bPrevious as WINBOOL) as HWND
 2645 declare function GetNextDlgTabItem(byval hDlg as HWND, byval hCtl as HWND, byval bPrevious as WINBOOL) as HWND
 2646 declare function GetDlgCtrlID(byval hWnd as HWND) as long
 2647 declare function GetDialogBaseUnits() as long
 2648 declare function DefDlgProcA(byval hDlg as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2649 
 2650 #ifndef UNICODE
 2651     declare function DefDlgProc alias "DefDlgProcA"(byval hDlg as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2652 #endif
 2653 
 2654 declare function DefDlgProcW(byval hDlg as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2655 
 2656 #ifdef UNICODE
 2657     declare function DefDlgProc alias "DefDlgProcW"(byval hDlg as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 2658 #endif
 2659 
 2660 const DLGWINDOWEXTRA = 30
 2661 declare function CallMsgFilterA(byval lpMsg as LPMSG, byval nCode as long) as WINBOOL
 2662 
 2663 #ifndef UNICODE
 2664     declare function CallMsgFilter alias "CallMsgFilterA"(byval lpMsg as LPMSG, byval nCode as long) as WINBOOL
 2665 #endif
 2666 
 2667 declare function CallMsgFilterW(byval lpMsg as LPMSG, byval nCode as long) as WINBOOL
 2668 
 2669 #ifdef UNICODE
 2670     declare function CallMsgFilter alias "CallMsgFilterW"(byval lpMsg as LPMSG, byval nCode as long) as WINBOOL
 2671 #endif
 2672 
 2673 declare function OpenClipboard(byval hWndNewOwner as HWND) as WINBOOL
 2674 declare function CloseClipboard() as WINBOOL
 2675 declare function GetClipboardSequenceNumber() as DWORD
 2676 declare function GetClipboardOwner() as HWND
 2677 declare function SetClipboardViewer(byval hWndNewViewer as HWND) as HWND
 2678 declare function GetClipboardViewer() as HWND
 2679 declare function ChangeClipboardChain(byval hWndRemove as HWND, byval hWndNewNext as HWND) as WINBOOL
 2680 declare function SetClipboardData(byval uFormat as UINT, byval hMem as HANDLE) as HANDLE
 2681 declare function GetClipboardData(byval uFormat as UINT) as HANDLE
 2682 declare function RegisterClipboardFormatA(byval lpszFormat as LPCSTR) as UINT
 2683 
 2684 #ifndef UNICODE
 2685     declare function RegisterClipboardFormat alias "RegisterClipboardFormatA"(byval lpszFormat as LPCSTR) as UINT
 2686 #endif
 2687 
 2688 declare function RegisterClipboardFormatW(byval lpszFormat as LPCWSTR) as UINT
 2689 
 2690 #ifdef UNICODE
 2691     declare function RegisterClipboardFormat alias "RegisterClipboardFormatW"(byval lpszFormat as LPCWSTR) as UINT
 2692 #endif
 2693 
 2694 declare function CountClipboardFormats() as long
 2695 declare function EnumClipboardFormats(byval format as UINT) as UINT
 2696 declare function GetClipboardFormatNameA(byval format as UINT, byval lpszFormatName as LPSTR, byval cchMaxCount as long) as long
 2697 
 2698 #ifndef UNICODE
 2699     declare function GetClipboardFormatName alias "GetClipboardFormatNameA"(byval format as UINT, byval lpszFormatName as LPSTR, byval cchMaxCount as long) as long
 2700 #endif
 2701 
 2702 declare function GetClipboardFormatNameW(byval format as UINT, byval lpszFormatName as LPWSTR, byval cchMaxCount as long) as long
 2703 
 2704 #ifdef UNICODE
 2705     declare function GetClipboardFormatName alias "GetClipboardFormatNameW"(byval format as UINT, byval lpszFormatName as LPWSTR, byval cchMaxCount as long) as long
 2706 #endif
 2707 
 2708 declare function EmptyClipboard() as WINBOOL
 2709 declare function IsClipboardFormatAvailable(byval format as UINT) as WINBOOL
 2710 declare function GetPriorityClipboardFormat(byval paFormatPriorityList as UINT ptr, byval cFormats as long) as long
 2711 declare function GetOpenClipboardWindow() as HWND
 2712 
 2713 #if _WIN32_WINNT >= &h0600
 2714     declare function AddClipboardFormatListener(byval hwnd as HWND) as WINBOOL
 2715     declare function RemoveClipboardFormatListener(byval hwnd as HWND) as WINBOOL
 2716     declare function GetUpdatedClipboardFormats(byval lpuiFormats as PUINT, byval cFormats as UINT, byval pcFormatsOut as PUINT) as WINBOOL
 2717 #endif
 2718 
 2719 declare function CharToOemA(byval lpszSrc as LPCSTR, byval lpszDst as LPSTR) as WINBOOL
 2720 
 2721 #ifndef UNICODE
 2722     declare function CharToOem alias "CharToOemA"(byval lpszSrc as LPCSTR, byval lpszDst as LPSTR) as WINBOOL
 2723 #endif
 2724 
 2725 declare function CharToOemW(byval lpszSrc as LPCWSTR, byval lpszDst as LPSTR) as WINBOOL
 2726 
 2727 #ifdef UNICODE
 2728     declare function CharToOem alias "CharToOemW"(byval lpszSrc as LPCWSTR, byval lpszDst as LPSTR) as WINBOOL
 2729 #endif
 2730 
 2731 declare function OemToCharA(byval lpszSrc as LPCSTR, byval lpszDst as LPSTR) as WINBOOL
 2732 
 2733 #ifndef UNICODE
 2734     declare function OemToChar alias "OemToCharA"(byval lpszSrc as LPCSTR, byval lpszDst as LPSTR) as WINBOOL
 2735 #endif
 2736 
 2737 declare function OemToCharW(byval lpszSrc as LPCSTR, byval lpszDst as LPWSTR) as WINBOOL
 2738 
 2739 #ifdef UNICODE
 2740     declare function OemToChar alias "OemToCharW"(byval lpszSrc as LPCSTR, byval lpszDst as LPWSTR) as WINBOOL
 2741 #endif
 2742 
 2743 declare function CharToOemBuffA(byval lpszSrc as LPCSTR, byval lpszDst as LPSTR, byval cchDstLength as DWORD) as WINBOOL
 2744 
 2745 #ifndef UNICODE
 2746     declare function CharToOemBuff alias "CharToOemBuffA"(byval lpszSrc as LPCSTR, byval lpszDst as LPSTR, byval cchDstLength as DWORD) as WINBOOL
 2747 #endif
 2748 
 2749 declare function CharToOemBuffW(byval lpszSrc as LPCWSTR, byval lpszDst as LPSTR, byval cchDstLength as DWORD) as WINBOOL
 2750 
 2751 #ifdef UNICODE
 2752     declare function CharToOemBuff alias "CharToOemBuffW"(byval lpszSrc as LPCWSTR, byval lpszDst as LPSTR, byval cchDstLength as DWORD) as WINBOOL
 2753 #endif
 2754 
 2755 declare function OemToCharBuffA(byval lpszSrc as LPCSTR, byval lpszDst as LPSTR, byval cchDstLength as DWORD) as WINBOOL
 2756 
 2757 #ifndef UNICODE
 2758     declare function OemToCharBuff alias "OemToCharBuffA"(byval lpszSrc as LPCSTR, byval lpszDst as LPSTR, byval cchDstLength as DWORD) as WINBOOL
 2759 #endif
 2760 
 2761 declare function OemToCharBuffW(byval lpszSrc as LPCSTR, byval lpszDst as LPWSTR, byval cchDstLength as DWORD) as WINBOOL
 2762 
 2763 #ifdef UNICODE
 2764     declare function OemToCharBuff alias "OemToCharBuffW"(byval lpszSrc as LPCSTR, byval lpszDst as LPWSTR, byval cchDstLength as DWORD) as WINBOOL
 2765 #endif
 2766 
 2767 declare function CharUpperA(byval lpsz as LPSTR) as LPSTR
 2768 
 2769 #ifndef UNICODE
 2770     declare function CharUpper alias "CharUpperA"(byval lpsz as LPSTR) as LPSTR
 2771 #endif
 2772 
 2773 declare function CharUpperW(byval lpsz as LPWSTR) as LPWSTR
 2774 
 2775 #ifdef UNICODE
 2776     declare function CharUpper alias "CharUpperW"(byval lpsz as LPWSTR) as LPWSTR
 2777 #endif
 2778 
 2779 declare function CharUpperBuffA(byval lpsz as LPSTR, byval cchLength as DWORD) as DWORD
 2780 
 2781 #ifndef UNICODE
 2782     declare function CharUpperBuff alias "CharUpperBuffA"(byval lpsz as LPSTR, byval cchLength as DWORD) as DWORD
 2783 #endif
 2784 
 2785 declare function CharUpperBuffW(byval lpsz as LPWSTR, byval cchLength as DWORD) as DWORD
 2786 
 2787 #ifdef UNICODE
 2788     declare function CharUpperBuff alias "CharUpperBuffW"(byval lpsz as LPWSTR, byval cchLength as DWORD) as DWORD
 2789 #endif
 2790 
 2791 declare function CharLowerA(byval lpsz as LPSTR) as LPSTR
 2792 
 2793 #ifndef UNICODE
 2794     declare function CharLower alias "CharLowerA"(byval lpsz as LPSTR) as LPSTR
 2795 #endif
 2796 
 2797 declare function CharLowerW(byval lpsz as LPWSTR) as LPWSTR
 2798 
 2799 #ifdef UNICODE
 2800     declare function CharLower alias "CharLowerW"(byval lpsz as LPWSTR) as LPWSTR
 2801 #endif
 2802 
 2803 declare function CharLowerBuffA(byval lpsz as LPSTR, byval cchLength as DWORD) as DWORD
 2804 
 2805 #ifndef UNICODE
 2806     declare function CharLowerBuff alias "CharLowerBuffA"(byval lpsz as LPSTR, byval cchLength as DWORD) as DWORD
 2807 #endif
 2808 
 2809 declare function CharLowerBuffW(byval lpsz as LPWSTR, byval cchLength as DWORD) as DWORD
 2810 
 2811 #ifdef UNICODE
 2812     declare function CharLowerBuff alias "CharLowerBuffW"(byval lpsz as LPWSTR, byval cchLength as DWORD) as DWORD
 2813 #endif
 2814 
 2815 declare function CharNextA(byval lpsz as LPCSTR) as LPSTR
 2816 
 2817 #ifndef UNICODE
 2818     declare function CharNext alias "CharNextA"(byval lpsz as LPCSTR) as LPSTR
 2819 #endif
 2820 
 2821 declare function CharNextW(byval lpsz as LPCWSTR) as LPWSTR
 2822 
 2823 #ifdef UNICODE
 2824     declare function CharNext alias "CharNextW"(byval lpsz as LPCWSTR) as LPWSTR
 2825 #endif
 2826 
 2827 declare function CharPrevA(byval lpszStart as LPCSTR, byval lpszCurrent as LPCSTR) as LPSTR
 2828 
 2829 #ifndef UNICODE
 2830     declare function CharPrev alias "CharPrevA"(byval lpszStart as LPCSTR, byval lpszCurrent as LPCSTR) as LPSTR
 2831 #endif
 2832 
 2833 declare function CharPrevW(byval lpszStart as LPCWSTR, byval lpszCurrent as LPCWSTR) as LPWSTR
 2834 
 2835 #ifdef UNICODE
 2836     declare function CharPrev alias "CharPrevW"(byval lpszStart as LPCWSTR, byval lpszCurrent as LPCWSTR) as LPWSTR
 2837 #endif
 2838 
 2839 declare function CharNextExA(byval CodePage as WORD, byval lpCurrentChar as LPCSTR, byval dwFlags as DWORD) as LPSTR
 2840 declare function CharPrevExA(byval CodePage as WORD, byval lpStart as LPCSTR, byval lpCurrentChar as LPCSTR, byval dwFlags as DWORD) as LPSTR
 2841 declare function AnsiToOem alias "CharToOemA"(byval lpszSrc as LPCSTR, byval lpszDst as LPSTR) as WINBOOL
 2842 declare function OemToAnsi alias "OemToCharA"(byval lpszSrc as LPCSTR, byval lpszDst as LPSTR) as WINBOOL
 2843 declare function AnsiToOemBuff alias "CharToOemBuffA"(byval lpszSrc as LPCSTR, byval lpszDst as LPSTR, byval cchDstLength as DWORD) as WINBOOL
 2844 declare function OemToAnsiBuff alias "OemToCharBuffA"(byval lpszSrc as LPCSTR, byval lpszDst as LPSTR, byval cchDstLength as DWORD) as WINBOOL
 2845 declare function AnsiUpper alias "CharUpperA"(byval lpsz as LPSTR) as LPSTR
 2846 declare function AnsiUpperBuff alias "CharUpperBuffA"(byval lpsz as LPSTR, byval cchLength as DWORD) as DWORD
 2847 declare function AnsiLower alias "CharLowerA"(byval lpsz as LPSTR) as LPSTR
 2848 declare function AnsiLowerBuff alias "CharLowerBuffA"(byval lpsz as LPSTR, byval cchLength as DWORD) as DWORD
 2849 declare function AnsiNext alias "CharNextA"(byval lpsz as LPCSTR) as LPSTR
 2850 declare function AnsiPrev alias "CharPrevA"(byval lpszStart as LPCSTR, byval lpszCurrent as LPCSTR) as LPSTR
 2851 declare function IsCharAlphaA(byval ch as CHAR) as WINBOOL
 2852 
 2853 #ifndef UNICODE
 2854     declare function IsCharAlpha alias "IsCharAlphaA"(byval ch as CHAR) as WINBOOL
 2855 #endif
 2856 
 2857 declare function IsCharAlphaW(byval ch as WCHAR) as WINBOOL
 2858 
 2859 #ifdef UNICODE
 2860     declare function IsCharAlpha alias "IsCharAlphaW"(byval ch as WCHAR) as WINBOOL
 2861 #endif
 2862 
 2863 declare function IsCharAlphaNumericA(byval ch as CHAR) as WINBOOL
 2864 
 2865 #ifndef UNICODE
 2866     declare function IsCharAlphaNumeric alias "IsCharAlphaNumericA"(byval ch as CHAR) as WINBOOL
 2867 #endif
 2868 
 2869 declare function IsCharAlphaNumericW(byval ch as WCHAR) as WINBOOL
 2870 
 2871 #ifdef UNICODE
 2872     declare function IsCharAlphaNumeric alias "IsCharAlphaNumericW"(byval ch as WCHAR) as WINBOOL
 2873 #endif
 2874 
 2875 declare function IsCharUpperA(byval ch as CHAR) as WINBOOL
 2876 
 2877 #ifndef UNICODE
 2878     declare function IsCharUpper alias "IsCharUpperA"(byval ch as CHAR) as WINBOOL
 2879 #endif
 2880 
 2881 declare function IsCharUpperW(byval ch as WCHAR) as WINBOOL
 2882 
 2883 #ifdef UNICODE
 2884     declare function IsCharUpper alias "IsCharUpperW"(byval ch as WCHAR) as WINBOOL
 2885 #endif
 2886 
 2887 declare function IsCharLowerA(byval ch as CHAR) as WINBOOL
 2888 
 2889 #ifndef UNICODE
 2890     declare function IsCharLower alias "IsCharLowerA"(byval ch as CHAR) as WINBOOL
 2891 #endif
 2892 
 2893 declare function IsCharLowerW(byval ch as WCHAR) as WINBOOL
 2894 
 2895 #ifdef UNICODE
 2896     declare function IsCharLower alias "IsCharLowerW"(byval ch as WCHAR) as WINBOOL
 2897 #endif
 2898 
 2899 declare function SetFocus(byval hWnd as HWND) as HWND
 2900 declare function GetActiveWindow() as HWND
 2901 declare function GetFocus() as HWND
 2902 declare function GetKBCodePage() as UINT
 2903 declare function GetKeyState(byval nVirtKey as long) as SHORT
 2904 declare function GetAsyncKeyState(byval vKey as long) as SHORT
 2905 declare function GetKeyboardState(byval lpKeyState as PBYTE) as WINBOOL
 2906 declare function SetKeyboardState(byval lpKeyState as LPBYTE) as WINBOOL
 2907 declare function GetKeyNameTextA(byval lParam as LONG, byval lpString as LPSTR, byval cchSize as long) as long
 2908 
 2909 #ifndef UNICODE
 2910     declare function GetKeyNameText alias "GetKeyNameTextA"(byval lParam as LONG, byval lpString as LPSTR, byval cchSize as long) as long
 2911 #endif
 2912 
 2913 declare function GetKeyNameTextW(byval lParam as LONG, byval lpString as LPWSTR, byval cchSize as long) as long
 2914 
 2915 #ifdef UNICODE
 2916     declare function GetKeyNameText alias "GetKeyNameTextW"(byval lParam as LONG, byval lpString as LPWSTR, byval cchSize as long) as long
 2917 #endif
 2918 
 2919 declare function GetKeyboardType(byval nTypeFlag as long) as long
 2920 declare function ToAscii_ alias "ToAscii"(byval uVirtKey as UINT, byval uScanCode as UINT, byval lpKeyState as const UBYTE ptr, byval lpChar as LPWORD, byval uFlags as UINT) as long
 2921 declare function ToAsciiEx(byval uVirtKey as UINT, byval uScanCode as UINT, byval lpKeyState as const UBYTE ptr, byval lpChar as LPWORD, byval uFlags as UINT, byval dwhkl as HKL) as long
 2922 declare function ToUnicode(byval wVirtKey as UINT, byval wScanCode as UINT, byval lpKeyState as const UBYTE ptr, byval pwszBuff as LPWSTR, byval cchBuff as long, byval wFlags as UINT) as long
 2923 declare function OemKeyScan(byval wOemChar as WORD) as DWORD
 2924 declare function VkKeyScanA(byval ch as CHAR) as SHORT
 2925 
 2926 #ifndef UNICODE
 2927     declare function VkKeyScan alias "VkKeyScanA"(byval ch as CHAR) as SHORT
 2928 #endif
 2929 
 2930 declare function VkKeyScanW(byval ch as WCHAR) as SHORT
 2931 
 2932 #ifdef UNICODE
 2933     declare function VkKeyScan alias "VkKeyScanW"(byval ch as WCHAR) as SHORT
 2934 #endif
 2935 
 2936 declare function VkKeyScanExA(byval ch as CHAR, byval dwhkl as HKL) as SHORT
 2937 
 2938 #ifndef UNICODE
 2939     declare function VkKeyScanEx alias "VkKeyScanExA"(byval ch as CHAR, byval dwhkl as HKL) as SHORT
 2940 #endif
 2941 
 2942 declare function VkKeyScanExW(byval ch as WCHAR, byval dwhkl as HKL) as SHORT
 2943 
 2944 #ifdef UNICODE
 2945     declare function VkKeyScanEx alias "VkKeyScanExW"(byval ch as WCHAR, byval dwhkl as HKL) as SHORT
 2946 #endif
 2947 
 2948 declare sub keybd_event(byval bVk as UBYTE, byval bScan as UBYTE, byval dwFlags as DWORD, byval dwExtraInfo as ULONG_PTR)
 2949 const KEYEVENTF_EXTENDEDKEY = &h0001
 2950 const KEYEVENTF_KEYUP = &h0002
 2951 const KEYEVENTF_UNICODE = &h0004
 2952 const KEYEVENTF_SCANCODE = &h0008
 2953 const MOUSEEVENTF_MOVE = &h0001
 2954 const MOUSEEVENTF_LEFTDOWN = &h0002
 2955 const MOUSEEVENTF_LEFTUP = &h0004
 2956 const MOUSEEVENTF_RIGHTDOWN = &h0008
 2957 const MOUSEEVENTF_RIGHTUP = &h0010
 2958 const MOUSEEVENTF_MIDDLEDOWN = &h0020
 2959 const MOUSEEVENTF_MIDDLEUP = &h0040
 2960 const MOUSEEVENTF_XDOWN = &h0080
 2961 const MOUSEEVENTF_XUP = &h0100
 2962 const MOUSEEVENTF_WHEEL = &h0800
 2963 
 2964 #if _WIN32_WINNT >= &h0600
 2965     const MOUSEEVENTF_HWHEEL = &h01000
 2966     const MOUSEEVENTF_MOVE_NOCOALESCE = &h2000
 2967 #endif
 2968 
 2969 const MOUSEEVENTF_VIRTUALDESK = &h4000
 2970 const MOUSEEVENTF_ABSOLUTE = &h8000
 2971 const INPUT_MOUSE = 0
 2972 const INPUT_KEYBOARD = 1
 2973 const INPUT_HARDWARE = 2
 2974 
 2975 #if _WIN32_WINNT >= &h0601
 2976     #define TOUCH_COORD_TO_PIXEL(l) ((l) / 100)
 2977     const TOUCHEVENTF_MOVE = &h0001
 2978     const TOUCHEVENTF_DOWN = &h0002
 2979     const TOUCHEVENTF_UP = &h0004
 2980     const TOUCHEVENTF_INRANGE = &h0008
 2981     const TOUCHEVENTF_PRIMARY = &h0010
 2982     const TOUCHEVENTF_NOCOALESCE = &h0020
 2983     const TOUCHEVENTF_PEN = &h0040
 2984     const TOUCHEVENTF_PALM = &h0080
 2985     const TOUCHINPUTMASKF_TIMEFROMSYSTEM = &h0001
 2986     const TOUCHINPUTMASKF_EXTRAINFO = &h0002
 2987     const TOUCHINPUTMASKF_CONTACTAREA = &h0004
 2988     const TWF_FINETOUCH = &h00000001
 2989     const TWF_WANTPALM = &h00000002
 2990 #endif
 2991 
 2992 #if _WIN32_WINNT = &h0602
 2993     const POINTER_FLAG_NONE = &h00000000
 2994     const POINTER_FLAG_NEW = &h00000001
 2995     const POINTER_FLAG_INRANGE = &h00000002
 2996     const POINTER_FLAG_INCONTACT = &h00000004
 2997     const POINTER_FLAG_FIRSTBUTTON = &h00000010
 2998     const POINTER_FLAG_SECONDBUTTON = &h00000020
 2999     const POINTER_FLAG_THIRDBUTTON = &h00000040
 3000     const POINTER_FLAG_FOURTHBUTTON = &h00000080
 3001     const POINTER_FLAG_FIFTHBUTTON = &h00000100
 3002     const POINTER_FLAG_PRIMARY = &h00002000
 3003     const POINTER_FLAG_CONFIDENCE = &h00004000
 3004     const POINTER_FLAG_CANCELED = &h00008000
 3005     const POINTER_FLAG_DOWN = &h00010000
 3006     const POINTER_FLAG_UPDATE = &h00020000
 3007     const POINTER_FLAG_UP = &h00040000
 3008     const POINTER_FLAG_WHEEL = &h00080000
 3009     const POINTER_FLAG_HWHEEL = &h00100000
 3010     const POINTER_FLAG_CAPTURECHANGED = &h00200000
 3011     const POINTER_MOD_SHIFT = &h0004
 3012     const POINTER_MOD_CTRL = &h0008
 3013     const TOUCH_FLAG_NONE = &h00000000
 3014     const TOUCH_MASK_NONE = &h00000000
 3015     const TOUCH_MASK_CONTACTAREA = &h00000001
 3016     const TOUCH_MASK_ORIENTATION = &h00000002
 3017     const TOUCH_MASK_PRESSURE = &h00000004
 3018     const PEN_FLAG_NONE = &h00000000
 3019     const PEN_FLAG_BARREL = &h00000001
 3020     const PEN_FLAG_INVERTED = &h00000002
 3021     const PEN_FLAG_ERASER = &h00000004
 3022     const PEN_MASK_NONE = &h00000000
 3023     const PEN_MASK_PRESSURE = &h00000001
 3024     const PEN_MASK_ROTATION = &h00000002
 3025     const PEN_MASK_TILT_X = &h00000004
 3026     const PEN_MASK_TILT_Y = &h00000008
 3027     const POINTER_MESSAGE_FLAG_NEW = &h00000001
 3028     const POINTER_MESSAGE_FLAG_INRANGE = &h00000002
 3029     const POINTER_MESSAGE_FLAG_INCONTACT = &h00000004
 3030     const POINTER_MESSAGE_FLAG_FIRSTBUTTON = &h00000010
 3031     const POINTER_MESSAGE_FLAG_SECONDBUTTON = &h00000020
 3032     const POINTER_MESSAGE_FLAG_THIRDBUTTON = &h00000040
 3033     const POINTER_MESSAGE_FLAG_FOURTHBUTTON = &h00000080
 3034     const POINTER_MESSAGE_FLAG_FIFTHBUTTON = &h00000100
 3035     const POINTER_MESSAGE_FLAG_PRIMARY = &h00002000
 3036     const POINTER_MESSAGE_FLAG_CONFIDENCE = &h00004000
 3037     const POINTER_MESSAGE_FLAG_CANCELED = &h00008000
 3038     #define GET_POINTERID_WPARAM(wParam) LOWORD(wParam)
 3039     #define IS_POINTER_FLAG_SET_WPARAM(wParam, flag) ((cast(DWORD, HIWORD(wParam)) and (flag)) = (flag))
 3040     #define IS_POINTER_NEW_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_NEW)
 3041     #define IS_POINTER_INRANGE_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_INRANGE)
 3042     #define IS_POINTER_INCONTACT_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_INCONTACT)
 3043     #define IS_POINTER_FIRSTBUTTON_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_FIRSTBUTTON)
 3044     #define IS_POINTER_SECONDBUTTON_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_SECONDBUTTON)
 3045     #define IS_POINTER_THIRDBUTTON_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_THIRDBUTTON)
 3046     #define IS_POINTER_FOURTHBUTTON_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_FOURTHBUTTON)
 3047     #define IS_POINTER_FIFTHBUTTON_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_FIFTHBUTTON)
 3048     #define IS_POINTER_PRIMARY_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_PRIMARY)
 3049     #define HAS_POINTER_CONFIDENCE_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_CONFIDENCE)
 3050     #define IS_POINTER_CANCELED_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM(wParam, POINTER_MESSAGE_FLAG_CANCELED)
 3051     const PA_ACTIVATE = MA_ACTIVATE
 3052     const PA_NOACTIVATE = MA_NOACTIVATE
 3053     const MAX_TOUCH_COUNT = 256
 3054     const TOUCH_FEEDBACK_DEFAULT = &h1
 3055     const TOUCH_FEEDBACK_INDIRECT = &h2
 3056     const TOUCH_FEEDBACK_NONE = &h3
 3057     const TOUCH_HIT_TESTING_DEFAULT = &h0
 3058     const TOUCH_HIT_TESTING_CLIENT = &h1
 3059     const TOUCH_HIT_TESTING_NONE = &h2
 3060     const TOUCH_HIT_TESTING_PROXIMITY_CLOSEST = &h0
 3061     const TOUCH_HIT_TESTING_PROXIMITY_FARTHEST = &hfff
 3062     const GWFS_INCLUDE_ANCESTORS = &h00000001
 3063 #endif
 3064 
 3065 declare sub mouse_event(byval dwFlags as DWORD, byval dx as DWORD, byval dy as DWORD, byval dwData as DWORD, byval dwExtraInfo as ULONG_PTR)
 3066 
 3067 type tagMOUSEINPUT
 3068     dx as LONG
 3069     dy as LONG
 3070     mouseData as DWORD
 3071     dwFlags as DWORD
 3072     time as DWORD
 3073     dwExtraInfo as ULONG_PTR
 3074 end type
 3075 
 3076 type MOUSEINPUT as tagMOUSEINPUT
 3077 type PMOUSEINPUT as tagMOUSEINPUT ptr
 3078 type LPMOUSEINPUT as tagMOUSEINPUT ptr
 3079 
 3080 type tagKEYBDINPUT
 3081     wVk as WORD
 3082     wScan as WORD
 3083     dwFlags as DWORD
 3084     time as DWORD
 3085     dwExtraInfo as ULONG_PTR
 3086 end type
 3087 
 3088 type KEYBDINPUT as tagKEYBDINPUT
 3089 type PKEYBDINPUT as tagKEYBDINPUT ptr
 3090 type LPKEYBDINPUT as tagKEYBDINPUT ptr
 3091 
 3092 type tagHARDWAREINPUT
 3093     uMsg as DWORD
 3094     wParamL as WORD
 3095     wParamH as WORD
 3096 end type
 3097 
 3098 type HARDWAREINPUT as tagHARDWAREINPUT
 3099 type PHARDWAREINPUT as tagHARDWAREINPUT ptr
 3100 type LPHARDWAREINPUT as tagHARDWAREINPUT ptr
 3101 
 3102 type tagINPUT
 3103     as DWORD type
 3104 
 3105     union
 3106         mi as MOUSEINPUT
 3107         ki as KEYBDINPUT
 3108         hi as HARDWAREINPUT
 3109     end union
 3110 end type
 3111 
 3112 type INPUT_ as tagINPUT
 3113 type PINPUT as tagINPUT ptr
 3114 type LPINPUT as tagINPUT ptr
 3115 declare function SendInput(byval cInputs as UINT, byval pInputs as LPINPUT, byval cbSize as long) as UINT
 3116 
 3117 #if _WIN32_WINNT >= &h0601
 3118     type HTOUCHINPUT__
 3119         unused as long
 3120     end type
 3121 
 3122     type HTOUCHINPUT as HTOUCHINPUT__ ptr
 3123 
 3124     type tagTOUCHINPUT
 3125         x as LONG
 3126         y as LONG
 3127         hSource as HANDLE
 3128         dwID as DWORD
 3129         dwFlags as DWORD
 3130         dwMask as DWORD
 3131         dwTime as DWORD
 3132         dwExtraInfo as ULONG_PTR
 3133         cxContact as DWORD
 3134         cyContact as DWORD
 3135     end type
 3136 
 3137     type TOUCHINPUT as tagTOUCHINPUT
 3138     type PTOUCHINPUT as tagTOUCHINPUT ptr
 3139     type PCTOUCHINPUT as const TOUCHINPUT ptr
 3140 
 3141     declare function GetTouchInputInfo(byval hTouchInput as HTOUCHINPUT, byval cInputs as UINT, byval pInputs as PTOUCHINPUT, byval cbSize as long) as WINBOOL
 3142     declare function CloseTouchInputHandle(byval hTouchInput as HTOUCHINPUT) as WINBOOL
 3143     declare function RegisterTouchWindow(byval hwnd as HWND, byval ulFlags as ULONG) as WINBOOL
 3144     declare function UnregisterTouchWindow(byval hwnd as HWND) as WINBOOL
 3145     declare function IsTouchWindow(byval hwnd as HWND, byval pulFlags as PULONG) as WINBOOL
 3146 #endif
 3147 
 3148 #if _WIN32_WINNT = &h0602
 3149     type POINTER_INPUT_TYPE as DWORD
 3150     type POINTER_FLAGS as UINT32
 3151     type TOUCH_FLAGS as UINT32
 3152     type TOUCH_MASK as UINT32
 3153     type PEN_FLAGS as UINT32
 3154     type PEN_MASK as UINT32
 3155 
 3156     type tagPOINTER_INPUT_TYPE as long
 3157     enum
 3158         PT_POINTER = &h00000001
 3159         PT_TOUCH = &h00000002
 3160         PT_PEN = &h00000003
 3161         PT_MOUSE = &h00000004
 3162     end enum
 3163 
 3164     type tagFEEDBACK_TYPE as long
 3165     enum
 3166         FEEDBACK_TOUCH_CONTACTVISUALIZATION = 1
 3167         FEEDBACK_PEN_BARRELVISUALIZATION = 2
 3168         FEEDBACK_PEN_TAP = 3
 3169         FEEDBACK_PEN_DOUBLETAP = 4
 3170         FEEDBACK_PEN_PRESSANDHOLD = 5
 3171         FEEDBACK_PEN_RIGHTTAP = 6
 3172         FEEDBACK_TOUCH_TAP = 7
 3173         FEEDBACK_TOUCH_DOUBLETAP = 8
 3174         FEEDBACK_TOUCH_PRESSANDHOLD = 9
 3175         FEEDBACK_TOUCH_RIGHTTAP = 10
 3176         FEEDBACK_GESTURE_PRESSANDTAP = 11
 3177         FEEDBACK_MAX = &hffffffff
 3178     end enum
 3179 
 3180     type FEEDBACK_TYPE as tagFEEDBACK_TYPE
 3181 
 3182     type tagPOINTER_BUTTON_CHANGE_TYPE as long
 3183     enum
 3184         POINTER_CHANGE_NONE
 3185         POINTER_CHANGE_FIRSTBUTTON_DOWN
 3186         POINTER_CHANGE_FIRSTBUTTON_UP
 3187         POINTER_CHANGE_SECONDBUTTON_DOWN
 3188         POINTER_CHANGE_SECONDBUTTON_UP
 3189         POINTER_CHANGE_THIRDBUTTON_DOWN
 3190         POINTER_CHANGE_THIRDBUTTON_UP
 3191         POINTER_CHANGE_FOURTHBUTTON_DOWN
 3192         POINTER_CHANGE_FOURTHBUTTON_UP
 3193         POINTER_CHANGE_FIFTHBUTTON_DOWN
 3194         POINTER_CHANGE_FIFTHBUTTON_UP
 3195     end enum
 3196 
 3197     type POINTER_BUTTON_CHANGE_TYPE as tagPOINTER_BUTTON_CHANGE_TYPE
 3198 
 3199     type tagPOINTER_INFO
 3200         pointerType as POINTER_INPUT_TYPE
 3201         pointerId as UINT32
 3202         frameId as UINT32
 3203         pointerFlags as POINTER_FLAGS
 3204         sourceDevice as HANDLE
 3205         hwndTarget as HWND
 3206         ptPixelLocation as POINT
 3207         ptHimetricLocation as POINT
 3208         ptPixelLocationRaw as POINT
 3209         ptHimetricLocationRaw as POINT
 3210         dwTime as DWORD
 3211         historyCount as UINT32
 3212         InputData as INT32
 3213         dwKeyStates as DWORD
 3214         PerformanceCount as UINT64
 3215         ButtonChangeType as POINTER_BUTTON_CHANGE_TYPE
 3216     end type
 3217 
 3218     type POINTER_INFO as tagPOINTER_INFO
 3219 
 3220     type tagPOINTER_TOUCH_INFO
 3221         pointerInfo as POINTER_INFO
 3222         touchFlags as TOUCH_FLAGS
 3223         touchMask as TOUCH_MASK
 3224         rcContact as RECT
 3225         rcContactRaw as RECT
 3226         orientation as UINT32
 3227         pressure as UINT32
 3228     end type
 3229 
 3230     type POINTER_TOUCH_INFO as tagPOINTER_TOUCH_INFO
 3231 
 3232     type tagPOINTER_PEN_INFO
 3233         pointerInfo as POINTER_INFO
 3234         penFlags as PEN_FLAGS
 3235         penMask as PEN_MASK
 3236         pressure as UINT32
 3237         rotation as UINT32
 3238         tiltX as INT32
 3239         tiltY as INT32
 3240     end type
 3241 
 3242     type POINTER_PEN_INFO as tagPOINTER_PEN_INFO
 3243 
 3244     type tagTOUCH_HIT_TESTING_PROXIMITY_EVALUATION
 3245         score as UINT16
 3246         adjustedPoint as POINT
 3247     end type
 3248 
 3249     type TOUCH_HIT_TESTING_PROXIMITY_EVALUATION as tagTOUCH_HIT_TESTING_PROXIMITY_EVALUATION
 3250     type PTOUCH_HIT_TESTING_PROXIMITY_EVALUATION as tagTOUCH_HIT_TESTING_PROXIMITY_EVALUATION ptr
 3251 
 3252     type tagTOUCH_HIT_TESTING_INPUT
 3253         pointerId as UINT32
 3254         point as POINT
 3255         boundingBox as RECT
 3256         nonOccludedBoundingBox as RECT
 3257         orientation as UINT32
 3258     end type
 3259 
 3260     type TOUCH_HIT_TESTING_INPUT as tagTOUCH_HIT_TESTING_INPUT
 3261     type PTOUCH_HIT_TESTING_INPUT as tagTOUCH_HIT_TESTING_INPUT ptr
 3262     declare function InitializeTouchInjection(byval maxCount as UINT32, byval dwMode as DWORD) as WINBOOL
 3263     declare function InjectTouchInput(byval count as UINT32, byval contacts as const POINTER_TOUCH_INFO ptr) as WINBOOL
 3264     declare function GetPointerType(byval pointerId as UINT32, byval pointerType as POINTER_INPUT_TYPE ptr) as WINBOOL
 3265     declare function GetPointerCursorId(byval pointerId as UINT32, byval cursorId as UINT32 ptr) as WINBOOL
 3266     declare function GetPointerInfo(byval pointerId as UINT32, byval pointerInfo as POINTER_INFO ptr) as WINBOOL
 3267     declare function GetPointerInfoHistory(byval pointerId as UINT32, byval entriesCount as UINT32 ptr, byval pointerInfo as POINTER_INFO ptr) as WINBOOL
 3268     declare function GetPointerFrameInfo(byval pointerId as UINT32, byval pointerCount as UINT32 ptr, byval pointerInfo as POINTER_INFO ptr) as WINBOOL
 3269     declare function GetPointerFrameInfoHistory(byval pointerId as UINT32, byval entriesCount as UINT32 ptr, byval pointerCount as UINT32 ptr, byval pointerInfo as POINTER_INFO ptr) as WINBOOL
 3270     declare function GetPointerTouchInfo(byval pointerId as UINT32, byval touchInfo as POINTER_TOUCH_INFO ptr) as WINBOOL
 3271     declare function GetPointerTouchInfoHistory(byval pointerId as UINT32, byval entriesCount as UINT32 ptr, byval touchInfo as POINTER_TOUCH_INFO ptr) as WINBOOL
 3272     declare function GetPointerFrameTouchInfo(byval pointerId as UINT32, byval pointerCount as UINT32 ptr, byval touchInfo as POINTER_TOUCH_INFO ptr) as WINBOOL
 3273     declare function GetPointerFrameTouchInfoHistory(byval pointerId as UINT32, byval entriesCount as UINT32 ptr, byval pointerCount as UINT32 ptr, byval touchInfo as POINTER_TOUCH_INFO ptr) as WINBOOL
 3274     declare function GetPointerPenInfo(byval pointerId as UINT32, byval penInfo as POINTER_PEN_INFO ptr) as WINBOOL
 3275     declare function GetPointerPenInfoHistory(byval pointerId as UINT32, byval entriesCount as UINT32 ptr, byval penInfo as POINTER_PEN_INFO ptr) as WINBOOL
 3276     declare function GetPointerFramePenInfo(byval pointerId as UINT32, byval pointerCount as UINT32 ptr, byval penInfo as POINTER_PEN_INFO ptr) as WINBOOL
 3277     declare function GetPointerFramePenInfoHistory(byval pointerId as UINT32, byval entriesCount as UINT32 ptr, byval pointerCount as UINT32 ptr, byval penInfo as POINTER_PEN_INFO ptr) as WINBOOL
 3278     declare function SkipPointerFrameMessages(byval pointerId as UINT32) as WINBOOL
 3279     declare function RegisterPointerInputTarget(byval hwnd as HWND, byval pointerType as POINTER_INPUT_TYPE) as WINBOOL
 3280     declare function UnregisterPointerInputTarget(byval hwnd as HWND, byval pointerType as POINTER_INPUT_TYPE) as WINBOOL
 3281     declare function EnableMouseInPointer(byval fEnable as WINBOOL) as WINBOOL
 3282     declare function IsMouseInPointerEnabled() as WINBOOL
 3283     declare function RegisterTouchHitTestingWindow(byval hwnd as HWND, byval value as ULONG) as WINBOOL
 3284     declare function EvaluateProximityToRect(byval controlBoundingBox as const RECT ptr, byval pHitTestingInput as const TOUCH_HIT_TESTING_INPUT ptr, byval pProximityEval as TOUCH_HIT_TESTING_PROXIMITY_EVALUATION ptr) as WINBOOL
 3285     declare function EvaluateProximityToPolygon(byval numVertices as UINT32, byval controlPolygon as const POINT ptr, byval pHitTestingInput as const TOUCH_HIT_TESTING_INPUT ptr, byval pProximityEval as TOUCH_HIT_TESTING_PROXIMITY_EVALUATION ptr) as WINBOOL
 3286     declare function PackTouchHitTestingProximityEvaluation(byval pHitTestingInput as const TOUCH_HIT_TESTING_INPUT ptr, byval pProximityEval as const TOUCH_HIT_TESTING_PROXIMITY_EVALUATION ptr) as LRESULT
 3287     declare function GetWindowFeedbackSetting(byval hwnd as HWND, byval feedback as FEEDBACK_TYPE, byval dwFlags as DWORD, byval pSize as UINT32 ptr, byval config as any ptr) as WINBOOL
 3288     declare function SetWindowFeedbackSetting(byval hwnd as HWND, byval feedback as FEEDBACK_TYPE, byval dwFlags as DWORD, byval size as UINT32, byval configuration as const any ptr) as WINBOOL
 3289 #endif
 3290 
 3291 type tagLASTINPUTINFO
 3292     cbSize as UINT
 3293     dwTime as DWORD
 3294 end type
 3295 
 3296 type LASTINPUTINFO as tagLASTINPUTINFO
 3297 type PLASTINPUTINFO as tagLASTINPUTINFO ptr
 3298 declare function GetLastInputInfo(byval plii as PLASTINPUTINFO) as WINBOOL
 3299 declare function MapVirtualKeyA(byval uCode as UINT, byval uMapType as UINT) as UINT
 3300 
 3301 #ifndef UNICODE
 3302     declare function MapVirtualKey alias "MapVirtualKeyA"(byval uCode as UINT, byval uMapType as UINT) as UINT
 3303 #endif
 3304 
 3305 declare function MapVirtualKeyW(byval uCode as UINT, byval uMapType as UINT) as UINT
 3306 
 3307 #ifdef UNICODE
 3308     declare function MapVirtualKey alias "MapVirtualKeyW"(byval uCode as UINT, byval uMapType as UINT) as UINT
 3309 #endif
 3310 
 3311 declare function MapVirtualKeyExA(byval uCode as UINT, byval uMapType as UINT, byval dwhkl as HKL) as UINT
 3312 
 3313 #ifndef UNICODE
 3314     declare function MapVirtualKeyEx alias "MapVirtualKeyExA"(byval uCode as UINT, byval uMapType as UINT, byval dwhkl as HKL) as UINT
 3315 #endif
 3316 
 3317 declare function MapVirtualKeyExW(byval uCode as UINT, byval uMapType as UINT, byval dwhkl as HKL) as UINT
 3318 
 3319 #ifdef UNICODE
 3320     declare function MapVirtualKeyEx alias "MapVirtualKeyExW"(byval uCode as UINT, byval uMapType as UINT, byval dwhkl as HKL) as UINT
 3321 #endif
 3322 
 3323 declare function GetInputState() as WINBOOL
 3324 declare function GetQueueStatus(byval flags as UINT) as DWORD
 3325 declare function GetCapture() as HWND
 3326 declare function SetCapture(byval hWnd as HWND) as HWND
 3327 declare function ReleaseCapture() as WINBOOL
 3328 declare function MsgWaitForMultipleObjects(byval nCount as DWORD, byval pHandles as const HANDLE ptr, byval fWaitAll as WINBOOL, byval dwMilliseconds as DWORD, byval dwWakeMask as DWORD) as DWORD
 3329 declare function MsgWaitForMultipleObjectsEx(byval nCount as DWORD, byval pHandles as const HANDLE ptr, byval dwMilliseconds as DWORD, byval dwWakeMask as DWORD, byval dwFlags as DWORD) as DWORD
 3330 
 3331 const MAPVK_VK_TO_VSC = 0
 3332 const MAPVK_VSC_TO_VK = 1
 3333 const MAPVK_VK_TO_CHAR = 2
 3334 const MAPVK_VSC_TO_VK_EX = 3
 3335 
 3336 #if _WIN32_WINNT >= &h0600
 3337     const MAPVK_VK_TO_VSC_EX = 4
 3338 #endif
 3339 
 3340 const MWMO_WAITALL = &h0001
 3341 const MWMO_ALERTABLE = &h0002
 3342 const MWMO_INPUTAVAILABLE = &h0004
 3343 const QS_KEY = &h0001
 3344 const QS_MOUSEMOVE = &h0002
 3345 const QS_MOUSEBUTTON = &h0004
 3346 const QS_POSTMESSAGE = &h0008
 3347 const QS_TIMER = &h0010
 3348 const QS_PAINT = &h0020
 3349 const QS_SENDMESSAGE = &h0040
 3350 const QS_HOTKEY = &h0080
 3351 const QS_ALLPOSTMESSAGE = &h0100
 3352 const QS_RAWINPUT = &h0400
 3353 
 3354 #if _WIN32_WINNT = &h0602
 3355     const QS_TOUCH = &h0800
 3356     const QS_POINTER = &h1000
 3357 #endif
 3358 
 3359 const QS_MOUSE = QS_MOUSEMOVE or QS_MOUSEBUTTON
 3360 
 3361 #if _WIN32_WINNT = &h0602
 3362     const QS_INPUT = (((QS_MOUSE or QS_KEY) or QS_RAWINPUT) or QS_TOUCH) or QS_POINTER
 3363 #else
 3364     const QS_INPUT = (QS_MOUSE or QS_KEY) or QS_RAWINPUT
 3365 #endif
 3366 
 3367 const QS_ALLEVENTS = (((QS_INPUT or QS_POSTMESSAGE) or QS_TIMER) or QS_PAINT) or QS_HOTKEY
 3368 const QS_ALLINPUT = ((((QS_INPUT or QS_POSTMESSAGE) or QS_TIMER) or QS_PAINT) or QS_HOTKEY) or QS_SENDMESSAGE
 3369 const USER_TIMER_MAXIMUM = &h7FFFFFFF
 3370 const USER_TIMER_MINIMUM = &h0000000A
 3371 
 3372 #if _WIN32_WINNT >= &h0601
 3373     const TIMERV_DEFAULT_COALESCING = 0
 3374     const TIMERV_NO_COALESCING = &hffffffff
 3375     const TIMERV_COALESCING_MIN = 1
 3376     const TIMERV_COALESCING_MAX = &h7ffffff5
 3377 #endif
 3378 
 3379 declare function SetTimer(byval hWnd as HWND, byval nIDEvent as UINT_PTR, byval uElapse as UINT, byval lpTimerFunc as TIMERPROC) as UINT_PTR
 3380 declare function KillTimer(byval hWnd as HWND, byval uIDEvent as UINT_PTR) as WINBOOL
 3381 declare function IsWindowUnicode(byval hWnd as HWND) as WINBOOL
 3382 declare function EnableWindow(byval hWnd as HWND, byval bEnable as WINBOOL) as WINBOOL
 3383 declare function IsWindowEnabled(byval hWnd as HWND) as WINBOOL
 3384 declare function LoadAcceleratorsA(byval hInstance as HINSTANCE, byval lpTableName as LPCSTR) as HACCEL
 3385 
 3386 #ifndef UNICODE
 3387     declare function LoadAccelerators alias "LoadAcceleratorsA"(byval hInstance as HINSTANCE, byval lpTableName as LPCSTR) as HACCEL
 3388 #endif
 3389 
 3390 declare function LoadAcceleratorsW(byval hInstance as HINSTANCE, byval lpTableName as LPCWSTR) as HACCEL
 3391 
 3392 #ifdef UNICODE
 3393     declare function LoadAccelerators alias "LoadAcceleratorsW"(byval hInstance as HINSTANCE, byval lpTableName as LPCWSTR) as HACCEL
 3394 #endif
 3395 
 3396 declare function CreateAcceleratorTableA(byval paccel as LPACCEL, byval cAccel as long) as HACCEL
 3397 
 3398 #ifndef UNICODE
 3399     declare function CreateAcceleratorTable alias "CreateAcceleratorTableA"(byval paccel as LPACCEL, byval cAccel as long) as HACCEL
 3400 #endif
 3401 
 3402 declare function CreateAcceleratorTableW(byval paccel as LPACCEL, byval cAccel as long) as HACCEL
 3403 
 3404 #ifdef UNICODE
 3405     declare function CreateAcceleratorTable alias "CreateAcceleratorTableW"(byval paccel as LPACCEL, byval cAccel as long) as HACCEL
 3406 #endif
 3407 
 3408 declare function DestroyAcceleratorTable(byval hAccel as HACCEL) as WINBOOL
 3409 declare function CopyAcceleratorTableA(byval hAccelSrc as HACCEL, byval lpAccelDst as LPACCEL, byval cAccelEntries as long) as long
 3410 
 3411 #ifndef UNICODE
 3412     declare function CopyAcceleratorTable alias "CopyAcceleratorTableA"(byval hAccelSrc as HACCEL, byval lpAccelDst as LPACCEL, byval cAccelEntries as long) as long
 3413 #endif
 3414 
 3415 declare function CopyAcceleratorTableW(byval hAccelSrc as HACCEL, byval lpAccelDst as LPACCEL, byval cAccelEntries as long) as long
 3416 
 3417 #ifdef UNICODE
 3418     declare function CopyAcceleratorTable alias "CopyAcceleratorTableW"(byval hAccelSrc as HACCEL, byval lpAccelDst as LPACCEL, byval cAccelEntries as long) as long
 3419 #endif
 3420 
 3421 declare function TranslateAcceleratorA(byval hWnd as HWND, byval hAccTable as HACCEL, byval lpMsg as LPMSG) as long
 3422 
 3423 #ifndef UNICODE
 3424     declare function TranslateAccelerator alias "TranslateAcceleratorA"(byval hWnd as HWND, byval hAccTable as HACCEL, byval lpMsg as LPMSG) as long
 3425 #endif
 3426 
 3427 declare function TranslateAcceleratorW(byval hWnd as HWND, byval hAccTable as HACCEL, byval lpMsg as LPMSG) as long
 3428 
 3429 #ifdef UNICODE
 3430     declare function TranslateAccelerator alias "TranslateAcceleratorW"(byval hWnd as HWND, byval hAccTable as HACCEL, byval lpMsg as LPMSG) as long
 3431 #endif
 3432 
 3433 #if _WIN32_WINNT >= &h0601
 3434     declare function SetCoalescableTimer(byval hWnd as HWND, byval nIDEvent as UINT_PTR, byval uElapse as UINT, byval lpTimerFunc as TIMERPROC, byval uToleranceDelay as ULONG) as UINT_PTR
 3435 #endif
 3436 
 3437 const SM_CXSCREEN = 0
 3438 const SM_CYSCREEN = 1
 3439 const SM_CXVSCROLL = 2
 3440 const SM_CYHSCROLL = 3
 3441 const SM_CYCAPTION = 4
 3442 const SM_CXBORDER = 5
 3443 const SM_CYBORDER = 6
 3444 const SM_CXDLGFRAME = 7
 3445 const SM_CYDLGFRAME = 8
 3446 const SM_CYVTHUMB = 9
 3447 const SM_CXHTHUMB = 10
 3448 const SM_CXICON = 11
 3449 const SM_CYICON = 12
 3450 const SM_CXCURSOR = 13
 3451 const SM_CYCURSOR = 14
 3452 const SM_CYMENU = 15
 3453 const SM_CXFULLSCREEN = 16
 3454 const SM_CYFULLSCREEN = 17
 3455 const SM_CYKANJIWINDOW = 18
 3456 const SM_MOUSEPRESENT = 19
 3457 const SM_CYVSCROLL = 20
 3458 const SM_CXHSCROLL = 21
 3459 const SM_DEBUG = 22
 3460 const SM_SWAPBUTTON = 23
 3461 const SM_RESERVED1 = 24
 3462 const SM_RESERVED2 = 25
 3463 const SM_RESERVED3 = 26
 3464 const SM_RESERVED4 = 27
 3465 const SM_CXMIN = 28
 3466 const SM_CYMIN = 29
 3467 const SM_CXSIZE = 30
 3468 const SM_CYSIZE = 31
 3469 const SM_CXFRAME = 32
 3470 const SM_CYFRAME = 33
 3471 const SM_CXMINTRACK = 34
 3472 const SM_CYMINTRACK = 35
 3473 const SM_CXDOUBLECLK = 36
 3474 const SM_CYDOUBLECLK = 37
 3475 const SM_CXICONSPACING = 38
 3476 const SM_CYICONSPACING = 39
 3477 const SM_MENUDROPALIGNMENT = 40
 3478 const SM_PENWINDOWS = 41
 3479 const SM_DBCSENABLED = 42
 3480 const SM_CMOUSEBUTTONS = 43
 3481 const SM_CXFIXEDFRAME = SM_CXDLGFRAME
 3482 const SM_CYFIXEDFRAME = SM_CYDLGFRAME
 3483 const SM_CXSIZEFRAME = SM_CXFRAME
 3484 const SM_CYSIZEFRAME = SM_CYFRAME
 3485 const SM_SECURE = 44
 3486 const SM_CXEDGE = 45
 3487 const SM_CYEDGE = 46
 3488 const SM_CXMINSPACING = 47
 3489 const SM_CYMINSPACING = 48
 3490 const SM_CXSMICON = 49
 3491 const SM_CYSMICON = 50
 3492 const SM_CYSMCAPTION = 51
 3493 const SM_CXSMSIZE = 52
 3494 const SM_CYSMSIZE = 53
 3495 const SM_CXMENUSIZE = 54
 3496 const SM_CYMENUSIZE = 55
 3497 const SM_ARRANGE = 56
 3498 const SM_CXMINIMIZED = 57
 3499 const SM_CYMINIMIZED = 58
 3500 const SM_CXMAXTRACK = 59
 3501 const SM_CYMAXTRACK = 60
 3502 const SM_CXMAXIMIZED = 61
 3503 const SM_CYMAXIMIZED = 62
 3504 const SM_NETWORK = 63
 3505 const SM_CLEANBOOT = 67
 3506 const SM_CXDRAG = 68
 3507 const SM_CYDRAG = 69
 3508 const SM_SHOWSOUNDS = 70
 3509 const SM_CXMENUCHECK = 71
 3510 const SM_CYMENUCHECK = 72
 3511 const SM_SLOWMACHINE = 73
 3512 const SM_MIDEASTENABLED = 74
 3513 const SM_MOUSEWHEELPRESENT = 75
 3514 const SM_XVIRTUALSCREEN = 76
 3515 const SM_YVIRTUALSCREEN = 77
 3516 const SM_CXVIRTUALSCREEN = 78
 3517 const SM_CYVIRTUALSCREEN = 79
 3518 const SM_CMONITORS = 80
 3519 const SM_SAMEDISPLAYFORMAT = 81
 3520 const SM_IMMENABLED = 82
 3521 const SM_CXFOCUSBORDER = 83
 3522 const SM_CYFOCUSBORDER = 84
 3523 const SM_TABLETPC = 86
 3524 const SM_MEDIACENTER = 87
 3525 const SM_STARTER = 88
 3526 const SM_SERVERR2 = 89
 3527 
 3528 #if _WIN32_WINNT <= &h0501
 3529     const SM_CMETRICS = 91
 3530 #elseif (not defined(__FB_64BIT__)) and defined(UNICODE) and (_WIN32_WINNT = &h0502)
 3531     const SM_CMETRICS = 97
 3532 #elseif _WIN32_WINNT >= &h0600
 3533     const SM_MOUSEHORIZONTALWHEELPRESENT = 91
 3534     const SM_CXPADDEDBORDER = 92
 3535 #endif
 3536 
 3537 #if _WIN32_WINNT = &h0600
 3538     const SM_CMETRICS = 93
 3539 #elseif _WIN32_WINNT >= &h0601
 3540     const SM_DIGITIZER = 94
 3541     const SM_MAXIMUMTOUCHES = 95
 3542 #endif
 3543 
 3544 #if ((not defined(UNICODE)) and ((_WIN32_WINNT = &h0502) or (_WIN32_WINNT >= &h0601))) or (defined(UNICODE) and ((defined(__FB_64BIT__) and ((_WIN32_WINNT = &h0502) or (_WIN32_WINNT >= &h0601))) or ((not defined(__FB_64BIT__)) and (_WIN32_WINNT >= &h0601))))
 3545     const SM_CMETRICS = 97
 3546 #endif
 3547 
 3548 const SM_REMOTESESSION = &h1000
 3549 const SM_SHUTTINGDOWN = &h2000
 3550 const SM_REMOTECONTROL = &h2001
 3551 const SM_CARETBLINKINGENABLED = &h2002
 3552 
 3553 #if _WIN32_WINNT = &h0602
 3554     const SM_CONVERTIBLESLATEMODE = &h2003
 3555     const SM_SYSTEMDOCKED = &h2004
 3556 #endif
 3557 
 3558 declare function GetSystemMetrics(byval nIndex as long) as long
 3559 const PMB_ACTIVE = &h00000001
 3560 const MNC_IGNORE = 0
 3561 const MNC_CLOSE = 1
 3562 const MNC_EXECUTE = 2
 3563 const MNC_SELECT = 3
 3564 const MNS_NOCHECK = &h80000000
 3565 const MNS_MODELESS = &h40000000
 3566 const MNS_DRAGDROP = &h20000000
 3567 const MNS_AUTODISMISS = &h10000000
 3568 const MNS_NOTIFYBYPOS = &h08000000
 3569 const MNS_CHECKORBMP = &h04000000
 3570 const MIM_MAXHEIGHT = &h00000001
 3571 const MIM_BACKGROUND = &h00000002
 3572 const MIM_HELPID = &h00000004
 3573 const MIM_MENUDATA = &h00000008
 3574 const MIM_STYLE = &h00000010
 3575 const MIM_APPLYTOSUBMENUS = &h80000000
 3576 const MND_CONTINUE = 0
 3577 const MND_ENDMENU = 1
 3578 const MNGOF_TOPGAP = &h00000001
 3579 const MNGOF_BOTTOMGAP = &h00000002
 3580 const MNGO_NOINTERFACE = &h00000000
 3581 const MNGO_NOERROR = &h00000001
 3582 const MIIM_STATE = &h00000001
 3583 const MIIM_ID = &h00000002
 3584 const MIIM_SUBMENU = &h00000004
 3585 const MIIM_CHECKMARKS = &h00000008
 3586 const MIIM_TYPE = &h00000010
 3587 const MIIM_DATA = &h00000020
 3588 const MIIM_STRING = &h00000040
 3589 const MIIM_BITMAP = &h00000080
 3590 const MIIM_FTYPE = &h00000100
 3591 const HBMMENU_CALLBACK = cast(HBITMAP, -1)
 3592 const HBMMENU_SYSTEM = cast(HBITMAP, 1)
 3593 const HBMMENU_MBAR_RESTORE = cast(HBITMAP, 2)
 3594 const HBMMENU_MBAR_MINIMIZE = cast(HBITMAP, 3)
 3595 const HBMMENU_MBAR_CLOSE = cast(HBITMAP, 5)
 3596 const HBMMENU_MBAR_CLOSE_D = cast(HBITMAP, 6)
 3597 const HBMMENU_MBAR_MINIMIZE_D = cast(HBITMAP, 7)
 3598 const HBMMENU_POPUP_CLOSE = cast(HBITMAP, 8)
 3599 const HBMMENU_POPUP_RESTORE = cast(HBITMAP, 9)
 3600 const HBMMENU_POPUP_MAXIMIZE = cast(HBITMAP, 10)
 3601 const HBMMENU_POPUP_MINIMIZE = cast(HBITMAP, 11)
 3602 declare function LoadMenuA(byval hInstance as HINSTANCE, byval lpMenuName as LPCSTR) as HMENU
 3603 
 3604 #ifndef UNICODE
 3605     declare function LoadMenu alias "LoadMenuA"(byval hInstance as HINSTANCE, byval lpMenuName as LPCSTR) as HMENU
 3606 #endif
 3607 
 3608 declare function LoadMenuW(byval hInstance as HINSTANCE, byval lpMenuName as LPCWSTR) as HMENU
 3609 
 3610 #ifdef UNICODE
 3611     declare function LoadMenu alias "LoadMenuW"(byval hInstance as HINSTANCE, byval lpMenuName as LPCWSTR) as HMENU
 3612 #endif
 3613 
 3614 declare function LoadMenuIndirectA(byval lpMenuTemplate as const MENUTEMPLATEA ptr) as HMENU
 3615 
 3616 #ifndef UNICODE
 3617     declare function LoadMenuIndirect alias "LoadMenuIndirectA"(byval lpMenuTemplate as const MENUTEMPLATEA ptr) as HMENU
 3618 #endif
 3619 
 3620 declare function LoadMenuIndirectW(byval lpMenuTemplate as const MENUTEMPLATEW ptr) as HMENU
 3621 
 3622 #ifdef UNICODE
 3623     declare function LoadMenuIndirect alias "LoadMenuIndirectW"(byval lpMenuTemplate as const MENUTEMPLATEW ptr) as HMENU
 3624 #endif
 3625 
 3626 declare function GetMenu(byval hWnd as HWND) as HMENU
 3627 declare function SetMenu(byval hWnd as HWND, byval hMenu as HMENU) as WINBOOL
 3628 declare function ChangeMenuA(byval hMenu as HMENU, byval cmd as UINT, byval lpszNewItem as LPCSTR, byval cmdInsert as UINT, byval flags as UINT) as WINBOOL
 3629 
 3630 #ifndef UNICODE
 3631     declare function ChangeMenu alias "ChangeMenuA"(byval hMenu as HMENU, byval cmd as UINT, byval lpszNewItem as LPCSTR, byval cmdInsert as UINT, byval flags as UINT) as WINBOOL
 3632 #endif
 3633 
 3634 declare function ChangeMenuW(byval hMenu as HMENU, byval cmd as UINT, byval lpszNewItem as LPCWSTR, byval cmdInsert as UINT, byval flags as UINT) as WINBOOL
 3635 
 3636 #ifdef UNICODE
 3637     declare function ChangeMenu alias "ChangeMenuW"(byval hMenu as HMENU, byval cmd as UINT, byval lpszNewItem as LPCWSTR, byval cmdInsert as UINT, byval flags as UINT) as WINBOOL
 3638 #endif
 3639 
 3640 declare function HiliteMenuItem(byval hWnd as HWND, byval hMenu as HMENU, byval uIDHiliteItem as UINT, byval uHilite as UINT) as WINBOOL
 3641 declare function GetMenuStringA(byval hMenu as HMENU, byval uIDItem as UINT, byval lpString as LPSTR, byval cchMax as long, byval flags as UINT) as long
 3642 
 3643 #ifndef UNICODE
 3644     declare function GetMenuString alias "GetMenuStringA"(byval hMenu as HMENU, byval uIDItem as UINT, byval lpString as LPSTR, byval cchMax as long, byval flags as UINT) as long
 3645 #endif
 3646 
 3647 declare function GetMenuStringW(byval hMenu as HMENU, byval uIDItem as UINT, byval lpString as LPWSTR, byval cchMax as long, byval flags as UINT) as long
 3648 
 3649 #ifdef UNICODE
 3650     declare function GetMenuString alias "GetMenuStringW"(byval hMenu as HMENU, byval uIDItem as UINT, byval lpString as LPWSTR, byval cchMax as long, byval flags as UINT) as long
 3651 #endif
 3652 
 3653 declare function GetMenuState(byval hMenu as HMENU, byval uId as UINT, byval uFlags as UINT) as UINT
 3654 declare function DrawMenuBar(byval hWnd as HWND) as WINBOOL
 3655 declare function GetSystemMenu(byval hWnd as HWND, byval bRevert as WINBOOL) as HMENU
 3656 declare function CreateMenu() as HMENU
 3657 declare function CreatePopupMenu() as HMENU
 3658 declare function DestroyMenu(byval hMenu as HMENU) as WINBOOL
 3659 declare function CheckMenuItem(byval hMenu as HMENU, byval uIDCheckItem as UINT, byval uCheck as UINT) as DWORD
 3660 declare function EnableMenuItem(byval hMenu as HMENU, byval uIDEnableItem as UINT, byval uEnable as UINT) as WINBOOL
 3661 declare function GetSubMenu(byval hMenu as HMENU, byval nPos as long) as HMENU
 3662 declare function GetMenuItemID(byval hMenu as HMENU, byval nPos as long) as UINT
 3663 declare function GetMenuItemCount(byval hMenu as HMENU) as long
 3664 declare function InsertMenuA(byval hMenu as HMENU, byval uPosition as UINT, byval uFlags as UINT, byval uIDNewItem as UINT_PTR, byval lpNewItem as LPCSTR) as WINBOOL
 3665 
 3666 #ifndef UNICODE
 3667     declare function InsertMenu alias "InsertMenuA"(byval hMenu as HMENU, byval uPosition as UINT, byval uFlags as UINT, byval uIDNewItem as UINT_PTR, byval lpNewItem as LPCSTR) as WINBOOL
 3668 #endif
 3669 
 3670 declare function InsertMenuW(byval hMenu as HMENU, byval uPosition as UINT, byval uFlags as UINT, byval uIDNewItem as UINT_PTR, byval lpNewItem as LPCWSTR) as WINBOOL
 3671 
 3672 #ifdef UNICODE
 3673     declare function InsertMenu alias "InsertMenuW"(byval hMenu as HMENU, byval uPosition as UINT, byval uFlags as UINT, byval uIDNewItem as UINT_PTR, byval lpNewItem as LPCWSTR) as WINBOOL
 3674 #endif
 3675 
 3676 declare function AppendMenuA(byval hMenu as HMENU, byval uFlags as UINT, byval uIDNewItem as UINT_PTR, byval lpNewItem as LPCSTR) as WINBOOL
 3677 
 3678 #ifndef UNICODE
 3679     declare function AppendMenu alias "AppendMenuA"(byval hMenu as HMENU, byval uFlags as UINT, byval uIDNewItem as UINT_PTR, byval lpNewItem as LPCSTR) as WINBOOL
 3680 #endif
 3681 
 3682 declare function AppendMenuW(byval hMenu as HMENU, byval uFlags as UINT, byval uIDNewItem as UINT_PTR, byval lpNewItem as LPCWSTR) as WINBOOL
 3683 
 3684 #ifdef UNICODE
 3685     declare function AppendMenu alias "AppendMenuW"(byval hMenu as HMENU, byval uFlags as UINT, byval uIDNewItem as UINT_PTR, byval lpNewItem as LPCWSTR) as WINBOOL
 3686 #endif
 3687 
 3688 declare function ModifyMenuA(byval hMnu as HMENU, byval uPosition as UINT, byval uFlags as UINT, byval uIDNewItem as UINT_PTR, byval lpNewItem as LPCSTR) as WINBOOL
 3689 
 3690 #ifndef UNICODE
 3691     declare function ModifyMenu alias "ModifyMenuA"(byval hMnu as HMENU, byval uPosition as UINT, byval uFlags as UINT, byval uIDNewItem as UINT_PTR, byval lpNewItem as LPCSTR) as WINBOOL
 3692 #endif
 3693 
 3694 declare function ModifyMenuW(byval hMnu as HMENU, byval uPosition as UINT, byval uFlags as UINT, byval uIDNewItem as UINT_PTR, byval lpNewItem as LPCWSTR) as WINBOOL
 3695 
 3696 #ifdef UNICODE
 3697     declare function ModifyMenu alias "ModifyMenuW"(byval hMnu as HMENU, byval uPosition as UINT, byval uFlags as UINT, byval uIDNewItem as UINT_PTR, byval lpNewItem as LPCWSTR) as WINBOOL
 3698 #endif
 3699 
 3700 declare function RemoveMenu(byval hMenu as HMENU, byval uPosition as UINT, byval uFlags as UINT) as WINBOOL
 3701 declare function DeleteMenu(byval hMenu as HMENU, byval uPosition as UINT, byval uFlags as UINT) as WINBOOL
 3702 declare function SetMenuItemBitmaps(byval hMenu as HMENU, byval uPosition as UINT, byval uFlags as UINT, byval hBitmapUnchecked as HBITMAP, byval hBitmapChecked as HBITMAP) as WINBOOL
 3703 declare function GetMenuCheckMarkDimensions() as LONG
 3704 declare function TrackPopupMenu(byval hMenu as HMENU, byval uFlags as UINT, byval x as long, byval y as long, byval nReserved as long, byval hWnd as HWND, byval prcRect as const RECT ptr) as WINBOOL
 3705 
 3706 type tagTPMPARAMS
 3707     cbSize as UINT
 3708     rcExclude as RECT
 3709 end type
 3710 
 3711 type TPMPARAMS as tagTPMPARAMS
 3712 
 3713 type tagMENUINFO
 3714     cbSize as DWORD
 3715     fMask as DWORD
 3716     dwStyle as DWORD
 3717     cyMax as UINT
 3718     hbrBack as HBRUSH
 3719     dwContextHelpID as DWORD
 3720     dwMenuData as ULONG_PTR
 3721 end type
 3722 
 3723 type MENUINFO as tagMENUINFO
 3724 type LPMENUINFO as tagMENUINFO ptr
 3725 type LPTPMPARAMS as TPMPARAMS ptr
 3726 type LPCMENUINFO as const MENUINFO ptr
 3727 
 3728 declare function TrackPopupMenuEx(byval as HMENU, byval as UINT, byval as long, byval as long, byval as HWND, byval as LPTPMPARAMS) as WINBOOL
 3729 declare function GetMenuInfo(byval as HMENU, byval as LPMENUINFO) as WINBOOL
 3730 declare function SetMenuInfo(byval as HMENU, byval as LPCMENUINFO) as WINBOOL
 3731 declare function EndMenu() as WINBOOL
 3732 
 3733 #if _WIN32_WINNT >= &h0601
 3734     declare function CalculatePopupWindowPosition(byval anchorPoint as const POINT ptr, byval windowSize as const SIZE ptr, byval flags as UINT, byval excludeRect as RECT ptr, byval popupWindowPosition as RECT ptr) as WINBOOL
 3735 #endif
 3736 
 3737 type tagMENUGETOBJECTINFO
 3738     dwFlags as DWORD
 3739     uPos as UINT
 3740     hmenu as HMENU
 3741     riid as PVOID
 3742     pvObj as PVOID
 3743 end type
 3744 
 3745 type MENUGETOBJECTINFO as tagMENUGETOBJECTINFO
 3746 type PMENUGETOBJECTINFO as tagMENUGETOBJECTINFO ptr
 3747 
 3748 type tagMENUITEMINFOA
 3749     cbSize as UINT
 3750     fMask as UINT
 3751     fType as UINT
 3752     fState as UINT
 3753     wID as UINT
 3754     hSubMenu as HMENU
 3755     hbmpChecked as HBITMAP
 3756     hbmpUnchecked as HBITMAP
 3757     dwItemData as ULONG_PTR
 3758     dwTypeData as LPSTR
 3759     cch as UINT
 3760     hbmpItem as HBITMAP
 3761 end type
 3762 
 3763 type MENUITEMINFOA as tagMENUITEMINFOA
 3764 type LPMENUITEMINFOA as tagMENUITEMINFOA ptr
 3765 
 3766 type tagMENUITEMINFOW
 3767     cbSize as UINT
 3768     fMask as UINT
 3769     fType as UINT
 3770     fState as UINT
 3771     wID as UINT
 3772     hSubMenu as HMENU
 3773     hbmpChecked as HBITMAP
 3774     hbmpUnchecked as HBITMAP
 3775     dwItemData as ULONG_PTR
 3776     dwTypeData as LPWSTR
 3777     cch as UINT
 3778     hbmpItem as HBITMAP
 3779 end type
 3780 
 3781 type MENUITEMINFOW as tagMENUITEMINFOW
 3782 type LPMENUITEMINFOW as tagMENUITEMINFOW ptr
 3783 
 3784 #ifdef UNICODE
 3785     type MENUITEMINFO as MENUITEMINFOW
 3786     type LPMENUITEMINFO as LPMENUITEMINFOW
 3787 #else
 3788     type MENUITEMINFO as MENUITEMINFOA
 3789     type LPMENUITEMINFO as LPMENUITEMINFOA
 3790 #endif
 3791 
 3792 type LPCMENUITEMINFOA as const MENUITEMINFOA ptr
 3793 type LPCMENUITEMINFOW as const MENUITEMINFOW ptr
 3794 
 3795 #ifdef UNICODE
 3796     type LPCMENUITEMINFO as LPCMENUITEMINFOW
 3797 #else
 3798     type LPCMENUITEMINFO as LPCMENUITEMINFOA
 3799 #endif
 3800 
 3801 declare function InsertMenuItemA(byval hmenu as HMENU, byval item as UINT, byval fByPosition as WINBOOL, byval lpmi as LPCMENUITEMINFOA) as WINBOOL
 3802 
 3803 #ifndef UNICODE
 3804     declare function InsertMenuItem alias "InsertMenuItemA"(byval hmenu as HMENU, byval item as UINT, byval fByPosition as WINBOOL, byval lpmi as LPCMENUITEMINFOA) as WINBOOL
 3805 #endif
 3806 
 3807 declare function InsertMenuItemW(byval hmenu as HMENU, byval item as UINT, byval fByPosition as WINBOOL, byval lpmi as LPCMENUITEMINFOW) as WINBOOL
 3808 
 3809 #ifdef UNICODE
 3810     declare function InsertMenuItem alias "InsertMenuItemW"(byval hmenu as HMENU, byval item as UINT, byval fByPosition as WINBOOL, byval lpmi as LPCMENUITEMINFOW) as WINBOOL
 3811 #endif
 3812 
 3813 declare function GetMenuItemInfoA(byval hmenu as HMENU, byval item as UINT, byval fByPosition as WINBOOL, byval lpmii as LPMENUITEMINFOA) as WINBOOL
 3814 
 3815 #ifndef UNICODE
 3816     declare function GetMenuItemInfo alias "GetMenuItemInfoA"(byval hmenu as HMENU, byval item as UINT, byval fByPosition as WINBOOL, byval lpmii as LPMENUITEMINFOA) as WINBOOL
 3817 #endif
 3818 
 3819 declare function GetMenuItemInfoW(byval hmenu as HMENU, byval item as UINT, byval fByPosition as WINBOOL, byval lpmii as LPMENUITEMINFOW) as WINBOOL
 3820 
 3821 #ifdef UNICODE
 3822     declare function GetMenuItemInfo alias "GetMenuItemInfoW"(byval hmenu as HMENU, byval item as UINT, byval fByPosition as WINBOOL, byval lpmii as LPMENUITEMINFOW) as WINBOOL
 3823 #endif
 3824 
 3825 declare function SetMenuItemInfoA(byval hmenu as HMENU, byval item as UINT, byval fByPositon as WINBOOL, byval lpmii as LPCMENUITEMINFOA) as WINBOOL
 3826 
 3827 #ifndef UNICODE
 3828     declare function SetMenuItemInfo alias "SetMenuItemInfoA"(byval hmenu as HMENU, byval item as UINT, byval fByPositon as WINBOOL, byval lpmii as LPCMENUITEMINFOA) as WINBOOL
 3829 #endif
 3830 
 3831 declare function SetMenuItemInfoW(byval hmenu as HMENU, byval item as UINT, byval fByPositon as WINBOOL, byval lpmii as LPCMENUITEMINFOW) as WINBOOL
 3832 
 3833 #ifdef UNICODE
 3834     declare function SetMenuItemInfo alias "SetMenuItemInfoW"(byval hmenu as HMENU, byval item as UINT, byval fByPositon as WINBOOL, byval lpmii as LPCMENUITEMINFOW) as WINBOOL
 3835 #endif
 3836 
 3837 const GMDI_USEDISABLED = &h0001
 3838 const GMDI_GOINTOPOPUPS = &h0002
 3839 declare function GetMenuDefaultItem(byval hMenu as HMENU, byval fByPos as UINT, byval gmdiFlags as UINT) as UINT
 3840 declare function SetMenuDefaultItem(byval hMenu as HMENU, byval uItem as UINT, byval fByPos as UINT) as WINBOOL
 3841 declare function GetMenuItemRect(byval hWnd as HWND, byval hMenu as HMENU, byval uItem as UINT, byval lprcItem as LPRECT) as WINBOOL
 3842 declare function MenuItemFromPoint(byval hWnd as HWND, byval hMenu as HMENU, byval ptScreen as POINT) as long
 3843 
 3844 const TPM_LEFTBUTTON = &h0000
 3845 const TPM_RIGHTBUTTON = &h0002
 3846 const TPM_LEFTALIGN = &h0000
 3847 const TPM_CENTERALIGN = &h0004
 3848 const TPM_RIGHTALIGN = &h0008
 3849 const TPM_TOPALIGN = &h0000
 3850 const TPM_VCENTERALIGN = &h0010
 3851 const TPM_BOTTOMALIGN = &h0020
 3852 const TPM_HORIZONTAL = &h0000
 3853 const TPM_VERTICAL = &h0040
 3854 const TPM_NONOTIFY = &h0080
 3855 const TPM_RETURNCMD = &h0100
 3856 const TPM_RECURSE = &h0001
 3857 const TPM_HORPOSANIMATION = &h0400
 3858 const TPM_HORNEGANIMATION = &h0800
 3859 const TPM_VERPOSANIMATION = &h1000
 3860 const TPM_VERNEGANIMATION = &h2000
 3861 const TPM_NOANIMATION = &h4000
 3862 const TPM_LAYOUTRTL = &h8000
 3863 
 3864 #if _WIN32_WINNT >= &h0601
 3865     const TPM_WORKAREA = &h10000
 3866 #endif
 3867 
 3868 type tagDROPSTRUCT
 3869     hwndSource as HWND
 3870     hwndSink as HWND
 3871     wFmt as DWORD
 3872     dwData as ULONG_PTR
 3873     ptDrop as POINT
 3874     dwControlData as DWORD
 3875 end type
 3876 
 3877 type DROPSTRUCT as tagDROPSTRUCT
 3878 type PDROPSTRUCT as tagDROPSTRUCT ptr
 3879 type LPDROPSTRUCT as tagDROPSTRUCT ptr
 3880 
 3881 const DOF_EXECUTABLE = &h8001
 3882 const DOF_DOCUMENT = &h8002
 3883 const DOF_DIRECTORY = &h8003
 3884 const DOF_MULTIPLE = &h8004
 3885 const DOF_PROGMAN = &h0001
 3886 const DOF_SHELLDATA = &h0002
 3887 const DO_DROPFILE = &h454C4946
 3888 const DO_PRINTFILE = &h544E5250
 3889 
 3890 declare function DragObject(byval hwndParent as HWND, byval hwndFrom as HWND, byval fmt as UINT, byval data as ULONG_PTR, byval hcur as HCURSOR) as DWORD
 3891 declare function DragDetect(byval hwnd as HWND, byval pt as POINT) as WINBOOL
 3892 declare function DrawIcon(byval hDC as HDC, byval X as long, byval Y as long, byval hIcon as HICON) as WINBOOL
 3893 
 3894 const DT_TOP = &h00000000
 3895 const DT_LEFT = &h00000000
 3896 const DT_CENTER = &h00000001
 3897 const DT_RIGHT = &h00000002
 3898 const DT_VCENTER = &h00000004
 3899 const DT_BOTTOM = &h00000008
 3900 const DT_WORDBREAK = &h00000010
 3901 const DT_SINGLELINE = &h00000020
 3902 const DT_EXPANDTABS = &h00000040
 3903 const DT_TABSTOP = &h00000080
 3904 const DT_NOCLIP = &h00000100
 3905 const DT_EXTERNALLEADING = &h00000200
 3906 const DT_CALCRECT = &h00000400
 3907 const DT_NOPREFIX = &h00000800
 3908 const DT_INTERNAL = &h00001000
 3909 const DT_EDITCONTROL = &h00002000
 3910 const DT_PATH_ELLIPSIS = &h00004000
 3911 const DT_END_ELLIPSIS = &h00008000
 3912 const DT_MODIFYSTRING = &h00010000
 3913 const DT_RTLREADING = &h00020000
 3914 const DT_WORD_ELLIPSIS = &h00040000
 3915 const DT_NOFULLWIDTHCHARBREAK = &h00080000
 3916 const DT_HIDEPREFIX = &h00100000
 3917 const DT_PREFIXONLY = &h00200000
 3918 
 3919 type tagDRAWTEXTPARAMS
 3920     cbSize as UINT
 3921     iTabLength as long
 3922     iLeftMargin as long
 3923     iRightMargin as long
 3924     uiLengthDrawn as UINT
 3925 end type
 3926 
 3927 type DRAWTEXTPARAMS as tagDRAWTEXTPARAMS
 3928 type LPDRAWTEXTPARAMS as tagDRAWTEXTPARAMS ptr
 3929 declare function DrawTextA(byval hdc as HDC, byval lpchText as LPCSTR, byval cchText as long, byval lprc as LPRECT, byval format as UINT) as long
 3930 
 3931 #ifndef UNICODE
 3932     declare function DrawText alias "DrawTextA"(byval hdc as HDC, byval lpchText as LPCSTR, byval cchText as long, byval lprc as LPRECT, byval format as UINT) as long
 3933 #endif
 3934 
 3935 declare function DrawTextW(byval hdc as HDC, byval lpchText as LPCWSTR, byval cchText as long, byval lprc as LPRECT, byval format as UINT) as long
 3936 
 3937 #ifdef UNICODE
 3938     declare function DrawText alias "DrawTextW"(byval hdc as HDC, byval lpchText as LPCWSTR, byval cchText as long, byval lprc as LPRECT, byval format as UINT) as long
 3939 #endif
 3940 
 3941 declare function DrawTextExA(byval hdc as HDC, byval lpchText as LPSTR, byval cchText as long, byval lprc as LPRECT, byval format as UINT, byval lpdtp as LPDRAWTEXTPARAMS) as long
 3942 
 3943 #ifndef UNICODE
 3944     declare function DrawTextEx alias "DrawTextExA"(byval hdc as HDC, byval lpchText as LPSTR, byval cchText as long, byval lprc as LPRECT, byval format as UINT, byval lpdtp as LPDRAWTEXTPARAMS) as long
 3945 #endif
 3946 
 3947 declare function DrawTextExW(byval hdc as HDC, byval lpchText as LPWSTR, byval cchText as long, byval lprc as LPRECT, byval format as UINT, byval lpdtp as LPDRAWTEXTPARAMS) as long
 3948 
 3949 #ifdef UNICODE
 3950     declare function DrawTextEx alias "DrawTextExW"(byval hdc as HDC, byval lpchText as LPWSTR, byval cchText as long, byval lprc as LPRECT, byval format as UINT, byval lpdtp as LPDRAWTEXTPARAMS) as long
 3951 #endif
 3952 
 3953 declare function GrayStringA(byval hDC as HDC, byval hBrush as HBRUSH, byval lpOutputFunc as GRAYSTRINGPROC, byval lpData as LPARAM, byval nCount as long, byval X as long, byval Y as long, byval nWidth as long, byval nHeight as long) as WINBOOL
 3954 
 3955 #ifndef UNICODE
 3956     declare function GrayString alias "GrayStringA"(byval hDC as HDC, byval hBrush as HBRUSH, byval lpOutputFunc as GRAYSTRINGPROC, byval lpData as LPARAM, byval nCount as long, byval X as long, byval Y as long, byval nWidth as long, byval nHeight as long) as WINBOOL
 3957 #endif
 3958 
 3959 declare function GrayStringW(byval hDC as HDC, byval hBrush as HBRUSH, byval lpOutputFunc as GRAYSTRINGPROC, byval lpData as LPARAM, byval nCount as long, byval X as long, byval Y as long, byval nWidth as long, byval nHeight as long) as WINBOOL
 3960 
 3961 #ifdef UNICODE
 3962     declare function GrayString alias "GrayStringW"(byval hDC as HDC, byval hBrush as HBRUSH, byval lpOutputFunc as GRAYSTRINGPROC, byval lpData as LPARAM, byval nCount as long, byval X as long, byval Y as long, byval nWidth as long, byval nHeight as long) as WINBOOL
 3963 #endif
 3964 
 3965 declare function DrawStateA(byval hdc as HDC, byval hbrFore as HBRUSH, byval qfnCallBack as DRAWSTATEPROC, byval lData as LPARAM, byval wData as WPARAM, byval x as long, byval y as long, byval cx as long, byval cy as long, byval uFlags as UINT) as WINBOOL
 3966 
 3967 #ifndef UNICODE
 3968     declare function DrawState alias "DrawStateA"(byval hdc as HDC, byval hbrFore as HBRUSH, byval qfnCallBack as DRAWSTATEPROC, byval lData as LPARAM, byval wData as WPARAM, byval x as long, byval y as long, byval cx as long, byval cy as long, byval uFlags as UINT) as WINBOOL
 3969 #endif
 3970 
 3971 declare function DrawStateW(byval hdc as HDC, byval hbrFore as HBRUSH, byval qfnCallBack as DRAWSTATEPROC, byval lData as LPARAM, byval wData as WPARAM, byval x as long, byval y as long, byval cx as long, byval cy as long, byval uFlags as UINT) as WINBOOL
 3972 
 3973 #ifdef UNICODE
 3974     declare function DrawState alias "DrawStateW"(byval hdc as HDC, byval hbrFore as HBRUSH, byval qfnCallBack as DRAWSTATEPROC, byval lData as LPARAM, byval wData as WPARAM, byval x as long, byval y as long, byval cx as long, byval cy as long, byval uFlags as UINT) as WINBOOL
 3975 #endif
 3976 
 3977 declare function TabbedTextOutA(byval hdc as HDC, byval x as long, byval y as long, byval lpString as LPCSTR, byval chCount as long, byval nTabPositions as long, byval lpnTabStopPositions as const INT_ ptr, byval nTabOrigin as long) as LONG
 3978 
 3979 #ifndef UNICODE
 3980     declare function TabbedTextOut alias "TabbedTextOutA"(byval hdc as HDC, byval x as long, byval y as long, byval lpString as LPCSTR, byval chCount as long, byval nTabPositions as long, byval lpnTabStopPositions as const INT_ ptr, byval nTabOrigin as long) as LONG
 3981 #endif
 3982 
 3983 declare function TabbedTextOutW(byval hdc as HDC, byval x as long, byval y as long, byval lpString as LPCWSTR, byval chCount as long, byval nTabPositions as long, byval lpnTabStopPositions as const INT_ ptr, byval nTabOrigin as long) as LONG
 3984 
 3985 #ifdef UNICODE
 3986     declare function TabbedTextOut alias "TabbedTextOutW"(byval hdc as HDC, byval x as long, byval y as long, byval lpString as LPCWSTR, byval chCount as long, byval nTabPositions as long, byval lpnTabStopPositions as const INT_ ptr, byval nTabOrigin as long) as LONG
 3987 #endif
 3988 
 3989 declare function GetTabbedTextExtentA(byval hdc as HDC, byval lpString as LPCSTR, byval chCount as long, byval nTabPositions as long, byval lpnTabStopPositions as const INT_ ptr) as DWORD
 3990 
 3991 #ifndef UNICODE
 3992     declare function GetTabbedTextExtent alias "GetTabbedTextExtentA"(byval hdc as HDC, byval lpString as LPCSTR, byval chCount as long, byval nTabPositions as long, byval lpnTabStopPositions as const INT_ ptr) as DWORD
 3993 #endif
 3994 
 3995 declare function GetTabbedTextExtentW(byval hdc as HDC, byval lpString as LPCWSTR, byval chCount as long, byval nTabPositions as long, byval lpnTabStopPositions as const INT_ ptr) as DWORD
 3996 
 3997 #ifdef UNICODE
 3998     declare function GetTabbedTextExtent alias "GetTabbedTextExtentW"(byval hdc as HDC, byval lpString as LPCWSTR, byval chCount as long, byval nTabPositions as long, byval lpnTabStopPositions as const INT_ ptr) as DWORD
 3999 #endif
 4000 
 4001 declare function UpdateWindow(byval hWnd as HWND) as WINBOOL
 4002 declare function SetActiveWindow(byval hWnd as HWND) as HWND
 4003 declare function GetForegroundWindow() as HWND
 4004 declare function PaintDesktop(byval hdc as HDC) as WINBOOL
 4005 declare sub SwitchToThisWindow(byval hwnd as HWND, byval fUnknown as WINBOOL)
 4006 declare function SetForegroundWindow(byval hWnd as HWND) as WINBOOL
 4007 declare function AllowSetForegroundWindow(byval dwProcessId as DWORD) as WINBOOL
 4008 declare function LockSetForegroundWindow(byval uLockCode as UINT) as WINBOOL
 4009 declare function WindowFromDC(byval hDC as HDC) as HWND
 4010 declare function GetDC(byval hWnd as HWND) as HDC
 4011 declare function GetDCEx(byval hWnd as HWND, byval hrgnClip as HRGN, byval flags as DWORD) as HDC
 4012 
 4013 const DST_COMPLEX = &h0000
 4014 const DST_TEXT = &h0001
 4015 const DST_PREFIXTEXT = &h0002
 4016 const DST_ICON = &h0003
 4017 const DST_BITMAP = &h0004
 4018 const DSS_NORMAL = &h0000
 4019 const DSS_UNION = &h0010
 4020 const DSS_DISABLED = &h0020
 4021 const DSS_MONO = &h0080
 4022 const DSS_HIDEPREFIX = &h0200
 4023 const DSS_PREFIXONLY = &h0400
 4024 const DSS_RIGHT = &h8000
 4025 const ASFW_ANY = cast(DWORD, -1)
 4026 const LSFW_LOCK = 1
 4027 const LSFW_UNLOCK = 2
 4028 const DCX_WINDOW = &h00000001
 4029 const DCX_CACHE = &h00000002
 4030 const DCX_NORESETATTRS = &h00000004
 4031 const DCX_CLIPCHILDREN = &h00000008
 4032 const DCX_CLIPSIBLINGS = &h00000010
 4033 const DCX_PARENTCLIP = &h00000020
 4034 const DCX_EXCLUDERGN = &h00000040
 4035 const DCX_INTERSECTRGN = &h00000080
 4036 const DCX_EXCLUDEUPDATE = &h00000100
 4037 const DCX_INTERSECTUPDATE = &h00000200
 4038 const DCX_LOCKWINDOWUPDATE = &h00000400
 4039 const DCX_VALIDATE = &h00200000
 4040 
 4041 declare function GetWindowDC(byval hWnd as HWND) as HDC
 4042 declare function ReleaseDC(byval hWnd as HWND, byval hDC as HDC) as long
 4043 declare function BeginPaint(byval hWnd as HWND, byval lpPaint as LPPAINTSTRUCT) as HDC
 4044 declare function EndPaint(byval hWnd as HWND, byval lpPaint as const PAINTSTRUCT ptr) as WINBOOL
 4045 declare function GetUpdateRect(byval hWnd as HWND, byval lpRect as LPRECT, byval bErase as WINBOOL) as WINBOOL
 4046 declare function GetUpdateRgn(byval hWnd as HWND, byval hRgn as HRGN, byval bErase as WINBOOL) as long
 4047 declare function SetWindowRgn(byval hWnd as HWND, byval hRgn as HRGN, byval bRedraw as WINBOOL) as long
 4048 declare function GetWindowRgn(byval hWnd as HWND, byval hRgn as HRGN) as long
 4049 declare function GetWindowRgnBox(byval hWnd as HWND, byval lprc as LPRECT) as long
 4050 declare function ExcludeUpdateRgn(byval hDC as HDC, byval hWnd as HWND) as long
 4051 declare function InvalidateRect(byval hWnd as HWND, byval lpRect as const RECT ptr, byval bErase as WINBOOL) as WINBOOL
 4052 declare function ValidateRect(byval hWnd as HWND, byval lpRect as const RECT ptr) as WINBOOL
 4053 declare function InvalidateRgn(byval hWnd as HWND, byval hRgn as HRGN, byval bErase as WINBOOL) as WINBOOL
 4054 declare function ValidateRgn(byval hWnd as HWND, byval hRgn as HRGN) as WINBOOL
 4055 declare function RedrawWindow(byval hWnd as HWND, byval lprcUpdate as const RECT ptr, byval hrgnUpdate as HRGN, byval flags as UINT) as WINBOOL
 4056 
 4057 const RDW_INVALIDATE = &h0001
 4058 const RDW_INTERNALPAINT = &h0002
 4059 const RDW_ERASE = &h0004
 4060 const RDW_VALIDATE = &h0008
 4061 const RDW_NOINTERNALPAINT = &h0010
 4062 const RDW_NOERASE = &h0020
 4063 const RDW_NOCHILDREN = &h0040
 4064 const RDW_ALLCHILDREN = &h0080
 4065 const RDW_UPDATENOW = &h0100
 4066 const RDW_ERASENOW = &h0200
 4067 const RDW_FRAME = &h0400
 4068 const RDW_NOFRAME = &h0800
 4069 
 4070 declare function LockWindowUpdate(byval hWndLock as HWND) as WINBOOL
 4071 declare function ScrollWindow(byval hWnd as HWND, byval XAmount as long, byval YAmount as long, byval lpRect as const RECT ptr, byval lpClipRect as const RECT ptr) as WINBOOL
 4072 declare function ScrollDC(byval hDC as HDC, byval dx as long, byval dy as long, byval lprcScroll as const RECT ptr, byval lprcClip as const RECT ptr, byval hrgnUpdate as HRGN, byval lprcUpdate as LPRECT) as WINBOOL
 4073 declare function ScrollWindowEx(byval hWnd as HWND, byval dx as long, byval dy as long, byval prcScroll as const RECT ptr, byval prcClip as const RECT ptr, byval hrgnUpdate as HRGN, byval prcUpdate as LPRECT, byval flags as UINT) as long
 4074 
 4075 const SW_SCROLLCHILDREN = &h0001
 4076 const SW_INVALIDATE = &h0002
 4077 const SW_ERASE = &h0004
 4078 const SW_SMOOTHSCROLL = &h0010
 4079 
 4080 declare function SetScrollPos(byval hWnd as HWND, byval nBar as long, byval nPos as long, byval bRedraw as WINBOOL) as long
 4081 declare function GetScrollPos(byval hWnd as HWND, byval nBar as long) as long
 4082 declare function SetScrollRange(byval hWnd as HWND, byval nBar as long, byval nMinPos as long, byval nMaxPos as long, byval bRedraw as WINBOOL) as WINBOOL
 4083 declare function GetScrollRange(byval hWnd as HWND, byval nBar as long, byval lpMinPos as LPINT, byval lpMaxPos as LPINT) as WINBOOL
 4084 declare function ShowScrollBar(byval hWnd as HWND, byval wBar as long, byval bShow as WINBOOL) as WINBOOL
 4085 declare function EnableScrollBar(byval hWnd as HWND, byval wSBflags as UINT, byval wArrows as UINT) as WINBOOL
 4086 
 4087 const ESB_ENABLE_BOTH = &h0000
 4088 const ESB_DISABLE_BOTH = &h0003
 4089 const ESB_DISABLE_LEFT = &h0001
 4090 const ESB_DISABLE_RIGHT = &h0002
 4091 const ESB_DISABLE_UP = &h0001
 4092 const ESB_DISABLE_DOWN = &h0002
 4093 const ESB_DISABLE_LTUP = ESB_DISABLE_LEFT
 4094 const ESB_DISABLE_RTDN = ESB_DISABLE_RIGHT
 4095 declare function SetPropA(byval hWnd as HWND, byval lpString as LPCSTR, byval hData as HANDLE) as WINBOOL
 4096 
 4097 #ifndef UNICODE
 4098     declare function SetProp alias "SetPropA"(byval hWnd as HWND, byval lpString as LPCSTR, byval hData as HANDLE) as WINBOOL
 4099 #endif
 4100 
 4101 declare function SetPropW(byval hWnd as HWND, byval lpString as LPCWSTR, byval hData as HANDLE) as WINBOOL
 4102 
 4103 #ifdef UNICODE
 4104     declare function SetProp alias "SetPropW"(byval hWnd as HWND, byval lpString as LPCWSTR, byval hData as HANDLE) as WINBOOL
 4105 #endif
 4106 
 4107 declare function GetPropA(byval hWnd as HWND, byval lpString as LPCSTR) as HANDLE
 4108 
 4109 #ifndef UNICODE
 4110     declare function GetProp alias "GetPropA"(byval hWnd as HWND, byval lpString as LPCSTR) as HANDLE
 4111 #endif
 4112 
 4113 declare function GetPropW(byval hWnd as HWND, byval lpString as LPCWSTR) as HANDLE
 4114 
 4115 #ifdef UNICODE
 4116     declare function GetProp alias "GetPropW"(byval hWnd as HWND, byval lpString as LPCWSTR) as HANDLE
 4117 #endif
 4118 
 4119 declare function RemovePropA(byval hWnd as HWND, byval lpString as LPCSTR) as HANDLE
 4120 
 4121 #ifndef UNICODE
 4122     declare function RemoveProp alias "RemovePropA"(byval hWnd as HWND, byval lpString as LPCSTR) as HANDLE
 4123 #endif
 4124 
 4125 declare function RemovePropW(byval hWnd as HWND, byval lpString as LPCWSTR) as HANDLE
 4126 
 4127 #ifdef UNICODE
 4128     declare function RemoveProp alias "RemovePropW"(byval hWnd as HWND, byval lpString as LPCWSTR) as HANDLE
 4129 #endif
 4130 
 4131 declare function EnumPropsExA(byval hWnd as HWND, byval lpEnumFunc as PROPENUMPROCEXA, byval lParam as LPARAM) as long
 4132 
 4133 #ifndef UNICODE
 4134     declare function EnumPropsEx alias "EnumPropsExA"(byval hWnd as HWND, byval lpEnumFunc as PROPENUMPROCEXA, byval lParam as LPARAM) as long
 4135 #endif
 4136 
 4137 declare function EnumPropsExW(byval hWnd as HWND, byval lpEnumFunc as PROPENUMPROCEXW, byval lParam as LPARAM) as long
 4138 
 4139 #ifdef UNICODE
 4140     declare function EnumPropsEx alias "EnumPropsExW"(byval hWnd as HWND, byval lpEnumFunc as PROPENUMPROCEXW, byval lParam as LPARAM) as long
 4141 #endif
 4142 
 4143 declare function EnumPropsA(byval hWnd as HWND, byval lpEnumFunc as PROPENUMPROCA) as long
 4144 
 4145 #ifndef UNICODE
 4146     declare function EnumProps alias "EnumPropsA"(byval hWnd as HWND, byval lpEnumFunc as PROPENUMPROCA) as long
 4147 #endif
 4148 
 4149 declare function EnumPropsW(byval hWnd as HWND, byval lpEnumFunc as PROPENUMPROCW) as long
 4150 
 4151 #ifdef UNICODE
 4152     declare function EnumProps alias "EnumPropsW"(byval hWnd as HWND, byval lpEnumFunc as PROPENUMPROCW) as long
 4153 #endif
 4154 
 4155 declare function SetWindowTextA(byval hWnd as HWND, byval lpString as LPCSTR) as WINBOOL
 4156 
 4157 #ifndef UNICODE
 4158     declare function SetWindowText alias "SetWindowTextA"(byval hWnd as HWND, byval lpString as LPCSTR) as WINBOOL
 4159 #endif
 4160 
 4161 declare function SetWindowTextW(byval hWnd as HWND, byval lpString as LPCWSTR) as WINBOOL
 4162 
 4163 #ifdef UNICODE
 4164     declare function SetWindowText alias "SetWindowTextW"(byval hWnd as HWND, byval lpString as LPCWSTR) as WINBOOL
 4165 #endif
 4166 
 4167 declare function GetWindowTextA(byval hWnd as HWND, byval lpString as LPSTR, byval nMaxCount as long) as long
 4168 
 4169 #ifndef UNICODE
 4170     declare function GetWindowText alias "GetWindowTextA"(byval hWnd as HWND, byval lpString as LPSTR, byval nMaxCount as long) as long
 4171 #endif
 4172 
 4173 declare function GetWindowTextW(byval hWnd as HWND, byval lpString as LPWSTR, byval nMaxCount as long) as long
 4174 
 4175 #ifdef UNICODE
 4176     declare function GetWindowText alias "GetWindowTextW"(byval hWnd as HWND, byval lpString as LPWSTR, byval nMaxCount as long) as long
 4177 #endif
 4178 
 4179 declare function GetWindowTextLengthA(byval hWnd as HWND) as long
 4180 
 4181 #ifndef UNICODE
 4182     declare function GetWindowTextLength alias "GetWindowTextLengthA"(byval hWnd as HWND) as long
 4183 #endif
 4184 
 4185 declare function GetWindowTextLengthW(byval hWnd as HWND) as long
 4186 
 4187 #ifdef UNICODE
 4188     declare function GetWindowTextLength alias "GetWindowTextLengthW"(byval hWnd as HWND) as long
 4189 #endif
 4190 
 4191 declare function GetClientRect(byval hWnd as HWND, byval lpRect as LPRECT) as WINBOOL
 4192 declare function GetWindowRect(byval hWnd as HWND, byval lpRect as LPRECT) as WINBOOL
 4193 declare function AdjustWindowRect(byval lpRect as LPRECT, byval dwStyle as DWORD, byval bMenu as WINBOOL) as WINBOOL
 4194 declare function AdjustWindowRectEx(byval lpRect as LPRECT, byval dwStyle as DWORD, byval bMenu as WINBOOL, byval dwExStyle as DWORD) as WINBOOL
 4195 const HELPINFO_WINDOW = &h0001
 4196 const HELPINFO_MENUITEM = &h0002
 4197 
 4198 type tagHELPINFO
 4199     cbSize as UINT
 4200     iContextType as long
 4201     iCtrlId as long
 4202     hItemHandle as HANDLE
 4203     dwContextId as DWORD_PTR
 4204     MousePos as POINT
 4205 end type
 4206 
 4207 type HELPINFO as tagHELPINFO
 4208 type LPHELPINFO as tagHELPINFO ptr
 4209 declare function SetWindowContextHelpId(byval as HWND, byval as DWORD) as WINBOOL
 4210 declare function GetWindowContextHelpId(byval as HWND) as DWORD
 4211 declare function SetMenuContextHelpId(byval as HMENU, byval as DWORD) as WINBOOL
 4212 declare function GetMenuContextHelpId(byval as HMENU) as DWORD
 4213 
 4214 const MB_OK = &h00000000
 4215 const MB_OKCANCEL = &h00000001
 4216 const MB_ABORTRETRYIGNORE = &h00000002
 4217 const MB_YESNOCANCEL = &h00000003
 4218 const MB_YESNO = &h00000004
 4219 const MB_RETRYCANCEL = &h00000005
 4220 const MB_CANCELTRYCONTINUE = &h00000006
 4221 const MB_ICONHAND = &h00000010
 4222 const MB_ICONQUESTION = &h00000020
 4223 const MB_ICONEXCLAMATION = &h00000030
 4224 const MB_ICONASTERISK = &h00000040
 4225 const MB_USERICON = &h00000080
 4226 const MB_ICONWARNING = MB_ICONEXCLAMATION
 4227 const MB_ICONERROR = MB_ICONHAND
 4228 const MB_ICONINFORMATION = MB_ICONASTERISK
 4229 const MB_ICONSTOP = MB_ICONHAND
 4230 const MB_DEFBUTTON1 = &h00000000
 4231 const MB_DEFBUTTON2 = &h00000100
 4232 const MB_DEFBUTTON3 = &h00000200
 4233 const MB_DEFBUTTON4 = &h00000300
 4234 const MB_APPLMODAL = &h00000000
 4235 const MB_SYSTEMMODAL = &h00001000
 4236 const MB_TASKMODAL = &h00002000
 4237 const MB_HELP = &h00004000
 4238 const MB_NOFOCUS = &h00008000
 4239 const MB_SETFOREGROUND = &h00010000
 4240 const MB_DEFAULT_DESKTOP_ONLY = &h00020000
 4241 const MB_TOPMOST = &h00040000
 4242 const MB_RIGHT = &h00080000
 4243 const MB_RTLREADING = &h00100000
 4244 const MB_SERVICE_NOTIFICATION = &h00200000
 4245 const MB_SERVICE_NOTIFICATION_NT3X = &h00040000
 4246 const MB_TYPEMASK = &h0000000F
 4247 const MB_ICONMASK = &h000000F0
 4248 const MB_DEFMASK = &h00000F00
 4249 const MB_MODEMASK = &h00003000
 4250 const MB_MISCMASK = &h0000C000
 4251 declare function MessageBoxA(byval hWnd as HWND, byval lpText as LPCSTR, byval lpCaption as LPCSTR, byval uType as UINT) as long
 4252 
 4253 #ifndef UNICODE
 4254     declare function MessageBox alias "MessageBoxA"(byval hWnd as HWND, byval lpText as LPCSTR, byval lpCaption as LPCSTR, byval uType as UINT) as long
 4255 #endif
 4256 
 4257 declare function MessageBoxW(byval hWnd as HWND, byval lpText as LPCWSTR, byval lpCaption as LPCWSTR, byval uType as UINT) as long
 4258 
 4259 #ifdef UNICODE
 4260     declare function MessageBox alias "MessageBoxW"(byval hWnd as HWND, byval lpText as LPCWSTR, byval lpCaption as LPCWSTR, byval uType as UINT) as long
 4261 #endif
 4262 
 4263 declare function MessageBoxExA(byval hWnd as HWND, byval lpText as LPCSTR, byval lpCaption as LPCSTR, byval uType as UINT, byval wLanguageId as WORD) as long
 4264 
 4265 #ifndef UNICODE
 4266     declare function MessageBoxEx alias "MessageBoxExA"(byval hWnd as HWND, byval lpText as LPCSTR, byval lpCaption as LPCSTR, byval uType as UINT, byval wLanguageId as WORD) as long
 4267 #endif
 4268 
 4269 declare function MessageBoxExW(byval hWnd as HWND, byval lpText as LPCWSTR, byval lpCaption as LPCWSTR, byval uType as UINT, byval wLanguageId as WORD) as long
 4270 
 4271 #ifdef UNICODE
 4272     declare function MessageBoxEx alias "MessageBoxExW"(byval hWnd as HWND, byval lpText as LPCWSTR, byval lpCaption as LPCWSTR, byval uType as UINT, byval wLanguageId as WORD) as long
 4273 #endif
 4274 
 4275 type MSGBOXCALLBACK as sub(byval lpHelpInfo as LPHELPINFO)
 4276 
 4277 type tagMSGBOXPARAMSA
 4278     cbSize as UINT
 4279     hwndOwner as HWND
 4280     hInstance as HINSTANCE
 4281     lpszText as LPCSTR
 4282     lpszCaption as LPCSTR
 4283     dwStyle as DWORD
 4284     lpszIcon as LPCSTR
 4285     dwContextHelpId as DWORD_PTR
 4286     lpfnMsgBoxCallback as MSGBOXCALLBACK
 4287     dwLanguageId as DWORD
 4288 end type
 4289 
 4290 type MSGBOXPARAMSA as tagMSGBOXPARAMSA
 4291 type PMSGBOXPARAMSA as tagMSGBOXPARAMSA ptr
 4292 type LPMSGBOXPARAMSA as tagMSGBOXPARAMSA ptr
 4293 
 4294 type tagMSGBOXPARAMSW
 4295     cbSize as UINT
 4296     hwndOwner as HWND
 4297     hInstance as HINSTANCE
 4298     lpszText as LPCWSTR
 4299     lpszCaption as LPCWSTR
 4300     dwStyle as DWORD
 4301     lpszIcon as LPCWSTR
 4302     dwContextHelpId as DWORD_PTR
 4303     lpfnMsgBoxCallback as MSGBOXCALLBACK
 4304     dwLanguageId as DWORD
 4305 end type
 4306 
 4307 type MSGBOXPARAMSW as tagMSGBOXPARAMSW
 4308 type PMSGBOXPARAMSW as tagMSGBOXPARAMSW ptr
 4309 type LPMSGBOXPARAMSW as tagMSGBOXPARAMSW ptr
 4310 
 4311 #ifdef UNICODE
 4312     type MSGBOXPARAMS as MSGBOXPARAMSW
 4313     type PMSGBOXPARAMS as PMSGBOXPARAMSW
 4314     type LPMSGBOXPARAMS as LPMSGBOXPARAMSW
 4315 #else
 4316     type MSGBOXPARAMS as MSGBOXPARAMSA
 4317     type PMSGBOXPARAMS as PMSGBOXPARAMSA
 4318     type LPMSGBOXPARAMS as LPMSGBOXPARAMSA
 4319 #endif
 4320 
 4321 declare function MessageBoxIndirectA(byval lpmbp as const MSGBOXPARAMSA ptr) as long
 4322 
 4323 #ifndef UNICODE
 4324     declare function MessageBoxIndirect alias "MessageBoxIndirectA"(byval lpmbp as const MSGBOXPARAMSA ptr) as long
 4325 #endif
 4326 
 4327 declare function MessageBoxIndirectW(byval lpmbp as const MSGBOXPARAMSW ptr) as long
 4328 
 4329 #ifdef UNICODE
 4330     declare function MessageBoxIndirect alias "MessageBoxIndirectW"(byval lpmbp as const MSGBOXPARAMSW ptr) as long
 4331 #endif
 4332 
 4333 declare function MessageBeep(byval uType as UINT) as WINBOOL
 4334 declare function ShowCursor(byval bShow as WINBOOL) as long
 4335 declare function SetCursorPos(byval X as long, byval Y as long) as WINBOOL
 4336 declare function SetCursor(byval hCursor as HCURSOR) as HCURSOR
 4337 declare function GetCursorPos(byval lpPoint as LPPOINT) as WINBOOL
 4338 declare function ClipCursor(byval lpRect as const RECT ptr) as WINBOOL
 4339 declare function GetClipCursor(byval lpRect as LPRECT) as WINBOOL
 4340 declare function GetCursor() as HCURSOR
 4341 declare function CreateCaret(byval hWnd as HWND, byval hBitmap as HBITMAP, byval nWidth as long, byval nHeight as long) as WINBOOL
 4342 declare function GetCaretBlinkTime() as UINT
 4343 declare function SetCaretBlinkTime(byval uMSeconds as UINT) as WINBOOL
 4344 declare function DestroyCaret() as WINBOOL
 4345 declare function HideCaret(byval hWnd as HWND) as WINBOOL
 4346 declare function ShowCaret(byval hWnd as HWND) as WINBOOL
 4347 declare function SetCaretPos(byval X as long, byval Y as long) as WINBOOL
 4348 declare function GetCaretPos(byval lpPoint as LPPOINT) as WINBOOL
 4349 declare function ClientToScreen(byval hWnd as HWND, byval lpPoint as LPPOINT) as WINBOOL
 4350 declare function ScreenToClient(byval hWnd as HWND, byval lpPoint as LPPOINT) as WINBOOL
 4351 declare function MapWindowPoints(byval hWndFrom as HWND, byval hWndTo as HWND, byval lpPoints as LPPOINT, byval cPoints as UINT) as long
 4352 declare function WindowFromPoint(byval Point as POINT) as HWND
 4353 declare function ChildWindowFromPoint(byval hWndParent as HWND, byval Point as POINT) as HWND
 4354 declare function ChildWindowFromPointEx(byval hwnd as HWND, byval pt as POINT, byval flags as UINT) as HWND
 4355 
 4356 #if _WIN32_WINNT >= &h0600
 4357     declare function SetPhysicalCursorPos(byval X as long, byval Y as long) as WINBOOL
 4358     declare function GetPhysicalCursorPos(byval lpPoint as LPPOINT) as WINBOOL
 4359     declare function LogicalToPhysicalPoint(byval hWnd as HWND, byval lpPoint as LPPOINT) as WINBOOL
 4360     declare function PhysicalToLogicalPoint(byval hWnd as HWND, byval lpPoint as LPPOINT) as WINBOOL
 4361     declare function WindowFromPhysicalPoint(byval Point as POINT) as HWND
 4362 #endif
 4363 
 4364 const CWP_ALL = &h0000
 4365 const CWP_SKIPINVISIBLE = &h0001
 4366 const CWP_SKIPDISABLED = &h0002
 4367 const CWP_SKIPTRANSPARENT = &h0004
 4368 const CTLCOLOR_MSGBOX = 0
 4369 const CTLCOLOR_EDIT = 1
 4370 const CTLCOLOR_LISTBOX = 2
 4371 const CTLCOLOR_BTN = 3
 4372 const CTLCOLOR_DLG = 4
 4373 const CTLCOLOR_SCROLLBAR = 5
 4374 const CTLCOLOR_STATIC = 6
 4375 const CTLCOLOR_MAX = 7
 4376 const COLOR_SCROLLBAR = 0
 4377 const COLOR_BACKGROUND = 1
 4378 const COLOR_ACTIVECAPTION = 2
 4379 const COLOR_INACTIVECAPTION = 3
 4380 const COLOR_MENU = 4
 4381 const COLOR_WINDOW = 5
 4382 const COLOR_WINDOWFRAME = 6
 4383 const COLOR_MENUTEXT = 7
 4384 const COLOR_WINDOWTEXT = 8
 4385 const COLOR_CAPTIONTEXT = 9
 4386 const COLOR_ACTIVEBORDER = 10
 4387 const COLOR_INACTIVEBORDER = 11
 4388 const COLOR_APPWORKSPACE = 12
 4389 const COLOR_HIGHLIGHT = 13
 4390 const COLOR_HIGHLIGHTTEXT = 14
 4391 const COLOR_BTNFACE = 15
 4392 const COLOR_BTNSHADOW = 16
 4393 const COLOR_GRAYTEXT = 17
 4394 const COLOR_BTNTEXT = 18
 4395 const COLOR_INACTIVECAPTIONTEXT = 19
 4396 const COLOR_BTNHIGHLIGHT = 20
 4397 const COLOR_3DDKSHADOW = 21
 4398 const COLOR_3DLIGHT = 22
 4399 const COLOR_INFOTEXT = 23
 4400 const COLOR_INFOBK = 24
 4401 const COLOR_HOTLIGHT = 26
 4402 const COLOR_GRADIENTACTIVECAPTION = 27
 4403 const COLOR_GRADIENTINACTIVECAPTION = 28
 4404 const COLOR_MENUHILIGHT = 29
 4405 const COLOR_MENUBAR = 30
 4406 const COLOR_DESKTOP = COLOR_BACKGROUND
 4407 const COLOR_3DFACE = COLOR_BTNFACE
 4408 const COLOR_3DSHADOW = COLOR_BTNSHADOW
 4409 const COLOR_3DHIGHLIGHT = COLOR_BTNHIGHLIGHT
 4410 const COLOR_3DHILIGHT = COLOR_BTNHIGHLIGHT
 4411 const COLOR_BTNHILIGHT = COLOR_BTNHIGHLIGHT
 4412 
 4413 declare function GetSysColor(byval nIndex as long) as DWORD
 4414 declare function GetSysColorBrush(byval nIndex as long) as HBRUSH
 4415 declare function SetSysColors(byval cElements as long, byval lpaElements as const INT_ ptr, byval lpaRgbValues as const COLORREF ptr) as WINBOOL
 4416 declare function DrawFocusRect(byval hDC as HDC, byval lprc as const RECT ptr) as WINBOOL
 4417 declare function FillRect(byval hDC as HDC, byval lprc as const RECT ptr, byval hbr as HBRUSH) as long
 4418 declare function FrameRect(byval hDC as HDC, byval lprc as const RECT ptr, byval hbr as HBRUSH) as long
 4419 declare function InvertRect(byval hDC as HDC, byval lprc as const RECT ptr) as WINBOOL
 4420 declare function SetRect(byval lprc as LPRECT, byval xLeft as long, byval yTop as long, byval xRight as long, byval yBottom as long) as WINBOOL
 4421 declare function SetRectEmpty(byval lprc as LPRECT) as WINBOOL
 4422 declare function CopyRect(byval lprcDst as LPRECT, byval lprcSrc as const RECT ptr) as WINBOOL
 4423 declare function InflateRect(byval lprc as LPRECT, byval dx as long, byval dy as long) as WINBOOL
 4424 declare function IntersectRect(byval lprcDst as LPRECT, byval lprcSrc1 as const RECT ptr, byval lprcSrc2 as const RECT ptr) as WINBOOL
 4425 declare function UnionRect(byval lprcDst as LPRECT, byval lprcSrc1 as const RECT ptr, byval lprcSrc2 as const RECT ptr) as WINBOOL
 4426 declare function SubtractRect(byval lprcDst as LPRECT, byval lprcSrc1 as const RECT ptr, byval lprcSrc2 as const RECT ptr) as WINBOOL
 4427 declare function OffsetRect(byval lprc as LPRECT, byval dx as long, byval dy as long) as WINBOOL
 4428 declare function IsRectEmpty(byval lprc as const RECT ptr) as WINBOOL
 4429 declare function EqualRect(byval lprc1 as const RECT ptr, byval lprc2 as const RECT ptr) as WINBOOL
 4430 declare function PtInRect(byval lprc as const RECT ptr, byval pt as POINT) as WINBOOL
 4431 declare function GetWindowWord(byval hWnd as HWND, byval nIndex as long) as WORD
 4432 declare function SetWindowWord(byval hWnd as HWND, byval nIndex as long, byval wNewWord as WORD) as WORD
 4433 declare function GetWindowLongA(byval hWnd as HWND, byval nIndex as long) as LONG
 4434 
 4435 #ifndef UNICODE
 4436     declare function GetWindowLong alias "GetWindowLongA"(byval hWnd as HWND, byval nIndex as long) as LONG
 4437 #endif
 4438 
 4439 declare function GetWindowLongW(byval hWnd as HWND, byval nIndex as long) as LONG
 4440 
 4441 #ifdef UNICODE
 4442     declare function GetWindowLong alias "GetWindowLongW"(byval hWnd as HWND, byval nIndex as long) as LONG
 4443 #endif
 4444 
 4445 declare function SetWindowLongA(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG) as LONG
 4446 
 4447 #ifndef UNICODE
 4448     declare function SetWindowLong alias "SetWindowLongA"(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG) as LONG
 4449 #endif
 4450 
 4451 declare function SetWindowLongW(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG) as LONG
 4452 
 4453 #ifdef UNICODE
 4454     declare function SetWindowLong alias "SetWindowLongW"(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG) as LONG
 4455 #endif
 4456 
 4457 #ifndef __FB_64BIT__
 4458     declare function GetWindowLongPtrA alias "GetWindowLongA"(byval hWnd as HWND, byval nIndex as long) as LONG
 4459 
 4460     #ifndef UNICODE
 4461         declare function GetWindowLongPtr alias "GetWindowLongA"(byval hWnd as HWND, byval nIndex as long) as LONG
 4462     #endif
 4463 
 4464     declare function GetWindowLongPtrW alias "GetWindowLongW"(byval hWnd as HWND, byval nIndex as long) as LONG
 4465 
 4466     #ifdef UNICODE
 4467         declare function GetWindowLongPtr alias "GetWindowLongW"(byval hWnd as HWND, byval nIndex as long) as LONG
 4468     #endif
 4469 
 4470     declare function SetWindowLongPtrA alias "SetWindowLongA"(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG) as LONG
 4471 
 4472     #ifndef UNICODE
 4473         declare function SetWindowLongPtr alias "SetWindowLongA"(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG) as LONG
 4474     #endif
 4475 
 4476     declare function SetWindowLongPtrW alias "SetWindowLongW"(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG) as LONG
 4477 #endif
 4478 
 4479 #if (not defined(__FB_64BIT__)) and defined(UNICODE)
 4480     declare function SetWindowLongPtr alias "SetWindowLongW"(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG) as LONG
 4481 #elseif defined(__FB_64BIT__)
 4482     declare function GetWindowLongPtrA(byval hWnd as HWND, byval nIndex as long) as LONG_PTR
 4483 #endif
 4484 
 4485 #ifdef __FB_64BIT__
 4486     #ifndef UNICODE
 4487         declare function GetWindowLongPtr alias "GetWindowLongPtrA"(byval hWnd as HWND, byval nIndex as long) as LONG_PTR
 4488     #endif
 4489 
 4490     declare function GetWindowLongPtrW(byval hWnd as HWND, byval nIndex as long) as LONG_PTR
 4491 
 4492     #ifdef UNICODE
 4493         declare function GetWindowLongPtr alias "GetWindowLongPtrW"(byval hWnd as HWND, byval nIndex as long) as LONG_PTR
 4494     #endif
 4495 
 4496     declare function SetWindowLongPtrA(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG_PTR) as LONG_PTR
 4497 
 4498     #ifndef UNICODE
 4499         declare function SetWindowLongPtr alias "SetWindowLongPtrA"(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG_PTR) as LONG_PTR
 4500     #endif
 4501 
 4502     declare function SetWindowLongPtrW(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG_PTR) as LONG_PTR
 4503 
 4504     #ifdef UNICODE
 4505         declare function SetWindowLongPtr alias "SetWindowLongPtrW"(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG_PTR) as LONG_PTR
 4506     #endif
 4507 #endif
 4508 
 4509 declare function GetClassWord(byval hWnd as HWND, byval nIndex as long) as WORD
 4510 declare function SetClassWord(byval hWnd as HWND, byval nIndex as long, byval wNewWord as WORD) as WORD
 4511 declare function GetClassLongA(byval hWnd as HWND, byval nIndex as long) as DWORD
 4512 
 4513 #ifndef UNICODE
 4514     declare function GetClassLong alias "GetClassLongA"(byval hWnd as HWND, byval nIndex as long) as DWORD
 4515 #endif
 4516 
 4517 declare function GetClassLongW(byval hWnd as HWND, byval nIndex as long) as DWORD
 4518 
 4519 #ifdef UNICODE
 4520     declare function GetClassLong alias "GetClassLongW"(byval hWnd as HWND, byval nIndex as long) as DWORD
 4521 #endif
 4522 
 4523 declare function SetClassLongA(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG) as DWORD
 4524 
 4525 #ifndef UNICODE
 4526     declare function SetClassLong alias "SetClassLongA"(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG) as DWORD
 4527 #endif
 4528 
 4529 declare function SetClassLongW(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG) as DWORD
 4530 
 4531 #ifdef UNICODE
 4532     declare function SetClassLong alias "SetClassLongW"(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG) as DWORD
 4533 #endif
 4534 
 4535 #ifndef __FB_64BIT__
 4536     declare function GetClassLongPtrA alias "GetClassLongA"(byval hWnd as HWND, byval nIndex as long) as DWORD
 4537 
 4538     #ifndef UNICODE
 4539         declare function GetClassLongPtr alias "GetClassLongA"(byval hWnd as HWND, byval nIndex as long) as DWORD
 4540     #endif
 4541 
 4542     declare function GetClassLongPtrW alias "GetClassLongW"(byval hWnd as HWND, byval nIndex as long) as DWORD
 4543 
 4544     #ifdef UNICODE
 4545         declare function GetClassLongPtr alias "GetClassLongW"(byval hWnd as HWND, byval nIndex as long) as DWORD
 4546     #endif
 4547 
 4548     declare function SetClassLongPtrA alias "SetClassLongA"(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG) as DWORD
 4549 
 4550     #ifndef UNICODE
 4551         declare function SetClassLongPtr alias "SetClassLongA"(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG) as DWORD
 4552     #endif
 4553 
 4554     declare function SetClassLongPtrW alias "SetClassLongW"(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG) as DWORD
 4555 #endif
 4556 
 4557 #if (not defined(__FB_64BIT__)) and defined(UNICODE)
 4558     declare function SetClassLongPtr alias "SetClassLongW"(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG) as DWORD
 4559 #elseif defined(__FB_64BIT__)
 4560     declare function GetClassLongPtrA(byval hWnd as HWND, byval nIndex as long) as ULONG_PTR
 4561 #endif
 4562 
 4563 #ifdef __FB_64BIT__
 4564     #ifndef UNICODE
 4565         declare function GetClassLongPtr alias "GetClassLongPtrA"(byval hWnd as HWND, byval nIndex as long) as ULONG_PTR
 4566     #endif
 4567 
 4568     declare function GetClassLongPtrW(byval hWnd as HWND, byval nIndex as long) as ULONG_PTR
 4569 
 4570     #ifdef UNICODE
 4571         declare function GetClassLongPtr alias "GetClassLongPtrW"(byval hWnd as HWND, byval nIndex as long) as ULONG_PTR
 4572     #endif
 4573 
 4574     declare function SetClassLongPtrA(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG_PTR) as ULONG_PTR
 4575 
 4576     #ifndef UNICODE
 4577         declare function SetClassLongPtr alias "SetClassLongPtrA"(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG_PTR) as ULONG_PTR
 4578     #endif
 4579 
 4580     declare function SetClassLongPtrW(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG_PTR) as ULONG_PTR
 4581 
 4582     #ifdef UNICODE
 4583         declare function SetClassLongPtr alias "SetClassLongPtrW"(byval hWnd as HWND, byval nIndex as long, byval dwNewLong as LONG_PTR) as ULONG_PTR
 4584     #endif
 4585 #endif
 4586 
 4587 declare function GetProcessDefaultLayout(byval pdwDefaultLayout as DWORD ptr) as WINBOOL
 4588 declare function SetProcessDefaultLayout(byval dwDefaultLayout as DWORD) as WINBOOL
 4589 declare function GetDesktopWindow() as HWND
 4590 declare function GetParent(byval hWnd as HWND) as HWND
 4591 declare function SetParent(byval hWndChild as HWND, byval hWndNewParent as HWND) as HWND
 4592 declare function EnumChildWindows(byval hWndParent as HWND, byval lpEnumFunc as WNDENUMPROC, byval lParam as LPARAM) as WINBOOL
 4593 declare function FindWindowA(byval lpClassName as LPCSTR, byval lpWindowName as LPCSTR) as HWND
 4594 
 4595 #ifndef UNICODE
 4596     declare function FindWindow alias "FindWindowA"(byval lpClassName as LPCSTR, byval lpWindowName as LPCSTR) as HWND
 4597 #endif
 4598 
 4599 declare function FindWindowW(byval lpClassName as LPCWSTR, byval lpWindowName as LPCWSTR) as HWND
 4600 
 4601 #ifdef UNICODE
 4602     declare function FindWindow alias "FindWindowW"(byval lpClassName as LPCWSTR, byval lpWindowName as LPCWSTR) as HWND
 4603 #endif
 4604 
 4605 declare function FindWindowExA(byval hWndParent as HWND, byval hWndChildAfter as HWND, byval lpszClass as LPCSTR, byval lpszWindow as LPCSTR) as HWND
 4606 
 4607 #ifndef UNICODE
 4608     declare function FindWindowEx alias "FindWindowExA"(byval hWndParent as HWND, byval hWndChildAfter as HWND, byval lpszClass as LPCSTR, byval lpszWindow as LPCSTR) as HWND
 4609 #endif
 4610 
 4611 declare function FindWindowExW(byval hWndParent as HWND, byval hWndChildAfter as HWND, byval lpszClass as LPCWSTR, byval lpszWindow as LPCWSTR) as HWND
 4612 
 4613 #ifdef UNICODE
 4614     declare function FindWindowEx alias "FindWindowExW"(byval hWndParent as HWND, byval hWndChildAfter as HWND, byval lpszClass as LPCWSTR, byval lpszWindow as LPCWSTR) as HWND
 4615 #endif
 4616 
 4617 declare function GetShellWindow() as HWND
 4618 declare function RegisterShellHookWindow(byval hwnd as HWND) as WINBOOL
 4619 declare function DeregisterShellHookWindow(byval hwnd as HWND) as WINBOOL
 4620 declare function EnumWindows(byval lpEnumFunc as WNDENUMPROC, byval lParam as LPARAM) as WINBOOL
 4621 declare function EnumThreadWindows(byval dwThreadId as DWORD, byval lpfn as WNDENUMPROC, byval lParam as LPARAM) as WINBOOL
 4622 #define EnumTaskWindows(hTask, lpfn, lParam) EnumThreadWindows(HandleToUlong(hTask), lpfn, lParam)
 4623 declare function GetClassNameA(byval hWnd as HWND, byval lpClassName as LPSTR, byval nMaxCount as long) as long
 4624 
 4625 #ifndef UNICODE
 4626     declare function GetClassName alias "GetClassNameA"(byval hWnd as HWND, byval lpClassName as LPSTR, byval nMaxCount as long) as long
 4627 #endif
 4628 
 4629 declare function GetClassNameW(byval hWnd as HWND, byval lpClassName as LPWSTR, byval nMaxCount as long) as long
 4630 
 4631 #ifdef UNICODE
 4632     declare function GetClassName alias "GetClassNameW"(byval hWnd as HWND, byval lpClassName as LPWSTR, byval nMaxCount as long) as long
 4633 #endif
 4634 
 4635 declare function GetTopWindow(byval hWnd as HWND) as HWND
 4636 #define GetNextWindow(hWnd, wCmd) GetWindow(hWnd, wCmd)
 4637 #define GetSysModalWindow() NULL
 4638 #define SetSysModalWindow(hWnd) NULL
 4639 declare function GetWindowThreadProcessId(byval hWnd as HWND, byval lpdwProcessId as LPDWORD) as DWORD
 4640 declare function IsGUIThread(byval bConvert as WINBOOL) as WINBOOL
 4641 #define GetWindowTask(hWnd) cast(HANDLE, cast(DWORD_PTR, GetWindowThreadProcessId(hWnd, NULL)))
 4642 declare function GetLastActivePopup(byval hWnd as HWND) as HWND
 4643 const GW_HWNDFIRST = 0
 4644 const GW_HWNDLAST = 1
 4645 const GW_HWNDNEXT = 2
 4646 const GW_HWNDPREV = 3
 4647 const GW_OWNER = 4
 4648 const GW_CHILD = 5
 4649 const GW_ENABLEDPOPUP = 6
 4650 const GW_MAX = 6
 4651 declare function GetWindow(byval hWnd as HWND, byval uCmd as UINT) as HWND
 4652 declare function SetWindowsHookA(byval nFilterType as long, byval pfnFilterProc as HOOKPROC) as HHOOK
 4653 
 4654 #ifndef UNICODE
 4655     declare function SetWindowsHook alias "SetWindowsHookA"(byval nFilterType as long, byval pfnFilterProc as HOOKPROC) as HHOOK
 4656 #endif
 4657 
 4658 declare function SetWindowsHookW(byval nFilterType as long, byval pfnFilterProc as HOOKPROC) as HHOOK
 4659 
 4660 #ifdef UNICODE
 4661     declare function SetWindowsHook alias "SetWindowsHookW"(byval nFilterType as long, byval pfnFilterProc as HOOKPROC) as HHOOK
 4662 #endif
 4663 
 4664 #define DefHookProc(nCode, wParam, lParam, phhk) CallNextHookEx(*phhk, nCode, wParam, lParam)
 4665 declare function UnhookWindowsHook(byval nCode as long, byval pfnFilterProc as HOOKPROC) as WINBOOL
 4666 declare function SetWindowsHookExA(byval idHook as long, byval lpfn as HOOKPROC, byval hmod as HINSTANCE, byval dwThreadId as DWORD) as HHOOK
 4667 
 4668 #ifndef UNICODE
 4669     declare function SetWindowsHookEx alias "SetWindowsHookExA"(byval idHook as long, byval lpfn as HOOKPROC, byval hmod as HINSTANCE, byval dwThreadId as DWORD) as HHOOK
 4670 #endif
 4671 
 4672 declare function SetWindowsHookExW(byval idHook as long, byval lpfn as HOOKPROC, byval hmod as HINSTANCE, byval dwThreadId as DWORD) as HHOOK
 4673 
 4674 #ifdef UNICODE
 4675     declare function SetWindowsHookEx alias "SetWindowsHookExW"(byval idHook as long, byval lpfn as HOOKPROC, byval hmod as HINSTANCE, byval dwThreadId as DWORD) as HHOOK
 4676 #endif
 4677 
 4678 declare function UnhookWindowsHookEx(byval hhk as HHOOK) as WINBOOL
 4679 declare function CallNextHookEx(byval hhk as HHOOK, byval nCode as long, byval wParam as WPARAM, byval lParam as LPARAM) as LRESULT
 4680 const MF_INSERT = &h00000000
 4681 const MF_CHANGE = &h00000080
 4682 const MF_APPEND = &h00000100
 4683 const MF_DELETE = &h00000200
 4684 const MF_REMOVE = &h00001000
 4685 const MF_BYCOMMAND = &h00000000
 4686 const MF_BYPOSITION = &h00000400
 4687 const MF_SEPARATOR = &h00000800
 4688 const MF_ENABLED = &h00000000
 4689 const MF_GRAYED = &h00000001
 4690 const MF_DISABLED = &h00000002
 4691 const MF_UNCHECKED = &h00000000
 4692 const MF_CHECKED = &h00000008
 4693 const MF_USECHECKBITMAPS = &h00000200
 4694 const MF_STRING = &h00000000
 4695 const MF_BITMAP = &h00000004
 4696 const MF_OWNERDRAW = &h00000100
 4697 const MF_POPUP = &h00000010
 4698 const MF_MENUBARBREAK = &h00000020
 4699 const MF_MENUBREAK = &h00000040
 4700 const MF_UNHILITE = &h00000000
 4701 const MF_HILITE = &h00000080
 4702 const MF_DEFAULT = &h00001000
 4703 const MF_SYSMENU = &h00002000
 4704 const MF_HELP = &h00004000
 4705 const MF_RIGHTJUSTIFY = &h00004000
 4706 const MF_MOUSESELECT = &h00008000
 4707 const MF_END = &h00000080
 4708 const MFT_STRING = MF_STRING
 4709 const MFT_BITMAP = MF_BITMAP
 4710 const MFT_MENUBARBREAK = MF_MENUBARBREAK
 4711 const MFT_MENUBREAK = MF_MENUBREAK
 4712 const MFT_OWNERDRAW = MF_OWNERDRAW
 4713 const MFT_RADIOCHECK = &h00000200
 4714 const MFT_SEPARATOR = MF_SEPARATOR
 4715 const MFT_RIGHTORDER = &h00002000
 4716 const MFT_RIGHTJUSTIFY = MF_RIGHTJUSTIFY
 4717 const MFS_GRAYED = &h00000003
 4718 const MFS_DISABLED = MFS_GRAYED
 4719 const MFS_CHECKED = MF_CHECKED
 4720 const MFS_HILITE = MF_HILITE
 4721 const MFS_ENABLED = MF_ENABLED
 4722 const MFS_UNCHECKED = MF_UNCHECKED
 4723 const MFS_UNHILITE = MF_UNHILITE
 4724 const MFS_DEFAULT = MF_DEFAULT
 4725 declare function CheckMenuRadioItem(byval hmenu as HMENU, byval first as UINT, byval last as UINT, byval check as UINT, byval flags as UINT) as WINBOOL
 4726 
 4727 type MENUITEMTEMPLATEHEADER
 4728     versionNumber as WORD
 4729     offset as WORD
 4730 end type
 4731 
 4732 type PMENUITEMTEMPLATEHEADER as MENUITEMTEMPLATEHEADER ptr
 4733 
 4734 type MENUITEMTEMPLATE
 4735     mtOption as WORD
 4736     mtID as WORD
 4737     mtString as wstring * 1
 4738 end type
 4739 
 4740 type PMENUITEMTEMPLATE as MENUITEMTEMPLATE ptr
 4741 const MF_END = &h00000080
 4742 const SC_SIZE = &hF000
 4743 const SC_MOVE = &hF010
 4744 const SC_MINIMIZE = &hF020
 4745 const SC_MAXIMIZE = &hF030
 4746 const SC_NEXTWINDOW = &hF040
 4747 const SC_PREVWINDOW = &hF050
 4748 const SC_CLOSE = &hF060
 4749 const SC_VSCROLL = &hF070
 4750 const SC_HSCROLL = &hF080
 4751 const SC_MOUSEMENU = &hF090
 4752 const SC_KEYMENU = &hF100
 4753 const SC_ARRANGE = &hF110
 4754 const SC_RESTORE = &hF120
 4755 const SC_TASKLIST = &hF130
 4756 const SC_SCREENSAVE = &hF140
 4757 const SC_HOTKEY = &hF150
 4758 const SC_DEFAULT = &hF160
 4759 const SC_MONITORPOWER = &hF170
 4760 const SC_CONTEXTHELP = &hF180
 4761 const SC_SEPARATOR = &hF00F
 4762 
 4763 #if _WIN32_WINNT >= &h0600
 4764     const SCF_ISSECURE = &h00000001
 4765 #endif
 4766 
 4767 #define GET_SC_WPARAM(wParam) (clng(wParam) and &hfff0)
 4768 const SC_ICON = SC_MINIMIZE
 4769 const SC_ZOOM = SC_MAXIMIZE
 4770 declare function LoadBitmapA(byval hInstance as HINSTANCE, byval lpBitmapName as LPCSTR) as HBITMAP
 4771 
 4772 #ifndef UNICODE
 4773     declare function LoadBitmap alias "LoadBitmapA"(byval hInstance as HINSTANCE, byval lpBitmapName as LPCSTR) as HBITMAP
 4774 #endif
 4775 
 4776 declare function LoadBitmapW(byval hInstance as HINSTANCE, byval lpBitmapName as LPCWSTR) as HBITMAP
 4777 
 4778 #ifdef UNICODE
 4779     declare function LoadBitmap alias "LoadBitmapW"(byval hInstance as HINSTANCE, byval lpBitmapName as LPCWSTR) as HBITMAP
 4780 #endif
 4781 
 4782 declare function LoadCursorA(byval hInstance as HINSTANCE, byval lpCursorName as LPCSTR) as HCURSOR
 4783 
 4784 #ifndef UNICODE
 4785     declare function LoadCursor alias "LoadCursorA"(byval hInstance as HINSTANCE, byval lpCursorName as LPCSTR) as HCURSOR
 4786 #endif
 4787 
 4788 declare function LoadCursorW(byval hInstance as HINSTANCE, byval lpCursorName as LPCWSTR) as HCURSOR
 4789 
 4790 #ifdef UNICODE
 4791     declare function LoadCursor alias "LoadCursorW"(byval hInstance as HINSTANCE, byval lpCursorName as LPCWSTR) as HCURSOR
 4792 #endif
 4793 
 4794 declare function LoadCursorFromFileA(byval lpFileName as LPCSTR) as HCURSOR
 4795 
 4796 #ifndef UNICODE
 4797     declare function LoadCursorFromFile alias "LoadCursorFromFileA"(byval lpFileName as LPCSTR) as HCURSOR
 4798 #endif
 4799 
 4800 declare function LoadCursorFromFileW(byval lpFileName as LPCWSTR) as HCURSOR
 4801 
 4802 #ifdef UNICODE
 4803     declare function LoadCursorFromFile alias "LoadCursorFromFileW"(byval lpFileName as LPCWSTR) as HCURSOR
 4804 #endif
 4805 
 4806 declare function CreateCursor(byval hInst as HINSTANCE, byval xHotSpot as long, byval yHotSpot as long, byval nWidth as long, byval nHeight as long, byval pvANDPlane as const any ptr, byval pvXORPlane as const any ptr) as HCURSOR
 4807 declare function DestroyCursor(byval hCursor as HCURSOR) as WINBOOL
 4808 #define CopyCursor(pcur) cast(HCURSOR, CopyIcon(cast(HICON, (pcur))))
 4809 #define IDC_ARROW MAKEINTRESOURCE(32512)
 4810 #define IDC_IBEAM MAKEINTRESOURCE(32513)
 4811 #define IDC_WAIT MAKEINTRESOURCE(32514)
 4812 #define IDC_CROSS MAKEINTRESOURCE(32515)
 4813 #define IDC_UPARROW MAKEINTRESOURCE(32516)
 4814 #define IDC_SIZE MAKEINTRESOURCE(32640)
 4815 #define IDC_ICON MAKEINTRESOURCE(32641)
 4816 #define IDC_SIZENWSE MAKEINTRESOURCE(32642)
 4817 #define IDC_SIZENESW MAKEINTRESOURCE(32643)
 4818 #define IDC_SIZEWE MAKEINTRESOURCE(32644)
 4819 #define IDC_SIZENS MAKEINTRESOURCE(32645)
 4820 #define IDC_SIZEALL MAKEINTRESOURCE(32646)
 4821 #define IDC_NO MAKEINTRESOURCE(32648)
 4822 #define IDC_HAND MAKEINTRESOURCE(32649)
 4823 #define IDC_APPSTARTING MAKEINTRESOURCE(32650)
 4824 #define IDC_HELP MAKEINTRESOURCE(32651)
 4825 
 4826 type _ICONINFO
 4827     fIcon as WINBOOL
 4828     xHotspot as DWORD
 4829     yHotspot as DWORD
 4830     hbmMask as HBITMAP
 4831     hbmColor as HBITMAP
 4832 end type
 4833 
 4834 type ICONINFO as _ICONINFO
 4835 type PICONINFO as ICONINFO ptr
 4836 declare function SetSystemCursor(byval hcur as HCURSOR, byval id as DWORD) as WINBOOL
 4837 declare function LoadIconA(byval hInstance as HINSTANCE, byval lpIconName as LPCSTR) as HICON
 4838 
 4839 #ifndef UNICODE
 4840     declare function LoadIcon alias "LoadIconA"(byval hInstance as HINSTANCE, byval lpIconName as LPCSTR) as HICON
 4841 #endif
 4842 
 4843 declare function LoadIconW(byval hInstance as HINSTANCE, byval lpIconName as LPCWSTR) as HICON
 4844 
 4845 #ifdef UNICODE
 4846     declare function LoadIcon alias "LoadIconW"(byval hInstance as HINSTANCE, byval lpIconName as LPCWSTR) as HICON
 4847 #endif
 4848 
 4849 declare function PrivateExtractIconsA(byval szFileName as LPCSTR, byval nIconIndex as long, byval cxIcon as long, byval cyIcon as long, byval phicon as HICON ptr, byval piconid as UINT ptr, byval nIcons as UINT, byval flags as UINT) as UINT
 4850 
 4851 #ifndef UNICODE
 4852     declare function PrivateExtractIcons alias "PrivateExtractIconsA"(byval szFileName as LPCSTR, byval nIconIndex as long, byval cxIcon as long, byval cyIcon as long, byval phicon as HICON ptr, byval piconid as UINT ptr, byval nIcons as UINT, byval flags as UINT) as UINT
 4853 #endif
 4854 
 4855 declare function PrivateExtractIconsW(byval szFileName as LPCWSTR, byval nIconIndex as long, byval cxIcon as long, byval cyIcon as long, byval phicon as HICON ptr, byval piconid as UINT ptr, byval nIcons as UINT, byval flags as UINT) as UINT
 4856 
 4857 #ifdef UNICODE
 4858     declare function PrivateExtractIcons alias "PrivateExtractIconsW"(byval szFileName as LPCWSTR, byval nIconIndex as long, byval cxIcon as long, byval cyIcon as long, byval phicon as HICON ptr, byval piconid as UINT ptr, byval nIcons as UINT, byval flags as UINT) as UINT
 4859 #endif
 4860 
 4861 declare function CreateIcon(byval hInstance as HINSTANCE, byval nWidth as long, byval nHeight as long, byval cPlanes as UBYTE, byval cBitsPixel as UBYTE, byval lpbANDbits as const UBYTE ptr, byval lpbXORbits as const UBYTE ptr) as HICON
 4862 declare function DestroyIcon(byval hIcon as HICON) as WINBOOL
 4863 declare function LookupIconIdFromDirectory(byval presbits as PBYTE, byval fIcon as WINBOOL) as long
 4864 declare function LookupIconIdFromDirectoryEx(byval presbits as PBYTE, byval fIcon as WINBOOL, byval cxDesired as long, byval cyDesired as long, byval Flags as UINT) as long
 4865 declare function CreateIconFromResource(byval presbits as PBYTE, byval dwResSize as DWORD, byval fIcon as WINBOOL, byval dwVer as DWORD) as HICON
 4866 declare function CreateIconFromResourceEx(byval presbits as PBYTE, byval dwResSize as DWORD, byval fIcon as WINBOOL, byval dwVer as DWORD, byval cxDesired as long, byval cyDesired as long, byval Flags as UINT) as HICON
 4867 
 4868 type tagCURSORSHAPE
 4869     xHotSpot as long
 4870     yHotSpot as long
 4871     cx as long
 4872     cy as long
 4873     cbWidth as long
 4874     Planes as UBYTE
 4875     BitsPixel as UBYTE
 4876 end type
 4877 
 4878 type CURSORSHAPE as tagCURSORSHAPE
 4879 type LPCURSORSHAPE as tagCURSORSHAPE ptr
 4880 const IMAGE_BITMAP = 0
 4881 const IMAGE_ICON = 1
 4882 const IMAGE_CURSOR = 2
 4883 const IMAGE_ENHMETAFILE = 3
 4884 const LR_DEFAULTCOLOR = &h0000
 4885 const LR_MONOCHROME = &h0001
 4886 const LR_COLOR = &h0002
 4887 const LR_COPYRETURNORG = &h0004
 4888 const LR_COPYDELETEORG = &h0008
 4889 const LR_LOADFROMFILE = &h0010
 4890 const LR_LOADTRANSPARENT = &h0020
 4891 const LR_DEFAULTSIZE = &h0040
 4892 const LR_VGACOLOR = &h0080
 4893 const LR_LOADMAP3DCOLORS = &h1000
 4894 const LR_CREATEDIBSECTION = &h2000
 4895 const LR_COPYFROMRESOURCE = &h4000
 4896 const LR_SHARED = &h8000
 4897 declare function LoadImageA(byval hInst as HINSTANCE, byval name as LPCSTR, byval type as UINT, byval cx as long, byval cy as long, byval fuLoad as UINT) as HANDLE
 4898 
 4899 #ifndef UNICODE
 4900     declare function