Bläddra i källkod

Merged revisions 6777,6784,6796-6797,6800,6806,6808-6809,6815,6824,6842-6843,6864-6866,6868-6869,6872,6882-6883,6889,6891,6893-6894,6896,6898,6901-6903,6908,6916,6921-6922,6924-6925,6927-6928,6930,6943-6946,6952,6954,6956,6974,6976,6996-6997,7002,7007,7016,7020-7021,7033,7037,7040,7042,7045,7068-7069,7075-7079,7087,7094,7098-7099,7101,7103,7109,7115-7119,7128,7136-7137,7139,7150,7160-7162,7175,7179,7190-7195,7198,7202,7205-7206,7208-7217,7220-7222,7225-7228,7230,7233,7239-7241,7244,7246,7263,7275,7277,7279-7281,7285,7288-7289,7291-7293,7296,7300,7303,7310,7318,7340-7341,7343,7345,7372-7373,7375-7376,7379,7381,7383-7388,7391-7393,7400,7404-7406,7411,7422,7425,7432-7433,7436,7441-7442,7444-7445,7450,7456,7463,7467,7475,7479,7486,7504,7506-7509,7522,7527,7534-7536,7558-7559,7563-7565,7567,7570-7571,7573-7576,7586,7589,7592-7594,7607,7612,7615,7619-7620,7622-7623,7626-7628,7631,7633,7646,7652,7663,7665,7673,7677,7681-7683,7685-7686,7689,7697,7704-7712,7725,7736,7738,7740,7744-7746,7751,7753,7764,7767,7769-7770,7776-7777,7788,7800-7801,7808,7813,7822,7830,7836-7839,7844,7846,7849,7853-7857,7861-7862,7864-7865,7867,7869,7872,7877,7882,7904,7927-7929,7953,7961,7965,7967,7971,7986-7987,7990-7994,7998-8000,8004-8006,8008-8012,8016,8027,8034,8036-8037,8039,8044,8046,8048-8049,8051,8060,8071,8075-8076,8082-8083,8087-8089,8095-8096,8099-8100,8102,8136,8150,8187,8190,8203,8206-8208,8212-8213,8215,8218,8225,8227,8230,8233-8239,8251,8262,8276-8277,8289,8302,8307,8309,8316,8318-8319,8326,8329,8334,8336,8338-8340,8342,8372 via svnmerge from
svn+ssh://[email protected]/FPC/svn/fpc/trunk

........
r6777 | yury | 2007-03-10 21:03:44 +0100 (Sat, 10 Mar 2007) | 1 line

+ Added GAPI header translation by Nikolay Nikolov.
........
r7393 | yury | 2007-05-18 22:45:04 +0200 (Fri, 18 May 2007) | 1 line

* patch from Sergei Gorelkin (Mantis #8897). Various symbols that were #define's in original C headers were converted from functions to constants.
........
r7432 | marco | 2007-05-23 19:39:15 +0200 (Wed, 23 May 2007) | 2 lines

* a few extra MEM_ constants
........
r7433 | marco | 2007-05-23 19:41:14 +0200 (Wed, 23 May 2007) | 2 lines

* virtualprotect overload compat
........
r7627 | marco | 2007-06-10 20:23:32 +0200 (Sun, 10 Jun 2007) | 2 lines

* fix for 9029
........
r7652 | florian | 2007-06-13 22:44:24 +0200 (Wed, 13 Jun 2007) | 2 lines

+ some delphi compatibility stuff added
........
r7665 | florian | 2007-06-14 23:37:30 +0200 (Thu, 14 Jun 2007) | 2 lines

+ new definitions
........
r7673 | florian | 2007-06-15 20:57:05 +0200 (Fri, 15 Jun 2007) | 2 lines

* some dummy implementations of delphi compatibility stuff
........
r7685 | florian | 2007-06-16 18:57:00 +0200 (Sat, 16 Jun 2007) | 2 lines

+ some missing BM_* and WM_* constants added
........
r7686 | florian | 2007-06-16 18:57:31 +0200 (Sat, 16 Jun 2007) | 2 lines

+ {$PACKSET 1} for windows units to improve delphi compatibility
........
r7800 | florian | 2007-06-24 22:29:05 +0200 (Sun, 24 Jun 2007) | 2 lines

+ delphi compatibility stuff
........
r7801 | florian | 2007-06-24 22:29:40 +0200 (Sun, 24 Jun 2007) | 2 lines

+ several missing constants, functions and structures added
........
r7808 | marco | 2007-06-25 17:57:53 +0200 (Mon, 25 Jun 2007) | 2 lines

* better compatible systeminfo (Jedi JCL had a problem with it)
........
r7813 | florian | 2007-06-25 22:23:24 +0200 (Mon, 25 Jun 2007) | 2 lines

+ added and fixed some delphi compatibility stuff
........
r7822 | marco | 2007-06-26 17:06:43 +0200 (Tue, 26 Jun 2007) | 2 lines

* EWX_FORCEIFHUNG
........
r7844 | florian | 2007-06-28 19:50:11 +0200 (Thu, 28 Jun 2007) | 2 lines

+ few package related declarations added
........
r7853 | marco | 2007-06-29 23:53:45 +0200 (Fri, 29 Jun 2007) | 2 lines

* some PE headers Delphi also has.
........
r7854 | marco | 2007-06-30 00:03:17 +0200 (Sat, 30 Jun 2007) | 2 lines

* Some Delphilike aliases for the previous commit added
........
r7855 | marco | 2007-06-30 00:21:22 +0200 (Sat, 30 Jun 2007) | 2 lines

* more stuff copied from jwawinnt. $externalsyms stripped
........
r7856 | florian | 2007-06-30 00:27:41 +0200 (Sat, 30 Jun 2007) | 2 lines

+ Make/FreeObjectInstance for win32
........
r7857 | marco | 2007-06-30 00:35:03 +0200 (Sat, 30 Jun 2007) | 2 lines

* var fix for propertysheet
........
r7861 | florian | 2007-06-30 11:39:39 +0200 (Sat, 30 Jun 2007) | 3 lines

* fixed bug with illegal block usage
* made *ObjectInstance MT safecall
........
r7867 | marco | 2007-06-30 14:08:51 +0200 (Sat, 30 Jun 2007) | 2 lines

* Image_imagesubsystem consants
........
r7904 | florian | 2007-07-01 16:43:06 +0200 (Sun, 01 Jul 2007) | 2 lines

* compilation fixed
........
r7965 | yury | 2007-07-06 10:51:18 +0200 (Fri, 06 Jul 2007) | 1 line

* fixed compilation.
........
r8049 | vincents | 2007-07-14 15:15:19 +0200 (Sat, 14 Jul 2007) | 1 line

* fixed checking if file is directory in Erase(File); it was broken if the directory had the FILE_ATTRIBUTE_NOT_CONTENT_INDEXED attribute too
........
r8102 | michael | 2007-07-19 14:08:41 +0200 (Thu, 19 Jul 2007) | 1 line

* Extra mouse button defines from Pavel Ishenin
........
r8150 | yury | 2007-07-23 15:25:30 +0200 (Mon, 23 Jul 2007) | 1 line

* Patch from Felipe Monteiro de Carvalho.
........
r8208 | yury | 2007-08-01 19:22:39 +0200 (Wed, 01 Aug 2007) | 1 line

* Update and cleanup.
........
r8218 | yury | 2007-08-04 01:19:57 +0200 (Sat, 04 Aug 2007) | 1 line

* Added TransparentImage and TransparentBlt declarations.
........
r8230 | yury | 2007-08-06 09:45:39 +0200 (Mon, 06 Aug 2007) | 1 line

+ Added TAPI declarations by SovNarKom.
........
r8251 | yury | 2007-08-09 11:55:01 +0200 (Thu, 09 Aug 2007) | 2 lines

* TAPI fixes by S0vNark0m.
+ SimMgr API by S0vNark0m.
........
r8276 | Almindor | 2007-08-13 12:43:22 +0200 (Mon, 13 Aug 2007) | 2 lines

* adds WSARecvMsg and WSASendMsg along with requires structure to winsock2
........
r8277 | Almindor | 2007-08-13 13:01:04 +0200 (Mon, 13 Aug 2007) | 1 line

* make the updates also compilable (move struct down, add LPWSAMSG = PWSAMSG)
........
r8289 | florian | 2007-08-17 20:39:27 +0200 (Fri, 17 Aug 2007) | 1 line

* patch for #9449 by Sergei Gorelkin
........
r8326 | yury | 2007-08-28 23:17:49 +0200 (Tue, 28 Aug 2007) | 1 line

* Implemented GetTempDir for wince. Bug #9348.
........
r8329 | Almindor | 2007-08-29 11:38:01 +0200 (Wed, 29 Aug 2007) | 2 lines

* update winsock2 to version 2.2 regarding SO_ and AF_ constants
........
r8334 | yury | 2007-08-29 18:17:02 +0200 (Wed, 29 Aug 2007) | 1 line

* Added missing TPM_BOTTOMALIGN constant.
........
r8342 | marco | 2007-08-30 22:09:35 +0200 (Thu, 30 Aug 2007) | 2 lines

* two semi colon's added and compilation checked
........
r8372 | jonas | 2007-09-03 20:36:45 +0200 (Mon, 03 Sep 2007) | 2 lines

* fixed CtrlZMarksEOF comment (#9475)
........

git-svn-id: branches/fixes_2_2@8469 -

peter 18 år sedan
förälder
incheckning
ea3b80be4c

+ 13 - 9
.gitattributes

@@ -5487,27 +5487,30 @@ rtl/wince/Makefile.fpc svneol=native#text/plain
 rtl/wince/classes.pp -text
 rtl/wince/dos.pp -text
 rtl/wince/dynlibs.inc -text
+rtl/wince/gx.pp svneol=native#text/plain
 rtl/wince/messages.pp -text
 rtl/wince/readme.txt -text
 rtl/wince/system.pp svneol=native#text/plain
 rtl/wince/sysutils.pp -text
 rtl/wince/varutils.pp -text
 rtl/wince/windows.pp -text
-rtl/wince/wininc/aygshell.inc -text
-rtl/wince/wininc/base.inc -text
+rtl/wince/wininc/aygshell.inc svneol=native#text/plain
+rtl/wince/wininc/base.inc svneol=native#text/plain
 rtl/wince/wininc/cemiss.inc svneol=native#text/plain
 rtl/wince/wininc/ceshell.inc svneol=native#text/plain
-rtl/wince/wininc/commctrl.inc -text
+rtl/wince/wininc/commctrl.inc svneol=native#text/plain
 rtl/wince/wininc/commdlg.inc svneol=native#text/plain
 rtl/wince/wininc/coredll.inc svneol=native#text/plain
-rtl/wince/wininc/defines.inc -text
-rtl/wince/wininc/errors.inc -text
+rtl/wince/wininc/defines.inc svneol=native#text/plain
+rtl/wince/wininc/errors.inc svneol=native#text/plain
 rtl/wince/wininc/iphlpapi.inc svneol=native#text/plain
-rtl/wince/wininc/makefile.inc -text
-rtl/wince/wininc/messages.inc -text
+rtl/wince/wininc/makefile.inc svneol=native#text/plain
+rtl/wince/wininc/messages.inc svneol=native#text/plain
 rtl/wince/wininc/oleaut32.inc svneol=native#text/plain
-rtl/wince/wininc/redef.inc -text
-rtl/wince/wininc/struct.inc -text
+rtl/wince/wininc/redef.inc svneol=native#text/plain
+rtl/wince/wininc/simmgr.inc svneol=native#text/plain
+rtl/wince/wininc/struct.inc svneol=native#text/plain
+rtl/wince/wininc/tapi.inc svneol=native#text/plain
 rtl/wince/winres.inc -text
 rtl/wince/winsock.pp svneol=native#text/plain
 rtl/wince/winsock2.pp svneol=native#text/plain
@@ -7021,6 +7024,7 @@ tests/test/uimpluni2.pp svneol=native#text/plain
 tests/test/uinline4a.pp svneol=native#text/plain
 tests/test/uinline4b.pp svneol=native#text/plain
 tests/test/umacpas1.pp svneol=native#text/plain
+tests/test/units/classes/tmakeobjinst.pp svneol=native#text/plain
 tests/test/units/crt/tcrt.pp svneol=native#text/plain
 tests/test/units/crt/tctrlc.pp svneol=native#text/plain
 tests/test/units/dos/hello.pp svneol=native#text/plain

+ 4 - 4
rtl/win/mouse.pp

@@ -106,8 +106,8 @@ begin
   mode:=mode or ENABLE_MOUSE_INPUT;
   SetConsoleMode(StdInputHandle,mode);
 
-  PendingMouseHead:=@PendingMouseEvent;
-  PendingMouseTail:=@PendingMouseEvent;
+  PendingMouseHead:=@PendingMouseEvent[0];
+  PendingMouseTail:=@PendingMouseEvent[0];
   PendingMouseEvents:=0;
   FillChar(LastMouseEvent,sizeof(TMouseEvent),0);
   InitializeCriticalSection(ChangeMouseEvents);
@@ -159,7 +159,7 @@ begin
   MouseEvent:=PendingMouseHead^;
   inc(PendingMouseHead);
   if ptrint(PendingMouseHead)=ptrint(@PendingMouseEvent)+sizeof(PendingMouseEvent) then
-   PendingMouseHead:=@PendingMouseEvent;
+   PendingMouseHead:=@PendingMouseEvent[0];
   dec(PendingMouseEvents);
 
   { LastMouseEvent is already set at the end of the mouse event handler,
@@ -205,7 +205,7 @@ begin
      PendingMouseTail^:=MouseEvent;
      inc(PendingMouseTail);
      if ptrint(PendingMouseTail)=ptrint(@PendingMouseEvent)+sizeof(PendingMouseEvent) then
-      PendingMouseTail:=@PendingMouseEvent;
+      PendingMouseTail:=@PendingMouseEvent[0];
       { why isn't this done here ?
         so the win32 version do this by hand:}
        inc(PendingMouseEvents);

+ 1 - 1
rtl/win/sysfile.inc

@@ -53,7 +53,7 @@ begin
       errno:=GetLastError;
       if errno=5 then
        begin
-         if (GetFileAttributes(p)=FILE_ATTRIBUTE_DIRECTORY) then
+         if ((GetFileAttributes(p) and FILE_ATTRIBUTE_DIRECTORY)=FILE_ATTRIBUTE_DIRECTORY) then
           errno:=2;
        end;
       Errno2InoutRes;

+ 18 - 3
rtl/win/sysosh.inc

@@ -58,6 +58,21 @@ const
   ApiSuffix = 'A';
 {$endif WINCE}
 
-  function OleStrToString(source: PWideChar) : ansistring;inline;
-  procedure OleStrToStrVar(source : PWideChar;var dest : ansistring);inline;
-  function StringToOleStr(const source : ansistring) : PWideChar;inline;
+function OleStrToString(source: PWideChar) : ansistring;inline;
+procedure OleStrToStrVar(source : PWideChar;var dest : ansistring);inline;
+function StringToOleStr(const source : ansistring) : PWideChar;inline;
+
+{ package stuff }
+type
+  PLibModule = ^TLibModule;
+  TLibModule = record
+    Next: PLibModule;
+    Instance: THandle;
+    CodeInstance: THandle;
+    DataInstance: THandle;
+    ResInstance: THandle;
+    Reserved: PtrInt;
+  end;
+
+var
+  LibModuleList: PLibModule = nil;

+ 25 - 1
rtl/win/sysutils.pp

@@ -51,9 +51,14 @@ Var
 { Compatibility with Delphi }
 function Win32Check(res:boolean):boolean;inline;
 function WinCheck(res:boolean):boolean;
+function CheckWin32Version(Major,Minor : Integer ): Boolean;
+function CheckWin32Version(Major : Integer): Boolean;
+Procedure RaiseLastWin32Error;
 
 function GetFileVersion(const AFileName: string): Cardinal;
 
+procedure GetFormatSettings;
+
 implementation
 
   uses
@@ -73,6 +78,25 @@ function Win32Check(res:boolean):boolean;inline;
   end;
 
 
+procedure RaiseLastWin32Error;
+  begin
+    RaiseLastOSError;
+  end;
+
+
+function CheckWin32Version(Major : Integer): Boolean;
+  begin
+    Result:=CheckWin32Version(Major,0)
+  end;
+
+
+function CheckWin32Version(Major,Minor: Integer): Boolean;
+  begin
+    Result:=(Win32MajorVersion>Major) or
+            ((Win32MajorVersion=Major) and (Win32MinorVersion>=Minor));
+  end;
+
+
 function GetFileVersion(const AFileName:string):Cardinal;
   var
     { usefull only as long as we don't need to touch different stack pages }
@@ -901,7 +925,7 @@ Procedure LoadVersionInfo;
 Var
    versioninfo : TOSVERSIONINFO;
 begin
-   kernel32dll:=0;
+  kernel32dll:=0;
   GetDiskFreeSpaceEx:=nil;
   versioninfo.dwOSVersionInfoSize:=sizeof(versioninfo);
   GetVersionEx(versioninfo);

+ 3 - 0
rtl/win/wininc/ascfun.inc

@@ -471,6 +471,8 @@ function DdeQueryStringA(_para1:DWORD; _para2:HSZ; _para3:pchar;_para4:DWORD; _p
 function LogonUserA(_para1:LPSTR; _para2:LPSTR; _para3:LPSTR; _para4:DWORD; _para5:DWORD;_para6:PHANDLE):WINBOOL; external 'advapi32' name 'LogonUserA';
 function CreateProcessAsUserA(_para1:HANDLE; _para2:LPCTSTR; _para3:LPTSTR; _para4:LPSECURITY_ATTRIBUTES; _para5:LPSECURITY_ATTRIBUTES;_para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCTSTR;
   _para10:LPSTARTUPINFO; _para11:LPPROCESS_INFORMATION):WINBOOL; external 'advapi32' name 'CreateProcessAsUserA';
+function CreateWaitableTimerA(lpTimerAttributes :LPSECURITY_ATTRIBUTES; bManualReset:BOOl;lpTimerName:LPCTSTR):THandle;external 'kernel32' name 'CreateWaitableTimerA'; 
+function OpenWaitableTimerA(dwDesiredAccess:DWORD;bInheritHandle:BOOL;lpTimerName:LPCTSTR):THandle;external 'kernel32' name 'OpenWaitableTimerA'; 
 
 {$endif read_interface}
 
@@ -502,5 +504,6 @@ begin
   DialogBoxIndirectA:=DialogBoxIndirectParamA(hInstance,hDialogTemplate,hWndParent,lpDialogFunc,0);
 end;
 
+
 {$endif read_implementation}
 

+ 2 - 0
rtl/win/wininc/base.inc

@@ -556,6 +556,8 @@
 
      TFarProc = FARPROC;
 
+     TFNWndProc = TFarProc;
+
      PROC = FARPROC;
 
      ENUMRESTYPEPROC = function (_para1:HANDLE; _para2:LPTSTR; _para3:LONG):WINBOOL;stdcall;

+ 154 - 500
rtl/win/wininc/defines.inc

@@ -46,10 +46,8 @@
 
 {$PACKRECORDS C}
 
-  { was #define dname def_expr }
-  function UNICODE_NULL : WCHAR;
-
   const
+     UNICODE_NULL = WCHAR(#0);
      MAX_PATH = 260;
      LF_FACESIZE = 32;
      LF_FULLFACESIZE = 64;
@@ -488,6 +486,12 @@
      MEM_DECOMMIT = 16384;
      MEM_RELEASE = 32768;
      MEM_TOP_DOWN = 1048576;
+     MEM_RESET        = $80000;
+     MEM_WRITE_WATCH  = $200000;
+     MEM_PHYSICAL     = $400000;
+     MEM_LARGE_PAGES  = $20000000;
+     MEM_4MB_PAGES    = dword($80000000);
+
      EXCEPTION_GUARD_PAGE = $80000001;
      SECTION_EXTEND_SIZE = $10;
      SECTION_MAP_READ = $4;
@@ -679,8 +683,8 @@
      WS_MINIMIZEBOX = $20000;
      WS_OVERLAPPED = 0;
      WS_OVERLAPPEDWINDOW = $cf0000;
-     WS_POPUP = LONG($80000000);
-     WS_POPUPWINDOW = LONG($80880000);
+     WS_POPUP = dword($80000000);
+     WS_POPUPWINDOW = dword($80880000);
      WS_SIZEBOX = $40000;
      WS_SYSMENU = $80000;
      WS_TABSTOP = $10000;
@@ -1226,6 +1230,7 @@
      EWX_POWEROFF = 8;
      EWX_REBOOT = 2;
      EWX_SHUTDOWN = 1;
+     EWX_FORCEIFHUNG = 16;
   { ExtFloodFill  }
      FLOODFILLBORDER = 0;
      FLOODFILLSURFACE = 1;
@@ -1561,93 +1566,30 @@
      HANDLE_FLAG_INHERIT = 1;
      HANDLE_FLAG_PROTECT_FROM_CLOSE = 2;
   { GetIconInfo  }
-    { was #define dname def_expr }
-    function IDC_ARROW : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDC_IBEAM : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDC_WAIT : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDC_CROSS : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDC_UPARROW : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDC_SIZENWSE : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDC_SIZENESW : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDC_SIZEWE : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDC_SIZENS : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDC_SIZEALL : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDC_NO : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDC_APPSTARTING : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDC_HELP : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDI_APPLICATION : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDI_HAND : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDI_QUESTION : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDI_EXCLAMATION : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDI_ASTERISK : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDI_WINLOGO : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDC_SIZE : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDC_ICON : LPTSTR;
-      { return type might be wrong }
-
-    { was #define dname def_expr }
-    function IDC_HAND : LPTSTR;
-      { return type might be wrong }
+     IDC_ARROW = MAKEINTRESOURCE(32512);
+     IDC_IBEAM = MAKEINTRESOURCE(32513);
+     IDC_WAIT  = MAKEINTRESOURCE(32514);
+     IDC_CROSS = MAKEINTRESOURCE(32515);
+     IDC_UPARROW = MAKEINTRESOURCE(32516);
+     IDC_SIZENWSE = MAKEINTRESOURCE(32642);
+     IDC_SIZENESW = MAKEINTRESOURCE(32643);
+     IDC_SIZEWE = MAKEINTRESOURCE(32644);
+     IDC_SIZENS = MAKEINTRESOURCE(32645);
+     IDC_SIZEALL = MAKEINTRESOURCE(32646);
+     IDC_NO = MAKEINTRESOURCE(32648);
+     IDC_APPSTARTING = MAKEINTRESOURCE(32650);
+     IDC_HELP = MAKEINTRESOURCE(32651);
+
+     IDI_APPLICATION = MAKEINTRESOURCE(32512);
+     IDI_HAND = MAKEINTRESOURCE(32513);
+     IDI_QUESTION = MAKEINTRESOURCE(32514);
+     IDI_EXCLAMATION = MAKEINTRESOURCE(32515);
+     IDI_ASTERISK = MAKEINTRESOURCE(32516);
+     IDI_WINLOGO = MAKEINTRESOURCE(32517);
+
+     IDC_SIZE = MAKEINTRESOURCE(32640);
+     IDC_ICON = MAKEINTRESOURCE(32641);
+     IDC_HAND = MAKEINTRESOURCE(32649);
 
   { GetMapMode  }
 
@@ -1708,18 +1650,11 @@
      SIF_RANGE = 1;
      SIF_DISABLENOSCROLL = 8;
   { GetStdHandle  }
-    { was #define dname def_expr }
-    function STD_INPUT_HANDLE : DWORD;
-
-    { was #define dname def_expr }
-    function STD_OUTPUT_HANDLE : DWORD;
+     STD_INPUT_HANDLE = HANDLE(-10);
+     STD_OUTPUT_HANDLE = HANDLE(-11);
+     STD_ERROR_HANDLE = HANDLE(-12);
 
-    { was #define dname def_expr }
-    function STD_ERROR_HANDLE : DWORD;
-
-    { was #define dname def_expr }
-Const
-  INVALID_HANDLE_VALUE = HANDLE(-1);
+     INVALID_HANDLE_VALUE = HANDLE(-1);
 
   { GetStockObject  }
 
@@ -2280,8 +2215,7 @@ Const
      SC_MANAGER_QUERY_LOCK_STATUS = 16;
      SC_MANAGER_MODIFY_BOOT_CONFIG = 32;
   { PostMessage  }
-    { was #define dname def_expr }
-    function HWND_BROADCAST : HWND;
+     HWND_BROADCAST = HWND($FFFF);
 
   { PrepareTape  }
 
@@ -2332,26 +2266,13 @@ Const
      RDW_ALLCHILDREN = 128;
      RDW_NOCHILDREN = 64;
   { RegCreateKey  }
-    { was #define dname def_expr }
-    function HKEY_CLASSES_ROOT : HKEY;
-
-    { was #define dname def_expr }
-    function HKEY_CURRENT_USER : HKEY;
-
-    { was #define dname def_expr }
-    function HKEY_LOCAL_MACHINE : HKEY;
-
-    { was #define dname def_expr }
-    function HKEY_USERS : HKEY;
-
-    { was #define dname def_expr }
-    function HKEY_PERFORMANCE_DATA : HKEY;
-
-    { was #define dname def_expr }
-    function HKEY_CURRENT_CONFIG : HKEY;
-
-    { was #define dname def_expr }
-    function HKEY_DYN_DATA : HKEY;
+     HKEY_CLASSES_ROOT = HKEY($80000000);
+     HKEY_CURRENT_USER = HKEY($80000001);
+     HKEY_LOCAL_MACHINE = HKEY($80000002);
+     HKEY_USERS = HKEY($80000003);
+     HKEY_PERFORMANCE_DATA = HKEY($80000004);
+     HKEY_CURRENT_CONFIG = HKEY($80000005);	
+     HKEY_DYN_DATA = HKEY($80000006);
 
   { RegCreateKeyEx  }
 
@@ -2601,17 +2522,10 @@ Const
      EXCEPTION_CONTINUE_EXECUTION = -(1);
      EXCEPTION_CONTINUE_SEARCH = 0;
   { SetWindowPos, DeferWindowPos  }
-    { was #define dname def_expr }
-    function HWND_BOTTOM : HWND;
-
-    { was #define dname def_expr }
-    function HWND_NOTOPMOST : HWND;
-
-    { was #define dname def_expr }
-    function HWND_TOP : HWND;
-
-    { was #define dname def_expr }
-    function HWND_TOPMOST : HWND;
+     HWND_BOTTOM = HWND(1);
+     HWND_NOTOPMOST = HWND(-2);
+     HWND_TOP = HWND(0);
+     HWND_TOPMOST = HWND(-1);
 
 
   const
@@ -2906,6 +2820,7 @@ Const
      HELP_CONTEXTMENU = $a;
      HELP_FINDER = $b;
      HELP_WM_HELP = $c;
+     HELP_SETPOPUP_POS = $d;
      HELP_TCARD = $8000;
      HELP_TCARD_DATA = $10;
      HELP_TCARD_OTHER_CALLER = $11;
@@ -3137,9 +3052,7 @@ Const
      WIZ_CXDLG = 276;
      WIZ_CYDLG = 140;
   { VX_FIXEDFILEINFO structure  }
-    { was #define dname def_expr }
-    function VS_FILE_INFO : LPTSTR;
-      { return type might be wrong }
+     VS_FILE_INFO = MAKEINTRESOURCE(16);
 
 
   const
@@ -3668,9 +3581,7 @@ Const
      HHT_TOLEFT = 2048;
      HHT_TORIGHT = 1024;
   { TBADDBITMAP structure  }
-    { was #define dname def_expr }
-    function HINST_COMMCTRL : HINST;
-
+     HINST_COMMCTRL = HINST(-1);
 
   const
      IDB_STD_LARGE_COLOR = 1;
@@ -3813,23 +3724,14 @@ Const
      LVIS_SELECTED = 2;
      LVIS_OVERLAYMASK = 3840;
      LVIS_STATEIMAGEMASK = 61440;
-    { was #define dname def_expr }
-    function LPSTR_TEXTCALLBACKW : LPWSTR;
 
-    { was #define dname def_expr }
-    function LPSTR_TEXTCALLBACKA : LPSTR;
+     LPSTR_TEXTCALLBACKW = LPWSTR(-1);	
+     LPSTR_TEXTCALLBACKA = LPSTR(-1);
 
 {$ifdef UNICODE}
-
-  {const this is a function in fact !!
-     LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKW;}
-    function LPSTR_TEXTCALLBACK : LPWSTR;
-
+    LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKW;
 {$else}
-
-  {const
-     LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKA; }
-    function LPSTR_TEXTCALLBACK : LPSTR;
+    LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKA;
 {$endif}
   { UNICODE  }
   { LV_ITEM structure  }
@@ -3923,17 +3825,11 @@ Const
        TTREEITEM = TREEITEM;
        PTREEITEM = ^TREEITEM;
 
-    { was #define dname def_expr }
-    function TVI_ROOT : HTREEITEM;
-
-    { was #define dname def_expr }
-    function TVI_FIRST : HTREEITEM;
-
-    { was #define dname def_expr }
-    function TVI_LAST : HTREEITEM;
-
-    { was #define dname def_expr }
-    function TVI_SORT : HTREEITEM;
+  const
+    TVI_ROOT = HTREEITEM($FFFF0000);
+    TVI_FIRST =HTREEITEM($FFFF0001);
+    TVI_LAST = HTREEITEM($FFFF0002);
+    TVI_SORT = HTREEITEM($FFFF0003);
 
   { TV_HITTESTINFO structure  }
 
@@ -4588,6 +4484,17 @@ Const
      SW_OTHERZOOM = 2;
      SW_PARENTCLOSING = 1;
      SW_PARENTOPENING = 3;
+
+     AW_HOR_POSITIVE = $00000001;
+     AW_HOR_NEGATIVE = $00000002;
+     AW_VER_POSITIVE = $00000004;
+     AW_VER_NEGATIVE = $00000008;
+     AW_CENTER = $00000010;
+     AW_HIDE = $00010000;
+     AW_ACTIVATE = $00020000;
+     AW_SLIDE = $00040000;
+     AW_BLEND = $00080000;
+
   { Virtual Key codes  }
      VK_LBUTTON = 1;
      VK_RBUTTON = 2;
@@ -4784,12 +4691,24 @@ Const
      HTTRANSPARENT = -(1);
      HTVSCROLL = 7;
      HTZOOM = 9;
+
+     HTBORDER = 18;
+     HTSIZEFIRST = HTLEFT;
+     HTSIZELAST = HTBOTTOMRIGHT;
+     HTOBJECT = 19;
+     HTCLOSE = 20;
+     HTHELP = 21;
+     HTMINBUTTON = HTREDUCE;
+     HTMAXBUTTON = HTZOOM;
+
   { Mouse messages  }
-     MK_CONTROL = 8;
      MK_LBUTTON = 1;
-     MK_MBUTTON = 16;
      MK_RBUTTON = 2;
      MK_SHIFT = 4;
+     MK_CONTROL = 8;
+     MK_MBUTTON = 16;
+     MK_XBUTTON1 = 32;
+     MK_XBUTTON2 = 64;
   { WNDCLASS structure  }
      CS_BYTEALIGNCLIENT = 4096;
      CS_BYTEALIGNWINDOW = 8192;
@@ -4804,6 +4723,10 @@ Const
      CS_PARENTDC = 128;
      CS_SAVEBITS = 2048;
      CS_VREDRAW = 1;
+
+     CS_IME = $10000;
+     CS_DROPSHADOW = $20000;
+
      DLGWINDOWEXTRA = 30;
   { ACCEL structure  }
      FALT = 16;
@@ -4890,8 +4813,7 @@ Const
      PRF_NONCLIENT = $2;
      PRF_OWNED = $20;
   { MapWindowPoints  }
-    { was #define dname def_expr }
-    function HWND_DESKTOP : HWND;
+     HWND_DESKTOP = HWND(0);
 
   { WM_SYSCOMMAND message  }
 
@@ -5533,340 +5455,72 @@ const
   UISF_HIDEACCEL = $2;
   UISF_ACTIVE    = $4;
 
+const
+  IMAGE_DEBUG_TYPE_UNKNOWN       = 0;
+  IMAGE_DEBUG_TYPE_COFF          = 1;
+  IMAGE_DEBUG_TYPE_CODEVIEW      = 2;
+  IMAGE_DEBUG_TYPE_FPO           = 3;
+  IMAGE_DEBUG_TYPE_MISC          = 4;
+  IMAGE_DEBUG_TYPE_EXCEPTION     = 5;
+  IMAGE_DEBUG_TYPE_FIXUP         = 6;
+  IMAGE_DEBUG_TYPE_OMAP_TO_SRC   = 7;
+  IMAGE_DEBUG_TYPE_OMAP_FROM_SRC = 8;
+  IMAGE_DEBUG_TYPE_BORLAND       = 9;
+  IMAGE_DEBUG_TYPE_RESERVED10    = 10;
+  IMAGE_DEBUG_TYPE_CLSID         = 11;
+
+  IMAGE_SUBSYSTEM_UNKNOWN                 = 0; // Unknown subsystem.
+  IMAGE_SUBSYSTEM_NATIVE                  = 1; // Image doesn't require a subsystem.
+  IMAGE_SUBSYSTEM_WINDOWS_GUI             = 2; // Image runs in the Windows GUI subsystem.
+  IMAGE_SUBSYSTEM_WINDOWS_CUI             = 3; // Image runs in the Windows character subsystem.
+  IMAGE_SUBSYSTEM_OS2_CUI                 = 5; // image runs in the OS/2 character subsystem.
+  IMAGE_SUBSYSTEM_POSIX_CUI               = 7; // image runs in the Posix character subsystem.
+  IMAGE_SUBSYSTEM_NATIVE_WINDOWS          = 8; // image is a native Win9x driver.
+  IMAGE_SUBSYSTEM_WINDOWS_CE_GUI          = 9; // Image runs in the Windows CE subsystem.
+  IMAGE_SUBSYSTEM_EFI_APPLICATION         = 10;
+  IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11;
+  IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER      = 12;
+  IMAGE_SUBSYSTEM_EFI_ROM                 = 13;
+  IMAGE_SUBSYSTEM_XBOX                    = 14;
+
+// DllCharacteristics Entries
+
+//      IMAGE_LIBRARY_PROCESS_INIT           0x0001     // Reserved.
+//      IMAGE_LIBRARY_PROCESS_TERM           0x0002     // Reserved.
+//      IMAGE_LIBRARY_THREAD_INIT            0x0004     // Reserved.
+//      IMAGE_LIBRARY_THREAD_TERM            0x0008     // Reserved.
+  IMAGE_DLLCHARACTERISTICS_NO_ISOLATION    = $0200;    // Image understands isolation and doesn't want it
+  IMAGE_DLLCHARACTERISTICS_NO_SEH  	   = $0400; // Image does not use SEH.  No SE handler may reside in this image
+  IMAGE_DLLCHARACTERISTICS_NO_BIND 	   = $0800; // Do not bind this image.
+  IMAGE_DLLCHARACTERISTICS_WDM_DRIVER	   = $2000; // Driver uses WDM model
+  IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = $8000;
+
+
+// Directory Entries
+
+  IMAGE_DIRECTORY_ENTRY_EXPORT    = 0; // Export Directory
+  IMAGE_DIRECTORY_ENTRY_IMPORT    = 1; // Import Directory
+  IMAGE_DIRECTORY_ENTRY_RESOURCE  = 2; // Resource Directory
+  IMAGE_DIRECTORY_ENTRY_EXCEPTION = 3; // Exception Directory
+  IMAGE_DIRECTORY_ENTRY_SECURITY  = 4; // Security Directory
+  IMAGE_DIRECTORY_ENTRY_BASERELOC = 5; // Base Relocation Table
+  IMAGE_DIRECTORY_ENTRY_DEBUG     = 6; // Debug Directory
+
+  IMAGE_DIRECTORY_ENTRY_COPYRIGHT      = 7;   // (X86 usage)
+
+  IMAGE_DIRECTORY_ENTRY_ARCHITECTURE   = 7; // Architecture Specific Data
+  IMAGE_DIRECTORY_ENTRY_GLOBALPTR      = 8; // RVA of GP
+  IMAGE_DIRECTORY_ENTRY_TLS            = 9; // TLS Directory
+  IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG    = 10; // Load Configuration Directory
+  IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT   = 11; // Bound Import Directory in headers
+  IMAGE_DIRECTORY_ENTRY_IAT            = 12; // Import Address Table
+  IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT   = 13; // Delay Load Import Descriptors
+  IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14; // COM Runtime descriptor
+
 {$endif read_interface}
 
 
 {$ifdef read_implementation}
-    { was #define dname def_expr }
-    function UNICODE_NULL : WCHAR;
-      begin
-         UNICODE_NULL:=#0;
-      end;
-
-    { was #define dname def_expr }
-    function IDC_ARROW : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDC_ARROW:=MAKEINTRESOURCE(32512);
-      end;
-
-    { was #define dname def_expr }
-    function IDC_IBEAM : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDC_IBEAM:=MAKEINTRESOURCE(32513);
-      end;
-
-    { was #define dname def_expr }
-    function IDC_WAIT : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDC_WAIT:=MAKEINTRESOURCE(32514);
-      end;
-
-    { was #define dname def_expr }
-    function IDC_CROSS : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDC_CROSS:=MAKEINTRESOURCE(32515);
-      end;
-
-    { was #define dname def_expr }
-    function IDC_UPARROW : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDC_UPARROW:=MAKEINTRESOURCE(32516);
-      end;
-
-    { was #define dname def_expr }
-    function IDC_SIZENWSE : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDC_SIZENWSE:=MAKEINTRESOURCE(32642);
-      end;
-
-    { was #define dname def_expr }
-    function IDC_SIZENESW : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDC_SIZENESW:=MAKEINTRESOURCE(32643);
-      end;
-
-    { was #define dname def_expr }
-    function IDC_SIZEWE : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDC_SIZEWE:=MAKEINTRESOURCE(32644);
-      end;
-
-    { was #define dname def_expr }
-    function IDC_SIZENS : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDC_SIZENS:=MAKEINTRESOURCE(32645);
-      end;
-
-    { was #define dname def_expr }
-    function IDC_SIZEALL : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDC_SIZEALL:=MAKEINTRESOURCE(32646);
-      end;
-
-    { was #define dname def_expr }
-    function IDC_NO : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDC_NO:=MAKEINTRESOURCE(32648);
-      end;
-
-    { was #define dname def_expr }
-    function IDC_APPSTARTING : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDC_APPSTARTING:=MAKEINTRESOURCE(32650);
-      end;
-
-    { was #define dname def_expr }
-    function IDC_HELP : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDC_HELP:=MAKEINTRESOURCE(32651);
-      end;
-
-    { was #define dname def_expr }
-    function IDI_APPLICATION : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDI_APPLICATION:=MAKEINTRESOURCE(32512);
-      end;
-
-    { was #define dname def_expr }
-    function IDI_HAND : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDI_HAND:=MAKEINTRESOURCE(32513);
-      end;
-
-    { was #define dname def_expr }
-    function IDI_QUESTION : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDI_QUESTION:=MAKEINTRESOURCE(32514);
-      end;
-
-    { was #define dname def_expr }
-    function IDI_EXCLAMATION : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDI_EXCLAMATION:=MAKEINTRESOURCE(32515);
-      end;
-
-    { was #define dname def_expr }
-    function IDI_ASTERISK : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDI_ASTERISK:=MAKEINTRESOURCE(32516);
-      end;
-
-    { was #define dname def_expr }
-    function IDI_WINLOGO : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDI_WINLOGO:=MAKEINTRESOURCE(32517);
-      end;
-
-    { was #define dname def_expr }
-    function IDC_SIZE : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDC_SIZE:=MAKEINTRESOURCE(32640);
-      end;
-
-    { was #define dname def_expr }
-    function IDC_ICON : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDC_ICON:=MAKEINTRESOURCE(32641);
-      end;
-
-    { was #define dname def_expr }
-    function IDC_HAND : LPTSTR;
-      { return type might be wrong }
-      begin
-         IDC_HAND:=MAKEINTRESOURCE(32649);
-      end;
-
-    { was #define dname def_expr }
-    function STD_INPUT_HANDLE : DWORD;
-      begin
-         STD_INPUT_HANDLE:=DWORD(-(10));
-      end;
-
-    { was #define dname def_expr }
-    function STD_OUTPUT_HANDLE : DWORD;
-      begin
-         STD_OUTPUT_HANDLE:=DWORD(-(11));
-      end;
-
-    { was #define dname def_expr }
-    function STD_ERROR_HANDLE : DWORD;
-      begin
-         STD_ERROR_HANDLE:=DWORD(-(12));
-      end;
-
-    { was #define dname def_expr }
-{
-    function INVALID_HANDLE_VALUE : HANDLE;
-      begin
-         INVALID_HANDLE_VALUE:=HANDLE(-(1));
-      end;
-}
-
-    { was #define dname def_expr }
-    function HWND_BROADCAST : HWND;
-      begin
-         HWND_BROADCAST:=HWND($FFFF);
-      end;
-
-    { was #define dname def_expr }
-    function HKEY_CLASSES_ROOT : HKEY;
-      begin
-         HKEY_CLASSES_ROOT:=HKEY($80000000);
-      end;
-
-    { was #define dname def_expr }
-    function HKEY_CURRENT_USER : HKEY;
-      begin
-         HKEY_CURRENT_USER:=HKEY($80000001);
-      end;
-
-    { was #define dname def_expr }
-    function HKEY_LOCAL_MACHINE : HKEY;
-      begin
-         HKEY_LOCAL_MACHINE:=HKEY($80000002);
-      end;
-
-    { was #define dname def_expr }
-    function HKEY_USERS : HKEY;
-      begin
-         HKEY_USERS:=HKEY($80000003);
-      end;
-
-    { was #define dname def_expr }
-    function HKEY_PERFORMANCE_DATA : HKEY;
-      begin
-         HKEY_PERFORMANCE_DATA:=HKEY($80000004);
-      end;
-
-    { was #define dname def_expr }
-    function HKEY_CURRENT_CONFIG : HKEY;
-      begin
-         HKEY_CURRENT_CONFIG:=HKEY($80000005);
-      end;
-
-    { was #define dname def_expr }
-    function HKEY_DYN_DATA : HKEY;
-      begin
-         HKEY_DYN_DATA:=HKEY($80000006);
-      end;
-
-    { was #define dname def_expr }
-    function HWND_BOTTOM : HWND;
-      begin
-         HWND_BOTTOM:=HWND(1);
-      end;
-
-    { was #define dname def_expr }
-    function HWND_NOTOPMOST : HWND;
-      begin
-         HWND_NOTOPMOST:=HWND(-(2));
-      end;
-
-    { was #define dname def_expr }
-    function HWND_TOP : HWND;
-      begin
-         HWND_TOP:=HWND(0);
-      end;
-
-    { was #define dname def_expr }
-    function HWND_TOPMOST : HWND;
-      begin
-         HWND_TOPMOST:=HWND(-(1));
-      end;
-
-    { was #define dname def_expr }
-    function VS_FILE_INFO : LPTSTR;
-      { return type might be wrong }
-      begin
-         VS_FILE_INFO:=MAKEINTRESOURCE(16);
-      end;
-
-    { was #define dname def_expr }
-    function HINST_COMMCTRL : HINST;
-      begin
-         HINST_COMMCTRL:=HINST(-(1));
-      end;
-
-    { was #define dname def_expr }
-    function LPSTR_TEXTCALLBACKW : LPWSTR;
-      begin
-         LPSTR_TEXTCALLBACKW:=LPWSTR(-(1));
-      end;
-
-    { was #define dname def_expr }
-    function LPSTR_TEXTCALLBACKA : LPSTR;
-      begin
-         LPSTR_TEXTCALLBACKA:=LPSTR(-(1));
-      end;
-{$ifdef UNICODE}
-
-  {const this is a function in fact !!
-     LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKW;}
-    function LPSTR_TEXTCALLBACK : LPWSTR;
-      begin
-         LPSTR_TEXTCALLBACK:=LPWSTR(-(1));
-      end;
-
-{$else}
-
-  {const
-     LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKA; }
-    function LPSTR_TEXTCALLBACK : LPSTR;
-      begin
-         LPSTR_TEXTCALLBACK:=LPSTR(-(1));
-      end;
-{$endif}
-
-    { was #define dname def_expr }
-    function TVI_ROOT : HTREEITEM;
-      begin
-         TVI_ROOT:=HTREEITEM($FFFF0000);
-      end;
-
-    { was #define dname def_expr }
-    function TVI_FIRST : HTREEITEM;
-      begin
-         TVI_FIRST:=HTREEITEM($FFFF0001);
-      end;
-
-    { was #define dname def_expr }
-    function TVI_LAST : HTREEITEM;
-      begin
-         TVI_LAST:=HTREEITEM($FFFF0002);
-      end;
-
-    { was #define dname def_expr }
-    function TVI_SORT : HTREEITEM;
-      begin
-         TVI_SORT:=HTREEITEM($FFFF0003);
-      end;
-
-    { was #define dname def_expr }
-    function HWND_DESKTOP : HWND;
-      begin
-         HWND_DESKTOP:=HWND(0);
-      end;
 
   { was #define dname(params) def_expr }
   function GetFirstChild(h:HWND):HWND;

+ 2 - 3
rtl/win/wininc/func.inc

@@ -1244,9 +1244,8 @@ function GlobalLockPtr(lp:pointer):Pointer;
 function GlobalReAllocPtr(lp:Pointer;cbNew,flags:DWord):Pointer;
 function GlobalPtrHandle(lp:pointer):Pointer;
 function SetLayeredWindowAttributes(HWND:hwnd;crKey :COLORREF;bAlpha : byte;dwFlags : DWORD):WINBOOL; external 'user32' name 'SetLayeredWindowAttributes';
-
-
-
+function SignalObjectAndWait( hObjectToSignal:THANDLE;  hObjectToWaitOn:THANDLE ;dwMilliseconds:  DWORD ;bAlertable:BOOL):DWORD; external 'kernel32' name 'SignalObjectAndWait';
+function CancelWaitableTimer(hTimer:THandle):BOOL; external 'kernel32' name 'CancelWaitableTimer';
 {$endif read_interface}
 
 

+ 128 - 104
rtl/win/wininc/messages.inc

@@ -59,20 +59,20 @@
     { UNICODE  }
 
     const
-       ACM_PLAY = 1125;
-       ACM_STOP = 1126;
-       ACN_START = 1;
-       ACN_STOP = 2;
-    { Buttons  }
-       BM_CLICK = 245;
-       BM_GETCHECK = 240;
-       BM_GETIMAGE = 246;
-       BM_GETSTATE = 242;
-       BM_SETCHECK = 241;
-       BM_SETIMAGE = 247;
-       BM_SETSTATE = 243;
-       BM_SETSTYLE = 244;
-       BN_CLICKED = 0;
+     ACM_PLAY = 1125;
+     ACM_STOP = 1126;
+     ACN_START = 1;
+     ACN_STOP = 2;
+  { Buttons  }
+     BM_CLICK = 245;
+     BM_GETCHECK = 240;
+     BM_GETIMAGE = 246;
+     BM_GETSTATE = 242;
+     BM_SETCHECK = 241;
+     BM_SETIMAGE = 247;
+     BM_SETSTATE = 243;
+     BM_SETSTYLE = 244;
+     BN_CLICKED = 0;
      BN_DBLCLK = 5;
      BN_DISABLE = 4;
      BN_DOUBLECLICKED = 5;
@@ -729,10 +729,12 @@
      TCM_GETITEMA = 4869;
      TCM_INSERTITEMA = 4871;
      TCM_SETITEMA = 4870;
+     TCM_SETUNICODEFORMAT = 8197; // = CCM_SETUNICODEFORMAT
+     TCM_GETUNICODEFORMAT = 8198; // = CCM_GETUNICODEFORMAT
 {$ifdef UNICODE}
 
   const
-     TCM_GETITEM = TCM_GETITEM;
+     TCM_GETITEM = TCM_GETITEMW;
      TCM_INSERTITEM = TCM_INSERTITEMW;
      TCM_SETITEM = TCM_SETITEMW;
 {$else}
@@ -1139,6 +1141,7 @@
      WM_SYSKEYDOWN = 260;
      WM_SYSKEYUP = 261;
      WM_TCARD = 82;
+     WM_THEMECHANGED = $031A;
      WM_TIMECHANGE = 30;
      WM_TIMER = 275;
      WM_UNDO = 772;
@@ -1159,7 +1162,11 @@
      WM_XBUTTONUP     = 524;
      WM_XBUTTONDBLCLK = 525;
 
-Type
+     WM_CHANGEUISTATE  = $0127;
+     WM_UPDATEUISTATE  = $0128;
+     WM_QUERYUISTATE   = $0129;
+
+  Type
 {$ifdef MESSAGESUNIT}
 
     MSG                 = Windows.MSG;
@@ -1176,6 +1183,7 @@ Type
     TWMSetFont          = Windows.TWMSetFont;
     TWMShowWindow       = Windows.TWMShowWindow;
     TWMEraseBkgnd       = Windows.TWMEraseBkgnd;
+    TWMIconEraseBkgnd   = TWMEraseBkgnd;
     LPMSG               = Windows.MSG;
     tagMSG              = Windows.tagMSG;
     TMSG                = Windows.TMSG;
@@ -1643,7 +1651,7 @@ Type
     TWMNCPaint = record
       Msg : UINT;
       RGN : HRGN;
-      Unused : Longint;
+      Unused : WPARAM;
       Result : LRESULT;
     end;
 
@@ -1654,93 +1662,109 @@ Type
       Result : LRESULT;
     end;
 
-	  TWMSizeClipboard = record
-	    Msg: UINT;
-	    Viewer: HWND;
-	    RC: THandle;
-	    Result: LRESULT;
-	  end;
-	
-	  TWMSpoolerStatus = record
-            Msg: UINT;
-	    JobStatus: LPARAM;
-	    JobsLeft: WPARAM;
-	    Unused: WPARAM;
-	    Result: LRESULT;
-	  end;
-	
-	  TWMStyleChange = record
-	    Msg: UINT;
-	    StyleType: LPARAM;
-	    StyleStruct: PStyleStruct;
-	    Result: LRESULT;
-	  end;
-	
-	  TWMStyleChanged = TWMStyleChange;
-	  TWMStyleChanging = TWMStyleChange;
-	
-	
-	  TWMSysDeadChar = record
-	    Msg: UINT;
-	    CharCode: WPARAM;
-	    Unused: WPARAM;
-	    KeyData: LPARAM;
-	    Result: LRESULT;
-	  end;
-	
-	  TWMSystemError = record
-	    Msg: UINT;
-	    ErrSpec: WPARAM;
-	    Unused: LPARAM;
-	    Result: LRESULT;
-	  end;
-	
-	  TWMTimeChange = TWMNoParams;
-	
-	  TWMTimer = record
-	    Msg: UINT;
-	    TimerID: LPARAM;
-	    TimerProc: TFarProc;
-	    Result: LRESULT;
-	  end;
-	
-	  TWMUndo = TWMNoParams;
-	
-	  TWMVScrollClipboard = record
-	    Msg: UINT;
-	    Viewer: HWND;
-	    ScollCode: WPARAM;
-	    ThumbPos: WPARAM;
-	    Result: LRESULT;
-	  end;
-	
-	  TWMDisplayChange = record
-	    Msg: UINT;
-	    BitsPerPixel: Integer;
-	    Width: WPARAM;
-	    Height: WPARAM;
-	    Result: LRESULT;
-	  end;
-	
-	  TWMDropFiles = record
-	     Msg: UINT;
-	     Drop: THANDLE;
-	     Unused: LPARAM;
-	     Result: LRESULT;
-	  end;
-	  TWMEnable = packed record
-	     Msg: Cardinal;
-	     Enabled: LongBool;
-	     Unused: Longint;
-	     Result: Longint;
-	  end;
-	  TWMMouseActivate = packed record
-	     Msg: Cardinal;
-	     TopLevel: HWND;
-	     HitTestCode: Word;
-	     MouseMsg: Word;
-	     Result: Longint;
-	  end; 
+    TWMSizeClipboard = record
+      Msg: UINT;
+      Viewer: HWND;
+      RC: THandle;
+      Result: LRESULT;
+    end;
+
+    TWMSpoolerStatus = record
+      Msg: UINT;
+      JobStatus: LPARAM;
+      JobsLeft: WPARAM;
+      Unused: WPARAM;
+      Result: LRESULT;
+    end;
+  
+    TWMStyleChange = record
+      Msg: UINT;
+      StyleType: LPARAM;
+      StyleStruct: PStyleStruct;
+      Result: LRESULT;
+    end;
+  
+    TWMStyleChanged = TWMStyleChange;
+    TWMStyleChanging = TWMStyleChange;
+  
+  
+    TWMSysDeadChar = record
+      Msg: UINT;
+      CharCode: WPARAM;
+      Unused: WPARAM;
+      KeyData: LPARAM;
+      Result: LRESULT;
+    end;
+  
+    TWMSystemError = record
+      Msg: UINT;
+      ErrSpec: WPARAM;
+      Unused: LPARAM;
+      Result: LRESULT;
+    end;
+  
+    TWMTimeChange = TWMNoParams;
+  
+    TWMTimer = record
+      Msg: UINT;
+      TimerID: LPARAM;
+      TimerProc: TFarProc;
+      Result: LRESULT;
+    end;
+  
+    TWMUndo = TWMNoParams;
+  
+    TWMVScrollClipboard = record
+      Msg: UINT;
+      Viewer: HWND;
+      ScollCode: WPARAM;
+      ThumbPos: WPARAM;
+      Result: LRESULT;
+    end;
+  
+    TWMDisplayChange = record
+      Msg: UINT;
+      BitsPerPixel: Integer;
+      Width: WPARAM;
+      Height: WPARAM;
+      Result: LRESULT;
+    end;
+
+    TWMDropFiles = record
+      Msg: UINT;
+      Drop: THANDLE;
+      Unused: LPARAM;
+      Result: LRESULT;
+    end;
+
+    TWMEnable = record
+      Msg: UINT;
+      Enabled: BOOL;
+      Unused: LPARAM;
+      Result: LRESULT;
+    end;
+
+    TWMMouseActivate = record
+      Msg: UINT;
+      TopLevel: HWND;
+      HitTestCode: Word;
+      MouseMsg: Word;
+      Result: LRESULT;
+    end;
+
+    TWMEndSession = record
+      Msg: UINT;
+      EndSession: BOOL;
+      Unused: LPARAM;
+      Result: LRESULT;
+    end;
+    
+    TWMActivateApp = record
+      Msg: UINT;
+      Active: BOOL;
+      ThreadId: WPARAM;
+      Result: LRESULT;
+    end;
 {$endif messagesunit}
 
 {$endif read_interface}

+ 76 - 8
rtl/win/wininc/redef.inc

@@ -68,12 +68,21 @@ type
      palPalEntry   : array[Byte] of TPaletteEntry;
   end;
   PMaxLogPalette = ^TMaxLogPalette;
-  
+
   POSVersionInfoA = POSVERSIONINFO;
-  
+
   TBitmapFileHeader = BITMAPFILEHEADER;
   PBitmapFileHeader = ^TBitmapFileHeader;
 
+  TOwnerDrawState = set of (
+    odSelected,odGrayed,odDisabled,odChecked,
+    odFocused,odDefault,odHotLight,odInactive,odNoAccel,odNoFocusRect,
+    odReserved1,odReserved2,odComboBoxEdit);
+
+type
+  PKeyboardState = ^TKeyboardState;
+  TKeyboardState = array[0..255] of Byte;
+
 const
   { dll names }
   advapi32 = 'advapi32.dll';
@@ -98,11 +107,10 @@ const
 
   { Some missing consts }
   SIF_TRACKPOS = $10;
-  HTBORDER = 18;
   CP_UTF7 = 65000;
   CP_UTF8 = 65001;
   CREATE_NO_WINDOW = $08000000;
-  
+
   VK_ATTN = 246;
   VK_CRSEL = 247;
   VK_EXSEL = 248;
@@ -113,6 +121,18 @@ const
   VK_PA1 = 253;
   VK_OEM_CLEAR = 254;
 
+  WHEEL_DELTA = 120;
+  WHEEL_PAGESCROLL = MAXDWORD;
+
+  MSH_MOUSEWHEEL   = 'MSWHEEL_ROLLMSG';
+  MOUSEZ_CLASSNAME = 'MouseZ';
+  MOUSEZ_TITLE     = 'Magellan MSWHEEL';
+  MSH_WHEELSUPPORT = 'MSH_WHEELSUPPORT_MSG';
+  MSH_SCROLL_LINES = 'MSH_SCROLL_LINES_MSG';
+
+  MSH_WHEELMODULE_CLASS = MOUSEZ_CLASSNAME;
+  MSH_WHEELMODULE_TITLE = MOUSEZ_TITLE;
+
 const
   { Severity values }
   FACILITY_NT_BIT = $10000000;
@@ -190,6 +210,11 @@ function MakeResult(p1,p2,mask : Longint) : HRESULT;
 function HResultFromWin32(x : Longint) : HRESULT;
 function HResultFromNT(x : Longint) : HRESULT;
 
+function SmallPointToPoint(const P: TSmallPoint): TPoint;
+function PointToSmallPoint(const P: TPoint): TSmallPoint;
+
+function GetCurrentTime: Longint;inline;
+
 procedure InitializeCriticalSection(var CriticalSection : TRTLCriticalSection); external 'kernel32' name 'InitializeCriticalSection';
 procedure EnterCriticalSection(var CriticalSection : TRTLCriticalSection); external 'kernel32' name 'EnterCriticalSection';
 procedure LeaveCriticalSection(var CriticalSection : TRTLCriticalSection); external 'kernel32' name 'LeaveCriticalSection';
@@ -199,7 +224,6 @@ function SetCriticalSectionSpinCount(var CriticalSection : TRTLCriticalSection;d
 function TryEnterCriticalSection(var CriticalSection : TRTLCriticalSection) : BOOL; external 'kernel32' name 'TryEnterCriticalSection';
 
 
-
 function ControlService(hService:SC_HANDLE; dwControl:DWORD; var ServiceStatus:TSERVICESTATUS):WINBOOL; external 'advapi32' name 'ControlService';
 function QueryServiceStatus(hService:SC_HANDLE; var lpServiceStatus:TSERVICESTATUS):WINBOOL; external 'advapi32' name 'QueryServiceStatus';
 function SetServiceStatus(hServiceStatus:SERVICE_STATUS_HANDLE; const ServiceStatus:TSERVICESTATUS):WINBOOL; external 'advapi32' name 'SetServiceStatus';
@@ -378,9 +402,9 @@ function EnumDisplaySettings(lpszDeviceName: PChar; iModeNum: DWORD; var lpDevMo
 function EnumDisplaySettingsA(lpszDeviceName: LPCSTR; iModeNum: DWORD; var lpDevMode: TDeviceModeA): BOOL; external 'user32' name 'EnumDisplaySettingsA';
 function EnumDisplaySettingsW(lpszDeviceName: LPWSTR; iModeNum: DWORD; var lpDevMode: TDeviceModeW): BOOL; external 'user32' name 'EnumDisplaySettingsW';
 //function EnumEnhMetaFile(DC: HDC; p2: HENHMETAFILE; p3: TFNEnhMFEnumProc; p4: Pointer; const p5: TRect): BOOL; external 'gdi32' name 'EnumEnhMetaFile';
-//function EnumFontFamiliesEx(DC: HDC; var p2: TLogFont; p3: TFNFontEnumProc; p4: LPARAM; p5: DWORD): BOOL;external 'gdi32' name 'EnumFontFamiliesExA';
-//function EnumFontFamiliesExA(DC: HDC; var p2: TLogFontA; p3: TFNFontEnumProcA; p4: LPARAM; p5: DWORD): BOOL; external 'gdi32' name 'EnumFontFamiliesExA';
-//function EnumFontFamiliesExW(DC: HDC; var p2: TLogFontW; p3: TFNFontEnumProcW; p4: LPARAM; p5: DWORD): BOOL; external 'gdi32' name 'EnumFontFamiliesExW';
+function EnumFontFamiliesEx(DC: HDC; var p2: TLogFont; p3: FONTENUMEXPROC; p4: LPARAM; p5: DWORD): BOOL;external 'gdi32' name 'EnumFontFamiliesExA';
+function EnumFontFamiliesExA(DC: HDC; var p2: TLogFontA; p3: FONTENUMEXPROC; p4: LPARAM; p5: DWORD): BOOL; external 'gdi32' name 'EnumFontFamiliesExA';
+function EnumFontFamiliesExW(DC: HDC; var p2: TLogFontW; p3: FONTENUMEXPROC; p4: LPARAM; p5: DWORD): BOOL; external 'gdi32' name 'EnumFontFamiliesExW';
 //function EqualRect(const lprc1, lprc2: TRect): BOOL; external 'user32' name 'EqualRect';
 function ExtCreatePen(PenStyle, Width: DWORD; const Brush: TLogBrush; StyleCount: DWORD; Style: Pointer): HPEN; external 'gdi32' name 'ExtCreatePen';
 function ExtCreateRegion(p1: PXForm; p2: DWORD; const p3: TRgnData): HRGN; external 'gdi32' name 'ExtCreateRegion';
@@ -888,6 +912,7 @@ function VerInstallFileW(uFlags: DWORD; szSrcFileName, szDestFileName, szSrcDir,
 function VerQueryValue(pBlock: Pointer; lpSubBlock: PChar; var lplpBuffer: Pointer; var puLen: UINT): BOOL;external 'version' name 'VerQueryValueA';
 function VerQueryValueA(pBlock: Pointer; lpSubBlock: LPCSTR; var lplpBuffer: Pointer; var puLen: UINT): BOOL; external 'version' name 'VerQueryValueA';
 function VerQueryValueW(pBlock: Pointer; lpSubBlock: LPWSTR; var lplpBuffer: Pointer; var puLen: UINT): BOOL; external 'version' name 'VerQueryValueW';
+function VirtualProtect(lpAddress:LPVOID; dwSize:DWORD; flNewProtect:DWORD; var lpflOldProtect:DWORD):WINBOOL; external 'kernel32' name 'VirtualProtect';
 function VirtualQuery(lpAddress: Pointer; var lpBuffer: TMemoryBasicInformation; dwLength: DWORD): DWORD; external 'kernel32' name 'VirtualQuery';
 function VirtualQueryEx(hProcess: THandle; lpAddress: Pointer; var lpBuffer: TMemoryBasicInformation; dwLength: DWORD): DWORD; external 'kernel32' name 'VirtualQueryEx';
 function WaitCommEvent(hFile: THandle; var lpEvtMask: DWORD; lpOverlapped: POverlapped): BOOL; external 'kernel32' name 'WaitCommEvent';
@@ -972,6 +997,15 @@ function AnsiUpper(lpsz:LPSTR):LPSTR; external 'user32' name 'CharUpperA';
 function AnsiUpperBuff(lpsz:LPSTR; cchLength:DWORD):DWORD; external 'user32' name 'CharUpperBuffA';
 function AnsiLower(lpsz:LPSTR):LPSTR; external 'user32' name 'CharLowerA';
 function AnsiLowerBuff(lpsz:LPSTR; cchLength:DWORD):DWORD; external 'user32' name 'CharLowerBuffA';
+function CreateIcon(hInstance:HINST; nWidth:longint; nHeight:longint; cPlanes:BYTE; cBitsPixel:BYTE;lpbANDbits:pointer; lpbXORbits:pointer):HICON; external 'user32' name 'CreateIcon';
+function GetKeyboardState(var KeyState:TKeyboardState):WINBOOL; external 'user32' name 'GetKeyboardState';
+function SetKeyboardState(var KeyState:TKeyboardState):WINBOOL; external 'user32' name 'SetKeyboardState';
+function GetWindowThreadProcessId(hWnd:HWND;var lpdwProcessId:DWORD):DWORD; external 'user32' name 'GetWindowThreadProcessId';
+function HwndMSWheel(var puiMsh_MsgMouseWheel, puiMsh_Msg3DSupport,puiMsh_MsgScrollLines: UINT;
+  var pf3DSupport: BOOL; var piScrollLines: Integer): HWND;
+function CreateWaitableTimer(lpTimerAttributes :LPSECURITY_ATTRIBUTES; bManualReset:BOOl;lpTimerName:LPCTSTR):THandle;external 'kernel32' name 'CreateWaitableTimerA'; 
+function OpenWaitableTimer(dwDesiredAccess:DWORD;bInheritHandle:BOOL;lpTimerName:LPCTSTR):THandle;external 'kernel32' name 'OpenWaitableTimerA'; 
+function PropertySheetA(p:TPROPSHEETHEADER):longint; external 'comctl32' name 'PropertySheetA';
 
 {$endif read_interface}
 
@@ -1086,5 +1120,39 @@ begin
   LOCALE_INVARIANT := MAKELCID(MAKELANGID(LANG_INVARIANT, SUBLANG_NEUTRAL), SORT_DEFAULT);
 end;
 
+function SmallPointToPoint(const P: TSmallPoint): TPoint;
+begin
+  Result.X:=P.X;
+  Result.Y:=P.Y;
+end;
+
+function PointToSmallPoint(const P: TPoint): TSmallPoint;
+begin
+  Result.X:=P.X;
+  Result.Y:=P.Y;
+end;
+
+function GetCurrentTime: Longint;inline;
+begin
+  Result:=GetTickCount;
+end;
+
+function HwndMSWheel(var puiMsh_MsgMouseWheel, puiMsh_Msg3DSupport,puiMsh_MsgScrollLines: UINT;
+  var pf3DSupport: BOOL; var piScrollLines: Integer): HWND;
+begin
+  Result:=FindWindow(MSH_WHEELMODULE_CLASS, MSH_WHEELMODULE_TITLE);
+  puiMsh_MsgMouseWheel:=RegisterWindowMessage(MSH_MOUSEWHEEL);
+  puiMsh_Msg3DSupport:=RegisterWindowMessage(MSH_WHEELSUPPORT);
+  puiMsh_MsgScrollLines:=RegisterWindowMessage(MSH_SCROLL_LINES);
+  if (puiMsh_Msg3DSupport<>0) and (Result<>0) then
+    pf3DSupport:=BOOL(SendMessage(Result,puiMsh_Msg3DSupport,0,0))
+  else
+    pf3DSupport:=False;
+
+  if (puiMsh_MsgScrollLines<>0)  and (Result<>0) then
+    piScrollLines:=SendMessage(Result,puiMsh_MsgScrollLines,0,0)
+  else
+    piScrollLines:=3;
+end;
 {$endif read_implementation}
 

+ 227 - 15
rtl/win/wininc/struct.inc

@@ -5992,23 +5992,21 @@
      PSYSTEMAUDITACE = ^SYSTEM_AUDIT_ACE;
 
      SYSTEM_INFO = record
-          u : record
               case longint of
-                 0 : ( dwOemId : DWORD );
-                 1 : ( s : record
+                 0 : ( dwOemId : DWORD;
+		       dwPageSize : DWORD;
+          	       lpMinimumApplicationAddress : LPVOID;
+          	       lpMaximumApplicationAddress : LPVOID;
+          	       dwActiveProcessorMask : DWORD;
+          	       dwNumberOfProcessors : DWORD;
+                       dwProcessorType : DWORD;
+                       dwAllocationGranularity : DWORD;
+                       wProcessorLevel : WORD;
+                       wProcessorRevision : WORD;	
+			 );
+                 1 : ( 
                       wProcessorArchitecture : WORD;
-                      wReserved : WORD;
-                   end );
-              end;
-          dwPageSize : DWORD;
-          lpMinimumApplicationAddress : LPVOID;
-          lpMaximumApplicationAddress : LPVOID;
-          dwActiveProcessorMask : DWORD;
-          dwNumberOfProcessors : DWORD;
-          dwProcessorType : DWORD;
-          dwAllocationGranularity : DWORD;
-          wProcessorLevel : WORD;
-          wProcessorRevision : WORD;
+                    );
        end;
      LPSYSTEM_INFO = ^SYSTEM_INFO;
      _SYSTEM_INFO = SYSTEM_INFO;
@@ -6993,6 +6991,220 @@ type
   end;
   PTrackMouseEvent = ^TTrackMouseEvent;
 
+
+// File header format.
+//
+
+  PIMAGE_FILE_HEADER = ^IMAGE_FILE_HEADER;
+  _IMAGE_FILE_HEADER = record
+    Machine: WORD;
+    NumberOfSections: WORD;
+    TimeDateStamp: DWORD;
+    PointerToSymbolTable: DWORD;
+    NumberOfSymbols: DWORD;
+    SizeOfOptionalHeader: WORD;
+    Characteristics: WORD;
+  end;
+  IMAGE_FILE_HEADER = _IMAGE_FILE_HEADER;
+  TImageFileHeader = IMAGE_FILE_HEADER;
+  PImageFileHeader = PIMAGE_FILE_HEADER;
+
+
+//
+// Debug Format
+//
+
+type
+  PIMAGE_DEBUG_DIRECTORY = ^IMAGE_DEBUG_DIRECTORY;
+  _IMAGE_DEBUG_DIRECTORY = record
+    Characteristics: DWORD;
+    TimeDateStamp: DWORD;
+    MajorVersion: Word;
+    MinorVersion: Word;
+    Type_: DWORD;
+    SizeOfData: DWORD;
+    AddressOfRawData: DWORD;
+    PointerToRawData: DWORD;
+  end;
+  IMAGE_DEBUG_DIRECTORY = _IMAGE_DEBUG_DIRECTORY;
+  TImageDebugDirectory = IMAGE_DEBUG_DIRECTORY;
+  PImageDebugDirectory = PIMAGE_DEBUG_DIRECTORY;
+
+//
+// Optional header format.
+//
+
+type
+  PIMAGE_DATA_DIRECTORY = ^IMAGE_DATA_DIRECTORY;
+  _IMAGE_DATA_DIRECTORY = record
+    VirtualAddress: DWORD;
+    Size: DWORD;
+  end;
+  IMAGE_DATA_DIRECTORY = _IMAGE_DATA_DIRECTORY;
+  TImageDataDirectory = IMAGE_DATA_DIRECTORY;
+  PImageDataDirectory = PIMAGE_DATA_DIRECTORY;
+
+const
+  IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16;
+
+type
+  PIMAGE_OPTIONAL_HEADER32 = ^IMAGE_OPTIONAL_HEADER32;
+  _IMAGE_OPTIONAL_HEADER = record
+    //
+    // Standard fields.
+    //
+    Magic: Word;
+    MajorLinkerVersion: Byte;
+    MinorLinkerVersion: Byte;
+    SizeOfCode: DWORD;
+    SizeOfInitializedData: DWORD;
+    SizeOfUninitializedData: DWORD;
+    AddressOfEntryPoint: DWORD;
+    BaseOfCode: DWORD;
+    BaseOfData: DWORD;
+    //
+    // NT additional fields.
+    //
+    ImageBase: DWORD;
+    SectionAlignment: DWORD;
+    FileAlignment: DWORD;
+    MajorOperatingSystemVersion: Word;
+    MinorOperatingSystemVersion: Word;
+    MajorImageVersion: Word;
+    MinorImageVersion: Word;
+    MajorSubsystemVersion: Word;
+    MinorSubsystemVersion: Word;
+    Win32VersionValue: DWORD;
+    SizeOfImage: DWORD;
+    SizeOfHeaders: DWORD;
+    CheckSum: DWORD;
+    Subsystem: Word;
+    DllCharacteristics: Word;
+    SizeOfStackReserve: DWORD;
+    SizeOfStackCommit: DWORD;
+    SizeOfHeapReserve: DWORD;
+    SizeOfHeapCommit: DWORD;
+    LoaderFlags: DWORD;
+    NumberOfRvaAndSizes: DWORD;
+    DataDirectory: array [0..IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1] of IMAGE_DATA_DIRECTORY;
+  end;
+  IMAGE_OPTIONAL_HEADER32 = _IMAGE_OPTIONAL_HEADER;
+  TImageOptionalHeader32 = IMAGE_OPTIONAL_HEADER32;
+  PImageOptionalHeader32 = PIMAGE_OPTIONAL_HEADER32;
+
+  PIMAGE_ROM_OPTIONAL_HEADER = ^IMAGE_ROM_OPTIONAL_HEADER;
+  _IMAGE_ROM_OPTIONAL_HEADER = record
+    Magic: Word;
+    MajorLinkerVersion: Byte;
+    MinorLinkerVersion: Byte;
+    SizeOfCode: DWORD;
+    SizeOfInitializedData: DWORD;
+    SizeOfUninitializedData: DWORD;
+    AddressOfEntryPoint: DWORD;
+    BaseOfCode: DWORD;
+    BaseOfData: DWORD;
+    BaseOfBss: DWORD;
+    GprMask: DWORD;
+    CprMask: array [0..3] of DWORD;
+    GpValue: DWORD;
+  end;
+  IMAGE_ROM_OPTIONAL_HEADER = _IMAGE_ROM_OPTIONAL_HEADER;
+  TImageRomOptionalHeader = IMAGE_ROM_OPTIONAL_HEADER;
+  PImageRomOptionalHeader = PIMAGE_ROM_OPTIONAL_HEADER;
+
+  PIMAGE_OPTIONAL_HEADER64 = ^IMAGE_OPTIONAL_HEADER64;
+  _IMAGE_OPTIONAL_HEADER64 = record
+    Magic: Word;
+    MajorLinkerVersion: Byte;
+    MinorLinkerVersion: Byte;
+    SizeOfCode: DWORD;
+    SizeOfInitializedData: DWORD;
+    SizeOfUninitializedData: DWORD;
+    AddressOfEntryPoint: DWORD;
+    BaseOfCode: DWORD;
+    ImageBase: Int64;
+    SectionAlignment: DWORD;
+    FileAlignment: DWORD;
+    MajorOperatingSystemVersion: Word;
+    MinorOperatingSystemVersion: Word;
+    MajorImageVersion: Word;
+    MinorImageVersion: Word;
+    MajorSubsystemVersion: Word;
+    MinorSubsystemVersion: Word;
+    Win32VersionValue: DWORD;
+    SizeOfImage: DWORD;
+    SizeOfHeaders: DWORD;
+    CheckSum: DWORD;
+    Subsystem: Word;
+    DllCharacteristics: Word;
+    SizeOfStackReserve: Int64;
+    SizeOfStackCommit: Int64;
+    SizeOfHeapReserve: Int64;
+    SizeOfHeapCommit: Int64;
+    LoaderFlags: DWORD;
+    NumberOfRvaAndSizes: DWORD;
+    DataDirectory: array [0..IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1] of IMAGE_DATA_DIRECTORY;
+  end;
+  IMAGE_OPTIONAL_HEADER64 = _IMAGE_OPTIONAL_HEADER64;
+  TImageOptionalHeader64 = IMAGE_OPTIONAL_HEADER64;
+  PImageOptionalHeader64 = PIMAGE_OPTIONAL_HEADER64;
+
+const
+  IMAGE_SIZEOF_ROM_OPTIONAL_HEADER  = 56;
+  IMAGE_SIZEOF_STD_OPTIONAL_HEADER  = 28;
+  IMAGE_SIZEOF_NT_OPTIONAL32_HEADER = 224;
+  IMAGE_SIZEOF_NT_OPTIONAL64_HEADER = 240;
+
+  IMAGE_NT_OPTIONAL_HDR32_MAGIC = $10b;
+  IMAGE_NT_OPTIONAL_HDR64_MAGIC = $20b;
+  IMAGE_ROM_OPTIONAL_HDR_MAGIC  = $107;
+
+type
+  IMAGE_OPTIONAL_HEADER = IMAGE_OPTIONAL_HEADER32;
+  PIMAGE_OPTIONAL_HEADER = PIMAGE_OPTIONAL_HEADER32;
+  TImageOptionalHeader = IMAGE_OPTIONAL_HEADER;
+  PImageOptionalHeader = PIMAGE_OPTIONAL_HEADER;
+
+const
+  IMAGE_SIZEOF_NT_OPTIONAL_HEADER = IMAGE_SIZEOF_NT_OPTIONAL32_HEADER;
+  IMAGE_NT_OPTIONAL_HDR_MAGIC     = IMAGE_NT_OPTIONAL_HDR32_MAGIC;
+
+type
+  PIMAGE_NT_HEADERS64 = ^IMAGE_NT_HEADERS64;
+  _IMAGE_NT_HEADERS64 = record
+    Signature: DWORD;
+    FileHeader: IMAGE_FILE_HEADER;
+    OptionalHeader: IMAGE_OPTIONAL_HEADER64;
+  end;
+  IMAGE_NT_HEADERS64 = _IMAGE_NT_HEADERS64;
+  TImageNtHeaders64 = IMAGE_NT_HEADERS64;
+  PImageNtHeaders64 = PIMAGE_NT_HEADERS64;
+
+  PIMAGE_NT_HEADERS32 = ^IMAGE_NT_HEADERS32;
+  _IMAGE_NT_HEADERS = record
+    Signature: DWORD;
+    FileHeader: IMAGE_FILE_HEADER;
+    OptionalHeader: IMAGE_OPTIONAL_HEADER32;
+  end;
+  IMAGE_NT_HEADERS32 = _IMAGE_NT_HEADERS;
+  TImageNtHeaders32 = IMAGE_NT_HEADERS32;
+  PImageNtHeaders32 = PIMAGE_NT_HEADERS32;
+
+  PIMAGE_ROM_HEADERS = ^IMAGE_ROM_HEADERS;
+  _IMAGE_ROM_HEADERS = record
+    FileHeader: IMAGE_FILE_HEADER;
+    OptionalHeader: IMAGE_ROM_OPTIONAL_HEADER;
+  end;
+  IMAGE_ROM_HEADERS = _IMAGE_ROM_HEADERS;
+  TImageRomHeaders = IMAGE_ROM_HEADERS;
+  PImageRomHeaders = PIMAGE_ROM_HEADERS;
+
+  IMAGE_NT_HEADERS = IMAGE_NT_HEADERS32;
+  PIMAGE_NT_HEADERS = PIMAGE_NT_HEADERS32;
+
+  TImageNtHeaders = IMAGE_NT_HEADERS32;
+  PImageNtHeaders = PIMAGE_NT_HEADERS;
+
   _GET_FILEEX_INFO_LEVELS = (GetFileExInfoStandard, GetFileExMaxInfoLevel);
   GET_FILEEX_INFO_LEVELS = _GET_FILEEX_INFO_LEVELS;
   TGetFileExInfoLevels = GET_FILEEX_INFO_LEVELS;

+ 2 - 0
rtl/win/wininc/unifun.inc

@@ -470,6 +470,8 @@ function DdeQueryStringW(_para1:DWORD; _para2:HSZ; _para3:LPCWSTR; _para4:DWORD;
 function LogonUserW(_para1:LPWSTR; _para2:LPWSTR; _para3:LPWSTR; _para4:DWORD; _para5:DWORD;_para6:PHANDLE):WINBOOL; external 'advapi32' name 'LogonUserW';
 function CreateProcessAsUserW(_para1:HANDLE; _para2:LPCWSTR; _para3:LPWSTR; _para4:LPSECURITY_ATTRIBUTES; _para5:LPSECURITY_ATTRIBUTES;_para6:WINBOOL; _para7:DWORD; _para8:LPVOID; _para9:LPCWSTR;
   _para10:LPSTARTUPINFO;_para11:LPPROCESS_INFORMATION):WINBOOL; external 'advapi32' name 'CreateProcessAsUserW';
+function CreateWaitableTimerW(lpTimerAttributes :LPSECURITY_ATTRIBUTES; bManualReset:BOOl;lpTimerName:LPWSTR):THandle;external 'kernel32' name 'CreateWaitableTimerW'; 
+function OpenWaitableTimerW(dwDesiredAccess:DWORD;bInheritHandle:BOOL;lpTimerName:LPWSTR):THandle;external 'kernel32' name 'OpenWaitableTimerW'; 
 {$endif read_interface}
 
 

+ 45 - 11
rtl/win/winsock2.pp

@@ -241,7 +241,8 @@ const
   SO_LINGER       = $0080;          { linger on close if data present }
   SO_OOBINLINE    = $0100;          { leave received OOB data in line }
 
-  SO_DONTLINGER  =   $ff7f;
+  SO_DONTLINGER       = Integer(not SO_LINGER);
+  SO_EXCLUSIVEADDRUSE = Integer(not SO_REUSEADDR); { disallow local address reuse }
 
 { Additional options. }
 
@@ -285,14 +286,18 @@ const
         SO_GROUP_ID = $2001; // ID of a socket group
         SO_GROUP_PRIORITY = $2002; // the relative priority within a group
         SO_MAX_MSG_SIZE = $2003; // maximum message size
-        SO_Protocol_InfoA = $2004; // WSAPROTOCOL_INFOA structure
-        SO_Protocol_InfoW = $2005; // WSAPROTOCOL_INFOW structure
+        SO_PROTOCOL_INFOA = $2004; // WSAPROTOCOL_INFOA structure
+        SO_PROTOCOL_INFOW = $2005; // WSAPROTOCOL_INFOW structure
 {$IFDEF UNICODE}
-        SO_Protocol_Info = SO_Protocol_InfoW;
+        SO_PROTOCOL_INFO = SO_PROTOCOL_INFOW;
 {$ELSE}
-        SO_Protocol_Info = SO_Protocol_InfoA;
+        SO_PROTOCOL_INFO = SO_PROTOCOL_INFOA;
 {$ENDIF}
         PVD_CONFIG = $3001; // configuration info for service provider
+        SO_CONDITIONAL_ACCEPT = $3002;   { enable true conditional accept: 
+                                           connection is not ack-ed to the 
+                                           other side until conditional 
+                                           function returns CF_ACCEPT }
 
 { Address families. }
   AF_UNSPEC       = 0;               { unspecified }
@@ -319,10 +324,18 @@ const
   AF_FIREFOX      = 19;              { FireFox }
   AF_UNKNOWN1     = 20;              { Somebody is using this! }
   AF_BAN          = 21;              { Banyan }
-        AF_ATM          = 22; // Native ATM Services
-        AF_INET6        = 23; // Internetwork Version 6
-
-        AF_MAX = 24;
+  AF_ATM          = 22;              { Native ATM Services }
+  AF_INET6        = 23;              { Internetwork Version 6 }
+  AF_CLUSTER      = 24;              { Microsoft Wolfpack }
+  AF_12844        = 25;              { IEEE 1284.4 WG AF }
+  AF_IRDA         = 26;              { IrDA }
+  AF_NETDES       = 28;              { Network Designers OSI & gateway
+                                            enabled protocols }
+  AF_TCNPROCESS   = 29;
+  AF_TCNMESSAGE   = 30;
+  AF_ICLFXBM      = 31;
+
+  AF_MAX          = 32;
 
 {       Socket I/O Controls }
 {Const
@@ -359,6 +372,13 @@ const
   PF_BAN          = AF_BAN;
   PF_ATM          = AF_ATM;
   PF_INET6        = AF_INET6;
+  PF_CLUSTER      = AF_CLUSTER;
+  PF_12844        = AF_12844;
+  PF_IRDA         = AF_IRDA;
+  PF_NETDES       = AF_NETDES;
+  PF_TCNPROCESS   = AF_TCNPROCESS;
+  PF_TCNMESSAGE   = AF_TCNMESSAGE; 
+  PF_ICLFXBM      = AF_ICLFXBM;
 
   PF_MAX          = AF_MAX;
 
@@ -442,7 +462,7 @@ const
   INADDR_NONE      = $FFFFFFFF;
 
   { options for socket level  }
-  SOL_SOCKET = $ffff;
+  SOL_SOCKET      = $ffff;
 
   MSG_OOB         = $1;             {process out-of-band data }
   MSG_PEEK        = $2;             {peek at incoming message }
@@ -714,7 +734,7 @@ type
         end {TQualityOfService};
         PQOS = ^TQualityOfService;
         LPQOS = PQOS;
-
+        
 Const
         SERVICETYPE_NOTRAFFIC             =  $00000000;  // No data in this direction
         SERVICETYPE_BESTEFFORT            =  $00000001;  // Best Effort
@@ -1031,6 +1051,18 @@ Type
         LPWSAQuerySet = PWSAQuerySetA;
 {$ENDIF}
 
+  PWSAMSG = ^TWSAMSG;
+  TWSAMSG = record
+    name: PSOCKET_ADDRESS;
+    namelen: Longint;
+    lpBuffers: LPWSABUF;
+    dwBufferCount: DWORD;
+    Control: WSABUF;
+    dwFlags: DWORD;
+  end;
+  WSAMSG = TWSAMSG;
+  LPWSAMSG = PWSAMSG;
+
 Const
         LUP_DEEP = $0001;
         LUP_CONTAINERS = $0002;
@@ -1240,12 +1272,14 @@ function WSARecv( s : TSocket; lpBuffers : LPWSABUF; dwBufferCount : DWORD; var
 function WSARecvDisconnect( s : TSocket; lpInboundDisconnectData : LPWSABUF ): Longint; stdcall; external WINSOCK2_DLL name 'WSARecvDisconnect';
 function WSARecvFrom( s : TSocket; lpBuffers : LPWSABUF; dwBufferCount : DWORD; var lpNumberOfBytesRecvd : DWORD; var lpFlags : DWORD;
         lpFrom : PSockAddr; lpFromlen : PLongint; lpOverlapped : LPWSAOVERLAPPED; lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE ): Longint; stdcall; external WINSOCK2_DLL name 'WSARecvFrom';
+function WSARecvMsg( s : TSocket; lpMsg : LPWSAMSG; lpdwNumberOfBytesRecvd : DWORD; lpOverlapped : LPWSAOVERLAPPED; lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE) : Longint; stdcall; external WINSOCK2_DLL name 'WSARecvMsg';
 function WSAResetEvent( hEvent : WSAEVENT ): WordBool; stdcall; external WINSOCK2_DLL name 'WSAResetEvent';
 function WSASend( s : TSocket; lpBuffers : LPWSABUF; dwBufferCount : DWORD; var lpNumberOfBytesSent : DWORD; dwFlags : DWORD;
         lpOverlapped : LPWSAOVERLAPPED; lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE ): Longint; stdcall; external WINSOCK2_DLL name 'WSASend';
 function WSASendDisconnect( s : TSocket; lpOutboundDisconnectData : LPWSABUF ): Longint; stdcall; external WINSOCK2_DLL name 'WSASendDisconnect';
 function WSASendTo( s : TSocket; lpBuffers : LPWSABUF; dwBufferCount : DWORD; var lpNumberOfBytesSent : DWORD; dwFlags : DWORD;
         lpTo : PSockAddr; iTolen : Longint; lpOverlapped : LPWSAOVERLAPPED; lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE ): Longint; stdcall; external WINSOCK2_DLL name 'WSASendTo';
+function WSASendMsg( s : TSocket; lpMsg : LPWSAMSG; dwFlags : DWORD; lpNumberOfBytesSent : DWORD; lpOverlapped : LPWSAOVERLAPPED; lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE) : Longint; stdcall; external WINSOCK2_DLL name 'WSASendMsg';
 function WSASetEvent( hEvent : WSAEVENT ): WordBool; stdcall; external WINSOCK2_DLL name 'WSASetEvent';
 function WSASocketA( af, iType, protocol : Longint; lpProtocolInfo : LPWSAProtocol_InfoA; g : GROUP; dwFlags : DWORD ): TSocket; stdcall; external WINSOCK2_DLL name 'WSASocketA';
 function WSASocketW( af, iType, protocol : Longint; lpProtocolInfo : LPWSAProtocol_InfoW; g : GROUP; dwFlags : DWORD ): TSocket; stdcall; external WINSOCK2_DLL name 'WSASocketW';

+ 150 - 0
rtl/win32/classes.pp

@@ -32,6 +32,12 @@ uses
 type
   TWndMethod = procedure(var msg : TMessage) of object;
 
+function MakeObjectInstance(Method: TWndMethod): Pointer;
+procedure FreeObjectInstance(ObjectInstance: Pointer);
+
+function AllocateHWnd(Method: TWndMethod): HWND;
+procedure DeallocateHWnd(Wnd: HWND);
+
 {$i classesh.inc}
 
 implementation
@@ -42,9 +48,153 @@ uses
 { OS - independent class implementations are in /inc directory. }
 {$i classes.inc}
 
+type
+  PMethodWrapperTrampoline = ^TMethodWrapperTrampoline;
+  PWrapperBlock = ^TWrapperBlock;
+
+  TMethodWrapperTrampoline = packed record
+    Call : byte;
+    CallOffset : PtrInt;
+    Jmp : byte;
+    JmpOffset : PtrInt;
+    case Integer of
+      0: (Next: PMethodWrapperTrampoline; Block : PWrapperBlock);
+      1: (Method: TWndMethod);
+  end;
+
+  TWrapperBlock = packed record
+    Next : PWrapperBlock;
+    UsageCount : Longint;
+    Trampolines : array[0..0] of TMethodWrapperTrampoline;
+  end;
+
+var
+  WrapperBlockList : PWrapperBlock;
+  TrampolineFreeList : PMethodWrapperTrampoline;
+  CritObjectInstance : TCriticalSection;
+
+function TrampolineWndProc(Window: HWND; Message, WParam: WPARAM;LParam: LPARAM): HRESULT; stdcall; assembler;
+asm
+  // build up tmessage structure
+  pushl $0
+  movl (%eax),%ecx
+  pushl LPARAM
+  pushl WPARAM
+  pushl Message
+  // msg
+  leal (%esp),%edx
+  // load self
+  movl 4(%eax),%eax
+  // call method
+  call %ecx
+  addl $12,%esp
+  // load result
+  popl %eax
+end;
+
+
+function get_method_offset : Pointer;assembler;nostackframe;
+  asm
+    movl    (%esp),%eax
+    addl    $5,%eax
+  end;
+
+
+const
+  SizeOfPage = 4096;
+
+
+function MakeObjectInstance(Method: TWndMethod): Pointer;
+  var
+    NewBlock : PWrapperBlock;
+    Trampoline : PMethodWrapperTrampoline;
+  begin
+    EnterCriticalSection(CritObjectInstance);
+    try
+      if not(assigned(TrampolineFreeList)) then
+        begin
+          NewBlock:=VirtualAlloc(nil,SizeOfPage,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
+          NewBlock^.UsageCount:=0;
+          NewBlock^.Next:=WrapperBlockList;
+          WrapperBlockList:=NewBlock;
+          Trampoline:=@NewBlock^.Trampolines;
+          while pointer(Trampoline)+sizeof(Trampoline)<pointer(NewBlock)+SizeOfPage do
+            begin
+              Trampoline^.Next:=TrampolineFreeList;
+              Trampoline^.Block:=NewBlock;
+              TrampolineFreeList:=Trampoline;
+              inc(Trampoline);
+            end;
+        end;
+      Trampoline:=TrampolineFreeList;
+      TrampolineFreeList:=TrampolineFreeList^.Next;
+//      inc(Trampoline^.Block^.UsageCount);
+      Trampoline^.Call:=$e8;
+      Trampoline^.CallOffset:=pointer(@get_method_offset)-pointer(@Trampoline^.Call)-5;
+      Trampoline^.Jmp:=$e9;
+      Trampoline^.JmpOffset:=pointer(@TrampolineWndProc)-pointer(@Trampoline^.Jmp)-5;
+      Trampoline^.Method:=Method;
+      Result:=Trampoline;
+    finally
+      LeaveCriticalSection(CritObjectInstance);
+    end;
+  end;
+
+
+procedure FreeObjectInstance(ObjectInstance: Pointer);
+  begin
+    EnterCriticalSection(CritObjectInstance);
+    try
+      // block gets overwritten by method dec(PMethodWrapperTrampoline(ObjectInstance)^.Block^.UsageCount);
+      PMethodWrapperTrampoline(ObjectInstance)^.Next:=TrampolineFreeList;
+      TrampolineFreeList:=PMethodWrapperTrampoline(ObjectInstance);
+    finally
+      LeaveCriticalSection(CritObjectInstance);
+    end;
+  end;
+
+
+procedure DeleteInstBlockList;
+  var
+    hp : PWrapperBlock;
+  begin
+    EnterCriticalSection(CritObjectInstance);
+    try
+      while assigned(WrapperBlockList) do
+        begin
+          hp:=WrapperBlockList^.Next;
+          if VirtualFree(WrapperBlockList,4096,MEM_DECOMMIT) then
+            VirtualFree(WrapperBlockList,0,MEM_RELEASE);
+          WrapperBlockList:=hp;
+        end;
+    finally
+      LeaveCriticalSection(CritObjectInstance);
+    end;
+  end;
+
+
+function AllocateHWnd(Method: TWndMethod): HWND;
+  begin
+    { dummy }
+    runerror(217);
+  end;
+
+
+procedure DeallocateHWnd(Wnd: HWND);
+  begin
+    { dummy }
+    runerror(217);
+  end;
+
+
 initialization
+  WrapperBlockList:=nil;
+  TrampolineFreeList:=nil;
+  InitCriticalSection(CritObjectInstance);
   CommonInit;
 
 finalization
   CommonCleanup;
+  DeleteInstBlockList;
+  DoneCriticalSection(CritObjectInstance);
 end.

+ 1 - 1
rtl/win32/system.pp

@@ -54,7 +54,7 @@ const
   StdErrorHandle  : THandle = 0;
 
   FileNameCaseSensitive : boolean = true;
-  CtrlZMarksEOF: boolean = true; (* #26 not considered as end of file *)
+  CtrlZMarksEOF: boolean = true; (* #26 is considered as end of file *)
 
   sLineBreak = LineEnding;
   DefaultTextLineBreakStyle : TTextLineBreakStyle = tlbsCRLF;

+ 2 - 0
rtl/win32/windows.pp

@@ -14,6 +14,8 @@
  **********************************************************************}
 unit windows;
 
+{$PACKSET 1}
+
 {$ifndef NO_SMART_LINK}
 {$smartlink on}
 {$endif}

+ 1 - 1
rtl/win64/system.pp

@@ -51,7 +51,7 @@ const
   StdErrorHandle  : THandle = 0;
 
   FileNameCaseSensitive : boolean = true;
-  CtrlZMarksEOF: boolean = true; (* #26 not considered as end of file *)
+  CtrlZMarksEOF: boolean = true; (* #26 is considered as end of file *)
 
   sLineBreak = LineEnding;
   DefaultTextLineBreakStyle : TTextLineBreakStyle = tlbsCRLF;

+ 2 - 0
rtl/win64/windows.pp

@@ -14,6 +14,8 @@
  **********************************************************************}
 unit windows;
 
+{$PACKSET 1}
+
 {$ifndef NO_SMART_LINK}
 {$smartlink on}
 {$endif}

+ 62 - 53
rtl/wince/Makefile

@@ -1,8 +1,8 @@
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2007/08/29]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2007/08/22]
 #
 default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-embedded
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded
 BSDs = freebsd netbsd openbsd darwin
 UNIXs = linux $(BSDs) solaris qnx
 LIMIT83fs = go32v2 os2 emx watcom
@@ -250,157 +250,160 @@ GRAPHDIR=$(INC)/graph
 include $(WININC)/makefile.inc
 WINDOWS_SOURCE_FILES=$(addprefix $(WININC)/,$(addsuffix .inc,$(WINDOWS_FILES)))
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem
+override TARGET_UNITS+=$(SYSTEMUNIT) ctypes objpas macpas strings lineinfo lnfodwrf heaptrc windows messages dynlibs dos objects rtlconsts sysconst sysutils typinfo types fgl classes strutils convutils math dateutils varutils variants fmtbcd matrix ucomplex charset getopts winsock winsock2 sockets cmem sharemem gx
 endif
 override INSTALL_FPCPACKAGE=y
 ifeq ($(FULL_TARGET),i386-linux)
@@ -553,6 +556,9 @@ endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
 endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
+endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
 override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) $(RTL)/win
 endif
@@ -706,6 +712,9 @@ endif
 ifeq ($(FULL_TARGET),powerpc64-linux)
 override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
+endif
 ifeq ($(FULL_TARGET),powerpc64-embedded)
 override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON)
 endif

+ 2 - 1
rtl/wince/Makefile.fpc

@@ -16,7 +16,8 @@ units=$(SYSTEMUNIT) ctypes objpas macpas strings \
       varutils variants fmtbcd \
       matrix ucomplex \
       charset getopts winsock winsock2 sockets \
-      cmem sharemem
+      cmem sharemem \
+      gx
 #    initc  signals \
 #    crt graph \
 #    wincrt winmouse winevent  printer \

+ 96 - 0
rtl/wince/gx.pp

@@ -0,0 +1,96 @@
+Unit gx;
+
+{$MODE objfpc}
+
+{ convention is cdecl for WinCE API}
+{$calling cdecl}
+
+Interface
+
+Uses
+  Windows;
+
+Const
+  GXDLL = 'gx.dll';
+
+Type
+  GXDisplayProperties = Record
+    cxWidth : DWord;
+    cyHeight : DWord;            // notice lack of 'th' in the word height.
+    cbxPitch : LONG;             // number of bytes to move right one x pixel - can be negative.
+    cbyPitch : LONG;             // number of bytes to move down one y pixel - can be negative.
+    cBPP : LONG;                 // # of bits in each pixel
+    ffFormat : DWord;            // format flags.
+  End;
+
+  GXKeyList = Record
+    vkUp : SHORT;             // key for up
+    ptUp : POINT;             // x,y position of key/button.  Not on screen but in screen coordinates.
+    vkDown : SHORT;
+    ptDown : POINT;
+    vkLeft : SHORT;
+    ptLeft : POINT;
+    vkRight : SHORT;
+    ptRight : POINT;
+    vkA : SHORT;
+    ptA : POINT;
+    vkB : SHORT;
+    ptB : POINT;
+    vkC : SHORT;
+    ptC : POINT;
+    vkStart : SHORT;
+    ptStart : POINT;
+  End;
+
+Function GXOpenDisplay(AhWnd : HWND; dwFlags : DWORD) : Integer; External GXDLL Name '?GXOpenDisplay@@YAHPAUHWND__@@K@Z';
+Function GXCloseDisplay : Integer; External GXDLL Name '?GXCloseDisplay@@YAHXZ';
+Function GXBeginDraw : Pointer; External GXDLL Name '?GXBeginDraw@@YAPAXXZ';
+Function GXEndDraw : Integer; External GXDLL Name '?GXEndDraw@@YAHXZ';
+Function GXOpenInput : Integer; External GXDLL Name '?GXOpenInput@@YAHXZ';
+Function GXCloseInput : Integer; External GXDLL Name '?GXCloseInput@@YAHXZ';
+Function GXGetDisplayProperties : GXDisplayProperties; External GXDLL Name '?GXGetDisplayProperties@@YA?AUGXDisplayProperties@@XZ';
+Function GXGetDefaultKeys(iOptions : Integer) : GXKeyList; External GXDLL Name '?GXGetDefaultKeys@@YA?AUGXKeyList@@H@Z';
+Function GXSuspend : Integer; External GXDLL Name '?GXSuspend@@YAHXZ';
+Function GXResume : Integer; External GXDLL Name '?GXResume@@YAHXZ';
+Function GXSetViewport(dwTop, dwHeight, dwReserved1, dwReserved2 : DWORD) : Integer; External GXDLL Name '?GXSetViewport@@YAHKKKK@Z';
+Function GXIsDisplayDRAMBuffer : BOOL; External GXDLL Name '?GXIsDisplayDRAMBuffer@@YAHXZ';
+
+
+// Although these flags can be unrelated they still
+// have unique values.
+
+Const
+  GX_FULLSCREEN    = $01;        // for OpenDisplay()
+  GX_NORMALKEYS    = $02;
+  GX_LANDSCAPEKEYS = $03;
+
+  kfLandscape      = $8;        // Screen is rotated 270 degrees
+  kfPalette        = $10;       // Pixel values are indexes into a palette
+  kfDirect         = $20;       // Pixel values contain actual level information
+  kfDirect555      = $40;       // 5 bits each for red, green and blue values in a pixel.
+  kfDirect565      = $80;       // 5 red bits, 6 green bits and 5 blue bits per pixel
+  kfDirect888      = $100;      // 8 bits each for red, green and blue values in a pixel.
+  kfDirect444      = $200;      // 4 red, 4 green, 4 blue
+  kfDirectInverted = $400;
+
+  GETRAWFRAMEBUFFER = $00020001;
+
+Type
+  RawFrameBufferInfo = Record
+    wFormat : WORD;
+    wBPP : WORD;
+    pFramePointer : Pointer;
+    cxStride : Integer;
+    cyStride : Integer;
+    cxPixels : Integer;
+    cyPixels : Integer;
+  End;
+
+Const
+  FORMAT_565   = 1;
+  FORMAT_555   = 2;
+  FORMAT_OTHER = 3;
+
+Implementation
+
+End.

+ 13 - 16
rtl/wince/system.pp

@@ -48,7 +48,7 @@ const
   StdErrorHandle  : THandle = 0;
 
   FileNameCaseSensitive : boolean = true;
-  CtrlZMarksEOF: boolean = true; (* #26 not considered as end of file *)
+  CtrlZMarksEOF: boolean = true; (* #26 is considered as end of file *)
 
   sLineBreak = LineEnding;
   DefaultTextLineBreakStyle : TTextLineBreakStyle = tlbsCRLF;
@@ -1589,46 +1589,43 @@ procedure InitWinCEWidestrings;
                     Memory manager
 ****************************************************************************}
 
-function malloc(Size : ptrint) : Pointer; cdecl; external 'coredll';
+function malloc(Size : ptruint) : Pointer; cdecl; external 'coredll';
 procedure free(P : pointer); cdecl; external 'coredll';
-function realloc(P : Pointer; Size : ptrint) : pointer; cdecl; external 'coredll';
-function _msize(P : pointer): ptrint; cdecl; external 'coredll';
+function realloc(P : Pointer; Size : ptruint) : pointer; cdecl; external 'coredll';
+function _msize(P : pointer): ptruint; cdecl; external 'coredll';
 
-function SysGetMem (Size : ptrint) : Pointer;
+function SysGetMem (Size : ptruint) : Pointer;
 begin
   Result:=malloc(Size);
 end;
 
-Function SysFreeMem (P : pointer) : ptrint;
+Function SysFreeMem (P : pointer) : ptruint;
 begin
   free(P);
   Result:=0;
 end;
 
-Function SysFreeMemSize(p:pointer;Size:ptrint):ptrint;
+Function SysFreeMemSize(p:pointer;Size:ptruint):ptruint;
 begin
   Result:=0;
-  if size < 0 then
-    runerror(204)
-  else
-    if (size > 0) and (p <> nil) then
-      Result:=SysFreeMem(P);
+  if (size > 0) and (p <> nil) then
+    Result:=SysFreeMem(P);
 end;
 
-Function SysAllocMem(Size : ptrint) : Pointer;
+Function SysAllocMem(Size : ptruint) : Pointer;
 begin
   Result:=SysGetMem(Size);
   if Result <> nil then
     FillChar(Result^, Size, 0);
 end;
 
-Function SysReAllocMem (var p:pointer;Size:ptrint):Pointer;
+Function SysReAllocMem (var p:pointer;Size:ptruint):Pointer;
 begin
   Result:=realloc(p, Size);
   p:=Result;
 end;
 
-function SysTryResizeMem(var p:pointer;size : ptrint):boolean;
+function SysTryResizeMem(var p:pointer;size : ptruint):boolean;
 var
   res: pointer;
 begin
@@ -1638,7 +1635,7 @@ begin
     p:=res;
 end;
 
-function SysMemSize(P : pointer): ptrint;
+function SysMemSize(P : pointer): ptruint;
 begin
   Result:=_msize(P);
 end;

+ 10 - 0
rtl/wince/sysutils.pp

@@ -28,6 +28,7 @@ uses
 {$DEFINE HAS_SLEEP}
 {$DEFINE HAS_OSERROR}
 {$DEFINE HAS_OSCONFIG}
+{$DEFINE HAS_TEMPDIR}
 
 { Include platform independent interface part }
 {$i sysutilh.inc}
@@ -789,6 +790,15 @@ begin
     end;
 end;
 
+Function GetTempDir(Global : Boolean) : String;
+var
+  buf: widestring;
+begin
+  SetLength(buf, MAX_PATH);
+  SetLength(buf, GetTempPath(Length(buf) + 1, PWideChar(buf)));
+  Result:=buf;
+end;
+
 {****************************************************************************
                     Target Dependent WideString stuff
 ****************************************************************************}

+ 6 - 0
rtl/wince/windows.pp

@@ -17,6 +17,8 @@
 
 unit windows;
 
+{$PACKSET 1}
+
 {$ifndef NO_SMART_LINK}
 {$smartlink on}
 {$endif}
@@ -45,6 +47,8 @@ interface
 {$i ceshell.inc}
 {$i oleaut32.inc}
 {$i iphlpapi.inc}
+{$i simmgr.inc}
+{$i tapi.inc}
 {$i cemiss.inc}
 
 {$i redef.inc}
@@ -66,6 +70,8 @@ implementation
 {$i commdlg.inc}
 {$i ceshell.inc}
 {$i oleaut32.inc}
+{$i simmgr.inc}
+{$i tapi.inc}
 {$i cemiss.inc}
 
 {$i redef.inc}

+ 493 - 493
rtl/wince/wininc/aygshell.inc

@@ -1,493 +1,493 @@
-{
-    This file is part of the Free Pascal run time library.
-    Copyright (c) 2006 Free Pascal development team.
-
-    See the file COPYING.FPC, included in this distribution,
-    for details about the copyright.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- **********************************************************************}
-
-{ Declarations for aygshell WinCE API
-
-}
-
-{exported functions list = to do,
- * please remove functions done *
- 
-     Exports
-
-       ordinal    name
-
-           146    ?ClearFontManager@@YAXXZ (void __cdecl ClearFontManager(void))
-           166    ?CreateBackgroundSpec@@YAJPAPAVIBackgroundSpec@@@Z (long __cdecl CreateBackgroundSpec(class IBackgroundSpec * *))
-           148    ?GetAppMetric@@YAHW4_enAppMetricID@@@Z (int __cdecl GetAppMetric(enum _enAppMetricID))
-           145    ?GetStandardFont@@YAJW4eFontID@@PAPAUHFONT__@@@Z (long __cdecl GetStandardFont(enum eFontID,struct HFONT__ * *))
-           348    ?IsScreenRotationSupported@@YAHXZ (int __cdecl IsScreenRotationSupported(void))
-            63    ?MinPowerOff@@YAHXZ (int __cdecl MinPowerOff(void))
-           147    ?OnSettingChange@@YAHIJ@Z (int __cdecl OnSettingChange(unsigned int,long))
-           189    ?SHDrawGradientBubbleTitle@@YAXPAUtagGRADIENTTITLEINFO@@@Z (void __cdecl SHDrawGradientBubbleTitle(struct tagGRADIENTTITLEINFO *))
-          2006    ?SHIdleTimerReset@@YAXXZ (void __cdecl SHIdleTimerReset(void))
-           228    ?SHLoadMenuExtensions@@YAHPAUIUnknown@@PBG1PAPAX@Z (int __cdecl SHLoadMenuExtensions(struct IUnknown *,unsigned short const *,unsigned short const *,void * *))
-            66    ?SHMenuBar_GetMenu@@YAPAUHMENU__@@PAUHWND__@@H@Z (struct HMENU__ * __cdecl SHMenuBar_GetMenu(struct HWND__ *,int))
-           140    ADChgTaskList
-           139    ADChgTrustedSrcList
-           142    ADRegisterCallback
-           141    ADTaskInfo
-           143    AssociateNoteWithCall
-            52    CancelSIPUp
-            46    ComboBoxEditSubProc
-            29    ComboEditAutoComplete
-            45    ComboSubProc
-           190    CreateImageCache
-          2021    DMProcessConfigXML
-           330    DPI_ExtractIconEx
-           311    DPI_LoadImageFile
-           310    DPI_LoadLibraryRes
-           237    DisplayNotRunnableAppDialog
-           226    DoEditContextMenu
-           191    DrawAlignedIcon
-            44    EditSubProc
-            13    FreeRegisteredAppInfo
-           137    GetProtocol
-            11    GetRegisteredAppInfo
-           286    HIDPI_ImageList_LoadImage
-           287    HIDPI_ImageList_ReplaceIcon
-            92    IsFullScreenWindow
-           347    IsModulePreWinCE421
-            62    IsSANMessage
-            70    LFHeightForPoint
-           302    LoadHTML
-           241    LoadStringEtcOver
-           180    NotifyAppsOnEvent
-            24    PathAddBackslash
-            26    PathCombine
-            23    PathFindExtension
-            27    PathFindFileName
-           160    PathFindNextComponent
-           116    PathIsPrefix
-            28    PathIsRelative
-            25    PathRemoveBackslash
-            42    PathRemoveBlanks
-           107    PhoneGetCallProperties
-           106    PhoneGetCallPropertyBag
-           159    PhoneShowCallLog
-           158    SHAnimateListviewOpen
-           117    SHAnimateRects
-            22    SHAppNotifyDone
-           130    SHBoldFontAllowed
-           289    SHBorderPolyline
-           288    SHBorderRectangle
-           104    SHBox
-           103    SHBoxEx
-           114    SHChangeNotifyDeregister
-           115    SHChangeNotifyFree
-           113    SHChangeNotifyRegister
-            48    SHCheckForContextMenu
-            86    SHClearStartedBit
-            55    SHColorDisplay
-            37    SHCommandBar_EnableCommand
-            38    SHCommandBar_GetClientRect
-            36    SHCommandBar_GetCommandBarByID
-           223    SHCopyBitmap
-           306    SHCopyIcon
-           164    SHCreateCOleWindow
-            41    SHCreateContextMenu
-            43    SHCreateMainWindow
-            74    SHCreateMenuBarInternal
-           108    SHCreateNewItem
-            53    SHCreateSystemFont
-            35    SHCreateWorkerWindow
-           329    SHDeleteTodayWallpaper
-           109    SHDocManagerCreate
-           112    SHDocManagerDestroy
-           111    SHDocManagerQuery
-           110    SHDocManagerRegister
-           233    SHDrawBranding
-           234    SHDrawClippedText
-           331    SHDrawTextOverImage
-            58    SHDrawUnderline
-           136    SHDrawUnderlineColor
-            49    SHEnableEditMenu
-           192    SHEnableRadio
-            81    SHEndProfileObj
-          2013    SHEnumFiles
-          2020    SHEnumFolders
-            98    SHEnumPropSheetHandlers
-           203    SHEscapeAccelerators
-           201    SHEscapeBubbleHtml
-           168    SHFadeImage
-            54    SHFillRectClr
-           132    SHFindForegroundMenuBar
-           283    SHFindMenuBarInternal
-           209    SHFindPreviousInstance
-           212    SHFindPreviousInstanceEx
-            71    SHFontMgrCreate
-            73    SHFontMgrDestroy
-            72    SHFontMgrManageFonts
-            33    SHForceBaseState
-            99    SHForceBaseStateEx
-           102    SHFreeContextMenuExtensions
-           120    SHFreeScanners
-           213    SHGetActiveDialog
-           292    SHGetBitmapDimensions
-           285    SHGetBitmapLogPixels
-           225    SHGetCarrierBranding
-           224    SHGetCarrierBrandingFlag
-            96    SHGetDeviceFeatureLevel
-           299    SHGetDisplayRotation
-           128    SHGetEmergencyCallList
-           218    SHGetFontHeight
-           232    SHGetInputContext
-           133    SHGetKOBits
-           305    SHGetLandscapeRotationSettings
-           345    SHGetLegacySupportWindow
-           242    SHGetLocaleInfo
-           167    SHGetMessageBoxIcon
-           281    SHGetMetric
-           172    SHGetNavBarItemRect
-           163    SHGetPowerOnTime
-           153    SHGetPresetMessage
-           282    SHGetScreenOrientation
-           204    SHGetSimToolkitMenu
-          2014    SHGetSoundFileList
-           177    SHGetStyleBkColor
-           178    SHGetStyleColor
-           179    SHGetStyleFont
-           217    SHGetSystemDefaultLCID
-           144    SHGetTimeFormat
-           312    SHGetUIMetrics
-           219    SHGetUiInfo
-           221    SHGradientDeInit
-           222    SHGradientDraw
-           220    SHGradientInit
-            31    SHHandleActivate
-            30    SHHandleSipChange
-            76    SHHdrGrpSepLineDraw
-             8    SHImListPopup
-           149    SHInitPresetMessages
-           181    SHInsertPresetMessage
-           129    SHInvalidateScreen
-           101    SHInvokeContextMenuCommand
-           123    SHIsLocked
-           295    SHIsPreOzoneUpdate
-            94    SHIsPreRapierApp
-           100    SHLoadContextMenuExtensions
-           230    SHLoadFileContextMenuExtensions
-           313    SHLoadFontFromResource
-            91    SHLoadMenuPopup
-           216    SHLoadSKFromReg
-           121    SHLock
-           138    SHMakeCall
-           235    SHMakeValidFilename
-            32    SHMessageBox
-            80    SHNewProfileObj
-           155    SHNotificationAdd
-           173    SHNotificationGetData
-           157    SHNotificationRemove
-           156    SHNotificationUpdate
-           208    SHNotifyAppsOnCallConnect
-           210    SHNotifyAppsOnCarkit
-           165    SHNotifyAppsOnDock
-           195    SHNotifyAppsOnHeadset
-           214    SHNotifyAppsOnIncomingCall
-           211    SHNotifyAppsOnSpeakerPhone
-           135    SHOnFullScreenAppActivate
-           238    SHOnMissedCallCountChange
-          2008    SHOnPluginDataChange
-           227    SHOnVoiceMailCountChange
-           162    SHPaintBubbleFrame
-           294    SHPolyline
-           152    SHPopulatePresetMessageMenu
-           175    SHPreProcessLogFont
-           229    SHQueryMenuExtensions
-           297    SHRCMLDialogProc
-           293    SHRectangle
-          2022    SHRefreshStartMenu
-           215    SHRegGetHLMDWValue
-           176    SHRegSetValueEx
-           346    SHReleaseLegacySupportWindow
-           150    SHReleasePresetMessages
-           202    SHReplaceString
-           245    SHResizeDialogProc
-            50    SHRunCpl
-            82    SHRunFontManager
-           151    SHRunPresetMessagesEdit
-           239    SHRunSafeApplet
-           174    SHSameWindowProcesses
-            95    SHSavePWWarning
-           118    SHScanBuffer
-           119    SHScanFile
-            97    SHSendBackToFocusWindow
-           169    SHSetAsWatermark
-           184    SHSetBack
-           161    SHSetBubbleRegion
-           298    SHSetDisplayRotation
-           131    SHSetForegroundLastActivePopup
-           231    SHSetInputContext
-           134    SHSetKOBits
-           154    SHSetPresetMessage
-           170    SHSetSimToolkitMenu
-          1003    SHSetSoftKey
-           300    SHSetStretchMode
-            59    SHSetWindowBits
-            67    SHShowContextMenu
-          1004    SHShowSoftKeys
-            79    SHSignalDone
-           314    SHSipMightBlockUI
-           308    SHSkipDialogInitialFocus
-           207    SHSoundManGetDisplayName
-           205    SHSoundManGetDisplayNameList
-           206    SHSoundManGetFileName
-            93    SHStartAndBlock
-            85    SHStartIfNeeded
-            87    SHStartProfile
-           284    SHStretchBitmap
-           290    SHStretchBltBitmap
-           291    SHStretchBltBitmapEx
-           307    SHStretchIcon
-           105    SHTextBox
-           171    SHToolkitQueryShell
-            57    SHTrackPopupMenu
-          1000    SHTurnScreenOn
-           240    SHUnEscapeAccelerators
-           122    SHUnlock
-          2003    SHVoiceTagDelete
-          2002    SHVoiceTagPlayback
-          2001    SHVoiceTagRecognize
-          2000    SHVoiceTagTrain
-           124    SHWriteLockState
-           301    SetDialogAutoScrollBar
-            12    SetRegisteredAppInfo
-           296    SetWindowPosOnRotate
-            15    Shell_Alloc
-            17    Shell_AllocString
-            18    Shell_CatStrAlloc
-            16    Shell_Free
-            14    Shell_HeapCreate
-            19    Shell_LoadStringAlloc
-            20    Shell_RegAllocString
-            51    StrStrI
-            47    SubClassThisWindow
-           199    TZFindClose
-           197    TZFindNext
-           196    TZFindOpen
-           198    TZGetData
-          1005    UIHGetTextToStruct
-          1007    UIHLimitTextControls
-          1008    UIHSetHWNDToStruct
-          1006    UIHSetTextFromStruct
-           236    VerifyTrust
-}
-
-{$ifdef read_interface}
-
-
-//*****************************************************************************
-// consts
-//*****************************************************************************
-const
-  UserDLLAyg    = 'aygshell';
-
-  CEM_UPCASEALLWORDS     = (WM_USER + 1);
-  CEM_ENABLEUPCASE       = (WM_USER + 2);
-
-  {Gesture notifications}
-  GN_CONTEXTMENU = 1000;
-
-  IDC_COMMANDBANDS       = 100;
-  {Shell Menubar support}
-  // These defines MUST be < 100.  This is so apps can use these defines
-  // to get strings from the shell.
-  IDS_SHNEW       =  1;
-  IDS_SHEDIT      =  2;
-  IDS_SHTOOLS     =  3;
-  IDS_SHVIEW      =  4;
-  IDS_SHFILE      =  5;
-  IDS_SHGO        =  6;
-  IDS_SHFAVORITES =  7;
-  IDS_SHOPEN      =  8;
-
-  {Shared New menu support}
-  IDM_SHAREDNEW        = 10;
-  IDM_SHAREDNEWDEFAULT = 11;
-
-  NOMENU                  = $FFFF;
-  SHA_INPUTDIALOG         = $0001;
-  SHACTI_FSIPUP           = $0001;
-  SHACTI_FSIPONDEACTIVATE = $0002;
-  SHACTI_FSIPRESERVED     = $FFFF xor SHACTI_FSIPUP xor SHACTI_FSIPUP;
-
-  {Valid dwFlags}
-  SHCMBF_EMPTYBAR      = $0001;
-  SHCMBF_HIDDEN        = $0002; // create it hidden
-  SHCMBF_HIDESIPBUTTON = $0004;
-  SHCMBF_COLORBK       = $0008;
-  SHCMBF_HMENU         = $0010; // specify an hmenu for resource rather than toolbar info
-
-  SHCMBM_SETSUBMENU    = (WM_USER + 400); // wparam == id of button, lParam == hmenu, return is old hmenu
-  SHCMBM_GETSUBMENU    = (WM_USER + 401); // lParam == ID
-  SHCMBM_GETMENU       = (WM_USER + 402); // get the owning hmenu (as specified in the load resource)
-  SHCMBM_OVERRIDEKEY   = (WM_USER + 403);
-  SHCMBM_SETBKCOLOR    = (WM_USER + 406); // lParam == COLORREF
-
-
-  {Valid mask values}
-  SHIDIM_FLAGS         = $0001;
-  {Valid flags}
-  SHIDIF_DONEBUTTON          = $0001;
-  SHIDIF_SIZEDLG             = $0002;
-  SHIDIF_SIZEDLGFULLSCREEN   = $0004;
-  SHIDIF_SIPDOWN             = $0008;
-  SHIDIF_FULLSCREENNOMENUBAR = $0010;
-  SHIDIF_EMPTYMENU           = $0020;
-  SHIDIF_WANTSCROLLBAR       = $0040;
-
-  SHMBOF_NODEFAULT  = $00000001; // do not do default handling of this key
-  SHMBOF_NOTIFY     = $00000002; // send us the WM_* messages for this key
-
-  {Gesture flags}
-  SHRG_RETURNCMD      = $00000001;
-  SHRG_NOTIFYPARENT   = $00000002;
-  SHRG_LONGDELAY      = $00000008;
-  SHRG_NOANIMATION    = $00000010;
-
-  {Sip info}
-  SIP_STATUS_UNAVAILABLE = 0;
-  SIP_STATUS_AVAILABLE  = 1;
-
-  SIPF_OFF    =	$00000000;
-  SIPF_ON     =	$00000001;
-  SIPF_DOCKED =	$00000002;
-  SIPF_LOCKED =	$00000004;
-
-  {Supported system parameters}
-  SPI_SETCOMPLETIONINFO  = 223;
-  SPI_SETSIPINFO         = 224;
-  SPI_GETSIPINFO         = 225;
-  SPI_SETCURRENTIM       = 226;
-  SPI_GETCURRENTIM       = 227;
-  SPI_APPBUTTONCHANGE    = 228;
-  SPI_RESERVED           = 229;
-  SPI_SYNCSETTINGSCHANGE = 230;
-
-  WC_SIPPREF             = 'SIPPREF';
-
-  {SHFullScreen - valide states}
-  SHFS_SHOWTASKBAR     = $0001;
-  SHFS_HIDETASKBAR     = $0002;
-  SHFS_SHOWSIPBUTTON   = $0004;
-  SHFS_HIDESIPBUTTON   = $0008;
-  SHFS_SHOWSTARTICON   = $0010;
-  SHFS_HIDESTARTICON   = $0020;
-
-  { DoneButton - Valid state}
-  SHDB_SHOW            = $0001;
-  SHDB_HIDE            = $0002;
-  SHDB_SHOWCANCEL      = $0004;   // added by Windows Mobile 5.0
-  WS_NONAVDONEBUTTON   = WS_MINIMIZEBOX;
-
-//*****************************************************************************
-// types
-//*****************************************************************************
-
-type
-  //Struct sent through WM_NOTIFY when SHRG_NOTIFYPARENT is used
-  NMRGINFO = record
-    hdr : NMHDR;
-    ptAction : POINT;
-    dwItemSpec : DWORD;
-  end;
-  PNMRGINFO=^NMRGINFO;
-
-  SHACTIVATEINFO = record
-    cbSize : DWORD;
-    hwndLastFocus : HWND ;
-    bits : Longint ;
-  end;
-  PSHACTIVATEINFO=^SHACTIVATEINFO;
-
-  SHINITDLGINFO = record
-    dwMask: DWORD;
-    hDlg: HWND;
-    dwFlags : DWORD ;
-   end;
-  PSHINITDLGINFO=^SHINITDLGINFO;
-
-  SHMENUBARINFO = record
-    cbSize : DWORD;        // IN  - Indicates which members of struct are valid
-    hwndParent : HWND ;    // IN
-    dwFlags : DWORD ;      // IN  - Some features we want
-    nToolBarId : UINT ;    // IN  - Which toolbar are we using
-    hInstRes : HINST;      // IN  - Instance that owns the resources
-    nBmpId : Integer;
-    cBmpImages : Integer;  // IN  - Count of bitmap images
-    hwndMB : HWND ;        // OUT
-    clrBk : COLORREF ;     // IN  - background color of the menu bar (excluding sip)
-  end;
-  PSHMENUBARINFO=^SHMENUBARINFO;
-
-  {SHRecognizeGesture}
-  SHRGI = record
-    cbSize     : DWORD;
-    hwndClient : HWND ;
-    ptDown     : POINT;
-    dwFlags    : DWORD;
-  end;
-  SHRGINFO=SHRGI;
-  PSHRGINFO=^SHRGI;
-
-  {Sip info}
-  SIPINFO = record
-    cbSize           : DWORD;
-    fdwFlags         : DWORD;
-    rcVisibleDesktop : RECT;
-    rcSipRect        : RECT;
-    dwImDataSize     : DWORD;
-    pvImData         : pointer;
-  end;
-  TSIPINFO=SIPINFO;
-  PSIPINFO=^SIPINFO;
-  
-  SIPSTATE= (SIP_UP= 0,SIP_DOWN,SIP_FORCEDOWN,SIP_UNCHANGED,SIP_INPUTDIALOG);
-
-//*****************************************************************************
-// functions
-//*****************************************************************************
-
-function ExitWindowsEx(uFlags:UINT; dwReserved:DWORD):WINBOOL; external UserDLLAyg name 'ExitWindowsEx';
-function SHCloseApps( dwMemSought : DWORD ): WINBOOL; external UserDLLAyg name 'SHCloseApps';
-function SHCreateMenuBar(pmbi : PSHMENUBARINFO ): WINBOOL; external UserDLLAyg name 'SHCreateMenuBar';
-function SHDoneButton(hwndRequester: HWND ; dwState : DWORD ): WINBOOL; external UserDLLAyg name 'SHDoneButton';
-function SHFindMenuBar(hwnd:HWND) : HWND; external UserDLLAyg name 'SHFindMenuBar';
-function SHFullScreen(hwmdRequester: hWnd; dwState: DWord): WINBOOL; external UserDLLAyg name 'SHFullScreen';  {Pocket PC  special controls}
-function SHGetAutoRunPath( pAutoRunPath : LPTSTR ): WINBOOL; external UserDLLAyg name 'SHGetAutoRunPath';  
-
-function SHHandleWMActivate(hwnd:HWND; wParam:WPARAM; lParam:LPARAM; psai: PSHACTIVATEINFO; dwFlags:DWORD  ): WINBOOL; external UserDLLAyg name 'SHHandleWMActivate';
-function SHHandleWMSettingChange(hwnd:HWND; wParam:WPARAM; lParam:LPARAM; psai: PSHACTIVATEINFO): WINBOOL; external UserDLLAyg name 'SHHandleWMSettingChange';
-function SHInitDialog(pshidi: PSHINITDLGINFO): WINBOOL; external UserDLLAyg name 'SHInitDialog';
-function SHInitExtraControls: WINBOOL; external UserDLLAyg name 'SHInitExtraControls';
-procedure SHInputDialog(hwnd : HWND; uMsg : UINT; wParam: WPARAM ); external UserDLLAyg name 'SHInputDialog';
-function SHGetAppKeyAssoc( ptszApp: LPCTSTR ): Byte; external UserDLLAyg name 'SHGetAppKeyAssoc';
-{not exported on PocketPC 4.21 SE , may be smartphone only ? oro06 09-02-06
-function SHLoadImageResource(hinst: HINST; uIdGif: UINT ): HBITMAP; external UserDLLAyg name 'SHLoadImageResource';
-function SHLoadImageFile(pszFileName: LPCTSTR ) : HBITMAP; external UserDLLAyg name 'SHLoadImageFile';
-procedure SHNavigateBack; external UserDLLAyg name 'SHNavigateBack';
-}
-function SHSetAppKeyWndAssoc( bVk: BYTE ; hwnd : HWND ): WINBOOL; external UserDLLAyg name 'SHSetAppKeyWndAssoc';
-function SHSetNavBarText(hwndRequester : HWND; pszText : LPCTSTR): WINBOOL; external UserDLLAyg name 'SHSetNavBarText';
-
-function SHSipInfo(uiAction: UINT; uiParam: UINT; pvParam: PVOID; fWinIni: UINT  ): WINBOOL; external UserDLLAyg name 'SHSipInfo';
-function SHSipPreference(hwnd: HWND ; st : SIPSTATE ) : WINBOOL; external UserDLLAyg name 'SHSipPreference';
-function SHRecognizeGesture(var shrg : SHRGINFO): DWORD; external UserDLLAyg name 'SHRecognizeGesture';
-
-{$endif read_interface}
-
-{$ifdef read_implementation}
-
-{$endif read_implementation}
-
-
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2006 Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{ Declarations for aygshell WinCE API
+
+}
+
+{exported functions list = to do,
+ * please remove functions done *
+ 
+     Exports
+
+       ordinal    name
+
+           146    ?ClearFontManager@@YAXXZ (void __cdecl ClearFontManager(void))
+           166    ?CreateBackgroundSpec@@YAJPAPAVIBackgroundSpec@@@Z (long __cdecl CreateBackgroundSpec(class IBackgroundSpec * *))
+           148    ?GetAppMetric@@YAHW4_enAppMetricID@@@Z (int __cdecl GetAppMetric(enum _enAppMetricID))
+           145    ?GetStandardFont@@YAJW4eFontID@@PAPAUHFONT__@@@Z (long __cdecl GetStandardFont(enum eFontID,struct HFONT__ * *))
+           348    ?IsScreenRotationSupported@@YAHXZ (int __cdecl IsScreenRotationSupported(void))
+            63    ?MinPowerOff@@YAHXZ (int __cdecl MinPowerOff(void))
+           147    ?OnSettingChange@@YAHIJ@Z (int __cdecl OnSettingChange(unsigned int,long))
+           189    ?SHDrawGradientBubbleTitle@@YAXPAUtagGRADIENTTITLEINFO@@@Z (void __cdecl SHDrawGradientBubbleTitle(struct tagGRADIENTTITLEINFO *))
+          2006    ?SHIdleTimerReset@@YAXXZ (void __cdecl SHIdleTimerReset(void))
+           228    ?SHLoadMenuExtensions@@YAHPAUIUnknown@@PBG1PAPAX@Z (int __cdecl SHLoadMenuExtensions(struct IUnknown *,unsigned short const *,unsigned short const *,void * *))
+            66    ?SHMenuBar_GetMenu@@YAPAUHMENU__@@PAUHWND__@@H@Z (struct HMENU__ * __cdecl SHMenuBar_GetMenu(struct HWND__ *,int))
+           140    ADChgTaskList
+           139    ADChgTrustedSrcList
+           142    ADRegisterCallback
+           141    ADTaskInfo
+           143    AssociateNoteWithCall
+            52    CancelSIPUp
+            46    ComboBoxEditSubProc
+            29    ComboEditAutoComplete
+            45    ComboSubProc
+           190    CreateImageCache
+          2021    DMProcessConfigXML
+           330    DPI_ExtractIconEx
+           311    DPI_LoadImageFile
+           310    DPI_LoadLibraryRes
+           237    DisplayNotRunnableAppDialog
+           226    DoEditContextMenu
+           191    DrawAlignedIcon
+            44    EditSubProc
+            13    FreeRegisteredAppInfo
+           137    GetProtocol
+            11    GetRegisteredAppInfo
+           286    HIDPI_ImageList_LoadImage
+           287    HIDPI_ImageList_ReplaceIcon
+            92    IsFullScreenWindow
+           347    IsModulePreWinCE421
+            62    IsSANMessage
+            70    LFHeightForPoint
+           302    LoadHTML
+           241    LoadStringEtcOver
+           180    NotifyAppsOnEvent
+            24    PathAddBackslash
+            26    PathCombine
+            23    PathFindExtension
+            27    PathFindFileName
+           160    PathFindNextComponent
+           116    PathIsPrefix
+            28    PathIsRelative
+            25    PathRemoveBackslash
+            42    PathRemoveBlanks
+           107    PhoneGetCallProperties
+           106    PhoneGetCallPropertyBag
+           159    PhoneShowCallLog
+           158    SHAnimateListviewOpen
+           117    SHAnimateRects
+            22    SHAppNotifyDone
+           130    SHBoldFontAllowed
+           289    SHBorderPolyline
+           288    SHBorderRectangle
+           104    SHBox
+           103    SHBoxEx
+           114    SHChangeNotifyDeregister
+           115    SHChangeNotifyFree
+           113    SHChangeNotifyRegister
+            48    SHCheckForContextMenu
+            86    SHClearStartedBit
+            55    SHColorDisplay
+            37    SHCommandBar_EnableCommand
+            38    SHCommandBar_GetClientRect
+            36    SHCommandBar_GetCommandBarByID
+           223    SHCopyBitmap
+           306    SHCopyIcon
+           164    SHCreateCOleWindow
+            41    SHCreateContextMenu
+            43    SHCreateMainWindow
+            74    SHCreateMenuBarInternal
+           108    SHCreateNewItem
+            53    SHCreateSystemFont
+            35    SHCreateWorkerWindow
+           329    SHDeleteTodayWallpaper
+           109    SHDocManagerCreate
+           112    SHDocManagerDestroy
+           111    SHDocManagerQuery
+           110    SHDocManagerRegister
+           233    SHDrawBranding
+           234    SHDrawClippedText
+           331    SHDrawTextOverImage
+            58    SHDrawUnderline
+           136    SHDrawUnderlineColor
+            49    SHEnableEditMenu
+           192    SHEnableRadio
+            81    SHEndProfileObj
+          2013    SHEnumFiles
+          2020    SHEnumFolders
+            98    SHEnumPropSheetHandlers
+           203    SHEscapeAccelerators
+           201    SHEscapeBubbleHtml
+           168    SHFadeImage
+            54    SHFillRectClr
+           132    SHFindForegroundMenuBar
+           283    SHFindMenuBarInternal
+           209    SHFindPreviousInstance
+           212    SHFindPreviousInstanceEx
+            71    SHFontMgrCreate
+            73    SHFontMgrDestroy
+            72    SHFontMgrManageFonts
+            33    SHForceBaseState
+            99    SHForceBaseStateEx
+           102    SHFreeContextMenuExtensions
+           120    SHFreeScanners
+           213    SHGetActiveDialog
+           292    SHGetBitmapDimensions
+           285    SHGetBitmapLogPixels
+           225    SHGetCarrierBranding
+           224    SHGetCarrierBrandingFlag
+            96    SHGetDeviceFeatureLevel
+           299    SHGetDisplayRotation
+           128    SHGetEmergencyCallList
+           218    SHGetFontHeight
+           232    SHGetInputContext
+           133    SHGetKOBits
+           305    SHGetLandscapeRotationSettings
+           345    SHGetLegacySupportWindow
+           242    SHGetLocaleInfo
+           167    SHGetMessageBoxIcon
+           281    SHGetMetric
+           172    SHGetNavBarItemRect
+           163    SHGetPowerOnTime
+           153    SHGetPresetMessage
+           282    SHGetScreenOrientation
+           204    SHGetSimToolkitMenu
+          2014    SHGetSoundFileList
+           177    SHGetStyleBkColor
+           178    SHGetStyleColor
+           179    SHGetStyleFont
+           217    SHGetSystemDefaultLCID
+           144    SHGetTimeFormat
+           312    SHGetUIMetrics
+           219    SHGetUiInfo
+           221    SHGradientDeInit
+           222    SHGradientDraw
+           220    SHGradientInit
+            31    SHHandleActivate
+            30    SHHandleSipChange
+            76    SHHdrGrpSepLineDraw
+             8    SHImListPopup
+           149    SHInitPresetMessages
+           181    SHInsertPresetMessage
+           129    SHInvalidateScreen
+           101    SHInvokeContextMenuCommand
+           123    SHIsLocked
+           295    SHIsPreOzoneUpdate
+            94    SHIsPreRapierApp
+           100    SHLoadContextMenuExtensions
+           230    SHLoadFileContextMenuExtensions
+           313    SHLoadFontFromResource
+            91    SHLoadMenuPopup
+           216    SHLoadSKFromReg
+           121    SHLock
+           138    SHMakeCall
+           235    SHMakeValidFilename
+            32    SHMessageBox
+            80    SHNewProfileObj
+           155    SHNotificationAdd
+           173    SHNotificationGetData
+           157    SHNotificationRemove
+           156    SHNotificationUpdate
+           208    SHNotifyAppsOnCallConnect
+           210    SHNotifyAppsOnCarkit
+           165    SHNotifyAppsOnDock
+           195    SHNotifyAppsOnHeadset
+           214    SHNotifyAppsOnIncomingCall
+           211    SHNotifyAppsOnSpeakerPhone
+           135    SHOnFullScreenAppActivate
+           238    SHOnMissedCallCountChange
+          2008    SHOnPluginDataChange
+           227    SHOnVoiceMailCountChange
+           162    SHPaintBubbleFrame
+           294    SHPolyline
+           152    SHPopulatePresetMessageMenu
+           175    SHPreProcessLogFont
+           229    SHQueryMenuExtensions
+           297    SHRCMLDialogProc
+           293    SHRectangle
+          2022    SHRefreshStartMenu
+           215    SHRegGetHLMDWValue
+           176    SHRegSetValueEx
+           346    SHReleaseLegacySupportWindow
+           150    SHReleasePresetMessages
+           202    SHReplaceString
+           245    SHResizeDialogProc
+            50    SHRunCpl
+            82    SHRunFontManager
+           151    SHRunPresetMessagesEdit
+           239    SHRunSafeApplet
+           174    SHSameWindowProcesses
+            95    SHSavePWWarning
+           118    SHScanBuffer
+           119    SHScanFile
+            97    SHSendBackToFocusWindow
+           169    SHSetAsWatermark
+           184    SHSetBack
+           161    SHSetBubbleRegion
+           298    SHSetDisplayRotation
+           131    SHSetForegroundLastActivePopup
+           231    SHSetInputContext
+           134    SHSetKOBits
+           154    SHSetPresetMessage
+           170    SHSetSimToolkitMenu
+          1003    SHSetSoftKey
+           300    SHSetStretchMode
+            59    SHSetWindowBits
+            67    SHShowContextMenu
+          1004    SHShowSoftKeys
+            79    SHSignalDone
+           314    SHSipMightBlockUI
+           308    SHSkipDialogInitialFocus
+           207    SHSoundManGetDisplayName
+           205    SHSoundManGetDisplayNameList
+           206    SHSoundManGetFileName
+            93    SHStartAndBlock
+            85    SHStartIfNeeded
+            87    SHStartProfile
+           284    SHStretchBitmap
+           290    SHStretchBltBitmap
+           291    SHStretchBltBitmapEx
+           307    SHStretchIcon
+           105    SHTextBox
+           171    SHToolkitQueryShell
+            57    SHTrackPopupMenu
+          1000    SHTurnScreenOn
+           240    SHUnEscapeAccelerators
+           122    SHUnlock
+          2003    SHVoiceTagDelete
+          2002    SHVoiceTagPlayback
+          2001    SHVoiceTagRecognize
+          2000    SHVoiceTagTrain
+           124    SHWriteLockState
+           301    SetDialogAutoScrollBar
+            12    SetRegisteredAppInfo
+           296    SetWindowPosOnRotate
+            15    Shell_Alloc
+            17    Shell_AllocString
+            18    Shell_CatStrAlloc
+            16    Shell_Free
+            14    Shell_HeapCreate
+            19    Shell_LoadStringAlloc
+            20    Shell_RegAllocString
+            51    StrStrI
+            47    SubClassThisWindow
+           199    TZFindClose
+           197    TZFindNext
+           196    TZFindOpen
+           198    TZGetData
+          1005    UIHGetTextToStruct
+          1007    UIHLimitTextControls
+          1008    UIHSetHWNDToStruct
+          1006    UIHSetTextFromStruct
+           236    VerifyTrust
+}
+
+{$ifdef read_interface}
+
+
+//*****************************************************************************
+// consts
+//*****************************************************************************
+const
+  UserDLLAyg    = 'aygshell';
+
+  CEM_UPCASEALLWORDS     = (WM_USER + 1);
+  CEM_ENABLEUPCASE       = (WM_USER + 2);
+
+  {Gesture notifications}
+  GN_CONTEXTMENU = 1000;
+
+  IDC_COMMANDBANDS       = 100;
+  {Shell Menubar support}
+  // These defines MUST be < 100.  This is so apps can use these defines
+  // to get strings from the shell.
+  IDS_SHNEW       =  1;
+  IDS_SHEDIT      =  2;
+  IDS_SHTOOLS     =  3;
+  IDS_SHVIEW      =  4;
+  IDS_SHFILE      =  5;
+  IDS_SHGO        =  6;
+  IDS_SHFAVORITES =  7;
+  IDS_SHOPEN      =  8;
+
+  {Shared New menu support}
+  IDM_SHAREDNEW        = 10;
+  IDM_SHAREDNEWDEFAULT = 11;
+
+  NOMENU                  = $FFFF;
+  SHA_INPUTDIALOG         = $0001;
+  SHACTI_FSIPUP           = $0001;
+  SHACTI_FSIPONDEACTIVATE = $0002;
+  SHACTI_FSIPRESERVED     = $FFFF xor SHACTI_FSIPUP xor SHACTI_FSIPUP;
+
+  {Valid dwFlags}
+  SHCMBF_EMPTYBAR      = $0001;
+  SHCMBF_HIDDEN        = $0002; // create it hidden
+  SHCMBF_HIDESIPBUTTON = $0004;
+  SHCMBF_COLORBK       = $0008;
+  SHCMBF_HMENU         = $0010; // specify an hmenu for resource rather than toolbar info
+
+  SHCMBM_SETSUBMENU    = (WM_USER + 400); // wparam == id of button, lParam == hmenu, return is old hmenu
+  SHCMBM_GETSUBMENU    = (WM_USER + 401); // lParam == ID
+  SHCMBM_GETMENU       = (WM_USER + 402); // get the owning hmenu (as specified in the load resource)
+  SHCMBM_OVERRIDEKEY   = (WM_USER + 403);
+  SHCMBM_SETBKCOLOR    = (WM_USER + 406); // lParam == COLORREF
+
+
+  {Valid mask values}
+  SHIDIM_FLAGS         = $0001;
+  {Valid flags}
+  SHIDIF_DONEBUTTON          = $0001;
+  SHIDIF_SIZEDLG             = $0002;
+  SHIDIF_SIZEDLGFULLSCREEN   = $0004;
+  SHIDIF_SIPDOWN             = $0008;
+  SHIDIF_FULLSCREENNOMENUBAR = $0010;
+  SHIDIF_EMPTYMENU           = $0020;
+  SHIDIF_WANTSCROLLBAR       = $0040;
+
+  SHMBOF_NODEFAULT  = $00000001; // do not do default handling of this key
+  SHMBOF_NOTIFY     = $00000002; // send us the WM_* messages for this key
+
+  {Gesture flags}
+  SHRG_RETURNCMD      = $00000001;
+  SHRG_NOTIFYPARENT   = $00000002;
+  SHRG_LONGDELAY      = $00000008;
+  SHRG_NOANIMATION    = $00000010;
+
+  {Sip info}
+  SIP_STATUS_UNAVAILABLE = 0;
+  SIP_STATUS_AVAILABLE  = 1;
+
+  SIPF_OFF    =	$00000000;
+  SIPF_ON     =	$00000001;
+  SIPF_DOCKED =	$00000002;
+  SIPF_LOCKED =	$00000004;
+
+  {Supported system parameters}
+  SPI_SETCOMPLETIONINFO  = 223;
+  SPI_SETSIPINFO         = 224;
+  SPI_GETSIPINFO         = 225;
+  SPI_SETCURRENTIM       = 226;
+  SPI_GETCURRENTIM       = 227;
+  SPI_APPBUTTONCHANGE    = 228;
+  SPI_RESERVED           = 229;
+  SPI_SYNCSETTINGSCHANGE = 230;
+
+  WC_SIPPREF             = 'SIPPREF';
+
+  {SHFullScreen - valide states}
+  SHFS_SHOWTASKBAR     = $0001;
+  SHFS_HIDETASKBAR     = $0002;
+  SHFS_SHOWSIPBUTTON   = $0004;
+  SHFS_HIDESIPBUTTON   = $0008;
+  SHFS_SHOWSTARTICON   = $0010;
+  SHFS_HIDESTARTICON   = $0020;
+
+  { DoneButton - Valid state}
+  SHDB_SHOW            = $0001;
+  SHDB_HIDE            = $0002;
+  SHDB_SHOWCANCEL      = $0004;   // added by Windows Mobile 5.0
+  WS_NONAVDONEBUTTON   = WS_MINIMIZEBOX;
+
+//*****************************************************************************
+// types
+//*****************************************************************************
+
+type
+  //Struct sent through WM_NOTIFY when SHRG_NOTIFYPARENT is used
+  NMRGINFO = record
+    hdr : NMHDR;
+    ptAction : POINT;
+    dwItemSpec : DWORD;
+  end;
+  PNMRGINFO=^NMRGINFO;
+
+  SHACTIVATEINFO = record
+    cbSize : DWORD;
+    hwndLastFocus : HWND ;
+    bits : Longint ;
+  end;
+  PSHACTIVATEINFO=^SHACTIVATEINFO;
+
+  SHINITDLGINFO = record
+    dwMask: DWORD;
+    hDlg: HWND;
+    dwFlags : DWORD ;
+   end;
+  PSHINITDLGINFO=^SHINITDLGINFO;
+
+  SHMENUBARINFO = record
+    cbSize : DWORD;        // IN  - Indicates which members of struct are valid
+    hwndParent : HWND ;    // IN
+    dwFlags : DWORD ;      // IN  - Some features we want
+    nToolBarId : UINT ;    // IN  - Which toolbar are we using
+    hInstRes : HINST;      // IN  - Instance that owns the resources
+    nBmpId : Integer;
+    cBmpImages : Integer;  // IN  - Count of bitmap images
+    hwndMB : HWND ;        // OUT
+    clrBk : COLORREF ;     // IN  - background color of the menu bar (excluding sip)
+  end;
+  PSHMENUBARINFO=^SHMENUBARINFO;
+
+  {SHRecognizeGesture}
+  SHRGI = record
+    cbSize     : DWORD;
+    hwndClient : HWND ;
+    ptDown     : POINT;
+    dwFlags    : DWORD;
+  end;
+  SHRGINFO=SHRGI;
+  PSHRGINFO=^SHRGI;
+
+  {Sip info}
+  SIPINFO = record
+    cbSize           : DWORD;
+    fdwFlags         : DWORD;
+    rcVisibleDesktop : RECT;
+    rcSipRect        : RECT;
+    dwImDataSize     : DWORD;
+    pvImData         : pointer;
+  end;
+  TSIPINFO=SIPINFO;
+  PSIPINFO=^SIPINFO;
+  
+  SIPSTATE= (SIP_UP= 0,SIP_DOWN,SIP_FORCEDOWN,SIP_UNCHANGED,SIP_INPUTDIALOG);
+
+//*****************************************************************************
+// functions
+//*****************************************************************************
+
+function ExitWindowsEx(uFlags:UINT; dwReserved:DWORD):WINBOOL; external UserDLLAyg name 'ExitWindowsEx';
+function SHCloseApps( dwMemSought : DWORD ): WINBOOL; external UserDLLAyg name 'SHCloseApps';
+function SHCreateMenuBar(pmbi : PSHMENUBARINFO ): WINBOOL; external UserDLLAyg name 'SHCreateMenuBar';
+function SHDoneButton(hwndRequester: HWND ; dwState : DWORD ): WINBOOL; external UserDLLAyg name 'SHDoneButton';
+function SHFindMenuBar(hwnd:HWND) : HWND; external UserDLLAyg name 'SHFindMenuBar';
+function SHFullScreen(hwmdRequester: hWnd; dwState: DWord): WINBOOL; external UserDLLAyg name 'SHFullScreen';  {Pocket PC  special controls}
+function SHGetAutoRunPath( pAutoRunPath : LPTSTR ): WINBOOL; external UserDLLAyg name 'SHGetAutoRunPath';  
+
+function SHHandleWMActivate(hwnd:HWND; wParam:WPARAM; lParam:LPARAM; psai: PSHACTIVATEINFO; dwFlags:DWORD  ): WINBOOL; external UserDLLAyg name 'SHHandleWMActivate';
+function SHHandleWMSettingChange(hwnd:HWND; wParam:WPARAM; lParam:LPARAM; psai: PSHACTIVATEINFO): WINBOOL; external UserDLLAyg name 'SHHandleWMSettingChange';
+function SHInitDialog(pshidi: PSHINITDLGINFO): WINBOOL; external UserDLLAyg name 'SHInitDialog';
+function SHInitExtraControls: WINBOOL; external UserDLLAyg name 'SHInitExtraControls';
+procedure SHInputDialog(hwnd : HWND; uMsg : UINT; wParam: WPARAM ); external UserDLLAyg name 'SHInputDialog';
+function SHGetAppKeyAssoc( ptszApp: LPCTSTR ): Byte; external UserDLLAyg name 'SHGetAppKeyAssoc';
+{not exported on PocketPC 4.21 SE , may be smartphone only ? oro06 09-02-06
+function SHLoadImageResource(hinst: HINST; uIdGif: UINT ): HBITMAP; external UserDLLAyg name 'SHLoadImageResource';
+function SHLoadImageFile(pszFileName: LPCTSTR ) : HBITMAP; external UserDLLAyg name 'SHLoadImageFile';
+procedure SHNavigateBack; external UserDLLAyg name 'SHNavigateBack';
+}
+function SHSetAppKeyWndAssoc( bVk: BYTE ; hwnd : HWND ): WINBOOL; external UserDLLAyg name 'SHSetAppKeyWndAssoc';
+function SHSetNavBarText(hwndRequester : HWND; pszText : LPCTSTR): WINBOOL; external UserDLLAyg name 'SHSetNavBarText';
+
+function SHSipInfo(uiAction: UINT; uiParam: UINT; pvParam: PVOID; fWinIni: UINT  ): WINBOOL; external UserDLLAyg name 'SHSipInfo';
+function SHSipPreference(hwnd: HWND ; st : SIPSTATE ) : WINBOOL; external UserDLLAyg name 'SHSipPreference';
+function SHRecognizeGesture(var shrg : SHRGINFO): DWORD; external UserDLLAyg name 'SHRecognizeGesture';
+
+{$endif read_interface}
+
+{$ifdef read_implementation}
+
+{$endif read_implementation}
+
+

+ 988 - 988
rtl/wince/wininc/base.inc

@@ -1,988 +1,988 @@
-{
-    This file is part of the Free Pascal run time library.
-    This unit contains base definition for the Win32 API
-    Copyright (c) 1999-2000 by Florian Klaempfl,
-    member of the Free Pascal development team.
-
-    See the file COPYING.FPC, included in this distribution,
-    for details about the copyright.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- **********************************************************************}
-
-{
-  Base.h
-
-  Base definitions
-
-  Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-
-  Author: Scott Christley <[email protected]>
-
-  This file is part of the Windows32 API Library.
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Library General Public
-  License as published by the Free Software Foundation; either
-  version 2 of the License, or (at your option) any later version.
-
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Library General Public License for more details.
-
-  If you are interested in a warranty or support for this source code,
-  contact Scott Christley <[email protected]> for more information.
-
-
-  You should have received a copy of the GNU Library General Public
-  License along with this library; see the file COPYING.LIB.
-  If not, write to the Free Software Foundation,
-  59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-  Changes :
-
-  08/15/2005 update for wince4.2 port,ORO06
-}
-
-{$ifdef read_interface}
-
-{$PACKRECORDS C}
-  const
-     ANYSIZE_ARRAY = 1;               //~winnt, moved from define to compile SID
-  type
-
-     MAKEINTRESOURCE = pwidechar;
-	 ATOM = word;                     //windef
-     TAtom = ATOM;
-
-     WINBOOL = longbool;
-     BOOL = WINBOOL;                  //windef
-
-     CALTYPE = cardinal;
-     CALID = cardinal;
-
-     CCHAR = char;                    //winnt
-
-     COLORREF = Cardinal;             //windef
-     TCOLORREF = cardinal;
-
-     SHORT = smallint;                //winnt
-     WINT  = longint;
-     LONG  = longint;                 //winnt
-     DWORD = Cardinal;                //windef
-
-     PINTEGER = ^longint;
-     PBOOL    = ^BOOL;                //windef
-
-     LONGLONG  = int64;               //winnt
-     PLONGLONG = ^LONGLONG;           //winnt
-     ULONGLONG  = qword;              //+winnt
-     PULONGLONG = ^ULONGLONG;         //+winnt
-
-     DWORDLONG  = qword;  { was unsigned long  }
-     PDWORDLONG = ^DWORDLONG;
-
-     HANDLE = System.THandle;
-     HRESULT = System.HResult;  //winnt LONG
-     PHRESULT= ^HRESULT;
-
-     HACCEL = HANDLE;        //windef
-     HBITMAP = HANDLE;       //windef
-     HBRUSH = HANDLE;        //windef
-     HCOLORSPACE = HANDLE;   //windef
-     HCONV = HANDLE;
-     HCONVLIST = HANDLE;
-     HCURSOR = HANDLE;       //windef
-     HDBC = HANDLE;
-     HDC = HANDLE;           //windef
-     HDDEDATA = HANDLE;
-     HDESK = HANDLE;         //windef
-     HDROP = HANDLE;
-     HDWP = HANDLE;
-     HENHMETAFILE = HANDLE;  //windef
-     HENV = HANDLE;
-     HEVENT = HANDLE;        //+windef
-     HFILE = HANDLE;         //windef
-     HFONT = HANDLE;         //windef
-     HGDIOBJ = HANDLE;       //windef
-     HGLOBAL = HANDLE;       //windef
-     HGLRC = HANDLE;         //windef
-     HHOOK = HANDLE;         //windef
-     HICON = HCURSOR;        //~windef
-     LPHICON = ^HICON;       //+tapi
-     HIMAGELIST = HANDLE;
-     HINST = HANDLE;   { Not HINSTANCE, else it has problems with the var HInstance }
-     HKEY = HANDLE;          //windef
-     HKL = HANDLE;           //windef
-     HLOCAL = HANDLE;        //windef
-     HMENU = HANDLE;         //windef
-     HMETAFILE = HANDLE;     //windef
-     HMODULE = HANDLE;       //windef
-     HMONITOR = HANDLE;      //+windef
-     HPALETTE = HANDLE;      //windef
-     HPEN = HANDLE;          //windef
-     HRASCONN = HANDLE;
-     HRGN = HANDLE;          //windef
-     HRSRC = HANDLE;         //windef
-     HSTMT = HANDLE;
-     HSTR  = HANDLE;         //windef
-     HSZ = HANDLE;
-     HTASK = HANDLE;         //windef
-     HWINSTA = HANDLE;       //windef
-     HWND = HANDLE;          //windef
-     HWINEVENTHOOK = HANDLE; //+windef
-
-     LANGID = word;          //winnt
-     LCID   = DWORD;         //winnt
-     PLCID  = ^LCID;         //+winnt
-     LCTYPE = DWORD;
-     LPARAM = longint;       //windef LONG_PTR
-
-     LP     = ^word;
-     LPBOOL = ^WINBOOL;      //windef
-     LPBYTE = ^BYTE;         //windef
-     LPCCH  = PCHAR;         //winnt
-     LPCH   = PCHAR;         //winnt
-
-     LPCOLORREF = ^COLORREF; //windef
-
-     LPCSTR  = Pchar;        //winnt
-{$ifdef UNICODE}
-     LPCTSTR = Pwidechar;    //winnt
-{$else}
-     LPCTSTR = Pchar;        //winnt
-{$endif}
-
-     LPCWCH  = Pwidechar;   //winnt
-     LPCWSTR = Pwidechar;   //winnt
-
-     LPDWORD = ^DWORD;      //windef
-
-     LPHANDLE = ^HANDLE;    //windef
-     LPINT  = ^longint;     //windef
-     LPLONG = ^longint;     //windef
-
-     LPSTR = Pchar;         //winnt
-{$ifdef UNICODE}
-     LPTCH  = Pwidechar;
-     LPTSTR = Pwidechar;
-{$else}
-     LPTCH  = Pchar;
-     LPTSTR = Pchar;
-{$endif}
-
-     LRESULT = longint;     //windef LONG_PTR
-
-     LPVOID  = pointer;     //windef
-
-     LPCVOID = pointer;     //windef
-
-     LPWCH  = Pwidechar;
-     LPWORD = ^word;        //windef
-     LPWSTR = Pwidechar;    //winnt
-
-     //
-     // Locally Unique Identifier
-     //
-     //winnt : declaration moved and changed : was in struct as LUID = TlargeInteger
-     LUID = record
-       LowPart  : DWORD;
-       HighPart : LONG ;
-     end;
-     TLUID = LUID;
-     PLUID = ^LUID;
-
-     NWPSTR = Pwidechar;    //winnt
-
-     PWINBOOL = ^WINBOOL;
-     PBOOLEAN = ^BYTE;
-
-     PBYTE = ^BYTE;         //windef
-
-     PCCH = PCHAR;          //winnt
-     PCH  = PCHAR;          //winnt
-
-     PCSTR = Pchar;
-
-     PCWCH  = Pwidechar;    //winnt
-     PCWSTR = Pwidechar;    //winnt
-
-     PDWORD = ^DWORD;       //windef
-
-     PHANDLE = ^HANDLE;     //windef
-     PHKEY = ^HKEY;         //windef
-
-     PINT = ^longint;
-     PLONG = ^longint;      //windef
-     PSHORT = ^SHORT;       //windef
-     LPSHORT = ^SHORT;      //+windef
-
-     PSTR = Pchar;
-
-     PSZ = Pchar;         //winnt
-{$ifdef UNICODE}
-     PTBYTE = ^word;      //winnt
-     PTCH = Pwidechar;
-     PTCHAR = Pwidechar;  //winnt
-     PTSTR = Pwidechar;
-{$else}
-     PTBYTE = ^byte;
-     PTCH   = Pchar;
-     PTCHAR = Pchar;
-     PTSTR  = Pchar;
-{$endif}
-
-     PUCHAR = ^byte;        //windef
-     PWCH   = Pwidechar;    //winnt
-     PWCHAR = Pwidechar;    //winnt
-
-     PWORD   = ^word;       //windef
-     PUINT   = ^Cardinal;   //windef
-     PULONG  = ^Cardinal;   //windef
-     PUSHORT = ^word;       //windef
-
-     PVOID = pointer;
-
-     RETCODE = SHORT;
-
-     SC_HANDLE = HANDLE;
-     SC_LOCK = LPVOID;
-     LPSC_HANDLE = ^SC_HANDLE;
-     SPHANDLE = ^HANDLE;       //+windef
-
-     SERVICE_STATUS_HANDLE = DWORD;
-     SIZE_T = Cardinal;        //+winnt
-{$ifdef UNICODE}
-     TBYTE = word;
-     TCHAR = widechar;
-     BCHAR = word;
-{$else}
-     TBYTE = byte;
-     TCHAR = char;
-     BCHAR = BYTE;
-{$endif}
-
-     UCHAR = byte;          //windef
-//     WCHAR = WideChar;      //winnt
-
-     UINT   = Cardinal;     //windef
-     ULONG  = Cardinal;     //windef
-     USHORT = word;         //windef
-
-     PLPSTR = ^LPSTR;
-     PLPWStr= ^LPWStr;
-
-     FLOAT  = single;       //+windef
-     PFLOAT = ^FLOAT;       //+windef
-     WCHAR_T = USHORT;      //+stdlib
-     WINT_T = WCHAR_T;      //+stdlib
-     WCTYPE_T = WCHAR_T;    //+stdlib
-     TIME_T=ULONG;          //+stdlib
-     WPARAM = Longint;      //windef UINT_PTR
-{
-  Enumerations
-}
-
-     ACL_INFORMATION_CLASS = (AclRevisionInformation := 1,AclSizeInformation
-       );
-
-     _ACL_INFORMATION_CLASS = ACL_INFORMATION_CLASS;
-
-     MEDIA_TYPE = (Unknown,F5_1Pt2_512,F3_1Pt44_512,F3_2Pt88_512,
-       F3_20Pt8_512,F3_720_512,F5_360_512,F5_320_512,
-       F5_320_1024,F5_180_512,F5_160_512,RemovableMedia,
-       FixedMedia);
-
-     _MEDIA_TYPE = MEDIA_TYPE;
-
-  const
-     RASCS_DONE = $2000;
-     RASCS_PAUSED = $1000;
-
-  type
-
-     RASCONNSTATE = (RASCS_OpenPort := 0,RASCS_PortOpened,
-       RASCS_ConnectDevice,RASCS_DeviceConnected,
-       RASCS_AllDevicesConnected,RASCS_Authenticate,
-       RASCS_AuthNotify,RASCS_AuthRetry,RASCS_AuthCallback,
-       RASCS_AuthChangePassword,RASCS_AuthProject,
-       RASCS_AuthLinkSpeed,RASCS_AuthAck,RASCS_ReAuthenticate,
-       RASCS_Authenticated,RASCS_PrepareForCallback,
-       RASCS_WaitForModemReset,RASCS_WaitForCallback,
-       RASCS_Projected,RASCS_StartAuthentication,
-       RASCS_CallbackComplete,RASCS_LogonNetwork,
-       RASCS_Interactive := RASCS_PAUSED,RASCS_RetryAuthentication,
-       RASCS_CallbackSetByCaller,RASCS_PasswordExpired,
-       RASCS_Connected := RASCS_DONE,RASCS_Disconnected
-       );
-
-     _RASCONNSTATE = RASCONNSTATE;
-
-     RASPROJECTION = (RASP_PppIp := $8021, RASP_PppIpx := $802B, RASP_PppNbf := $803F,
-       RASP_Amb := $10000);
-
-     _RASPROJECTION = RASPROJECTION;
-
-     PSECURITY_DESCRIPTO = PVOID;        //+winnt
-     SECURITY_IMPERSONATION_LEVEL = (SecurityAnonymous,SecurityIdentification,
-       SecurityImpersonation,SecurityDelegation
-       );
-
-     _SECURITY_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL;
-
-     SID_IDENTIFIER_AUTHORITY_REC = array[0..5] of BYTE;  //~ added for pre-defined SID declaration
-     SID_IDENTIFIER_AUTHORITY = record                    //~winnt, moved to declare pre-defined SID
-          Value : SID_IDENTIFIER_AUTHORITY_REC;
-       end;
-     LPSID_IDENTIFIER_AUTHORITY = ^SID_IDENTIFIER_AUTHORITY;
-     PSID_IDENTIFIER_AUTHORITY = ^SID_IDENTIFIER_AUTHORITY;
-     _SID_IDENTIFIER_AUTHORITY = SID_IDENTIFIER_AUTHORITY;
-     TSIDIDENTIFIERAUTHORITY = SID_IDENTIFIER_AUTHORITY;
-     PSIDIDENTIFIERAUTHORITY = ^SID_IDENTIFIER_AUTHORITY;
-
-
-     SID = record                 //~wint
-       Revision : Byte;
-       SubAuthorityCount : Byte;
-       IdentifierAuthority : SID_IDENTIFIER_AUTHORITY;
-       SubAuthority : Array [0..ANYSIZE_ARRAY-1] of DWORD;
-     end;
-     _SID = SID;
-     PSID = ^SID;
-     
-     SID_NAME_USE = (             //~winnt, added SidTypeComputer
-      SidTypeUser:= 1,
-      SidTypeGroup,
-      SidTypeDomain,
-      SidTypeAlias,
-      SidTypeWellKnownGroup,
-      SidTypeDeletedAccount,
-      SidTypeInvalid,
-      SidTypeUnknown,
-      SidTypeComputer);
-
-     PSID_NAME_USE = ^SID_NAME_USE;      //winnt
-     _SID_NAME_USE = SID_NAME_USE;
-
-     TOKEN_INFORMATION_CLASS = (TokenUser := 1,TokenGroups,TokenPrivileges,
-       TokenOwner,TokenPrimaryGroup,TokenDefaultDacl,
-       TokenSource,TokenType,TokenImpersonationLevel,
-       TokenStatistics);
-
-     _TOKEN_INFORMATION_CLASS = TOKEN_INFORMATION_CLASS;
-     TTokenInformationClass   = TOKEN_INFORMATION_CLASS;
-
-     TOKEN_TYPE = (TokenPrimary := 1,TokenImpersonation
-       );
-
-     tagTOKEN_TYPE = TOKEN_TYPE;
-
- {
-   Macros
- }
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GetBValue(rgb : longint) : BYTE;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GetGValue(rgb : longint) : BYTE;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GetRValue(rgb : longint) : BYTE;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function RGB(r,g,b : longint) : DWORD;
-
-  {  Not convertable by H2PAS
-  #define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) \
-      (fn)((hwnd), (int)(wParam), (NMHDR FAR )(lParam))
-   }
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function HIBYTE(w : longint) : BYTE;      //windef
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function HIWORD(l : longint) : WORD;      //windef
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function LOBYTE(w : longint) : BYTE;      //windef
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function LOWORD(l : longint) : WORD;      //windef
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function MAKELONG(a,b : longint) : LONG;  //windef
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function MAKEWORD(a,b : longint) : WORD;  //windef
-
-  { original Cygnus headers also had the following defined:  }
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function SEXT_HIWORD(l : longint) : longint;
-    { return type might be wrong }
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function ZEXT_HIWORD(l : longint) : longint;
-    { return type might be wrong }
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function SEXT_LOWORD(l : longint) : longint;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function INDEXTOOVERLAYMASK(i : longint) : longint;
-    { return type might be wrong }
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function INDEXTOSTATEIMAGEMASK(i : longint) : longint;
-    { return type might be wrong }
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function MAKEINTATOM(i : longint) : LPTSTR;
-
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function MAKELANGID(p,s : longint) : longint;    //winnt
-    { return type might be wrong }
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function PRIMARYLANGID(lgid : longint) : WORD;   //winnt
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function SUBLANGID(lgid : longint) : longint;    //winnt
-    { return type might be wrong }
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function LANGIDFROMLCID(lcid : longint) : WORD;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function SORTIDFROMLCID(lcid : longint) : WORD;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function MAKELCID(lgid,srtid : longint) : DWORD;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function MAKELPARAM(l,h : longint) : LPARAM;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function MAKELRESULT(l,h : longint) : LRESULT;
-
-  {  Not convertable by H2PAS
-  #define MAKEPOINTS(l)   ( ((POINTS FAR  ) & (l)))
-   }
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function MAKEROP4(fore,back : longint) : DWORD;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function MAKEWPARAM(l,h : longint) : WPARAM;
-
-{$ifndef max}
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function max(a,b : longint) : longint;  //windef
-    { return type might be wrong }
-
-{$endif}
-{$ifndef min}
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function min(a,b : longint) : longint;  //windef
-    { return type might be wrong }
-
-{$endif}
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function PALETTEINDEX(i : longint) : COLORREF;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function PALETTERGB(r,g,b : longint) : longint;
-    { return type might be wrong }
-
-  (*  Not convertable by H2PAS
-  #define POINTSTOPOINT(pt, pts) {(pt).x = (SHORT) LOWORD(pts); \
-        (pt).y = (SHORT) HIWORD(pts);}
-  #define POINTTOPOINTS(pt) \
-      (MAKELONG((short) ((pt).x), (short) ((pt).y)))
-   *)
-  { already declared before
-  #define INDEXTOOVERLAYMASK(i) ((i) << 8)
-  #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)
-   }
-  {  Not convertable by H2PAS
-  #ifdef UNICODE
-  #define TEXT(quote) L##quote
-  #else
-  #define TEXT(quote) quote
-  #endif
-   }
-
- {
-    Definitions for callback procedures
- }
-
- type
-
-     BFFCALLBACK = function (_para1:HWND; _para2:UINT; _para3:LPARAM; _para4:LPARAM):longint;
-
-     LPCCHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
-
-     LPCFHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
-
-     PTHREAD_START_ROUTINE = Pointer;
-
-     LPTHREAD_START_ROUTINE = PTHREAD_START_ROUTINE;
-
-     EDITSTREAMCALLBACK = function (_para1:DWORD; _para2:LPBYTE; _para3:LONG; _para4:LONG):DWORD;
-
-     LPFRHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
-
-     LPOFNHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
-
-     LPPRINTHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
-
-     LPSETUPHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
-
-     DLGPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):LRESULT;
-
-     PFNPROPSHEETCALLBACK = function (_para1:HWND; _para2:UINT; _para3:LPARAM):longint;
-
-     LPSERVICE_MAIN_FUNCTION = procedure (_para1:DWORD; _para2:LPTSTR);
-
-     PFNTVCOMPARE = function (_para1:LPARAM; _para2:LPARAM; _para3:LPARAM):longint;
-
-     WNDPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):LRESULT;
-
-
-     FARPROC = pointer;    //windef
-     NEARPROC= FARPROC;    //+windef
-     PROC = FARPROC;       //~windef
-
-     ENUMRESTYPEPROC = function (_para1:HANDLE; _para2:LPTSTR; _para3:LONG):WINBOOL;
-
-     ENUMRESNAMEPROC = function (_para1:HANDLE; _para2:LPCTSTR; _para3:LPTSTR; _para4:LONG):WINBOOL;
-
-     ENUMRESLANGPROC = function (_para1:HANDLE; _para2:LPCTSTR; _para3:LPCTSTR; _para4:WORD; _para5:LONG):WINBOOL;
-
-     DESKTOPENUMPROC = FARPROC;
-
-     ENUMWINDOWSPROC = function (_para1:HWND; _para2:LPARAM):WINBOOL;
-
-     ENUMWINDOWSTATIONPROC = function (_para1:LPTSTR; _para2:LPARAM):WINBOOL;
-
-     SENDASYNCPROC = procedure (_para1:HWND; _para2:UINT; _para3:DWORD; _para4:LRESULT);
-
-     TIMERPROC = procedure (_para1:HWND; _para2:UINT; _para3:UINT; _para4:DWORD);
-
-     GRAYSTRINGPROC = FARPROC;
-
-     DRAWSTATEPROC = function (_para1:HDC; _para2:LPARAM; _para3:WPARAM; _para4:longint; _para5:longint):WINBOOL;
-
-     PROPENUMPROCEX = function (_para1:HWND; _para2:LPCTSTR; _para3:HANDLE; _para4:DWORD):WINBOOL;
-
-     PROPENUMPROC = function (_para1:HWND; _para2:LPCTSTR; _para3:HANDLE):WINBOOL;
-
-     HOOKPROC = function (_para1:longint; _para2:WPARAM; _para3:LPARAM):LRESULT;
-
-     ENUMOBJECTSPROC = procedure (_para1:LPVOID; _para2:LPARAM);
-
-     LINEDDAPROC = procedure (_para1:longint; _para2:longint; _para3:LPARAM);
-
-     TABORTPROC = function (_para1:HDC; _para2:longint):WINBOOL;
-
-     LPPAGEPAINTHOOK = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
-
-     LPPAGESETUPHOOK = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
-
-     ICMENUMPROC = function (_para1:LPTSTR; _para2:LPARAM):longint;
-
-     EDITWORDBREAKPROCEX = function (_para1:pchar; _para2:LONG; _para3:BYTE; _para4:WINT):LONG;
-
-     PFNLVCOMPARE = function (_para1:LPARAM; _para2:LPARAM; _para3:LPARAM):longint;
-
-     LOCALE_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
-
-     CODEPAGE_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
-     CODEPAGE_ENUMPROCW = function (_para1:LPWSTR):WINBOOL;        //+winnls
-     DATEFMT_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
-
-     TIMEFMT_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
-
-     CALINFO_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
-
-     PHANDLER_ROUTINE = function (_para1:DWORD):WINBOOL;
-
-     LPHANDLER_FUNCTION = function (_para1:DWORD):WINBOOL;
-
-     PFNGETPROFILEPATH = function (_para1:LPCTSTR; _para2:LPSTR; _para3:UINT):UINT;
-
-     PFNRECONCILEPROFILE = function (_para1:LPCTSTR; _para2:LPCTSTR; _para3:DWORD):UINT;
-
-     PFNPROCESSPOLICIES = function (_para1:HWND; _para2:LPCTSTR; _para3:LPCTSTR; _para4:LPCTSTR; _para5:DWORD):WINBOOL;
-  const
-     SE_CREATE_TOKEN_NAME = 'SeCreateTokenPrivilege';
-     SE_ASSIGNPRIMARYTOKEN_NAME = 'SeAssignPrimaryTokenPrivilege';
-     SE_LOCK_MEMORY_NAME = 'SeLockMemoryPrivilege';
-     SE_INCREASE_QUOTA_NAME = 'SeIncreaseQuotaPrivilege';
-     SE_UNSOLICITED_INPUT_NAME = 'SeUnsolicitedInputPrivilege';
-     SE_MACHINE_ACCOUNT_NAME = 'SeMachineAccountPrivilege';
-     SE_TCB_NAME = 'SeTcbPrivilege';
-     SE_SECURITY_NAME = 'SeSecurityPrivilege';
-     SE_TAKE_OWNERSHIP_NAME = 'SeTakeOwnershipPrivilege';
-     SE_LOAD_DRIVER_NAME = 'SeLoadDriverPrivilege';
-     SE_SYSTEM_PROFILE_NAME = 'SeSystemProfilePrivilege';
-     SE_SYSTEMTIME_NAME = 'SeSystemtimePrivilege';
-     SE_PROF_SINGLE_PROCESS_NAME = 'SeProfileSingleProcessPrivilege';
-     SE_INC_BASE_PRIORITY_NAME = 'SeIncreaseBasePriorityPrivilege';
-     SE_CREATE_PAGEFILE_NAME = 'SeCreatePagefilePrivilege';
-     SE_CREATE_PERMANENT_NAME = 'SeCreatePermanentPrivilege';
-     SE_BACKUP_NAME = 'SeBackupPrivilege';
-     SE_RESTORE_NAME = 'SeRestorePrivilege';
-     SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
-     SE_DEBUG_NAME = 'SeDebugPrivilege';
-     SE_AUDIT_NAME = 'SeAuditPrivilege';
-     SE_SYSTEM_ENVIRONMENT_NAME = 'SeSystemEnvironmentPrivilege';
-     SE_CHANGE_NOTIFY_NAME = 'SeChangeNotifyPrivilege';
-     SE_REMOTE_SHUTDOWN_NAME = 'SeRemoteShutdownPrivilege';
-
-     //SERVICES_ACTIVE_DATABASEW      L"ServicesActive"
-     //#define SERVICES_FAILED_DATABASEW      L"ServicesFailed"
-     SERVICES_ACTIVE_DATABASEA = 'ServicesActive';
-     SERVICES_FAILED_DATABASEA = 'ServicesFailed';
-  {  Not convertable by H2PAS
-  #define SC_GROUP_IDENTIFIERW           L'+'
-   }
-     SC_GROUP_IDENTIFIERA = '+';
-{$ifdef UNICODE}
-     //temporary removed to compile in unicode, ORO06 08/2005
-     //SERVICES_ACTIVE_DATABASE = SERVICES_ACTIVE_DATABASEW;
-     //SERVICES_FAILED_DATABASE = SERVICES_FAILED_DATABASEW;
-     //SC_GROUP_IDENTIFIER = SC_GROUP_IDENTIFIERW;
-     SERVICES_ACTIVE_DATABASE = SERVICES_ACTIVE_DATABASEA;
-     SERVICES_FAILED_DATABASE = SERVICES_FAILED_DATABASEA;
-     SC_GROUP_IDENTIFIER = SC_GROUP_IDENTIFIERA;
-{$else}
-     SERVICES_ACTIVE_DATABASE = SERVICES_ACTIVE_DATABASEA;
-     SERVICES_FAILED_DATABASE = SERVICES_FAILED_DATABASEA;
-     SC_GROUP_IDENTIFIER = SC_GROUP_IDENTIFIERA;
-{$endif}
-
-type
-
-     { PFNCALLBACK = CALLB; }
-     PFNCALLBACK = function(_para1, _para2: UINT;_para3: HCONV;_para4, _para5: HSZ; _para6: HDDEDATA;_para7 ,_para8 :DWORD): HDDEData;
-     { CALLB = procedure ;CDECL; }
-       CALLB = PFNCALLBACK;
-
-
-     SECURITY_CONTEXT_TRACKING_MODE = WINBOOL;
-  { End of stuff from ddeml.h in old Cygnus headers  }
-  { -----------------------------------------------  }
-
-     WNDENUMPROC = FARPROC;
-
-     ENHMFENUMPROC = FARPROC;
-
-     CCSTYLE = DWORD;
-
-     PCCSTYLE = ^CCSTYLE;
-
-     LPCCSTYLE = ^CCSTYLE;
-
-     CCSTYLEFLAGA = DWORD;
-
-     PCCSTYLEFLAGA = ^CCSTYLEFLAGA;
-
-     LPCCSTYLEFLAGA = ^CCSTYLEFLAGA;
-
-{$endif read_interface}
-
-
-{$ifdef read_implementation}
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GetBValue(rgb : longint) : BYTE;
-    begin
-       GetBValue:=BYTE(rgb shr 16);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GetGValue(rgb : longint) : BYTE;
-    begin
-       GetGValue:=BYTE((WORD(rgb)) shr 8);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GetRValue(rgb : longint) : BYTE;
-    begin
-       GetRValue:=BYTE(rgb);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function RGB(r,g,b : longint) : DWORD;
-    begin
-       RGB:=DWORD(((DWORD(BYTE(r))) or ((DWORD(WORD(g))) shl 8)) or ((DWORD(BYTE(b))) shl 16));
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function HIBYTE(w : longint) : BYTE;
-    begin
-       HIBYTE:=BYTE(((WORD(w)) shr 8) and $FF);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function HIWORD(l : longint) : WORD;
-    begin
-       HIWORD:=WORD(((DWORD(l)) shr 16) and $FFFF);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function LOBYTE(w : longint) : BYTE;
-    begin
-       LOBYTE:=BYTE(w);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function LOWORD(l : longint) : WORD;
-    begin
-       LOWORD:=WORD(l);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function MAKELONG(a,b : longint) : LONG;
-    begin
-       MAKELONG:=LONG((WORD(a)) or ((DWORD(WORD(b))) shl 16));
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function MAKEWORD(a,b : longint) : WORD;
-    begin
-       MAKEWORD:=WORD((BYTE(a)) or ((WORD(BYTE(b))) shl 8));
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function SEXT_HIWORD(l : longint) : longint;
-    { return type might be wrong }
-    begin
-       SEXT_HIWORD:=(longint(l)) shr 16;
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function ZEXT_HIWORD(l : longint) : longint;
-    { return type might be wrong }
-    begin
-       ZEXT_HIWORD:=(Cardinal(l)) shr 16;
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function SEXT_LOWORD(l : longint) : longint;
-    begin
-       SEXT_LOWORD:=longint(SHORT(l));
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function INDEXTOOVERLAYMASK(i : longint) : longint;
-    { return type might be wrong }
-    begin
-       INDEXTOOVERLAYMASK:=i shl 8;
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function INDEXTOSTATEIMAGEMASK(i : longint) : longint;
-    { return type might be wrong }
-    begin
-       INDEXTOSTATEIMAGEMASK:=i shl 12;
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function MAKEINTATOM(i : longint) : LPTSTR;
-    begin
-       MAKEINTATOM:=LPTSTR(DWORD(WORD(i)));
-    end;
-
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function MAKELANGID(p,s : longint) : longint;
-    { return type might be wrong }
-    begin
-       MAKELANGID:=((WORD(s)) shl 10) or (WORD(p));
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function PRIMARYLANGID(lgid : longint) : WORD;
-    begin
-       { PRIMARYLANGID:=WORD(lgid(@($3ff)));
-         h2pas error here corrected by hand PM }
-       PRIMARYLANGID:=WORD(lgid) and ($3ff);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function SUBLANGID(lgid : longint) : longint;
-    { return type might be wrong }
-    begin
-       SUBLANGID:=(WORD(lgid)) shr 10;
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function LANGIDFROMLCID(lcid : longint) : WORD;
-    begin
-       LANGIDFROMLCID:=WORD(lcid);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function SORTIDFROMLCID(lcid : longint) : WORD;
-    begin
-       SORTIDFROMLCID:=WORD(((DWORD(lcid)) and $000FFFFF) shr 16);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function MAKELCID(lgid,srtid : longint) : DWORD;
-    begin
-       MAKELCID:=DWORD(((DWORD(WORD(srtid))) shl 16) or (DWORD(WORD(lgid))));
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function MAKELPARAM(l,h : longint) : LPARAM;
-    begin
-       MAKELPARAM:=LPARAM(MAKELONG(l,h));
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function MAKELRESULT(l,h : longint) : LRESULT;
-    begin
-       MAKELRESULT:=LRESULT(MAKELONG(l,h));
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function MAKEROP4(fore,back : longint) : DWORD;
-    begin
-       MAKEROP4:=DWORD((DWORD(back shl 8) and $FF000000) or DWORD(fore));
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function MAKEWPARAM(l,h : longint) : WPARAM;
-    begin
-       MAKEWPARAM:=WPARAM(MAKELONG(l,h));
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function max(a,b : longint) : longint;
-    { return type might be wrong }
-    var
-       if_local1 : longint;
-    (* result types are not known *)
-    begin
-       if a > b then
-         if_local1:=a
-       else
-         if_local1:=b;
-       max:=if_local1;
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function min(a,b : longint) : longint;
-    { return type might be wrong }
-    var
-       if_local1 : longint;
-    (* result types are not known *)
-    begin
-       if a < b then
-         if_local1:=a
-       else
-         if_local1:=b;
-       min:=if_local1;
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function PALETTEINDEX(i : longint) : COLORREF;
-    begin
-       PALETTEINDEX:=COLORREF($01000000 or (DWORD(WORD(i))));
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function PALETTERGB(r,g,b : longint) : longint;
-    { return type might be wrong }
-    begin
-       PALETTERGB:=$02000000 or (RGB(r,g,b));
-    end;
-
-{$endif read_implementation}
-
-
+{
+    This file is part of the Free Pascal run time library.
+    This unit contains base definition for the Win32 API
+    Copyright (c) 1999-2000 by Florian Klaempfl,
+    member of the Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{
+  Base.h
+
+  Base definitions
+
+  Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+
+  Author: Scott Christley <[email protected]>
+
+  This file is part of the Windows32 API Library.
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Library General Public
+  License as published by the Free Software Foundation; either
+  version 2 of the License, or (at your option) any later version.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Library General Public License for more details.
+
+  If you are interested in a warranty or support for this source code,
+  contact Scott Christley <[email protected]> for more information.
+
+
+  You should have received a copy of the GNU Library General Public
+  License along with this library; see the file COPYING.LIB.
+  If not, write to the Free Software Foundation,
+  59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+  Changes :
+
+  08/15/2005 update for wince4.2 port,ORO06
+}
+
+{$ifdef read_interface}
+
+{$PACKRECORDS C}
+  const
+     ANYSIZE_ARRAY = 1;               //~winnt, moved from define to compile SID
+  type
+
+     MAKEINTRESOURCE = pwidechar;
+	 ATOM = word;                     //windef
+     TAtom = ATOM;
+
+     WINBOOL = longbool;
+     BOOL = WINBOOL;                  //windef
+
+     CALTYPE = cardinal;
+     CALID = cardinal;
+
+     CCHAR = char;                    //winnt
+
+     COLORREF = Cardinal;             //windef
+     TCOLORREF = cardinal;
+
+     SHORT = smallint;                //winnt
+     WINT  = longint;
+     LONG  = longint;                 //winnt
+     DWORD = Cardinal;                //windef
+
+     PINTEGER = ^longint;
+     PBOOL    = ^BOOL;                //windef
+
+     LONGLONG  = int64;               //winnt
+     PLONGLONG = ^LONGLONG;           //winnt
+     ULONGLONG  = qword;              //+winnt
+     PULONGLONG = ^ULONGLONG;         //+winnt
+
+     DWORDLONG  = qword;  { was unsigned long  }
+     PDWORDLONG = ^DWORDLONG;
+
+     HANDLE = System.THandle;
+     HRESULT = System.HResult;  //winnt LONG
+     PHRESULT= ^HRESULT;
+
+     HACCEL = HANDLE;        //windef
+     HBITMAP = HANDLE;       //windef
+     HBRUSH = HANDLE;        //windef
+     HCOLORSPACE = HANDLE;   //windef
+     HCONV = HANDLE;
+     HCONVLIST = HANDLE;
+     HCURSOR = HANDLE;       //windef
+     HDBC = HANDLE;
+     HDC = HANDLE;           //windef
+     HDDEDATA = HANDLE;
+     HDESK = HANDLE;         //windef
+     HDROP = HANDLE;
+     HDWP = HANDLE;
+     HENHMETAFILE = HANDLE;  //windef
+     HENV = HANDLE;
+     HEVENT = HANDLE;        //+windef
+     HFILE = HANDLE;         //windef
+     HFONT = HANDLE;         //windef
+     HGDIOBJ = HANDLE;       //windef
+     HGLOBAL = HANDLE;       //windef
+     HGLRC = HANDLE;         //windef
+     HHOOK = HANDLE;         //windef
+     HICON = HCURSOR;        //~windef
+     LPHICON = ^HICON;       //+tapi
+     HIMAGELIST = HANDLE;
+     HINST = HANDLE;   { Not HINSTANCE, else it has problems with the var HInstance }
+     HKEY = HANDLE;          //windef
+     HKL = HANDLE;           //windef
+     HLOCAL = HANDLE;        //windef
+     HMENU = HANDLE;         //windef
+     HMETAFILE = HANDLE;     //windef
+     HMODULE = HANDLE;       //windef
+     HMONITOR = HANDLE;      //+windef
+     HPALETTE = HANDLE;      //windef
+     HPEN = HANDLE;          //windef
+     HRASCONN = HANDLE;
+     HRGN = HANDLE;          //windef
+     HRSRC = HANDLE;         //windef
+     HSTMT = HANDLE;
+     HSTR  = HANDLE;         //windef
+     HSZ = HANDLE;
+     HTASK = HANDLE;         //windef
+     HWINSTA = HANDLE;       //windef
+     HWND = HANDLE;          //windef
+     HWINEVENTHOOK = HANDLE; //+windef
+
+     LANGID = word;          //winnt
+     LCID   = DWORD;         //winnt
+     PLCID  = ^LCID;         //+winnt
+     LCTYPE = DWORD;
+     LPARAM = longint;       //windef LONG_PTR
+
+     LP     = ^word;
+     LPBOOL = ^WINBOOL;      //windef
+     LPBYTE = ^BYTE;         //windef
+     LPCCH  = PCHAR;         //winnt
+     LPCH   = PCHAR;         //winnt
+
+     LPCOLORREF = ^COLORREF; //windef
+
+     LPCSTR  = Pchar;        //winnt
+{$ifdef UNICODE}
+     LPCTSTR = Pwidechar;    //winnt
+{$else}
+     LPCTSTR = Pchar;        //winnt
+{$endif}
+
+     LPCWCH  = Pwidechar;   //winnt
+     LPCWSTR = Pwidechar;   //winnt
+
+     LPDWORD = ^DWORD;      //windef
+
+     LPHANDLE = ^HANDLE;    //windef
+     LPINT  = ^longint;     //windef
+     LPLONG = ^longint;     //windef
+
+     LPSTR = Pchar;         //winnt
+{$ifdef UNICODE}
+     LPTCH  = Pwidechar;
+     LPTSTR = Pwidechar;
+{$else}
+     LPTCH  = Pchar;
+     LPTSTR = Pchar;
+{$endif}
+
+     LRESULT = longint;     //windef LONG_PTR
+
+     LPVOID  = pointer;     //windef
+
+     LPCVOID = pointer;     //windef
+
+     LPWCH  = Pwidechar;
+     LPWORD = ^word;        //windef
+     LPWSTR = Pwidechar;    //winnt
+
+     //
+     // Locally Unique Identifier
+     //
+     //winnt : declaration moved and changed : was in struct as LUID = TlargeInteger
+     LUID = record
+       LowPart  : DWORD;
+       HighPart : LONG ;
+     end;
+     TLUID = LUID;
+     PLUID = ^LUID;
+
+     NWPSTR = Pwidechar;    //winnt
+
+     PWINBOOL = ^WINBOOL;
+     PBOOLEAN = ^BYTE;
+
+     PBYTE = ^BYTE;         //windef
+
+     PCCH = PCHAR;          //winnt
+     PCH  = PCHAR;          //winnt
+
+     PCSTR = Pchar;
+
+     PCWCH  = Pwidechar;    //winnt
+     PCWSTR = Pwidechar;    //winnt
+
+     PDWORD = ^DWORD;       //windef
+
+     PHANDLE = ^HANDLE;     //windef
+     PHKEY = ^HKEY;         //windef
+
+     PINT = ^longint;
+     PLONG = ^longint;      //windef
+     PSHORT = ^SHORT;       //windef
+     LPSHORT = ^SHORT;      //+windef
+
+     PSTR = Pchar;
+
+     PSZ = Pchar;         //winnt
+{$ifdef UNICODE}
+     PTBYTE = ^word;      //winnt
+     PTCH = Pwidechar;
+     PTCHAR = Pwidechar;  //winnt
+     PTSTR = Pwidechar;
+{$else}
+     PTBYTE = ^byte;
+     PTCH   = Pchar;
+     PTCHAR = Pchar;
+     PTSTR  = Pchar;
+{$endif}
+
+     PUCHAR = ^byte;        //windef
+     PWCH   = Pwidechar;    //winnt
+     PWCHAR = Pwidechar;    //winnt
+
+     PWORD   = ^word;       //windef
+     PUINT   = ^Cardinal;   //windef
+     PULONG  = ^Cardinal;   //windef
+     PUSHORT = ^word;       //windef
+
+     PVOID = pointer;
+
+     RETCODE = SHORT;
+
+     SC_HANDLE = HANDLE;
+     SC_LOCK = LPVOID;
+     LPSC_HANDLE = ^SC_HANDLE;
+     SPHANDLE = ^HANDLE;       //+windef
+
+     SERVICE_STATUS_HANDLE = DWORD;
+     SIZE_T = Cardinal;        //+winnt
+{$ifdef UNICODE}
+     TBYTE = word;
+     TCHAR = widechar;
+     BCHAR = word;
+{$else}
+     TBYTE = byte;
+     TCHAR = char;
+     BCHAR = BYTE;
+{$endif}
+
+     UCHAR = byte;          //windef
+//     WCHAR = WideChar;      //winnt
+
+     UINT   = Cardinal;     //windef
+     ULONG  = Cardinal;     //windef
+     USHORT = word;         //windef
+
+     PLPSTR = ^LPSTR;
+     PLPWStr= ^LPWStr;
+
+     FLOAT  = single;       //+windef
+     PFLOAT = ^FLOAT;       //+windef
+     WCHAR_T = USHORT;      //+stdlib
+     WINT_T = WCHAR_T;      //+stdlib
+     WCTYPE_T = WCHAR_T;    //+stdlib
+     TIME_T=ULONG;          //+stdlib
+     WPARAM = Longint;      //windef UINT_PTR
+{
+  Enumerations
+}
+
+     ACL_INFORMATION_CLASS = (AclRevisionInformation := 1,AclSizeInformation
+       );
+
+     _ACL_INFORMATION_CLASS = ACL_INFORMATION_CLASS;
+
+     MEDIA_TYPE = (Unknown,F5_1Pt2_512,F3_1Pt44_512,F3_2Pt88_512,
+       F3_20Pt8_512,F3_720_512,F5_360_512,F5_320_512,
+       F5_320_1024,F5_180_512,F5_160_512,RemovableMedia,
+       FixedMedia);
+
+     _MEDIA_TYPE = MEDIA_TYPE;
+
+  const
+     RASCS_DONE = $2000;
+     RASCS_PAUSED = $1000;
+
+  type
+
+     RASCONNSTATE = (RASCS_OpenPort := 0,RASCS_PortOpened,
+       RASCS_ConnectDevice,RASCS_DeviceConnected,
+       RASCS_AllDevicesConnected,RASCS_Authenticate,
+       RASCS_AuthNotify,RASCS_AuthRetry,RASCS_AuthCallback,
+       RASCS_AuthChangePassword,RASCS_AuthProject,
+       RASCS_AuthLinkSpeed,RASCS_AuthAck,RASCS_ReAuthenticate,
+       RASCS_Authenticated,RASCS_PrepareForCallback,
+       RASCS_WaitForModemReset,RASCS_WaitForCallback,
+       RASCS_Projected,RASCS_StartAuthentication,
+       RASCS_CallbackComplete,RASCS_LogonNetwork,
+       RASCS_Interactive := RASCS_PAUSED,RASCS_RetryAuthentication,
+       RASCS_CallbackSetByCaller,RASCS_PasswordExpired,
+       RASCS_Connected := RASCS_DONE,RASCS_Disconnected
+       );
+
+     _RASCONNSTATE = RASCONNSTATE;
+
+     RASPROJECTION = (RASP_PppIp := $8021, RASP_PppIpx := $802B, RASP_PppNbf := $803F,
+       RASP_Amb := $10000);
+
+     _RASPROJECTION = RASPROJECTION;
+
+     PSECURITY_DESCRIPTO = PVOID;        //+winnt
+     SECURITY_IMPERSONATION_LEVEL = (SecurityAnonymous,SecurityIdentification,
+       SecurityImpersonation,SecurityDelegation
+       );
+
+     _SECURITY_IMPERSONATION_LEVEL = SECURITY_IMPERSONATION_LEVEL;
+
+     SID_IDENTIFIER_AUTHORITY_REC = array[0..5] of BYTE;  //~ added for pre-defined SID declaration
+     SID_IDENTIFIER_AUTHORITY = record                    //~winnt, moved to declare pre-defined SID
+          Value : SID_IDENTIFIER_AUTHORITY_REC;
+       end;
+     LPSID_IDENTIFIER_AUTHORITY = ^SID_IDENTIFIER_AUTHORITY;
+     PSID_IDENTIFIER_AUTHORITY = ^SID_IDENTIFIER_AUTHORITY;
+     _SID_IDENTIFIER_AUTHORITY = SID_IDENTIFIER_AUTHORITY;
+     TSIDIDENTIFIERAUTHORITY = SID_IDENTIFIER_AUTHORITY;
+     PSIDIDENTIFIERAUTHORITY = ^SID_IDENTIFIER_AUTHORITY;
+
+
+     SID = record                 //~wint
+       Revision : Byte;
+       SubAuthorityCount : Byte;
+       IdentifierAuthority : SID_IDENTIFIER_AUTHORITY;
+       SubAuthority : Array [0..ANYSIZE_ARRAY-1] of DWORD;
+     end;
+     _SID = SID;
+     PSID = ^SID;
+     
+     SID_NAME_USE = (             //~winnt, added SidTypeComputer
+      SidTypeUser:= 1,
+      SidTypeGroup,
+      SidTypeDomain,
+      SidTypeAlias,
+      SidTypeWellKnownGroup,
+      SidTypeDeletedAccount,
+      SidTypeInvalid,
+      SidTypeUnknown,
+      SidTypeComputer);
+
+     PSID_NAME_USE = ^SID_NAME_USE;      //winnt
+     _SID_NAME_USE = SID_NAME_USE;
+
+     TOKEN_INFORMATION_CLASS = (TokenUser := 1,TokenGroups,TokenPrivileges,
+       TokenOwner,TokenPrimaryGroup,TokenDefaultDacl,
+       TokenSource,TokenType,TokenImpersonationLevel,
+       TokenStatistics);
+
+     _TOKEN_INFORMATION_CLASS = TOKEN_INFORMATION_CLASS;
+     TTokenInformationClass   = TOKEN_INFORMATION_CLASS;
+
+     TOKEN_TYPE = (TokenPrimary := 1,TokenImpersonation
+       );
+
+     tagTOKEN_TYPE = TOKEN_TYPE;
+
+ {
+   Macros
+ }
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GetBValue(rgb : longint) : BYTE;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GetGValue(rgb : longint) : BYTE;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GetRValue(rgb : longint) : BYTE;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function RGB(r,g,b : longint) : DWORD;
+
+  {  Not convertable by H2PAS
+  #define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) \
+      (fn)((hwnd), (int)(wParam), (NMHDR FAR )(lParam))
+   }
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function HIBYTE(w : longint) : BYTE;      //windef
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function HIWORD(l : longint) : WORD;      //windef
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function LOBYTE(w : longint) : BYTE;      //windef
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function LOWORD(l : longint) : WORD;      //windef
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKELONG(a,b : longint) : LONG;  //windef
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEWORD(a,b : longint) : WORD;  //windef
+
+  { original Cygnus headers also had the following defined:  }
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function SEXT_HIWORD(l : longint) : longint;
+    { return type might be wrong }
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function ZEXT_HIWORD(l : longint) : longint;
+    { return type might be wrong }
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function SEXT_LOWORD(l : longint) : longint;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function INDEXTOOVERLAYMASK(i : longint) : longint;
+    { return type might be wrong }
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function INDEXTOSTATEIMAGEMASK(i : longint) : longint;
+    { return type might be wrong }
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEINTATOM(i : longint) : LPTSTR;
+
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function MAKELANGID(p,s : longint) : longint;    //winnt
+    { return type might be wrong }
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function PRIMARYLANGID(lgid : longint) : WORD;   //winnt
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function SUBLANGID(lgid : longint) : longint;    //winnt
+    { return type might be wrong }
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function LANGIDFROMLCID(lcid : longint) : WORD;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function SORTIDFROMLCID(lcid : longint) : WORD;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKELCID(lgid,srtid : longint) : DWORD;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKELPARAM(l,h : longint) : LPARAM;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKELRESULT(l,h : longint) : LRESULT;
+
+  {  Not convertable by H2PAS
+  #define MAKEPOINTS(l)   ( ((POINTS FAR  ) & (l)))
+   }
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEROP4(fore,back : longint) : DWORD;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEWPARAM(l,h : longint) : WPARAM;
+
+{$ifndef max}
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function max(a,b : longint) : longint;  //windef
+    { return type might be wrong }
+
+{$endif}
+{$ifndef min}
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function min(a,b : longint) : longint;  //windef
+    { return type might be wrong }
+
+{$endif}
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function PALETTEINDEX(i : longint) : COLORREF;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function PALETTERGB(r,g,b : longint) : longint;
+    { return type might be wrong }
+
+  (*  Not convertable by H2PAS
+  #define POINTSTOPOINT(pt, pts) {(pt).x = (SHORT) LOWORD(pts); \
+        (pt).y = (SHORT) HIWORD(pts);}
+  #define POINTTOPOINTS(pt) \
+      (MAKELONG((short) ((pt).x), (short) ((pt).y)))
+   *)
+  { already declared before
+  #define INDEXTOOVERLAYMASK(i) ((i) << 8)
+  #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)
+   }
+  {  Not convertable by H2PAS
+  #ifdef UNICODE
+  #define TEXT(quote) L##quote
+  #else
+  #define TEXT(quote) quote
+  #endif
+   }
+
+ {
+    Definitions for callback procedures
+ }
+
+ type
+
+     BFFCALLBACK = function (_para1:HWND; _para2:UINT; _para3:LPARAM; _para4:LPARAM):longint;
+
+     LPCCHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
+
+     LPCFHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
+
+     PTHREAD_START_ROUTINE = Pointer;
+
+     LPTHREAD_START_ROUTINE = PTHREAD_START_ROUTINE;
+
+     EDITSTREAMCALLBACK = function (_para1:DWORD; _para2:LPBYTE; _para3:LONG; _para4:LONG):DWORD;
+
+     LPFRHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
+
+     LPOFNHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
+
+     LPPRINTHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
+
+     LPSETUPHOOKPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
+
+     DLGPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):LRESULT;
+
+     PFNPROPSHEETCALLBACK = function (_para1:HWND; _para2:UINT; _para3:LPARAM):longint;
+
+     LPSERVICE_MAIN_FUNCTION = procedure (_para1:DWORD; _para2:LPTSTR);
+
+     PFNTVCOMPARE = function (_para1:LPARAM; _para2:LPARAM; _para3:LPARAM):longint;
+
+     WNDPROC = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):LRESULT;
+
+
+     FARPROC = pointer;    //windef
+     NEARPROC= FARPROC;    //+windef
+     PROC = FARPROC;       //~windef
+
+     ENUMRESTYPEPROC = function (_para1:HANDLE; _para2:LPTSTR; _para3:LONG):WINBOOL;
+
+     ENUMRESNAMEPROC = function (_para1:HANDLE; _para2:LPCTSTR; _para3:LPTSTR; _para4:LONG):WINBOOL;
+
+     ENUMRESLANGPROC = function (_para1:HANDLE; _para2:LPCTSTR; _para3:LPCTSTR; _para4:WORD; _para5:LONG):WINBOOL;
+
+     DESKTOPENUMPROC = FARPROC;
+
+     ENUMWINDOWSPROC = function (_para1:HWND; _para2:LPARAM):WINBOOL;
+
+     ENUMWINDOWSTATIONPROC = function (_para1:LPTSTR; _para2:LPARAM):WINBOOL;
+
+     SENDASYNCPROC = procedure (_para1:HWND; _para2:UINT; _para3:DWORD; _para4:LRESULT);
+
+     TIMERPROC = procedure (_para1:HWND; _para2:UINT; _para3:UINT; _para4:DWORD);
+
+     GRAYSTRINGPROC = FARPROC;
+
+     DRAWSTATEPROC = function (_para1:HDC; _para2:LPARAM; _para3:WPARAM; _para4:longint; _para5:longint):WINBOOL;
+
+     PROPENUMPROCEX = function (_para1:HWND; _para2:LPCTSTR; _para3:HANDLE; _para4:DWORD):WINBOOL;
+
+     PROPENUMPROC = function (_para1:HWND; _para2:LPCTSTR; _para3:HANDLE):WINBOOL;
+
+     HOOKPROC = function (_para1:longint; _para2:WPARAM; _para3:LPARAM):LRESULT;
+
+     ENUMOBJECTSPROC = procedure (_para1:LPVOID; _para2:LPARAM);
+
+     LINEDDAPROC = procedure (_para1:longint; _para2:longint; _para3:LPARAM);
+
+     TABORTPROC = function (_para1:HDC; _para2:longint):WINBOOL;
+
+     LPPAGEPAINTHOOK = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
+
+     LPPAGESETUPHOOK = function (_para1:HWND; _para2:UINT; _para3:WPARAM; _para4:LPARAM):UINT;
+
+     ICMENUMPROC = function (_para1:LPTSTR; _para2:LPARAM):longint;
+
+     EDITWORDBREAKPROCEX = function (_para1:pchar; _para2:LONG; _para3:BYTE; _para4:WINT):LONG;
+
+     PFNLVCOMPARE = function (_para1:LPARAM; _para2:LPARAM; _para3:LPARAM):longint;
+
+     LOCALE_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
+
+     CODEPAGE_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
+     CODEPAGE_ENUMPROCW = function (_para1:LPWSTR):WINBOOL;        //+winnls
+     DATEFMT_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
+
+     TIMEFMT_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
+
+     CALINFO_ENUMPROC = function (_para1:LPTSTR):WINBOOL;
+
+     PHANDLER_ROUTINE = function (_para1:DWORD):WINBOOL;
+
+     LPHANDLER_FUNCTION = function (_para1:DWORD):WINBOOL;
+
+     PFNGETPROFILEPATH = function (_para1:LPCTSTR; _para2:LPSTR; _para3:UINT):UINT;
+
+     PFNRECONCILEPROFILE = function (_para1:LPCTSTR; _para2:LPCTSTR; _para3:DWORD):UINT;
+
+     PFNPROCESSPOLICIES = function (_para1:HWND; _para2:LPCTSTR; _para3:LPCTSTR; _para4:LPCTSTR; _para5:DWORD):WINBOOL;
+  const
+     SE_CREATE_TOKEN_NAME = 'SeCreateTokenPrivilege';
+     SE_ASSIGNPRIMARYTOKEN_NAME = 'SeAssignPrimaryTokenPrivilege';
+     SE_LOCK_MEMORY_NAME = 'SeLockMemoryPrivilege';
+     SE_INCREASE_QUOTA_NAME = 'SeIncreaseQuotaPrivilege';
+     SE_UNSOLICITED_INPUT_NAME = 'SeUnsolicitedInputPrivilege';
+     SE_MACHINE_ACCOUNT_NAME = 'SeMachineAccountPrivilege';
+     SE_TCB_NAME = 'SeTcbPrivilege';
+     SE_SECURITY_NAME = 'SeSecurityPrivilege';
+     SE_TAKE_OWNERSHIP_NAME = 'SeTakeOwnershipPrivilege';
+     SE_LOAD_DRIVER_NAME = 'SeLoadDriverPrivilege';
+     SE_SYSTEM_PROFILE_NAME = 'SeSystemProfilePrivilege';
+     SE_SYSTEMTIME_NAME = 'SeSystemtimePrivilege';
+     SE_PROF_SINGLE_PROCESS_NAME = 'SeProfileSingleProcessPrivilege';
+     SE_INC_BASE_PRIORITY_NAME = 'SeIncreaseBasePriorityPrivilege';
+     SE_CREATE_PAGEFILE_NAME = 'SeCreatePagefilePrivilege';
+     SE_CREATE_PERMANENT_NAME = 'SeCreatePermanentPrivilege';
+     SE_BACKUP_NAME = 'SeBackupPrivilege';
+     SE_RESTORE_NAME = 'SeRestorePrivilege';
+     SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
+     SE_DEBUG_NAME = 'SeDebugPrivilege';
+     SE_AUDIT_NAME = 'SeAuditPrivilege';
+     SE_SYSTEM_ENVIRONMENT_NAME = 'SeSystemEnvironmentPrivilege';
+     SE_CHANGE_NOTIFY_NAME = 'SeChangeNotifyPrivilege';
+     SE_REMOTE_SHUTDOWN_NAME = 'SeRemoteShutdownPrivilege';
+
+     //SERVICES_ACTIVE_DATABASEW      L"ServicesActive"
+     //#define SERVICES_FAILED_DATABASEW      L"ServicesFailed"
+     SERVICES_ACTIVE_DATABASEA = 'ServicesActive';
+     SERVICES_FAILED_DATABASEA = 'ServicesFailed';
+  {  Not convertable by H2PAS
+  #define SC_GROUP_IDENTIFIERW           L'+'
+   }
+     SC_GROUP_IDENTIFIERA = '+';
+{$ifdef UNICODE}
+     //temporary removed to compile in unicode, ORO06 08/2005
+     //SERVICES_ACTIVE_DATABASE = SERVICES_ACTIVE_DATABASEW;
+     //SERVICES_FAILED_DATABASE = SERVICES_FAILED_DATABASEW;
+     //SC_GROUP_IDENTIFIER = SC_GROUP_IDENTIFIERW;
+     SERVICES_ACTIVE_DATABASE = SERVICES_ACTIVE_DATABASEA;
+     SERVICES_FAILED_DATABASE = SERVICES_FAILED_DATABASEA;
+     SC_GROUP_IDENTIFIER = SC_GROUP_IDENTIFIERA;
+{$else}
+     SERVICES_ACTIVE_DATABASE = SERVICES_ACTIVE_DATABASEA;
+     SERVICES_FAILED_DATABASE = SERVICES_FAILED_DATABASEA;
+     SC_GROUP_IDENTIFIER = SC_GROUP_IDENTIFIERA;
+{$endif}
+
+type
+
+     { PFNCALLBACK = CALLB; }
+     PFNCALLBACK = function(_para1, _para2: UINT;_para3: HCONV;_para4, _para5: HSZ; _para6: HDDEDATA;_para7 ,_para8 :DWORD): HDDEData;
+     { CALLB = procedure ;CDECL; }
+       CALLB = PFNCALLBACK;
+
+
+     SECURITY_CONTEXT_TRACKING_MODE = WINBOOL;
+  { End of stuff from ddeml.h in old Cygnus headers  }
+  { -----------------------------------------------  }
+
+     WNDENUMPROC = FARPROC;
+
+     ENHMFENUMPROC = FARPROC;
+
+     CCSTYLE = DWORD;
+
+     PCCSTYLE = ^CCSTYLE;
+
+     LPCCSTYLE = ^CCSTYLE;
+
+     CCSTYLEFLAGA = DWORD;
+
+     PCCSTYLEFLAGA = ^CCSTYLEFLAGA;
+
+     LPCCSTYLEFLAGA = ^CCSTYLEFLAGA;
+
+{$endif read_interface}
+
+
+{$ifdef read_implementation}
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GetBValue(rgb : longint) : BYTE;
+    begin
+       GetBValue:=BYTE(rgb shr 16);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GetGValue(rgb : longint) : BYTE;
+    begin
+       GetGValue:=BYTE((WORD(rgb)) shr 8);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GetRValue(rgb : longint) : BYTE;
+    begin
+       GetRValue:=BYTE(rgb);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function RGB(r,g,b : longint) : DWORD;
+    begin
+       RGB:=DWORD(((DWORD(BYTE(r))) or ((DWORD(WORD(g))) shl 8)) or ((DWORD(BYTE(b))) shl 16));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function HIBYTE(w : longint) : BYTE;
+    begin
+       HIBYTE:=BYTE(((WORD(w)) shr 8) and $FF);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function HIWORD(l : longint) : WORD;
+    begin
+       HIWORD:=WORD(((DWORD(l)) shr 16) and $FFFF);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function LOBYTE(w : longint) : BYTE;
+    begin
+       LOBYTE:=BYTE(w);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function LOWORD(l : longint) : WORD;
+    begin
+       LOWORD:=WORD(l);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKELONG(a,b : longint) : LONG;
+    begin
+       MAKELONG:=LONG((WORD(a)) or ((DWORD(WORD(b))) shl 16));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEWORD(a,b : longint) : WORD;
+    begin
+       MAKEWORD:=WORD((BYTE(a)) or ((WORD(BYTE(b))) shl 8));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function SEXT_HIWORD(l : longint) : longint;
+    { return type might be wrong }
+    begin
+       SEXT_HIWORD:=(longint(l)) shr 16;
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function ZEXT_HIWORD(l : longint) : longint;
+    { return type might be wrong }
+    begin
+       ZEXT_HIWORD:=(Cardinal(l)) shr 16;
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function SEXT_LOWORD(l : longint) : longint;
+    begin
+       SEXT_LOWORD:=longint(SHORT(l));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function INDEXTOOVERLAYMASK(i : longint) : longint;
+    { return type might be wrong }
+    begin
+       INDEXTOOVERLAYMASK:=i shl 8;
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function INDEXTOSTATEIMAGEMASK(i : longint) : longint;
+    { return type might be wrong }
+    begin
+       INDEXTOSTATEIMAGEMASK:=i shl 12;
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEINTATOM(i : longint) : LPTSTR;
+    begin
+       MAKEINTATOM:=LPTSTR(DWORD(WORD(i)));
+    end;
+
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function MAKELANGID(p,s : longint) : longint;
+    { return type might be wrong }
+    begin
+       MAKELANGID:=((WORD(s)) shl 10) or (WORD(p));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function PRIMARYLANGID(lgid : longint) : WORD;
+    begin
+       { PRIMARYLANGID:=WORD(lgid(@($3ff)));
+         h2pas error here corrected by hand PM }
+       PRIMARYLANGID:=WORD(lgid) and ($3ff);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function SUBLANGID(lgid : longint) : longint;
+    { return type might be wrong }
+    begin
+       SUBLANGID:=(WORD(lgid)) shr 10;
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function LANGIDFROMLCID(lcid : longint) : WORD;
+    begin
+       LANGIDFROMLCID:=WORD(lcid);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function SORTIDFROMLCID(lcid : longint) : WORD;
+    begin
+       SORTIDFROMLCID:=WORD(((DWORD(lcid)) and $000FFFFF) shr 16);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKELCID(lgid,srtid : longint) : DWORD;
+    begin
+       MAKELCID:=DWORD(((DWORD(WORD(srtid))) shl 16) or (DWORD(WORD(lgid))));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKELPARAM(l,h : longint) : LPARAM;
+    begin
+       MAKELPARAM:=LPARAM(MAKELONG(l,h));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKELRESULT(l,h : longint) : LRESULT;
+    begin
+       MAKELRESULT:=LRESULT(MAKELONG(l,h));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEROP4(fore,back : longint) : DWORD;
+    begin
+       MAKEROP4:=DWORD((DWORD(back shl 8) and $FF000000) or DWORD(fore));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function MAKEWPARAM(l,h : longint) : WPARAM;
+    begin
+       MAKEWPARAM:=WPARAM(MAKELONG(l,h));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function max(a,b : longint) : longint;
+    { return type might be wrong }
+    var
+       if_local1 : longint;
+    (* result types are not known *)
+    begin
+       if a > b then
+         if_local1:=a
+       else
+         if_local1:=b;
+       max:=if_local1;
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function min(a,b : longint) : longint;
+    { return type might be wrong }
+    var
+       if_local1 : longint;
+    (* result types are not known *)
+    begin
+       if a < b then
+         if_local1:=a
+       else
+         if_local1:=b;
+       min:=if_local1;
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function PALETTEINDEX(i : longint) : COLORREF;
+    begin
+       PALETTEINDEX:=COLORREF($01000000 or (DWORD(WORD(i))));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function PALETTERGB(r,g,b : longint) : longint;
+    { return type might be wrong }
+    begin
+       PALETTERGB:=$02000000 or (RGB(r,g,b));
+    end;
+
+{$endif read_implementation}
+
+

+ 720 - 684
rtl/wince/wininc/commctrl.inc

@@ -1,684 +1,720 @@
-{
-    This file is part of the Free Pascal run time library.
-    Copyright (c) 2006 Free Pascal development team.
-
-    See the file COPYING.FPC, included in this distribution,
-    for details about the copyright.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- **********************************************************************}
-
-{  Declarations for commctrl WinCE API
-
-}
-
-{exported functions list = to do,
- * please remove functions done *
- 
-     Exports
-
-       ordinal    name
-
-            73    AddMRUData
-            66    AddMRUStringA
-            67    AddMRUStringW
-            35    CenterWindow
-            11    CommandBar_GetItemWindow
-            63    CreateMRUListA
-            64    CreateMRUListW
-            15    CreateToolbar
-            50    DPA_Create
-            61    DPA_DeleteAllPtrs
-            60    DPA_DeletePtr
-            31    DPA_Destroy
-            56    DPA_DestroyCallback
-            32    DPA_GetPtr
-            62    DPA_GetPtrIndex
-            54    DPA_Grow
-            51    DPA_InsertPtr
-            59    DPA_Search
-            53    DPA_SetPtr
-            52    DPA_Sort
-            46    DSA_Clone
-            23    DSA_Create
-            30    DSA_DeleteAllItems
-            29    DSA_DeleteItem
-            24    DSA_Destroy
-            47    DSA_DestroyCallback
-            48    DSA_EnumCallback
-            25    DSA_GetItem
-            26    DSA_GetItemPtr
-            27    DSA_InsertItem
-            45    DSA_Search
-            28    DSA_SetItem
-            58    DSA_SetRange
-            57    DSA_Sort
-            68    DelMRUString
-            49    DoReaderMode
-            71    EnumMRUListA
-            72    EnumMRUListW
-            74    FindMRUData
-            69    FindMRUStringA
-            70    FindMRUStringW
-            65    FreeMRUList
-            22    InvertRect
-            55    IsCapEditAvailable
-                  ListView_SetItemSpacing
-            75    PopulateComboWithMRU
-            76    PopulateMenuWithMRU
-            80    SHCreateDefaultGradient
-            79    SHDrawGradient
-            81    SHDrawText
-            77    SHGetSysColor
-            78    SHGetSystemMetrics
-            82    SHSetSysColors
-            83    SHSetSystemMetrics
-            34    StrToIntW
-            33    Str_SetPtrW
-}
-
-{$ifdef read_interface}
-
-//*****************************************************************************
-// consts
-//*****************************************************************************
-const
-  ComctlDLL     = 'commctrl';
-
-  COMCTL32_VERSION=$020c;
-
-  // Common control shared messages
-  CCM_FIRST = $2000;
-  CCM_LAST  = CCM_FIRST + $200;
-
-  CCM_SETBKCOLOR = CCM_FIRST + $1; // lParam is bkColor
-  CCM_SETVERSION = CCM_FIRST + $7;
-  CCM_GETVERSION = CCM_FIRST + $8;
-
-  //InitCommonControlEx
-  //I_IMAGENONE           = -2; // Desktop listview uses this same value for I_IMAGENONE when (_WIN32_IE >= 0x0501)
-
-  //ICC_LISTVIEW_CLASSES  = $00000001; // listview, header
-  //ICC_TREEVIEW_CLASSES  = $00000002; // treeview, tooltips
-  //ICC_BAR_CLASSES       = $00000004; // toolbar, statusbar, trackbar, tooltips
-  //ICC_TAB_CLASSES       = $00000008; // tab, tooltips
-  //ICC_UPDOWN_CLASS      = $00000010; // updown
-  //ICC_PROGRESS_CLASS    = $00000020; // progress
-  ICC_ANIMATE_CLASS     = $00000080; // animate
-  //ICC_WIN95_CLASSES     = $0000007F;
-  //ICC_DATE_CLASSES      = $00000100; // month picker, date picker, time picker, updown
-  //ICC_COOL_CLASSES      = $00000400; // rebar (coolbar) control
-  //ICC_INTERNET_CLASSES  = $00000800; // IP Address control
-  //ICC_TOOLTIP_CLASSES   = $00001000; // Tooltip static & button
-  //ICC_CAPEDIT_CLASS     = $00002000; // All-caps edit control
-  //ICC_FE_CLASSES        = $40000000; // FE specific input subclasses
-
-  LVM_FIRST             =  $1000;      // ListView messages
-  TV_FIRST              =  $1100;      // TreeView messages
-  HDM_FIRST             =  $1200;      // Header messages
-
-  //Ranges for control message IDs
-  LVN_FIRST             =  (-100);       // listview
-  LVN_LAST              =  (-199);
-  HDN_FIRST             =  (-300);       // header
-  HDN_LAST              =  (-399);
-  TVN_FIRST             =  (-400);       // treeview
-  TVN_LAST              =  (-499);
-  TTN_FIRST             =  (-520);       // tooltips
-  TTN_LAST              =  (-549);
-  TCN_FIRST             =  (-550);       // tab control
-  TCN_LAST              =  (-580);
-  // Shell reserved               (0U-580U) -  (0U-589U)
-  CDN_FIRST             =  (-601);        // common dialog (new)
-  CDN_LAST              =  (-699);
-  TBN_FIRST             =  (-700);        // toolbar
-  TBN_LAST              =  (-720);
-  UDN_FIRST             =  (-721);        // updown
-  UDN_LAST              =  (-740);
-  MCN_FIRST             =  (-750);        // monthcal
-  MCN_LAST              =  (-759);
-  RBN_FIRST             =  (-831);        // rebar
-  RBN_LAST              =  (-859);
-  IPN_FIRST             =  (-860);        // internet address
-  IPN_LAST              =  (-879);        // internet address
-  SBN_FIRST             =  (-880);        // status bar
-  SBN_LAST              =  (-900);
-  SHN_FIRST             =  (-1400);       // Shell reserved
-  SHN_LAST              =  (-1500);
-
-  MSGF_COMMCTRL_BEGINDRAG     = $4200;
-  MSGF_COMMCTRL_SIZEHEADER    = $4201;
-  MSGF_COMMCTRL_DRAGSELECT    = $4202;
-
-  //Generic WM_NOTIFY notification codes
-  NM_FIRST              =  0;
-  NM_LAST               =  -99;
-  //NM_OUTOFMEMORY        =  (NM_FIRST-1);
-  //NM_CLICK              =  (NM_FIRST-2);
-  //NM_DBLCLK             =  (NM_FIRST-3);
-  //NM_RETURN             =  (NM_FIRST-4);
-  //NM_RCLICK             =  (NM_FIRST-5);
-  //NM_RDBLCLK            =  (NM_FIRST-6);
-  //NM_SETFOCUS           =  (NM_FIRST-7);
-  //NM_KILLFOCUS          =  (NM_FIRST-8);
-  NM_CUSTOMDRAW         =  (NM_FIRST-12);
-  NM_HOVER              =  (NM_FIRST-13);
-  NM_NCHITTEST          =  (NM_FIRST-14);
-  NM_KEYDOWN            =  (NM_FIRST-15);
-  NM_RECOGNIZEGESTURE   =  (NM_FIRST-50);
-
-  // DATETIMEPICK CONTROL
-  DATETIMEPICK_CLASS  ='SysDateTimePick32';
-  DTM_FIRST           = $1000;
-  DTM_GETSYSTEMTIME   = DTM_FIRST + 1;
-  DTM_SETSYSTEMTIME   = DTM_FIRST + 2;
-  DTM_GETRANGE        = DTM_FIRST + 3;
-  DTM_SETRANGE        = DTM_FIRST + 4;
-  DTM_SETFORMATA      = DTM_FIRST + 5;
-  DTM_SETMCCOLOR      = DTM_FIRST + 6;
-  DTM_GETMCCOLOR      = DTM_FIRST + 7;
-  DTM_GETMONTHCAL     = DTM_FIRST + 8;
-  DTM_SETMCFONT       = DTM_FIRST + 9;
-  DTM_GETMCFONT       = DTM_FIRST + 10;
-  DTM_SETFORMATW      = DTM_FIRST + 50;
-  DTM_SETFORMAT       = DTM_SETFORMATW;
-
-
-  DTS_UPDOWN                 = $0001;
-  DTS_SHOWNONE               = $0002;
-  DTS_SHORTDATEFORMAT        = $0000;
-  DTS_LONGDATEFORMAT         = $0004;
-  DTS_SHORTDATECENTURYFORMAT = $000C;
-  DTS_TIMEFORMAT             = $0009;
-  DTS_APPCANPARSE            = $0010;
-  DTS_RIGHTALIGN             = $0020;
-  DTS_NONEBUTTON             = $0080;
-
-  //datetimepick
-  DTN_FIRST                  =-760;
-  DTN_LAST                   =-799;
-  DTN_DATETIMECHANGE  = DTN_FIRST + 1;
-  DTN_USERSTRINGA     = DTN_FIRST + 2;
-  DTN_WMKEYDOWNA      = DTN_FIRST + 3;
-  DTN_FORMATA         = DTN_FIRST + 4;
-  DTN_FORMATQUERYA    = DTN_FIRST + 5;
-  DTN_DROPDOWN        = DTN_FIRST + 6;
-  DTN_CLOSEUP         = DTN_FIRST + 7;
-  DTN_USERSTRINGW     = DTN_FIRST + 15;
-  DTN_WMKEYDOWNW      = DTN_FIRST + 16;
-  DTN_FORMATW         = DTN_FIRST + 17;
-  DTN_FORMATQUERYW    = DTN_FIRST + 18;
-  
-  DTN_USERSTRING     = DTN_USERSTRINGW;
-
-  GDTR_MIN            = $0001;
-  GDTR_MAX            = $0002;
-
-  GDT_ERROR           = -1;
-  GDT_VALID           = 0;
-  GDT_NONE            = 1;
-
-  //TOOLBAR CONTROL
-  //TOOLBARCLASSNAMEW   = 'ToolbarWindow32';
-  //TOOLBARCLASSNAME    = TOOLBARCLASSNAMEW;
-
-  TBIF_IMAGE          =  $00000001;
-  TBIF_TEXT           =  $00000002;
-  TBIF_STATE          =  $00000004;
-  TBIF_STYLE          =  $00000008;
-  TBIF_LPARAM         =  $00000010;
-  TBIF_COMMAND        =  $00000020;
-  TBIF_SIZE           =  $00000040;
-
-  // BUTTONINFO APIs
-  TB_GETBUTTONINFOW   = (WM_USER + 63);
-  TB_SETBUTTONINFOW   = (WM_USER + 64);
-  TB_GETBUTTONINFO    = TB_GETBUTTONINFOW;
-  TB_SETBUTTONINFO    = TB_SETBUTTONINFOW;
-
-  TB_INSERTBUTTONW    = (WM_USER + 67);
-  TB_ADDBUTTONSW      = (WM_USER + 68);
-  TB_HITTEST          = (WM_USER + 69);
-
-  //TB_INSERTBUTTON     = TB_INSERTBUTTONW;
-  //TB_ADDBUTTONS       = TB_ADDBUTTONSW;
-
-  TB_SETDRAWTEXTFLAGS = (WM_USER + 70);
-
-  //TBN_GETBUTTONINFOW  = (TBN_FIRST-20);
-  //TBN_BEGINDRAG       = (TBN_FIRST-1);
-  //TBN_ENDDRAG         = (TBN_FIRST-2);
-  TBN_DROPDOWN        = (TBN_FIRST - 10);
-  TBN_DRAGOUT         = (TBN_FIRST - 14);
-  //TBN_GETBUTTONINFO   = TBN_GETBUTTONINFOW;
-
-  // custom draw return flags
-  // values under 0x00010000 are reserved for global custom draw values.
-  // above that are for specific controls
-  CDRF_DODEFAULT          = $00000000;
-  CDRF_NEWFONT            = $00000002;
-  CDRF_SKIPDEFAULT        = $00000004;
-  CDRF_NOTIFYPOSTPAINT    = $00000010;
-  CDRF_NOTIFYITEMDRAW     = $00000020;
-  CDRF_NOTIFYSUBITEMDRAW  = $00000020;  // flags are the same, we can distinguish by context
-  CDRF_NOTIFYPOSTERASE    = $00000040;
-
-  // drawstage flags
-  // values under = $00010000 are reserved for global custom draw values.
-  // above that are for specific controls
-  CDDS_PREPAINT           = $00000001;
-  CDDS_POSTPAINT          = $00000002;
-  CDDS_PREERASE           = $00000003;
-  CDDS_POSTERASE          = $00000004;
-  // the = $000010000 bit means it's individual item specific
-  CDDS_ITEM               = $00010000;
-  CDDS_ITEMPREPAINT       = CDDS_ITEM or CDDS_PREPAINT;
-  CDDS_ITEMPOSTPAINT      = CDDS_ITEM or CDDS_POSTPAINT;
-  CDDS_ITEMPREERASE       = CDDS_ITEM or CDDS_PREERASE;
-  CDDS_ITEMPOSTERASE      = CDDS_ITEM or CDDS_POSTERASE;
-  CDDS_SUBITEM            = $00020000;
-
-  // Pocket PC  special controls
-  WC_CAPEDIT    = 'CAPEDIT';
-  WC_TSTATIC    = 'TTSTATIC';
-  WC_TBUTTON    = 'TTBUTTON';
-
-  // for FE, single byte character edit
-  WC_SBEDIT     = 'sbedit';
-  
-  // REBAR CONTROL
-  REBARCLASSNAME = 'ReBarWindow';
-
-  RBIM_IMAGELIST = $00000001;
-  RBS_VARHEIGHT = $0200;
-  RBS_BANDBORDERS = $0400;
-  RBS_FIXEDORDER = $0800;
-  RBS_SMARTLABELS = $1000;
-  RBS_AUTOSIZE = $2000;
-  RBS_VERTICALGRIPPER = $4000;       { this always has the vertical gripper (default for horizontal mode) }
-
-  RBBS_BREAK = $00000001;       { break to new line }
-  RBBS_FIXEDSIZE = $00000002;       { band can't be sized }
-  RBBS_CHILDEDGE = $00000004;       { edge around top & bottom of child window }
-  RBBS_HIDDEN = $00000008;       { don't show }
-  RBBS_NOVERT = $00000010;       { don't show when vertical }
-  RBBS_FIXEDBMP = $00000020;       { bitmap doesn't move during band resize }
-  RBBS_VARIABLEHEIGHT = $00000040;       { allow autosizing of this child vertically }
-  RBBS_GRIPPERALWAYS = $00000080;       { always show the gripper }
-  RBBS_NOGRIPPER = $00000100;       { never show gripper for this band }
-
-  RBBIM_STYLE = $00000001;
-  RBBIM_COLORS = $00000002;
-  RBBIM_TEXT = $00000004;
-  RBBIM_IMAGE = $00000008;
-  RBBIM_CHILD = $00000010;
-  RBBIM_CHILDSIZE = $00000020;
-  RBBIM_SIZE = $00000040;
-  RBBIM_BACKGROUND = $00000080;
-  RBBIM_ID = $00000100;
-  RBBIM_IDEALSIZE = $00000200;
-  RBBIM_LPARAM = $00000400;
-  
-  RB_DELETEBAND = WM_USER+2;
-  RB_GETBARINFO = WM_USER+3;
-  RB_SETBARINFO = WM_USER+4;
-  RB_SETPARENT = WM_USER+7;
-  RB_HITTEST = WM_USER+8;
-  RB_GETRECT = WM_USER+9;
-  RB_INSERTBANDW = WM_USER+10;
-  RB_SETBANDINFOW = WM_USER+11;
-  RB_GETBANDCOUNT = WM_USER+12;
-  RB_GETROWCOUNT = WM_USER+13;
-  RB_GETROWHEIGHT = WM_USER+14;
-  RB_IDTOINDEX = WM_USER+16;       { wParam == id }
-  RB_SETBKCOLOR = WM_USER+19;       { sets the default BK color }
-  RB_GETBKCOLOR = WM_USER+20;       { defaults to CLR_NONE }
-  RB_SETTEXTCOLOR = WM_USER+21;
-  RB_GETTEXTCOLOR = WM_USER+22;       { defaults to 0x00000000 }
-  RB_SIZETORECT = WM_USER+23;       { resize the rebar/break bands and such to this rect (lparam) }
-  RB_INSERTBAND = RB_INSERTBANDW;
-  RB_SETBANDINFO = RB_SETBANDINFOW;
-  RB_BEGINDRAG = WM_USER+24;
-  RB_ENDDRAG = WM_USER+25;
-  RB_DRAGMOVE = WM_USER+26;
-  RB_GETBARHEIGHT = WM_USER+27;
-  RB_GETBANDINFOW = WM_USER+28;
-  RB_GETBANDINFO = RB_GETBANDINFOW;
-  RB_MINIMIZEBAND = WM_USER+30;
-  RB_MAXIMIZEBAND = WM_USER+31;
-  RB_GETBANDBORDERS = WM_USER+34;       { returns in lparam = lprc the amount of edges added to band wparam }
-  RB_SHOWBAND = WM_USER+35;       { show/hide band }
-  RB_MOVEBAND = WM_USER+36;
-
-  RBN_HEIGHTCHANGE = RBN_FIRST-0;
-  RBN_LAYOUTCHANGED = RBN_FIRST-2;
-  RBN_AUTOSIZE = RBN_FIRST-3;
-  RBN_BEGINDRAG = RBN_FIRST-4;
-  RBN_ENDDRAG = RBN_FIRST-5;
-
-  RBHT_NOWHERE = $0001;
-  RBHT_CAPTION = $0002;
-  RBHT_CLIENT = $0003;
-  RBHT_GRABBER = $0004;
-
-//*****************************************************************************
-// types
-//*****************************************************************************
-
-type
-  // DATETIMEPICK CONTROL
-  tagNMDATETIMECHANGE = record
-    nmhdr   : NMHDR;
-    dwFlags : DWORD;
-    st      : SYSTEMTIME;
-  end;
-  NMDATETIMECHANGE=tagNMDATETIMECHANGE;
-  TNMDATETIMECHANGE=tagNMDATETIMECHANGE;
-  LPNMDATETIMECHANGE=^tagNMDATETIMECHANGE;
-
-  tagNMDATETIMESTRINGW = record
-    nmhdr         : NMHDR;
-    pszUserString : LPCWSTR;
-    st            : SYSTEMTIME;
-    dwFlags       : DWORD;
-  end;
-  NMDATETIMESTRINGW=tagNMDATETIMESTRINGW;
-  TNMDATETIMESTRINGW=tagNMDATETIMESTRINGW;
-  LPNMDATETIMESTRINGW=^tagNMDATETIMESTRINGW;
-  NMDATETIMESTRING=tagNMDATETIMESTRINGW;
-  TNMDATETIMESTRING=tagNMDATETIMESTRINGW;
-  PNMDATETIMESTRING=^tagNMDATETIMESTRINGW;
-
-  tagNMDATETIMEWMKEYDOWNA = record
-    nmhdr     : NMHDR;
-    nVirtKey  : integer;
-    pszFormat : LPCSTR;
-    st        : SYSTEMTIME;
-  end;
-  NMDATETIMEWMKEYDOWNA=tagNMDATETIMEWMKEYDOWNA;
-  TNMDATETIMEWMKEYDOWNA=tagNMDATETIMEWMKEYDOWNA;
-  LPNMDATETIMEWMKEYDOWNA=^tagNMDATETIMEWMKEYDOWNA;
-
-  tagNMDATETIMEWMKEYDOWNW = record
-    nmhdr     : NMHDR;
-    nVirtKey  : integer;
-    pszFormat : LPCWSTR;
-    st        : SYSTEMTIME;
-  end;
-  NMDATETIMEWMKEYDOWNW=tagNMDATETIMEWMKEYDOWNW;
-  TNMDATETIMEWMKEYDOWNW=tagNMDATETIMEWMKEYDOWNW;
-  LPNMDATETIMEWMKEYDOWNW=^tagNMDATETIMEWMKEYDOWNW;
-
-
-  tagNMDATETIMEFORMATA = record
-    nmhdr      : NMHDR;
-    pszFormat  : LPCSTR;
-    st         : SYSTEMTIME;
-    pszDisplay : LPCSTR;
-    szDisplay  : Array[0..63] of CHAR;
-  end;
-  NMDATETIMEFORMATA=tagNMDATETIMEFORMATA;
-  TNMDATETIMEFORMATA=tagNMDATETIMEFORMATA;
-  LPNMDATETIMEFORMATA=^NMDATETIMEFORMATA;
-
-  tagNMDATETIMEFORMATW = record
-    nmhdr      : NMHDR;
-    pszFormat  : LPCWSTR;
-    st         : SYSTEMTIME;
-    pszDisplay : LPCWSTR;
-    szDisplay  : Array[0..63] of WCHAR;
-  end;
-  NMDATETIMEFORMATW=tagNMDATETIMEFORMATW;
-  TNMDATETIMEFORMATW=tagNMDATETIMEFORMATW;
-  LPNMDATETIMEFORMATW=^NMDATETIMEFORMATW;
-
-
-  tagNMDATETIMEFORMATQUERYA = record
-    nmhdr      : NMHDR;
-    pszFormat  : LPCSTR;
-    szMax      : SIZE;
-  end;
-  NMDATETIMEFORMATQUERYA=tagNMDATETIMEFORMATQUERYA;
-  TNMDATETIMEFORMATQUERYA=tagNMDATETIMEFORMATQUERYA;
-  LPNMDATETIMEFORMATQUERYA=^tagNMDATETIMEFORMATQUERYA;
-
-  tagNMDATETIMEFORMATQUERYW = record
-    nmhdr      : NMHDR;
-    pszFormat  : LPCWSTR;
-    szMax      : SIZE;
-  end;
-  NMDATETIMEFORMATQUERYW=tagNMDATETIMEFORMATQUERYW;
-  TNMDATETIMEFORMATQUERYW=tagNMDATETIMEFORMATQUERYW;
-  LPNMDATETIMEFORMATQUERYW=^tagNMDATETIMEFORMATQUERYW;
-
-  //Generic structure for a key
-  tagNMKEY = Record
-    hdr   : NMHDR;
-    wVKey : WORD;
-    flags : UINT;
-  end;
-  NMKEY=tagNMKEY;
-  LPNMKEY=^NMKEY;
-
-  //Generic WM_NOTIFY notification structures
-  tagNMMOUSE = Record
-    hdr        : NMHDR;
-    dwItemSpec : DWORD;
-    dwItemData : DWORD;
-    pt         : POINT;
-  end;
-  NMMOUSE=tagNMMOUSE;
-  LPNMMOUSE=^NMMOUSE;
-  PNMMOUSE=^NMMOUSE;
-  NMCLICK=NMMOUSE;
-  LPNMCLICK=LPNMMOUSE;
-
-  //TOOLBAR CONTROL
-  TBBUTTONINFOW = record
-    cbSize    : UINT;
-    dwMask    : DWORD;
-    idCommand : Longint;
-    iImage    : Longint;
-    fsState   : BYTE;
-    fsStyle   : BYTE;
-    cx        : WORD;
-    lParam    : DWORD;
-    pszText   : LPWSTR;
-    cchText   : Longint;
-  end;
-  LPTBBUTTONINFOW=^TBBUTTONINFOW;
-  TBBUTTONINFO=TBBUTTONINFOW;
-  TTBButtonInfo=TBBUTTONINFO;
-
-  tagNMCUSTOMDRAWINFO = packed record
-    hdr: TNMHdr;
-    dwDrawStage: DWORD;
-    hdc: HDC;
-    rc: TRect;
-    dwItemSpec: DWORD;
-    uItemState: UINT;
-    lItemlParam: LPARAM;
-  end;
-  PNMCustomDraw = ^TNMCustomDraw;
-  TNMCustomDraw = tagNMCUSTOMDRAWINFO;
-  
-  tagNMLVCUSTOMDRAW = packed record
-    nmcd: TNMCustomDraw;
-    clrText: COLORREF;
-    clrTextBk: COLORREF;
-    iSubItem: Integer;
-  end;
-  PNMLVCustomDraw = ^TNMLVCustomDraw;
-  TNMLVCustomDraw = tagNMLVCUSTOMDRAW;
-  
-  tagNMLVODSTATECHANGE = packed record
-    hdr: TNMHdr;
-    iFrom: Integer;
-    iTo: Integer;
-    uNewState: UINT;
-    uOldState: UINT;
-  end;
-  PNMLVODStateChange = ^TNMLVODStateChange;
-  TNMLVODStateChange = tagNMLVODSTATECHANGE;
-  
-  tagREBARINFO = record
-    cbSize : UINT;
-    fMask : UINT;
-    himl : HIMAGELIST;
-  end;
-  REBARINFO = tagREBARINFO;
-  LPREBARINFO = ^tagREBARINFO;
-  
-  tagREBARBANDINFOW = record
-    cbSize : UINT;
-    fMask : UINT;
-    fStyle : UINT;
-    clrFore : COLORREF;
-    clrBack : COLORREF;
-    lpText : LPWSTR;
-    cch : UINT;
-    iImage : longint;
-    hwndChild : HWND;
-    cxMinChild : UINT;
-    cyMinChild : UINT;
-    cx : UINT;
-    hbmBack : HBITMAP;
-    wID : UINT;
-    cyChild : UINT;
-    cyMaxChild : UINT;
-    cyIntegral : UINT;
-    cxIdeal : UINT;
-    lParam : LPARAM;
-  end;
-  REBARBANDINFOW = tagREBARBANDINFOW;
-  LPREBARBANDINFOW = ^tagREBARBANDINFOW;
-  LPCREBARBANDINFOW = REBARBANDINFOW;
-  REBARBANDINFO = REBARBANDINFOW;
-  LPREBARBANDINFO = LPREBARBANDINFOW;
-  LPCREBARBANDINFO = LPCREBARBANDINFOW;
-
-  tagNMREBAR = record
-    hdr : NMHDR;
-    uBand : UINT;
-    wID : UINT;
-    cyChild : UINT;
-    cyBand : UINT;
-   end;
-  NMREBAR = tagNMREBAR;
-  LPNMREBAR = ^tagNMREBAR;
-
-  tagNMRBAUTOSIZE = record
-    hdr : NMHDR;
-    fChanged : BOOL;
-    rcTarget : RECT;
-    rcActual : RECT;
-  end;
-  NMRBAUTOSIZE = tagNMRBAUTOSIZE;
-  LPNMRBAUTOSIZE = ^tagNMRBAUTOSIZE;
-
-  _RB_HITTESTINFO = record
-    pt : POINT;
-    flags : UINT;
-    iBand : longint;
-  end;
-  RBHITTESTINFO = _RB_HITTESTINFO;
-  LPRBHITTESTINFO = ^_RB_HITTESTINFO;
-       
-  tagCOMMANDBANDSRESTOREINFO = record
-    cbSize : UINT;
-    wID : UINT;
-    fStyle : UINT;
-    cxRestored : UINT;
-    fMaximized : BOOL;
-  end;
-  COMMANDBANDSRESTOREINFO = tagCOMMANDBANDSRESTOREINFO;
-  LPCOMMANDBANDSRESTOREINFO = ^tagCOMMANDBANDSRESTOREINFO;
-  LPCCOMMANDBANDSRESTOREINFO = COMMANDBANDSRESTOREINFO;
-
-//*****************************************************************************
-// functions
-//*****************************************************************************
-
-function CreatePropertySheetPage(lppsp:LPCPROPSHEETPAGE):HPROPSHEETPAGE; external ComctlDLL name 'CreatePropertySheetPageW';
-function CreatePropertySheetPageW(lppsp:LPCPROPSHEETPAGE):HPROPSHEETPAGE; external ComctlDLL name 'CreatePropertySheetPageW';
-function CreateStatusWindow(style:LONG; lpszText:LPCWSTR; hwndParent:HWND; wID:UINT):HWND; external ComctlDll name 'CreateStatusWindowW';
-function CreateStatusWindowW(style:LONG; lpszText:LPCWSTR; hwndParent:HWND; wID:UINT):HWND; external ComctlDll name 'CreateStatusWindowW';
-function CreateToolbarEx(hwnd:HWND; ws:DWORD; wID:UINT; nBitmaps:longint; hBMInst:HINST;wBMID:UINT; lpButtons:LPCTBBUTTON; iNumButtons:longint; dxButton:longint; dyButton:longint;dxBitmap:longint;
-  dyBitmap:longint; uStructSize:UINT):HWND; external ComctlDLL name 'CreateToolbarEx';
-function CreateUpDownControl(dwStyle:DWORD; x:longint; y:longint; cx:longint; cy:longint;hParent:HWND; nID:longint; hInst:HINST; hBuddy:HWND; nUpper:longint;nLower:longint; nPos:longint):HWND; external ComctlDLL name 'CreateUpDownControl';
-function DestroyPropertySheetPage(hPSPage:HPROPSHEETPAGE):WINBOOL; external ComctlDLL name 'DestroyPropertySheetPage';
-procedure DrawStatusText(hDC:HDC; lprc:LPRECT; pszText:LPCWSTR; uFlags:UINT); external ComctlDLL name 'DrawStatusTextW';
-procedure DrawStatusTextW(hDC:HDC; lprc:LPRECT; pszText:LPCWSTR; uFlags:UINT); external ComctlDLL name 'DrawStatusTextW';
-procedure InitCommonControls; external ComctlDLL name 'InitCommonControls';
-function InitCommonControlsEx(_para1:LPINITCOMMONCONTROLSEX):WINBOOL; external ComctlDLL name 'InitCommonControlsEx';
-function PropertySheet(lppsph:LPCPROPSHEETHEADER):longint; external ComctlDll name 'PropertySheetW';
-function PropertySheetW(lppsph:LPCPROPSHEETHEADER):longint; external ComctlDll name 'PropertySheetW';
-
-function CommandBands_AddAdornments(hwndCmdBands:HWND; hinst:THandle; dwFlags:DWORD; prbbi:LPREBARBANDINFO):BOOL;external ComctlDll name 'CommandBands_AddAdornments';
-function CommandBands_AddBands(hwndCmdBands:HWND; hinst:THandle; cBands:UINT; prbbi:LPREBARBANDINFO):BOOL;external ComctlDll name 'CommandBands_AddBands';
-function CommandBands_Create(hinst:THandle; hwndParent:HWND; wID:UINT; dwStyles:DWORD; himl:HIMAGELIST):HWND;external ComctlDll name 'CommandBands_Create';
-function CommandBands_GetCommandBar(hwndCmdBands:HWND; uBand:UINT):HWND;external ComctlDll name 'CommandBands_GetCommandBar';
-function CommandBands_GetRestoreInformation(hwndCmdBands:HWND; uBand:UINT; pcbri:LPCOMMANDBANDSRESTOREINFO):BOOL;external ComctlDll name 'CommandBands_GetRestoreInformation';
-function CommandBands_Show(hwndCmdBands:HWND; fShow:BOOL):BOOL;external ComctlDll name 'CommandBands_Show';
-function CommandBar_AddAdornments(hwndCB:HWND; dwFlags:DWORD; dwReserved:DWORD):BOOL;external ComctlDll name 'CommandBar_AddAdornments';
-function CommandBar_AddBitmap(hwndCB:HWND; hInst:THandle; idBitmap:longint; iNumImages:longint; iImageWidth:longint; iImageHeight:longint):longint;external ComctlDll name 'CommandBar_AddBitmap';
-function CommandBar_Create(hInst:THandle; hwndParent:HWND; idCmdBar:longint):HWND;external ComctlDll name 'CommandBar_Create';
-function CommandBar_DrawMenuBar(hwndCB:HWND; iButton:WORD):BOOL;external ComctlDll name 'CommandBar_DrawMenuBar';
-function CommandBar_GetMenu(hwndCB:HWND; iButton:WORD):HMENU;external ComctlDll name 'CommandBar_GetMenu';
-function CommandBar_Height(hwndCB:HWND):longint;external ComctlDll name 'CommandBar_Height';
-function CommandBar_InsertComboBox(hwndCB:HWND; THandle:THandle; iWidth:longint; dwStyle:UINT; idComboBox:WORD; iButton:WORD):HWND;external ComctlDll name 'CommandBar_InsertComboBox';
-function CommandBar_InsertMenubar(hwndCB:HWND; hInst:THandle; idMenu:WORD; iButton:WORD):BOOL;external ComctlDll name 'CommandBar_InsertMenubar';
-function CommandBar_InsertMenubarEx(hwndCB:HWND; hinst:THandle; pszMenu:LPTSTR; iButton:WORD):BOOL;external ComctlDll name 'CommandBar_InsertMenubarEx';
-function CommandBar_Show(hwndCB:HWND; fShow:BOOL):BOOL;external ComctlDll name 'CommandBar_Show';
-function IsCommandBarMessage(hwndCB:HWND; lpMsg:LPMSG):BOOL;external ComctlDll name 'IsCommandBarMessage';
-procedure CommandBar_Destroy(hwndCB : HWND);
-function CommandBar_IsVisible(hwndCB : HWND) : BOOL;
-function CommandBar_AddButtons(hwndCB : HWND; cbButtons : UINT; lpButtons : LPTBBUTTON) : BOOL;
-function CommandBar_InsertButton(hwndCB : HWND; iButton : longint; lpButton : LPTBBUTTON) : BOOL;
-function CommandBar_AddToolTips(hwndCB: HWND; cbToolTips : UINT; lpToolTipsStrings : LPTSTR) : BOOL;
-function CommandBands_Height(hwndCmdBands : HWND) : UINT;
-function CommandBands_IsVisible(hwndCmdBands : HWND) : BOOL;
-
-{$endif read_interface}
-
-{$ifdef read_implementation}
-
-procedure CommandBar_Destroy(hwndCB : HWND);
-begin
-  DestroyWindow(hwndCB);
-end;
-
-function CommandBar_IsVisible(hwndCB : HWND) : BOOL;
-begin
-  CommandBar_IsVisible:=IsWindowVisible(hwndCB);
-end;
-
-function CommandBar_AddButtons(hwndCB : HWND; cbButtons : UINT; lpButtons : LPTBBUTTON) : BOOL;
-begin
-   CommandBar_AddButtons:=BOOL(SendMessage(hwndCB,TB_ADDBUTTONS,WPARAM(cbButtons),LPARAM(lpButtons)));
-end;
-
-function CommandBar_InsertButton(hwndCB : HWND; iButton : longint; lpButton : LPTBBUTTON) : BOOL;
-begin
-   CommandBar_InsertButton:=BOOL(SendMessage(hwndCB,TB_INSERTBUTTON,WPARAM(iButton),LPARAM(lpButton)));
-end;
-
-function CommandBar_AddToolTips(hwndCB: HWND; cbToolTips : UINT; lpToolTipsStrings : LPTSTR) : BOOL;
-begin
-   CommandBar_AddToolTips:=BOOL(SendMessage(hwndCB,TB_SETTOOLTIPS,WPARAM(cbToolTips),LPARAM(lpToolTipsStrings)));
-end;
-
-function CommandBands_Height(hwndCmdBands : HWND) : UINT;
-begin
-   CommandBands_Height:=UINT(SendMessage(hwndCmdBands,RB_GETBARHEIGHT,0,0));
-end;
-
-function CommandBands_IsVisible(hwndCmdBands : HWND) : BOOL;
-begin
-   CommandBands_IsVisible:=IsWindowVisible(hwndCmdBands);
-end;
-
-{$endif read_implementation}
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2006 Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{  Declarations for commctrl WinCE API
+
+}
+
+{exported functions list = to do,
+ * please remove functions done *
+ 
+     Exports
+
+       ordinal    name
+
+            73    AddMRUData
+            66    AddMRUStringA
+            67    AddMRUStringW
+            35    CenterWindow
+            11    CommandBar_GetItemWindow
+            63    CreateMRUListA
+            64    CreateMRUListW
+            15    CreateToolbar
+            50    DPA_Create
+            61    DPA_DeleteAllPtrs
+            60    DPA_DeletePtr
+            31    DPA_Destroy
+            56    DPA_DestroyCallback
+            32    DPA_GetPtr
+            62    DPA_GetPtrIndex
+            54    DPA_Grow
+            51    DPA_InsertPtr
+            59    DPA_Search
+            53    DPA_SetPtr
+            52    DPA_Sort
+            46    DSA_Clone
+            23    DSA_Create
+            30    DSA_DeleteAllItems
+            29    DSA_DeleteItem
+            24    DSA_Destroy
+            47    DSA_DestroyCallback
+            48    DSA_EnumCallback
+            25    DSA_GetItem
+            26    DSA_GetItemPtr
+            27    DSA_InsertItem
+            45    DSA_Search
+            28    DSA_SetItem
+            58    DSA_SetRange
+            57    DSA_Sort
+            68    DelMRUString
+            49    DoReaderMode
+            71    EnumMRUListA
+            72    EnumMRUListW
+            74    FindMRUData
+            69    FindMRUStringA
+            70    FindMRUStringW
+            65    FreeMRUList
+            22    InvertRect
+            55    IsCapEditAvailable
+                  ListView_SetItemSpacing
+            75    PopulateComboWithMRU
+            76    PopulateMenuWithMRU
+            80    SHCreateDefaultGradient
+            79    SHDrawGradient
+            81    SHDrawText
+            77    SHGetSysColor
+            78    SHGetSystemMetrics
+            82    SHSetSysColors
+            83    SHSetSystemMetrics
+            34    StrToIntW
+            33    Str_SetPtrW
+}
+
+{$ifdef read_interface}
+
+//*****************************************************************************
+// consts
+//*****************************************************************************
+const
+  ComctlDLL     = 'commctrl';
+
+  COMCTL32_VERSION=$020c;
+
+  // Common control shared messages
+  CCM_FIRST = $2000;
+  CCM_LAST  = CCM_FIRST + $200;
+
+  CCM_SETBKCOLOR = CCM_FIRST + $1; // lParam is bkColor
+  CCM_SETVERSION = CCM_FIRST + $7;
+  CCM_GETVERSION = CCM_FIRST + $8;
+
+  //InitCommonControlEx
+  //I_IMAGENONE           = -2; // Desktop listview uses this same value for I_IMAGENONE when (_WIN32_IE >= 0x0501)
+
+  //ICC_LISTVIEW_CLASSES  = $00000001; // listview, header
+  //ICC_TREEVIEW_CLASSES  = $00000002; // treeview, tooltips
+  //ICC_BAR_CLASSES       = $00000004; // toolbar, statusbar, trackbar, tooltips
+  //ICC_TAB_CLASSES       = $00000008; // tab, tooltips
+  //ICC_UPDOWN_CLASS      = $00000010; // updown
+  //ICC_PROGRESS_CLASS    = $00000020; // progress
+  ICC_ANIMATE_CLASS     = $00000080; // animate
+  //ICC_WIN95_CLASSES     = $0000007F;
+  //ICC_DATE_CLASSES      = $00000100; // month picker, date picker, time picker, updown
+  //ICC_COOL_CLASSES      = $00000400; // rebar (coolbar) control
+  //ICC_INTERNET_CLASSES  = $00000800; // IP Address control
+  //ICC_TOOLTIP_CLASSES   = $00001000; // Tooltip static & button
+  //ICC_CAPEDIT_CLASS     = $00002000; // All-caps edit control
+  //ICC_FE_CLASSES        = $40000000; // FE specific input subclasses
+
+  LVM_FIRST             =  $1000;      // ListView messages
+  TV_FIRST              =  $1100;      // TreeView messages
+  HDM_FIRST             =  $1200;      // Header messages
+
+  //Ranges for control message IDs
+  LVN_FIRST             =  (-100);       // listview
+  LVN_LAST              =  (-199);
+  HDN_FIRST             =  (-300);       // header
+  HDN_LAST              =  (-399);
+  TVN_FIRST             =  (-400);       // treeview
+  TVN_LAST              =  (-499);
+  TTN_FIRST             =  (-520);       // tooltips
+  TTN_LAST              =  (-549);
+  TCN_FIRST             =  (-550);       // tab control
+  TCN_LAST              =  (-580);
+  // Shell reserved               (0U-580U) -  (0U-589U)
+  CDN_FIRST             =  (-601);        // common dialog (new)
+  CDN_LAST              =  (-699);
+  TBN_FIRST             =  (-700);        // toolbar
+  TBN_LAST              =  (-720);
+  UDN_FIRST             =  (-721);        // updown
+  UDN_LAST              =  (-740);
+  MCN_FIRST             =  (-750);        // monthcal
+  MCN_LAST              =  (-759);
+  RBN_FIRST             =  (-831);        // rebar
+  RBN_LAST              =  (-859);
+  IPN_FIRST             =  (-860);        // internet address
+  IPN_LAST              =  (-879);        // internet address
+  SBN_FIRST             =  (-880);        // status bar
+  SBN_LAST              =  (-900);
+  SHN_FIRST             =  (-1400);       // Shell reserved
+  SHN_LAST              =  (-1500);
+
+  MSGF_COMMCTRL_BEGINDRAG     = $4200;
+  MSGF_COMMCTRL_SIZEHEADER    = $4201;
+  MSGF_COMMCTRL_DRAGSELECT    = $4202;
+
+  //Generic WM_NOTIFY notification codes
+  NM_FIRST              =  0;
+  NM_LAST               =  -99;
+  //NM_OUTOFMEMORY        =  (NM_FIRST-1);
+  //NM_CLICK              =  (NM_FIRST-2);
+  //NM_DBLCLK             =  (NM_FIRST-3);
+  //NM_RETURN             =  (NM_FIRST-4);
+  //NM_RCLICK             =  (NM_FIRST-5);
+  //NM_RDBLCLK            =  (NM_FIRST-6);
+  //NM_SETFOCUS           =  (NM_FIRST-7);
+  //NM_KILLFOCUS          =  (NM_FIRST-8);
+  NM_CUSTOMDRAW         =  (NM_FIRST-12);
+  NM_HOVER              =  (NM_FIRST-13);
+  NM_NCHITTEST          =  (NM_FIRST-14);
+  NM_KEYDOWN            =  (NM_FIRST-15);
+  NM_RECOGNIZEGESTURE   =  (NM_FIRST-50);
+
+  { Header control  }
+  HDM_DELETEITEM = 4610;
+  HDM_GETITEMW = 4619;
+  HDM_INSERTITEMW = 4618;
+  HDM_SETITEMW = 4620;
+
+  HDM_GETITEM = HDM_GETITEMW;
+  HDM_INSERTITEM = HDM_INSERTITEMW;
+  HDM_SETITEM = HDM_SETITEMW;
+
+  HDM_GETITEMCOUNT = 4608;
+  HDM_HITTEST = 4614;
+  HDM_LAYOUT = 4613;
+  { Header control notifications  }
+  HDN_BEGINTRACKW = HDN_FIRST-26;
+  HDN_DIVIDERDBLCLICKW = HDN_FIRST-25;
+  HDN_ENDTRACKW = HDN_FIRST-27;
+  HDN_ITEMCHANGEDW = HDN_FIRST-21;
+  HDN_ITEMCHANGINGW = HDN_FIRST-20;
+  HDN_ITEMCLICKW = HDN_FIRST-22;
+  HDN_ITEMDBLCLICKW = HDN_FIRST-23;
+  HDN_TRACKW = HDN_FIRST-28;
+  HDN_GETDISPINFOW = HDN_FIRST-29;
+  HDN_BEGINDRAG = HDN_FIRST-10;
+  HDN_ENDDRAG = HDN_FIRST-11;
+
+  HDN_BEGINTRACK = HDN_BEGINTRACKW;
+  HDN_DIVIDERDBLCLICK = HDN_DIVIDERDBLCLICKW;
+  HDN_ENDTRACK = HDN_ENDTRACKW;
+  HDN_ITEMCHANGED = HDN_ITEMCHANGEDW;
+  HDN_ITEMCHANGING = HDN_ITEMCHANGINGW;
+  HDN_ITEMCLICK = HDN_ITEMCLICKW;
+  HDN_ITEMDBLCLICK = HDN_ITEMDBLCLICKW;
+  HDN_TRACK = HDN_TRACKW;
+  HDN_GETDISPINFO = HDN_GETDISPINFOW;
+     
+  // DATETIMEPICK CONTROL
+  DATETIMEPICK_CLASS  ='SysDateTimePick32';
+  DTM_FIRST           = $1000;
+  DTM_GETSYSTEMTIME   = DTM_FIRST + 1;
+  DTM_SETSYSTEMTIME   = DTM_FIRST + 2;
+  DTM_GETRANGE        = DTM_FIRST + 3;
+  DTM_SETRANGE        = DTM_FIRST + 4;
+  DTM_SETFORMATA      = DTM_FIRST + 5;
+  DTM_SETMCCOLOR      = DTM_FIRST + 6;
+  DTM_GETMCCOLOR      = DTM_FIRST + 7;
+  DTM_GETMONTHCAL     = DTM_FIRST + 8;
+  DTM_SETMCFONT       = DTM_FIRST + 9;
+  DTM_GETMCFONT       = DTM_FIRST + 10;
+  DTM_SETFORMATW      = DTM_FIRST + 50;
+  DTM_SETFORMAT       = DTM_SETFORMATW;
+
+
+  DTS_UPDOWN                 = $0001;
+  DTS_SHOWNONE               = $0002;
+  DTS_SHORTDATEFORMAT        = $0000;
+  DTS_LONGDATEFORMAT         = $0004;
+  DTS_SHORTDATECENTURYFORMAT = $000C;
+  DTS_TIMEFORMAT             = $0009;
+  DTS_APPCANPARSE            = $0010;
+  DTS_RIGHTALIGN             = $0020;
+  DTS_NONEBUTTON             = $0080;
+
+  //datetimepick
+  DTN_FIRST                  =-760;
+  DTN_LAST                   =-799;
+  DTN_DATETIMECHANGE  = DTN_FIRST + 1;
+  DTN_USERSTRINGA     = DTN_FIRST + 2;
+  DTN_WMKEYDOWNA      = DTN_FIRST + 3;
+  DTN_FORMATA         = DTN_FIRST + 4;
+  DTN_FORMATQUERYA    = DTN_FIRST + 5;
+  DTN_DROPDOWN        = DTN_FIRST + 6;
+  DTN_CLOSEUP         = DTN_FIRST + 7;
+  DTN_USERSTRINGW     = DTN_FIRST + 15;
+  DTN_WMKEYDOWNW      = DTN_FIRST + 16;
+  DTN_FORMATW         = DTN_FIRST + 17;
+  DTN_FORMATQUERYW    = DTN_FIRST + 18;
+  
+  DTN_USERSTRING     = DTN_USERSTRINGW;
+
+  GDTR_MIN            = $0001;
+  GDTR_MAX            = $0002;
+
+  GDT_ERROR           = -1;
+  GDT_VALID           = 0;
+  GDT_NONE            = 1;
+
+  //TOOLBAR CONTROL
+  //TOOLBARCLASSNAMEW   = 'ToolbarWindow32';
+  //TOOLBARCLASSNAME    = TOOLBARCLASSNAMEW;
+
+  TBIF_IMAGE          =  $00000001;
+  TBIF_TEXT           =  $00000002;
+  TBIF_STATE          =  $00000004;
+  TBIF_STYLE          =  $00000008;
+  TBIF_LPARAM         =  $00000010;
+  TBIF_COMMAND        =  $00000020;
+  TBIF_SIZE           =  $00000040;
+
+  // BUTTONINFO APIs
+  TB_GETBUTTONINFOW   = (WM_USER + 63);
+  TB_SETBUTTONINFOW   = (WM_USER + 64);
+  TB_GETBUTTONINFO    = TB_GETBUTTONINFOW;
+  TB_SETBUTTONINFO    = TB_SETBUTTONINFOW;
+
+  TB_INSERTBUTTONW    = (WM_USER + 67);
+  TB_ADDBUTTONSW      = (WM_USER + 68);
+  TB_HITTEST          = (WM_USER + 69);
+
+  //TB_INSERTBUTTON     = TB_INSERTBUTTONW;
+  //TB_ADDBUTTONS       = TB_ADDBUTTONSW;
+
+  TB_SETDRAWTEXTFLAGS = (WM_USER + 70);
+
+  //TBN_GETBUTTONINFOW  = (TBN_FIRST-20);
+  //TBN_BEGINDRAG       = (TBN_FIRST-1);
+  //TBN_ENDDRAG         = (TBN_FIRST-2);
+  TBN_DROPDOWN        = (TBN_FIRST - 10);
+  TBN_DRAGOUT         = (TBN_FIRST - 14);
+  //TBN_GETBUTTONINFO   = TBN_GETBUTTONINFOW;
+
+  // custom draw return flags
+  // values under 0x00010000 are reserved for global custom draw values.
+  // above that are for specific controls
+  CDRF_DODEFAULT          = $00000000;
+  CDRF_NEWFONT            = $00000002;
+  CDRF_SKIPDEFAULT        = $00000004;
+  CDRF_NOTIFYPOSTPAINT    = $00000010;
+  CDRF_NOTIFYITEMDRAW     = $00000020;
+  CDRF_NOTIFYSUBITEMDRAW  = $00000020;  // flags are the same, we can distinguish by context
+  CDRF_NOTIFYPOSTERASE    = $00000040;
+
+  // drawstage flags
+  // values under = $00010000 are reserved for global custom draw values.
+  // above that are for specific controls
+  CDDS_PREPAINT           = $00000001;
+  CDDS_POSTPAINT          = $00000002;
+  CDDS_PREERASE           = $00000003;
+  CDDS_POSTERASE          = $00000004;
+  // the = $000010000 bit means it's individual item specific
+  CDDS_ITEM               = $00010000;
+  CDDS_ITEMPREPAINT       = CDDS_ITEM or CDDS_PREPAINT;
+  CDDS_ITEMPOSTPAINT      = CDDS_ITEM or CDDS_POSTPAINT;
+  CDDS_ITEMPREERASE       = CDDS_ITEM or CDDS_PREERASE;
+  CDDS_ITEMPOSTERASE      = CDDS_ITEM or CDDS_POSTERASE;
+  CDDS_SUBITEM            = $00020000;
+
+  // Pocket PC  special controls
+  WC_CAPEDIT    = 'CAPEDIT';
+  WC_TSTATIC    = 'TTSTATIC';
+  WC_TBUTTON    = 'TTBUTTON';
+
+  // for FE, single byte character edit
+  WC_SBEDIT     = 'sbedit';
+  
+  // REBAR CONTROL
+  REBARCLASSNAME = 'ReBarWindow';
+
+  RBIM_IMAGELIST = $00000001;
+  RBS_VARHEIGHT = $0200;
+  RBS_BANDBORDERS = $0400;
+  RBS_FIXEDORDER = $0800;
+  RBS_SMARTLABELS = $1000;
+  RBS_AUTOSIZE = $2000;
+  RBS_VERTICALGRIPPER = $4000;       { this always has the vertical gripper (default for horizontal mode) }
+
+  RBBS_BREAK = $00000001;       { break to new line }
+  RBBS_FIXEDSIZE = $00000002;       { band can't be sized }
+  RBBS_CHILDEDGE = $00000004;       { edge around top & bottom of child window }
+  RBBS_HIDDEN = $00000008;       { don't show }
+  RBBS_NOVERT = $00000010;       { don't show when vertical }
+  RBBS_FIXEDBMP = $00000020;       { bitmap doesn't move during band resize }
+  RBBS_VARIABLEHEIGHT = $00000040;       { allow autosizing of this child vertically }
+  RBBS_GRIPPERALWAYS = $00000080;       { always show the gripper }
+  RBBS_NOGRIPPER = $00000100;       { never show gripper for this band }
+
+  RBBIM_STYLE = $00000001;
+  RBBIM_COLORS = $00000002;
+  RBBIM_TEXT = $00000004;
+  RBBIM_IMAGE = $00000008;
+  RBBIM_CHILD = $00000010;
+  RBBIM_CHILDSIZE = $00000020;
+  RBBIM_SIZE = $00000040;
+  RBBIM_BACKGROUND = $00000080;
+  RBBIM_ID = $00000100;
+  RBBIM_IDEALSIZE = $00000200;
+  RBBIM_LPARAM = $00000400;
+  
+  RB_DELETEBAND = WM_USER+2;
+  RB_GETBARINFO = WM_USER+3;
+  RB_SETBARINFO = WM_USER+4;
+  RB_SETPARENT = WM_USER+7;
+  RB_HITTEST = WM_USER+8;
+  RB_GETRECT = WM_USER+9;
+  RB_INSERTBANDW = WM_USER+10;
+  RB_SETBANDINFOW = WM_USER+11;
+  RB_GETBANDCOUNT = WM_USER+12;
+  RB_GETROWCOUNT = WM_USER+13;
+  RB_GETROWHEIGHT = WM_USER+14;
+  RB_IDTOINDEX = WM_USER+16;       { wParam == id }
+  RB_SETBKCOLOR = WM_USER+19;       { sets the default BK color }
+  RB_GETBKCOLOR = WM_USER+20;       { defaults to CLR_NONE }
+  RB_SETTEXTCOLOR = WM_USER+21;
+  RB_GETTEXTCOLOR = WM_USER+22;       { defaults to 0x00000000 }
+  RB_SIZETORECT = WM_USER+23;       { resize the rebar/break bands and such to this rect (lparam) }
+  RB_INSERTBAND = RB_INSERTBANDW;
+  RB_SETBANDINFO = RB_SETBANDINFOW;
+  RB_BEGINDRAG = WM_USER+24;
+  RB_ENDDRAG = WM_USER+25;
+  RB_DRAGMOVE = WM_USER+26;
+  RB_GETBARHEIGHT = WM_USER+27;
+  RB_GETBANDINFOW = WM_USER+28;
+  RB_GETBANDINFO = RB_GETBANDINFOW;
+  RB_MINIMIZEBAND = WM_USER+30;
+  RB_MAXIMIZEBAND = WM_USER+31;
+  RB_GETBANDBORDERS = WM_USER+34;       { returns in lparam = lprc the amount of edges added to band wparam }
+  RB_SHOWBAND = WM_USER+35;       { show/hide band }
+  RB_MOVEBAND = WM_USER+36;
+
+  RBN_HEIGHTCHANGE = RBN_FIRST-0;
+  RBN_LAYOUTCHANGED = RBN_FIRST-2;
+  RBN_AUTOSIZE = RBN_FIRST-3;
+  RBN_BEGINDRAG = RBN_FIRST-4;
+  RBN_ENDDRAG = RBN_FIRST-5;
+
+  RBHT_NOWHERE = $0001;
+  RBHT_CAPTION = $0002;
+  RBHT_CLIENT = $0003;
+  RBHT_GRABBER = $0004;
+
+//*****************************************************************************
+// types
+//*****************************************************************************
+
+type
+  // DATETIMEPICK CONTROL
+  tagNMDATETIMECHANGE = record
+    nmhdr   : NMHDR;
+    dwFlags : DWORD;
+    st      : SYSTEMTIME;
+  end;
+  NMDATETIMECHANGE=tagNMDATETIMECHANGE;
+  TNMDATETIMECHANGE=tagNMDATETIMECHANGE;
+  LPNMDATETIMECHANGE=^tagNMDATETIMECHANGE;
+
+  tagNMDATETIMESTRINGW = record
+    nmhdr         : NMHDR;
+    pszUserString : LPCWSTR;
+    st            : SYSTEMTIME;
+    dwFlags       : DWORD;
+  end;
+  NMDATETIMESTRINGW=tagNMDATETIMESTRINGW;
+  TNMDATETIMESTRINGW=tagNMDATETIMESTRINGW;
+  LPNMDATETIMESTRINGW=^tagNMDATETIMESTRINGW;
+  NMDATETIMESTRING=tagNMDATETIMESTRINGW;
+  TNMDATETIMESTRING=tagNMDATETIMESTRINGW;
+  PNMDATETIMESTRING=^tagNMDATETIMESTRINGW;
+
+  tagNMDATETIMEWMKEYDOWNA = record
+    nmhdr     : NMHDR;
+    nVirtKey  : integer;
+    pszFormat : LPCSTR;
+    st        : SYSTEMTIME;
+  end;
+  NMDATETIMEWMKEYDOWNA=tagNMDATETIMEWMKEYDOWNA;
+  TNMDATETIMEWMKEYDOWNA=tagNMDATETIMEWMKEYDOWNA;
+  LPNMDATETIMEWMKEYDOWNA=^tagNMDATETIMEWMKEYDOWNA;
+
+  tagNMDATETIMEWMKEYDOWNW = record
+    nmhdr     : NMHDR;
+    nVirtKey  : integer;
+    pszFormat : LPCWSTR;
+    st        : SYSTEMTIME;
+  end;
+  NMDATETIMEWMKEYDOWNW=tagNMDATETIMEWMKEYDOWNW;
+  TNMDATETIMEWMKEYDOWNW=tagNMDATETIMEWMKEYDOWNW;
+  LPNMDATETIMEWMKEYDOWNW=^tagNMDATETIMEWMKEYDOWNW;
+
+
+  tagNMDATETIMEFORMATA = record
+    nmhdr      : NMHDR;
+    pszFormat  : LPCSTR;
+    st         : SYSTEMTIME;
+    pszDisplay : LPCSTR;
+    szDisplay  : Array[0..63] of CHAR;
+  end;
+  NMDATETIMEFORMATA=tagNMDATETIMEFORMATA;
+  TNMDATETIMEFORMATA=tagNMDATETIMEFORMATA;
+  LPNMDATETIMEFORMATA=^NMDATETIMEFORMATA;
+
+  tagNMDATETIMEFORMATW = record
+    nmhdr      : NMHDR;
+    pszFormat  : LPCWSTR;
+    st         : SYSTEMTIME;
+    pszDisplay : LPCWSTR;
+    szDisplay  : Array[0..63] of WCHAR;
+  end;
+  NMDATETIMEFORMATW=tagNMDATETIMEFORMATW;
+  TNMDATETIMEFORMATW=tagNMDATETIMEFORMATW;
+  LPNMDATETIMEFORMATW=^NMDATETIMEFORMATW;
+
+
+  tagNMDATETIMEFORMATQUERYA = record
+    nmhdr      : NMHDR;
+    pszFormat  : LPCSTR;
+    szMax      : SIZE;
+  end;
+  NMDATETIMEFORMATQUERYA=tagNMDATETIMEFORMATQUERYA;
+  TNMDATETIMEFORMATQUERYA=tagNMDATETIMEFORMATQUERYA;
+  LPNMDATETIMEFORMATQUERYA=^tagNMDATETIMEFORMATQUERYA;
+
+  tagNMDATETIMEFORMATQUERYW = record
+    nmhdr      : NMHDR;
+    pszFormat  : LPCWSTR;
+    szMax      : SIZE;
+  end;
+  NMDATETIMEFORMATQUERYW=tagNMDATETIMEFORMATQUERYW;
+  TNMDATETIMEFORMATQUERYW=tagNMDATETIMEFORMATQUERYW;
+  LPNMDATETIMEFORMATQUERYW=^tagNMDATETIMEFORMATQUERYW;
+
+  //Generic structure for a key
+  tagNMKEY = Record
+    hdr   : NMHDR;
+    wVKey : WORD;
+    flags : UINT;
+  end;
+  NMKEY=tagNMKEY;
+  LPNMKEY=^NMKEY;
+
+  //Generic WM_NOTIFY notification structures
+  tagNMMOUSE = Record
+    hdr        : NMHDR;
+    dwItemSpec : DWORD;
+    dwItemData : DWORD;
+    pt         : POINT;
+  end;
+  NMMOUSE=tagNMMOUSE;
+  LPNMMOUSE=^NMMOUSE;
+  PNMMOUSE=^NMMOUSE;
+  NMCLICK=NMMOUSE;
+  LPNMCLICK=LPNMMOUSE;
+
+  //TOOLBAR CONTROL
+  TBBUTTONINFOW = record
+    cbSize    : UINT;
+    dwMask    : DWORD;
+    idCommand : Longint;
+    iImage    : Longint;
+    fsState   : BYTE;
+    fsStyle   : BYTE;
+    cx        : WORD;
+    lParam    : DWORD;
+    pszText   : LPWSTR;
+    cchText   : Longint;
+  end;
+  LPTBBUTTONINFOW=^TBBUTTONINFOW;
+  TBBUTTONINFO=TBBUTTONINFOW;
+  TTBButtonInfo=TBBUTTONINFO;
+
+  tagNMCUSTOMDRAWINFO = packed record
+    hdr: TNMHdr;
+    dwDrawStage: DWORD;
+    hdc: HDC;
+    rc: TRect;
+    dwItemSpec: DWORD;
+    uItemState: UINT;
+    lItemlParam: LPARAM;
+  end;
+  PNMCustomDraw = ^TNMCustomDraw;
+  TNMCustomDraw = tagNMCUSTOMDRAWINFO;
+  
+  tagNMLVCUSTOMDRAW = packed record
+    nmcd: TNMCustomDraw;
+    clrText: COLORREF;
+    clrTextBk: COLORREF;
+    iSubItem: Integer;
+  end;
+  PNMLVCustomDraw = ^TNMLVCustomDraw;
+  TNMLVCustomDraw = tagNMLVCUSTOMDRAW;
+  
+  tagNMLVODSTATECHANGE = packed record
+    hdr: TNMHdr;
+    iFrom: Integer;
+    iTo: Integer;
+    uNewState: UINT;
+    uOldState: UINT;
+  end;
+  PNMLVODStateChange = ^TNMLVODStateChange;
+  TNMLVODStateChange = tagNMLVODSTATECHANGE;
+  
+  tagREBARINFO = record
+    cbSize : UINT;
+    fMask : UINT;
+    himl : HIMAGELIST;
+  end;
+  REBARINFO = tagREBARINFO;
+  LPREBARINFO = ^tagREBARINFO;
+  
+  tagREBARBANDINFOW = record
+    cbSize : UINT;
+    fMask : UINT;
+    fStyle : UINT;
+    clrFore : COLORREF;
+    clrBack : COLORREF;
+    lpText : LPWSTR;
+    cch : UINT;
+    iImage : longint;
+    hwndChild : HWND;
+    cxMinChild : UINT;
+    cyMinChild : UINT;
+    cx : UINT;
+    hbmBack : HBITMAP;
+    wID : UINT;
+    cyChild : UINT;
+    cyMaxChild : UINT;
+    cyIntegral : UINT;
+    cxIdeal : UINT;
+    lParam : LPARAM;
+  end;
+  REBARBANDINFOW = tagREBARBANDINFOW;
+  LPREBARBANDINFOW = ^tagREBARBANDINFOW;
+  LPCREBARBANDINFOW = REBARBANDINFOW;
+  REBARBANDINFO = REBARBANDINFOW;
+  LPREBARBANDINFO = LPREBARBANDINFOW;
+  LPCREBARBANDINFO = LPCREBARBANDINFOW;
+
+  tagNMREBAR = record
+    hdr : NMHDR;
+    uBand : UINT;
+    wID : UINT;
+    cyChild : UINT;
+    cyBand : UINT;
+   end;
+  NMREBAR = tagNMREBAR;
+  LPNMREBAR = ^tagNMREBAR;
+
+  tagNMRBAUTOSIZE = record
+    hdr : NMHDR;
+    fChanged : BOOL;
+    rcTarget : RECT;
+    rcActual : RECT;
+  end;
+  NMRBAUTOSIZE = tagNMRBAUTOSIZE;
+  LPNMRBAUTOSIZE = ^tagNMRBAUTOSIZE;
+
+  _RB_HITTESTINFO = record
+    pt : POINT;
+    flags : UINT;
+    iBand : longint;
+  end;
+  RBHITTESTINFO = _RB_HITTESTINFO;
+  LPRBHITTESTINFO = ^_RB_HITTESTINFO;
+       
+  tagCOMMANDBANDSRESTOREINFO = record
+    cbSize : UINT;
+    wID : UINT;
+    fStyle : UINT;
+    cxRestored : UINT;
+    fMaximized : BOOL;
+  end;
+  COMMANDBANDSRESTOREINFO = tagCOMMANDBANDSRESTOREINFO;
+  LPCOMMANDBANDSRESTOREINFO = ^tagCOMMANDBANDSRESTOREINFO;
+  LPCCOMMANDBANDSRESTOREINFO = COMMANDBANDSRESTOREINFO;
+
+//*****************************************************************************
+// functions
+//*****************************************************************************
+
+function CreatePropertySheetPage(lppsp:LPCPROPSHEETPAGE):HPROPSHEETPAGE; external ComctlDLL name 'CreatePropertySheetPageW';
+function CreatePropertySheetPageW(lppsp:LPCPROPSHEETPAGE):HPROPSHEETPAGE; external ComctlDLL name 'CreatePropertySheetPageW';
+function CreateStatusWindow(style:LONG; lpszText:LPCWSTR; hwndParent:HWND; wID:UINT):HWND; external ComctlDll name 'CreateStatusWindowW';
+function CreateStatusWindowW(style:LONG; lpszText:LPCWSTR; hwndParent:HWND; wID:UINT):HWND; external ComctlDll name 'CreateStatusWindowW';
+function CreateToolbarEx(hwnd:HWND; ws:DWORD; wID:UINT; nBitmaps:longint; hBMInst:HINST;wBMID:UINT; lpButtons:LPCTBBUTTON; iNumButtons:longint; dxButton:longint; dyButton:longint;dxBitmap:longint;
+  dyBitmap:longint; uStructSize:UINT):HWND; external ComctlDLL name 'CreateToolbarEx';
+function CreateUpDownControl(dwStyle:DWORD; x:longint; y:longint; cx:longint; cy:longint;hParent:HWND; nID:longint; hInst:HINST; hBuddy:HWND; nUpper:longint;nLower:longint; nPos:longint):HWND; external ComctlDLL name 'CreateUpDownControl';
+function DestroyPropertySheetPage(hPSPage:HPROPSHEETPAGE):WINBOOL; external ComctlDLL name 'DestroyPropertySheetPage';
+procedure DrawStatusText(hDC:HDC; lprc:LPRECT; pszText:LPCWSTR; uFlags:UINT); external ComctlDLL name 'DrawStatusTextW';
+procedure DrawStatusTextW(hDC:HDC; lprc:LPRECT; pszText:LPCWSTR; uFlags:UINT); external ComctlDLL name 'DrawStatusTextW';
+procedure InitCommonControls; external ComctlDLL name 'InitCommonControls';
+function InitCommonControlsEx(_para1:LPINITCOMMONCONTROLSEX):WINBOOL; external ComctlDLL name 'InitCommonControlsEx';
+function PropertySheet(lppsph:LPCPROPSHEETHEADER):longint; external ComctlDll name 'PropertySheetW';
+function PropertySheetW(lppsph:LPCPROPSHEETHEADER):longint; external ComctlDll name 'PropertySheetW';
+
+function CommandBands_AddAdornments(hwndCmdBands:HWND; hinst:THandle; dwFlags:DWORD; prbbi:LPREBARBANDINFO):BOOL;external ComctlDll name 'CommandBands_AddAdornments';
+function CommandBands_AddBands(hwndCmdBands:HWND; hinst:THandle; cBands:UINT; prbbi:LPREBARBANDINFO):BOOL;external ComctlDll name 'CommandBands_AddBands';
+function CommandBands_Create(hinst:THandle; hwndParent:HWND; wID:UINT; dwStyles:DWORD; himl:HIMAGELIST):HWND;external ComctlDll name 'CommandBands_Create';
+function CommandBands_GetCommandBar(hwndCmdBands:HWND; uBand:UINT):HWND;external ComctlDll name 'CommandBands_GetCommandBar';
+function CommandBands_GetRestoreInformation(hwndCmdBands:HWND; uBand:UINT; pcbri:LPCOMMANDBANDSRESTOREINFO):BOOL;external ComctlDll name 'CommandBands_GetRestoreInformation';
+function CommandBands_Show(hwndCmdBands:HWND; fShow:BOOL):BOOL;external ComctlDll name 'CommandBands_Show';
+function CommandBar_AddAdornments(hwndCB:HWND; dwFlags:DWORD; dwReserved:DWORD):BOOL;external ComctlDll name 'CommandBar_AddAdornments';
+function CommandBar_AddBitmap(hwndCB:HWND; hInst:THandle; idBitmap:longint; iNumImages:longint; iImageWidth:longint; iImageHeight:longint):longint;external ComctlDll name 'CommandBar_AddBitmap';
+function CommandBar_Create(hInst:THandle; hwndParent:HWND; idCmdBar:longint):HWND;external ComctlDll name 'CommandBar_Create';
+function CommandBar_DrawMenuBar(hwndCB:HWND; iButton:WORD):BOOL;external ComctlDll name 'CommandBar_DrawMenuBar';
+function CommandBar_GetMenu(hwndCB:HWND; iButton:WORD):HMENU;external ComctlDll name 'CommandBar_GetMenu';
+function CommandBar_Height(hwndCB:HWND):longint;external ComctlDll name 'CommandBar_Height';
+function CommandBar_InsertComboBox(hwndCB:HWND; THandle:THandle; iWidth:longint; dwStyle:UINT; idComboBox:WORD; iButton:WORD):HWND;external ComctlDll name 'CommandBar_InsertComboBox';
+function CommandBar_InsertMenubar(hwndCB:HWND; hInst:THandle; idMenu:WORD; iButton:WORD):BOOL;external ComctlDll name 'CommandBar_InsertMenubar';
+function CommandBar_InsertMenubarEx(hwndCB:HWND; hinst:THandle; pszMenu:LPTSTR; iButton:WORD):BOOL;external ComctlDll name 'CommandBar_InsertMenubarEx';
+function CommandBar_Show(hwndCB:HWND; fShow:BOOL):BOOL;external ComctlDll name 'CommandBar_Show';
+function IsCommandBarMessage(hwndCB:HWND; lpMsg:LPMSG):BOOL;external ComctlDll name 'IsCommandBarMessage';
+procedure CommandBar_Destroy(hwndCB : HWND);
+function CommandBar_IsVisible(hwndCB : HWND) : BOOL;
+function CommandBar_AddButtons(hwndCB : HWND; cbButtons : UINT; lpButtons : LPTBBUTTON) : BOOL;
+function CommandBar_InsertButton(hwndCB : HWND; iButton : longint; lpButton : LPTBBUTTON) : BOOL;
+function CommandBar_AddToolTips(hwndCB: HWND; cbToolTips : UINT; lpToolTipsStrings : LPTSTR) : BOOL;
+function CommandBands_Height(hwndCmdBands : HWND) : UINT;
+function CommandBands_IsVisible(hwndCmdBands : HWND) : BOOL;
+
+{$endif read_interface}
+
+{$ifdef read_implementation}
+
+procedure CommandBar_Destroy(hwndCB : HWND);
+begin
+  DestroyWindow(hwndCB);
+end;
+
+function CommandBar_IsVisible(hwndCB : HWND) : BOOL;
+begin
+  CommandBar_IsVisible:=IsWindowVisible(hwndCB);
+end;
+
+function CommandBar_AddButtons(hwndCB : HWND; cbButtons : UINT; lpButtons : LPTBBUTTON) : BOOL;
+begin
+   CommandBar_AddButtons:=BOOL(SendMessage(hwndCB,TB_ADDBUTTONS,WPARAM(cbButtons),LPARAM(lpButtons)));
+end;
+
+function CommandBar_InsertButton(hwndCB : HWND; iButton : longint; lpButton : LPTBBUTTON) : BOOL;
+begin
+   CommandBar_InsertButton:=BOOL(SendMessage(hwndCB,TB_INSERTBUTTON,WPARAM(iButton),LPARAM(lpButton)));
+end;
+
+function CommandBar_AddToolTips(hwndCB: HWND; cbToolTips : UINT; lpToolTipsStrings : LPTSTR) : BOOL;
+begin
+   CommandBar_AddToolTips:=BOOL(SendMessage(hwndCB,TB_SETTOOLTIPS,WPARAM(cbToolTips),LPARAM(lpToolTipsStrings)));
+end;
+
+function CommandBands_Height(hwndCmdBands : HWND) : UINT;
+begin
+   CommandBands_Height:=UINT(SendMessage(hwndCmdBands,RB_GETBARHEIGHT,0,0));
+end;
+
+function CommandBands_IsVisible(hwndCmdBands : HWND) : BOOL;
+begin
+   CommandBands_IsVisible:=IsWindowVisible(hwndCmdBands);
+end;
+
+{$endif read_implementation}

+ 3 - 90
rtl/wince/wininc/coredll.inc

@@ -646,7 +646,6 @@
       367 ThreadDetachAllDLLs
         B ThreadExceptionExit
       4C7 TouchCalibrate
-      4F5 TransparentImage
       3A6 TurnOffProfiling
       3A5 TurnOnProfiling
       36C U_rclose
@@ -2020,72 +2019,6 @@
       583 labs
       584 ldexp
       585 ldiv
-      21F lineAccept
-      21D lineAddProvider
-      220 lineAddToConference
-      221 lineAnswer
-      222 lineBlindTransfer
-      20C lineClose
-      223 lineCompleteTransfer
-      21C lineConfigDialogEdit
-      20D lineDeallocateCall
-      224 lineDevSpecific
-      225 lineDial
-      20E lineDrop
-      226 lineForward
-      227 lineGenerateDigits
-      228 lineGenerateTone
-      229 lineGetAddressCaps
-      22A lineGetAddressID
-      22B lineGetAddressStatus
-      22C lineGetAppPriority
-      22D lineGetCallInfo
-      22E lineGetCallStatus
-      22F lineGetConfRelatedCalls
-      20F lineGetDevCaps
-      210 lineGetDevConfig
-      21A lineGetID
-      230 lineGetIcon
-      231 lineGetLineDevStatus
-      232 lineGetMessage
-      233 lineGetNewCalls
-      234 lineGetNumRings
-      235 lineGetProviderList
-      236 lineGetStatusMessages
-      211 lineGetTranslateCaps
-      237 lineHandoff
-      238 lineHold
-      212 lineInitialize
-      239 lineInitializeEx
-      213 lineMakeCall
-      23A lineMonitorDigits
-      23B lineMonitorMedia
-      214 lineNegotiateAPIVersion
-      23C lineNegotiateExtVersion
-      215 lineOpen
-      23D linePickup
-      23E linePrepareAddToConference
-      23F lineRedirect
-      240 lineReleaseUserUserInfo
-      241 lineRemoveFromConference
-      242 lineSendUserUserInfo
-      243 lineSetAppPriority
-      244 lineSetCallParams
-      245 lineSetCallPrivilege
-      21E lineSetCurrentLocation
-      216 lineSetDevConfig
-      246 lineSetMediaMode
-      247 lineSetNumRings
-      217 lineSetStatusMessages
-      248 lineSetTerminal
-      249 lineSetTollList
-      24A lineSetupConference
-      24B lineSetupTransfer
-      218 lineShutdown
-      24C lineSwapHold
-      219 lineTranslateAddress
-      21B lineTranslateDialog
-      24D lineUnhold
       586 log
       587 log10
       589 longjmp
@@ -2107,29 +2040,6 @@
       2B0 mixerOpen
       2B1 mixerSetControlDetails
       596 modf
-      24E phoneClose
-      24F phoneConfigDialog
-      250 phoneDevSpecific
-      251 phoneGetDevCaps
-      252 phoneGetGain
-      253 phoneGetHookSwitch
-      255 phoneGetID
-      254 phoneGetIcon
-      256 phoneGetMessage
-      257 phoneGetRing
-      258 phoneGetStatus
-      259 phoneGetStatusMessages
-      25A phoneGetVolume
-      25B phoneInitializeEx
-      25C phoneNegotiateAPIVersion
-      25D phoneNegotiateExtVersion
-      25E phoneOpen
-      25F phoneSetGain
-      260 phoneSetHookSwitch
-      261 phoneSetRing
-      262 phoneSetStatusMessages
-      263 phoneSetVolume
-      264 phoneShutdown
       599 pow
       60D printf
       610 putchar
@@ -3119,6 +3029,8 @@ function TranslateAcceleratorW(hWnd:HWND; hAccTable:HACCEL; lpMsg:LPMSG):longint
 function TranslateCharsetInfo(var lpSrc:DWORD; lpCs:LPCHARSETINFO; dwFlags:DWORD):WINBOOL; external KernelDLL name 'TranslateCharsetInfo';
 function TranslateMessage(lpMsg:LPMSG):WINBOOL; external KernelDLL name 'TranslateMessage';
 function TransmitCommChar(hFile:HWND; cChar:char):WINBOOL; external KernelDLL name 'TransmitCommChar';
+function TransparentBlt(hdcDest : HDC;DstX : LONG;DstY : LONG;DstCx : LONG;DstCy : LONG;hSrc : HANDLE;SrcX : LONG;SrcY : LONG;SrcCx : LONG;SrcCy : LONG;TransparentColor : COLORREF): WINBOOL; external KernelDLL name 'TransparentImage';
+function TransparentImage(hdcDest : HDC;DstX : LONG;DstY : LONG;DstCx : LONG;DstCy : LONG;hSrc : HANDLE;SrcX : LONG;SrcY : LONG;SrcCx : LONG;SrcCy : LONG;TransparentColor : COLORREF): WINBOOL; external KernelDLL name 'TransparentImage';
 function TreeView_InsertItem(hwnd:HWND;lpis : LPTV_INSERTSTRUCT) : LRESULT;
 function TreeView_DeleteItem(hwnd:HWND;hitem : HTREEITEM) : LRESULT;
 function TreeView_DeleteAllItems(hwnd : HWND) : LRESULT;
@@ -4295,3 +4207,4 @@ end;
 {$endif read_implementation}
 
 
+

+ 5766 - 5765
rtl/wince/wininc/defines.inc

@@ -1,5765 +1,5766 @@
-{
-    This file is part of the Free Pascal run time library.
-    This unit contains the constant definitions for the Win32 API
-    Copyright (c) 1999-2000 by Florian Klaempfl,
-    member of the Free Pascal development team.
-
-    See the file COPYING.FPC, included in this distribution,
-    for details about the copyright.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- **********************************************************************}
-
-{
-  Defines.h
-
-  Windows32 API definitions
-
-  Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-
-  Author: Scott Christley <[email protected]>
-
-  This file is part of the Windows32 API Library.
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Library General Public
-  License as published by the Free Software Foundation; either
-  version 2 of the License, or (at your option) any later version.
-
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Library General Public License for more details.
-
-  If you are interested in a warranty or support for this source code,
-  contact Scott Christley <[email protected]> for more information.
-
-  License along with this library; see the file COPYING.LIB.
-  If not, write to the Free Software Foundation,
-  59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-
-}
-
-
-{$ifdef read_interface}
-
-
-{$PACKRECORDS C}
-
-
-  const
-     UNICODE_NULL  = widechar(#0);
-     NULL=0;                            //+windef
-     //FALSE=0;                         //+windef, removed can't compile
-     //TRUE=1;                          //+windef, removed can't compile
-     MAX_PATH = 260;                    //windef
-     LF_FACESIZE = 32;
-     LF_FULLFACESIZE = 64;
-     ELF_VENDOR_SIZE = 4;
-     SECURITY_STATIC_TRACKING = 0;
-     SECURITY_DYNAMIC_TRACKING = 1;
-     MAX_DEFAULTCHAR = 2;
-     MAX_LEADBYTES = 12;
-     EXCEPTION_MAXIMUM_PARAMETERS = 15; //winnt
-     CCHDEVICENAME = 32;
-     CCHFORMNAME = 32;
-     MENU_TEXT_LEN = 40;
-     MAX_LANA = 254;
-     NCBNAMSZ = 16;
-     NETBIOS_NAME_LEN = 16;
-     OFS_MAXPATHNAME = 128;
-     MAX_TAB_STOPS = 32;
-     RAS_MaxCallbackNumber = 128;
-     RAS_MaxDeviceName = 128;
-     RAS_MaxDeviceType = 16;
-     RAS_MaxEntryName = 256;
-     RAS_MaxIpAddress = 15;
-     RAS_MaxIpxAddress = 21;
-     RAS_MaxPhoneNumber = 128;
-     UNLEN = 256;
-     PWLEN = 256;
-     CNLEN = 15;
-     DNLEN = 15;
-  { Unsigned types max  }
-     MAXDWORD = $FFFFFFFF;     //winnt
-     MAXWORD = $FFFF;          //winnt
-     MAXBYTE = $FF;            //winnt
-  { Signed types max/min  }
-     MINCHAR = $80;            //winnt
-     MAXCHAR = $7F;            //winnt
-     MINSHORT = $8000;         //winnt
-     MAXSHORT = $7FFF;         //winnt
-     MINLONG = $80000000;      //winnt
-     MAXLONG = $7FFFFFFF;      //winnt
-  { _llseek  }
-     FILE_BEGIN = 0;
-     FILE_CURRENT = 1;
-     FILE_END = 2;
-  { _lopen, LZOpenFile, OpenFile  }
-     OF_READ = 0;
-     OF_READWRITE = 2;
-     OF_WRITE = 1;
-     OF_SHARE_COMPAT = 0;
-     OF_SHARE_DENY_NONE = 64;
-     OF_SHARE_DENY_READ = 48;
-     OF_SHARE_DENY_WRITE = 32;
-     OF_SHARE_EXCLUSIVE = 16;
-     OF_CANCEL = 2048;
-     OF_CREATE = 4096;
-     OF_DELETE = 512;
-     OF_EXIST = 16384;
-     OF_PARSE = 256;
-     OF_PROMPT = 8192;
-     OF_REOPEN = 32768;
-     OF_VERIFY = 1024;
-  { ActivateKeyboardLayout, LoadKeyboardLayout  }
-     HKL_NEXT = 1;
-     HKL_PREV = 0;
-     KLF_REORDER = 8;
-     KLF_UNLOADPREVIOUS = 4;
-     KLF_ACTIVATE = 1;
-     KLF_NOTELLSHELL = 128;
-     KLF_REPLACELANG = 16;
-     KLF_SUBSTITUTE_OK = 2;
-  { AppendMenu  }
-     MF_BITMAP = $4;
-     MF_DISABLED = $2;
-     MF_ENABLED = 0;
-     MF_GRAYED = $1;
-     MF_HELP = $4000;
-     MF_MENUBARBREAK = $20;
-     MF_MENUBREAK = $40;
-     MF_MOUSESELECT = $8000;
-     MF_OWNERDRAW = $100;
-     MF_POPUP = $10;
-     MF_SEPARATOR = $800;
-     MF_STRING = 0;
-     MF_SYSMENU = $2000;
-     MF_USECHECKBITMAPS = $200;
-  { Ternary Raster Operations - BitBlt  }
-     BLACKNESS = $00000042;
-     NOTSRCERASE = $001100A6;
-     NOTSRCCOPY = $00330008;
-     SRCERASE = $00440328;
-     DSTINVERT = $00550009;
-     PATINVERT = $005A0049;
-     SRCINVERT = $00660046;
-     SRCAND = $008800C6;
-     MERGEPAINT = $00BB0226;
-     MERGECOPY = $00C000CA;
-     SRCCOPY = $00CC0020;
-     SRCPAINT = $00EE0086;
-     PATCOPY = $00F00021;
-     PATPAINT = $00FB0A09;
-     WHITENESS = $00FF0062;
-  { Binary Raster Operations  }
-     R2_BLACK = 1;
-     R2_COPYPEN = 13;
-     R2_MASKNOTPEN = 3;
-     R2_MASKPEN = 9;
-     R2_MASKPENNOT = 5;
-     R2_MERGENOTPEN = 12;
-     R2_MERGEPEN = 15;
-     R2_MERGEPENNOT = 14;
-     R2_NOP = 11;
-     R2_NOT = 6;
-     R2_NOTCOPYPEN = 4;
-     R2_NOTMASKPEN = 8;
-     R2_NOTMERGEPEN = 2;
-     R2_NOTXORPEN = 10;
-     R2_WHITE = 16;
-     R2_XORPEN = 7;
-  { BroadcastSystemMessage  }
-     BSF_FLUSHDISK = 4;
-     BSF_FORCEIFHUNG = 32;
-     BSF_IGNORECURRENTTASK = 2;
-     BSF_NOHANG = 8;
-     BSF_POSTMESSAGE = 16;
-     BSF_QUERY = 1;
-     BSM_ALLCOMPONENTS = 0;
-     BSM_APPLICATIONS = 8;
-     BSM_INSTALLABLEDRIVERS = 4;
-     BSM_NETDRIVER = 2;
-     BSM_VXDS = 1;
-     BROADCAST_QUERY_DENY = 1112363332;
-  { CascadeWindows, TileWindows  }
-     MDITILE_SKIPDISABLED = 2;
-     MDITILE_HORIZONTAL = 1;
-     MDITILE_VERTICAL = 0;
-  { CBTProc  }
-     HCBT_ACTIVATE = 5;
-     HCBT_CLICKSKIPPED = 6;
-     HCBT_CREATEWND = 3;
-     HCBT_DESTROYWND = 4;
-     HCBT_KEYSKIPPED = 7;
-     HCBT_MINMAX = 1;
-     HCBT_MOVESIZE = 0;
-     HCBT_QS = 2;
-     HCBT_SETFOCUS = 9;
-     HCBT_SYSCOMMAND = 8;
-  { ChangeDisplaySettings  }
-     DM_BITSPERPEL              = $40000;
-     DM_PELSWIDTH               = $80000;
-     DM_PELSHEIGHT              = $100000;
-     DM_DISPLAYFLAGS            = $200000;
-     DM_DISPLAYFREQUENCY        = $400000;
-     DM_DISPLAYORIENTATION      = $00800000;
-     DM_DISPLAYQUERYORIENTATION = $01000000;
-  { rotation angle for screen rotation }
-     DMDO_0       = 0;
-     DMDO_90      = 1;
-     DMDO_180     = 2;
-     DMDO_270     = 4;
-     DMDO_DEFAULT = DMDO_0;
-
-     CDS_UPDATEREGISTRY = 1;
-     CDS_TEST = 2;
-     CDS_FULLSCREEN = 4;
-     CDS_GLOBAL = 8;
-     CDS_SET_PRIMARY = $10;
-     CDS_RESET = $40000000;
-     CDS_SETRECT = $20000000;
-     CDS_NORESET = $10000000;
-     DISP_CHANGE_SUCCESSFUL = 0;
-     DISP_CHANGE_RESTART = 1;
-     DISP_CHANGE_BADFLAGS = -(4);
-     DISP_CHANGE_FAILED = -(1);
-     DISP_CHANGE_BADMODE = -(2);
-     DISP_CHANGE_NOTUPDATED = -(3);
-  { ChangeServiceConfig  }
-     SERVICE_NO_CHANGE = -(1);
-     SERVICE_WIN32_OWN_PROCESS = 16;
-     SERVICE_WIN32_SHARE_PROCESS = 32;
-     SERVICE_KERNEL_DRIVER = 1;
-     SERVICE_FILE_SYSTEM_DRIVER = 2;
-     SERVICE_INTERACTIVE_PROCESS = 256;
-     SERVICE_BOOT_START = 0;
-     SERVICE_SYSTEM_START = 1;
-     SERVICE_AUTO_START = 2;
-     SERVICE_DEMAND_START = 3;
-     SERVICE_DISABLED = 4;
-  { SERVICE_STATUS structure  }
-     SERVICE_STOPPED = 1;
-     SERVICE_START_PENDING = 2;
-     SERVICE_STOP_PENDING = 3;
-     SERVICE_RUNNING = 4;
-     SERVICE_CONTINUE_PENDING = 5;
-     SERVICE_PAUSE_PENDING = 6;
-     SERVICE_PAUSED = 7;
-     SERVICE_ACCEPT_STOP = 1;
-     SERVICE_ACCEPT_PAUSE_CONTINUE = 2;
-     SERVICE_ACCEPT_SHUTDOWN = 4;
-  { CheckDlgButton  }
-     BST_CHECKED = 1;
-     BST_INDETERMINATE = 2;
-     BST_UNCHECKED = 0;
-     BST_FOCUS = 8;
-     BST_PUSHED = 4;
-  { CheckMenuItem, HiliteMenuItem  }
-     MF_BYCOMMAND = 0;
-     MF_BYPOSITION = $400;
-     MF_CHECKED = $8;
-     MF_UNCHECKED = 0;
-     MF_HILITE = $80;
-     MF_UNHILITE = 0;
-  { ChildWindowFromPointEx  }
-     CWP_ALL = 0;
-     CWP_SKIPINVISIBLE = 1;
-     CWP_SKIPDISABLED = 2;
-     CWP_SKIPTRANSPARENT = 4;
-  { ClearCommError  }
-     CE_BREAK = 16;
-     CE_DNS = 2048;
-     CE_FRAME = 8;
-     CE_IOE = 1024;
-     CE_MODE = 32768;
-     CE_OOP = 4096;
-     CE_OVERRUN = 2;
-     CE_PTO = 512;
-     CE_RXOVER = 1;
-     CE_RXPARITY = 4;
-     CE_TXFULL = 256;
-  { ChooseMatchToTarget  }
-  { CombineRgn  }
-     RGN_AND = 1;
-     RGN_COPY = 5;
-     RGN_DIFF = 4;
-     RGN_OR = 2;
-     RGN_XOR = 3;
-     NULLREGION = 1;
-     SIMPLEREGION = 2;
-     COMPLEXREGION = 3;
-     ERROR = 0;
-  { CommonDlgExtendedError  }
-     CDERR_DIALOGFAILURE = $ffff;
-     CDERR_FINDRESFAILURE = 6;
-     CDERR_INITIALIZATION = 2;
-     CDERR_LOADRESFAILURE = 7;
-     CDERR_LOADSTRFAILURE = 5;
-     CDERR_LOCKRESFAILURE = 8;
-     CDERR_MEMALLOCFAILURE = 9;
-     CDERR_MEMLOCKFAILURE = 10;
-     CDERR_NOHINSTANCE = 4;
-     CDERR_NOHOOK = 11;
-     CDERR_NOTEMPLATE = 3;
-     CDERR_REGISTERMSGFAIL = 12;
-     CDERR_STRUCTSIZE = 1;
-     PDERR_CREATEICFAILURE = $1000 + 10;
-     PDERR_DEFAULTDIFFERENT = $1000 + 12;
-     PDERR_DNDMMISMATCH = $1000 + 9;
-     PDERR_GETDEVMODEFAIL = $1000 + 5;
-     PDERR_INITFAILURE = $1000 + 6;
-     PDERR_LOADDRVFAILURE = $1000 + 4;
-     PDERR_NODEFAULTPRN = $1000 + 8;
-     PDERR_NODEVICES = $1000 + 7;
-     PDERR_PARSEFAILURE = $1000 + 2;
-     PDERR_PRINTERNOTFOUND = $1000 + 11;
-     PDERR_RETDEFFAILURE = $1000 + 3;
-     PDERR_SETUPFAILURE = $1000 + 1;
-     CFERR_MAXLESSTHANMIN = $2000 + 2;
-     CFERR_NOFONTS = $2000 + 1;
-     FNERR_BUFFERTOOSMALL = $3000 + 3;
-     FNERR_INVALIDFILENAME = $3000 + 2;
-     FNERR_SUBCLASSFAILURE = $3000 + 1;
-     FRERR_BUFFERLENGTHZERO = $4000 + 1;
-  { CompareString, LCMapString  }
-     //LOCALE_SYSTEM_DEFAULT = $800; //-winnt, replaced by function
-     //LOCALE_USER_DEFAULT = $400;   //-winnt, replaced by function
-     NORM_IGNORECASE = 1;
-     NORM_IGNOREKANATYPE = 65536;
-     NORM_IGNORENONSPACE = 2;
-     NORM_IGNORESYMBOLS = 4;
-     NORM_IGNOREWIDTH = 131072;
-     SORT_STRINGSORT = 4096;
-     LCMAP_BYTEREV = 2048;
-     LCMAP_FULLWIDTH = 8388608;
-     LCMAP_HALFWIDTH = 4194304;
-     LCMAP_HIRAGANA = 1048576;
-     LCMAP_KATAKANA = 2097152;
-     LCMAP_LOWERCASE = 256;
-     LCMAP_SORTKEY = 1024;
-     LCMAP_UPPERCASE = 512;
-  { ContinueDebugEvent  }
-     DBG_CONTINUE = $10002;
-     DBG_CONTROL_BREAK = $40010008;
-     DBG_CONTROL_C = $40010005;
-     DBG_EXCEPTION_NOT_HANDLED = $80010001;
-     DBG_TERMINATE_THREAD = $40010003;
-     DBG_TERMINATE_PROCESS = $40010004;
-  { ControlService  }
-     SERVICE_CONTROL_STOP = 1;
-     SERVICE_CONTROL_PAUSE = 2;
-     SERVICE_CONTROL_CONTINUE = 3;
-     SERVICE_CONTROL_INTERROGATE = 4;
-     SERVICE_CONTROL_SHUTDOWN = 5;
-  { CopyImage, LoadImage  }
-     IMAGE_BITMAP = 0;
-     IMAGE_CURSOR = 2;
-     IMAGE_ENHMETAFILE = 1;
-     IMAGE_ICON = 1;
-     LR_COPYDELETEORG = 8;
-     LR_COPYRETURNORG = 4;
-     LR_MONOCHROME = 1;
-     LR_CREATEDIBSECTION = 8192;
-     LR_DEFAULTSIZE = 64;
-  { CreateDesktop  }
-     DF_ALLOWOTHERACCOUNTHOOK = $1;
-     DESKTOP_CREATEMENU = $4;
-     DESKTOP_CREATEWINDOW = $2;
-     DESKTOP_ENUMERATE = $40;
-     DESKTOP_HOOKCONTROL = $8;
-     DESKTOP_JOURNALPLAYBACK = $20;
-     DESKTOP_JOURNALRECORD = $10;
-     DESKTOP_READOBJECTS = $1;
-     DESKTOP_SWITCHDESKTOP = $100;
-     DESKTOP_WRITEOBJECTS = $80;
-     WSF_VISIBLE = $1;
-  { CreateDIBitmap  }
-     CBM_INIT = $4;
-     DIB_PAL_COLORS = 1;
-     DIB_RGB_COLORS = 0;
-  { file & pipe  }
-     FILE_READ_DATA = $0001;
-  { directory  }
-     FILE_LIST_DIRECTORY = $0001;
-  { file & pipe  }
-     FILE_WRITE_DATA = $0002;
-  { directory  }
-     FILE_ADD_FILE = $0002;
-  { file  }
-     FILE_APPEND_DATA = $0004;
-  { directory  }
-     FILE_ADD_SUBDIRECTORY = $0004;
-  { named pipe  }
-     FILE_CREATE_PIPE_INSTANCE = $0004;
-  { file & directory  }
-     FILE_READ_EA = $0008;
-     FILE_READ_PROPERTIES = FILE_READ_EA;
-  { file & directory  }
-     FILE_WRITE_EA = $0010;
-     FILE_WRITE_PROPERTIES = FILE_WRITE_EA;
-  { file  }
-     FILE_EXECUTE = $0020;
-  { directory  }
-     FILE_TRAVERSE = $0020;
-  { directory  }
-     FILE_DELETE_CHILD = $0040;
-  { all  }
-     FILE_READ_ATTRIBUTES = $0080;
-  { all  }
-     FILE_WRITE_ATTRIBUTES = $0100;
-  { displaced lower
-  #define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)
-
-  #define FILE_GENERIC_READ         (STANDARD_RIGHTS_READ     |\
-                                     FILE_READ_DATA           |\
-                                     FILE_READ_ATTRIBUTES     |\
-                                     FILE_READ_EA             |\
-                                     SYNCHRONIZE)
-
-
-  #define FILE_GENERIC_WRITE        (STANDARD_RIGHTS_WRITE    |\
-                                     FILE_WRITE_DATA          |\
-                                     FILE_WRITE_ATTRIBUTES    |\
-                                     FILE_WRITE_EA            |\
-                                     FILE_APPEND_DATA         |\
-                                     SYNCHRONIZE)
-
-
-  #define FILE_GENERIC_EXECUTE      (STANDARD_RIGHTS_EXECUTE  |\
-                                     FILE_READ_ATTRIBUTES     |\
-                                     FILE_EXECUTE             |\
-                                     SYNCHRONIZE)
-   }
-     FILE_SHARE_DELETE = 4;
-     FILE_SHARE_READ = 1;
-     FILE_SHARE_WRITE = 2;
-     CONSOLE_TEXTMODE_BUFFER = 1;
-     CREATE_NEW = 1;
-     CREATE_ALWAYS = 2;
-     OPEN_EXISTING = 3;
-     OPEN_ALWAYS = 4;
-     TRUNCATE_EXISTING = 5;
-     FILE_ATTRIBUTE_ARCHIVE = 32;
-     FILE_ATTRIBUTE_COMPRESSED = 2048;
-     FILE_ATTRIBUTE_NORMAL = 128;
-     FILE_ATTRIBUTE_DIRECTORY = 16;
-     FILE_ATTRIBUTE_HIDDEN = 2;
-     FILE_ATTRIBUTE_READONLY = 1;
-     FILE_ATTRIBUTE_SYSTEM = 4;
-     FILE_ATTRIBUTE_TEMPORARY = 256;
-     FILE_FLAG_WRITE_THROUGH = $80000000;
-     FILE_FLAG_OVERLAPPED = 1073741824;
-     FILE_FLAG_NO_BUFFERING = 536870912;
-     FILE_FLAG_RANDOM_ACCESS = 268435456;
-     FILE_FLAG_SEQUENTIAL_SCAN = 134217728;
-     FILE_FLAG_DELETE_ON_CLOSE = 67108864;
-     FILE_FLAG_BACKUP_SEMANTICS = 33554432;
-     FILE_FLAG_POSIX_SEMANTICS = 16777216;
-     SECURITY_ANONYMOUS = 0;
-     SECURITY_IDENTIFICATION = 65536;
-     SECURITY_IMPERSONATION = 131072;
-     SECURITY_DELEGATION = 196608;
-     SECURITY_CONTEXT_TRACKING = 262144;
-     SECURITY_EFFECTIVE_ONLY = 524288;
-     SECURITY_SQOS_PRESENT = 1048576;
-  { CreateFileMapping, VirtualAlloc, VirtualFree, VirtualProtect  }
-     SEC_COMMIT = 134217728;
-     SEC_IMAGE = 16777216;
-     SEC_NOCACHE = 268435456;
-     SEC_RESERVE = 67108864;
-     PAGE_READONLY = 2;
-     PAGE_READWRITE = 4;
-     PAGE_WRITECOPY = 8;
-     PAGE_EXECUTE = 16;
-     PAGE_EXECUTE_READ = 32;
-     PAGE_EXECUTE_READWRITE = 64;
-     PAGE_EXECUTE_WRITECOPY = 128;
-     PAGE_GUARD = 256;
-     PAGE_NOACCESS = 1;
-     PAGE_NOCACHE = 512;
-     MEM_COMMIT = 4096;
-     MEM_FREE = 65536;
-     MEM_RESERVE = 8192;
-     MEM_IMAGE = 16777216;
-     MEM_MAPPED = 262144;
-     MEM_PRIVATE = 131072;
-     MEM_DECOMMIT = 16384;
-     MEM_RELEASE = 32768;
-     MEM_TOP_DOWN = 1048576;
-     EXCEPTION_GUARD_PAGE = $80000001;
-     SECTION_EXTEND_SIZE = $10;
-     SECTION_MAP_READ = $4;
-     SECTION_MAP_WRITE = $2;
-     SECTION_QUERY = $1;
-     SECTION_ALL_ACCESS = $f001f;
-  { CreateFont  }
-     FW_DONTCARE = 0;
-     FW_THIN = 100;
-     FW_EXTRALIGHT = 200;
-     FW_LIGHT = 300;
-     FW_NORMAL = 400;
-     FW_REGULAR = FW_NORMAL;
-     FW_MEDIUM = 500;
-     FW_SEMIBOLD = 600;
-     FW_BOLD = 700;
-     FW_EXTRABOLD = 800;
-     FW_HEAVY = 900;
-     ANSI_CHARSET = 0;
-     DEFAULT_CHARSET = 1;
-     SYMBOL_CHARSET = 2;
-     SHIFTJIS_CHARSET = 128;
-     HANGEUL_CHARSET = 129;
-     GB2312_CHARSET = 134;
-     CHINESEBIG5_CHARSET = 136;
-     GREEK_CHARSET = 161;
-     TURKISH_CHARSET = 162;
-     HEBREW_CHARSET = 177;
-     ARABIC_CHARSET = 178;
-     BALTIC_CHARSET = 186;
-     RUSSIAN_CHARSET = 204;
-     THAI_CHARSET = 222;
-     EASTEUROPE_CHARSET = 238;
-
-     OEM_CHARSET = 255;
-     OEM_CERTIFY_TRUST = 2;   //+windef
-     OEM_CERTIFY_RUN = 1;     //+windef
-     OEM_CERTIFY_FALSE = 0;   //+windef
-
-     OUT_DEFAULT_PRECIS = 0;
-     OUT_STRING_PRECIS = 1;
-     OUT_CHARACTER_PRECIS = 2;
-     OUT_STROKE_PRECIS = 3;
-     OUT_TT_PRECIS = 4;
-     OUT_DEVICE_PRECIS = 5;
-     OUT_RASTER_PRECIS = 6;
-     OUT_TT_ONLY_PRECIS = 7;
-     OUT_OUTLINE_PRECIS = 8;
-     CLIP_DEFAULT_PRECIS = 0;
-     CLIP_CHARACTER_PRECIS = 1;
-     CLIP_STROKE_PRECIS = 2;
-     CLIP_MASK = 15;
-     CLIP_LH_ANGLES = 16;
-     CLIP_TT_ALWAYS = 32;
-     CLIP_EMBEDDED = 128;
-     DEFAULT_QUALITY = 0;
-     DRAFT_QUALITY = 1;
-     PROOF_QUALITY = 2;
-     NONANTIALIASED_QUALITY = 3;
-     ANTIALIASED_QUALITY = 4;
-     DEFAULT_PITCH = 0;
-     FIXED_PITCH = 1;
-     VARIABLE_PITCH = 2;
-     MONO_FONT = 8;
-     FF_DECORATIVE = 80;
-     FF_DONTCARE = 0;
-     FF_MODERN = 48;
-     FF_ROMAN = 16;
-     FF_SCRIPT = 64;
-     FF_SWISS = 32;
-  { CreateHatchBrush  }
-     HS_BDIAGONAL = 3;
-     HS_CROSS = 4;
-     HS_DIAGCROSS = 5;
-     HS_FDIAGONAL = 2;
-     HS_HORIZONTAL = 0;
-     HS_VERTICAL = 1;
-  { CreateIconFromResourceEx  }
-     LR_DEFAULTCOLOR = 0;
-     LR_LOADREALSIZE = 128;
-  { already defined above !!
-  #define LR_MONOCHROME (1)
-   }
-  { CreateMappedBitmap  }
-     CMB_MASKED = 2;
-  { CreateNamedPipe  }
-     PIPE_ACCESS_DUPLEX = 3;
-     PIPE_ACCESS_INBOUND = 1;
-     PIPE_ACCESS_OUTBOUND = 2;
-     //WRITE_DAC = $40000;     //~winnt, moved to ACCESS_TYPES
-     //WRITE_OWNER = $80000;   //~winnt, moved to ACCESS_TYPES
-     //ACCESS_SYSTEM_SECURITY = $1000000;  //~winnt, moved to ACCESS_TYPES
-     PIPE_TYPE_BYTE = 0;
-     PIPE_TYPE_MESSAGE = 4;
-     PIPE_READMODE_BYTE = 0;
-     PIPE_READMODE_MESSAGE = 2;
-     PIPE_WAIT = 0;
-     PIPE_NOWAIT = 1;
-  { CreatePen, ExtCreatePen  }
-     PS_GEOMETRIC = 65536;
-     PS_COSMETIC = 0;
-     PS_ALTERNATE = 8;
-     PS_SOLID = 0;
-     PS_DASH = 1;
-     PS_DOT = 2;
-     PS_DASHDOT = 3;
-     PS_DASHDOTDOT = 4;
-     PS_NULL = 5;
-     PS_USERSTYLE = 7;
-     PS_INSIDEFRAME = 6;
-     PS_ENDCAP_ROUND = 0;
-     PS_ENDCAP_SQUARE = 256;
-     PS_ENDCAP_FLAT = 512;
-     PS_JOIN_BEVEL = 4096;
-     PS_JOIN_MITER = 8192;
-     PS_JOIN_ROUND = 0;
-     PS_STYLE_MASK = 15;
-     PS_ENDCAP_MASK = 3840;
-     PS_TYPE_MASK = 983040;
-  { CreateProcess  }
-     CREATE_DEFAULT_ERROR_MODE = 67108864;
-     CREATE_NEW_CONSOLE = 16;
-     CREATE_NEW_PROCESS_GROUP = 512;
-     CREATE_SEPARATE_WOW_VDM = 2048;
-     CREATE_SUSPENDED = 4;
-     CREATE_UNICODE_ENVIRONMENT = 1024;
-     DEBUG_PROCESS = 1;
-     DEBUG_ONLY_THIS_PROCESS = 2;
-     DETACHED_PROCESS = 8;
-     HIGH_PRIORITY_CLASS = 128;
-     IDLE_PRIORITY_CLASS = 64;
-     NORMAL_PRIORITY_CLASS = 32;
-     REALTIME_PRIORITY_CLASS = 256;
-  { CreateService  }
-     SERVICE_ALL_ACCESS = $f01ff;
-     SERVICE_CHANGE_CONFIG = 2;
-     SERVICE_ENUMERATE_DEPENDENTS = 8;
-     SERVICE_INTERROGATE = 128;
-     SERVICE_PAUSE_CONTINUE = 64;
-     SERVICE_QUERY_CONFIG = 1;
-     SERVICE_QUERY_STATUS = 4;
-     SERVICE_START = 16;
-     SERVICE_STOP = 32;
-     SERVICE_USER_DEFINED_CONTROL = 256;
-     SERVICE_DELETE = $10000;
-     SERVICE_READ_CONTROL = $20000;
-     SERVICE_GENERIC_EXECUTE = $20000000;
-  { already defined above !!
-  #define SERVICE_WIN32_OWN_PROCESS     (16)
-  #define SERVICE_WIN32_SHARE_PROCESS   (32)
-  #define SERVICE_KERNEL_DRIVER (1)
-  #define SERVICE_FILE_SYSTEM_DRIVER    (2)
-  #define SERVICE_INTERACTIVE_PROCESS   (256)
-  #define SERVICE_BOOT_START    (0)
-  #define SERVICE_SYSTEM_START  (1)
-  #define SERVICE_AUTO_START    (2)
-  #define SERVICE_DEMAND_START  (3)
-  #define SERVICE_DISABLED      (4)
-   }
-     SERVICE_ERROR_IGNORE = 0;
-     SERVICE_ERROR_NORMAL = 1;
-     SERVICE_ERROR_SEVERE = 2;
-     SERVICE_ERROR_CRITICAL = 3;
-  { CreateTapePartition, WriteTapemark  }
-     TAPE_FIXED_PARTITIONS = 0;
-     TAPE_INITIATOR_PARTITIONS = $2;
-     TAPE_SELECT_PARTITIONS = $1;
-     TAPE_FILEMARKS = $1;
-     TAPE_LONG_FILEMARKS = $3;
-     TAPE_SETMARKS = 0;
-     TAPE_SHORT_FILEMARKS = $2;
-  { CreateWindow  }
-     CW_USEDEFAULT = longint($80000000);
-     WS_BORDER = $800000;
-     WS_CAPTION = $c00000;
-     WS_CHILD = $40000000;
-     WS_CHILDWINDOW = $40000000;
-     WS_CLIPCHILDREN = $2000000;
-     WS_CLIPSIBLINGS = $4000000;
-     WS_DISABLED = $8000000;
-     WS_DLGFRAME = $400000;
-     WS_GROUP = $20000;
-     WS_HSCROLL = $100000;
-     WS_MAXIMIZEBOX = $20000;
-     WS_MINIMIZEBOX = $10000;
-     WS_OVERLAPPED = WS_BORDER or WS_CAPTION;
-     WS_POPUP = $80000000;
-     WS_SIZEBOX = $40000;
-     WS_SYSMENU = $80000;
-     WS_TABSTOP = $10000;
-     WS_THICKFRAME = $40000;
-     WS_VISIBLE = $10000000;
-     WS_VSCROLL = $200000;
-     BS_3STATE = $5;
-     BS_AUTO3STATE = $6;
-     BS_AUTOCHECKBOX = $3;
-     BS_AUTORADIOBUTTON = $9;
-     BS_BITMAP = $80;
-     BS_BOTTOM = $800;
-     BS_CENTER = $300;
-     BS_CHECKBOX = $2;
-     BS_DEFPUSHBUTTON = $1;
-     BS_GROUPBOX = $7;
-     BS_ICON = $40;
-     BS_LEFT = $100;
-     BS_LEFTTEXT = $20;
-     BS_MULTILINE = $2000;
-     BS_NOTIFY = $4000;
-     BS_OWNERDRAW = $b;
-     BS_PUSHBUTTON = 0;
-     BS_PUSHLIKE = $1000;
-     BS_RADIOBUTTON = $4;
-     BS_RIGHT = $200;
-     BS_RIGHTBUTTON = $20;
-     BS_TEXT = 0;
-     BS_TOP = $400;
-     BS_USERBUTTON = $8;
-     BS_VCENTER = $c00;
-     BS_FLAT = $8000;
-     CBS_AUTOHSCROLL = $40;
-     CBS_DISABLENOSCROLL = $800;
-     CBS_DROPDOWN = $2;
-     CBS_DROPDOWNLIST = $3;
-     CBS_HASSTRINGS = $200;
-     CBS_LOWERCASE = $4000;
-     CBS_NOINTEGRALHEIGHT = $400;
-     CBS_OEMCONVERT = $80;
-     CBS_OWNERDRAWFIXED = $10;
-     CBS_OWNERDRAWVARIABLE = $20;
-     CBS_SIMPLE = $1;
-     CBS_SORT = $100;
-     CBS_UPPERCASE = $2000;
-     ES_AUTOHSCROLL = $80;
-     ES_AUTOVSCROLL = $40;
-     ES_CENTER = $1;
-     ES_LEFT = 0;
-     ES_LOWERCASE = $10;
-     ES_MULTILINE = $4;
-     ES_NOHIDESEL = $100;
-     ES_NUMBER = $2000;
-     ES_OEMCONVERT = $400;
-     ES_PASSWORD = $20;
-     ES_READONLY = $800;
-     ES_RIGHT = $2;
-     ES_UPPERCASE = $8;
-     ES_WANTRETURN = $1000;
-     LBS_DISABLENOSCROLL = $1000;
-     LBS_EXTENDEDSEL = $800;
-     LBS_HASSTRINGS = $40;
-     LBS_MULTICOLUMN = $200;
-     LBS_MULTIPLESEL = $8;
-     LBS_NODATA = $2000;
-     LBS_NOINTEGRALHEIGHT = $100;
-     LBS_NOREDRAW = $4;
-     LBS_NOSEL = $4000;
-     LBS_NOTIFY = $1;
-     LBS_OWNERDRAWFIXED = $10;
-     LBS_OWNERDRAWVARIABLE = $20;
-     LBS_SORT = $2;
-     LBS_STANDARD = $a00003;
-     LBS_USETABSTOPS = $80;
-     LBS_WANTKEYBOARDINPUT = $400;
-     SBS_BOTTOMALIGN = $4;
-     SBS_HORZ = 0;
-     SBS_LEFTALIGN = $2;
-     SBS_RIGHTALIGN = $4;
-     SBS_SIZEBOX = $8;
-     SBS_SIZEBOXBOTTOMRIGHTALIGN = $4;
-     SBS_SIZEBOXTOPLEFTALIGN = $2;
-     SBS_SIZEGRIP = $10;
-     SBS_TOPALIGN = $2;
-     SBS_VERT = $1;
-     SS_BITMAP = $e;
-     SS_BLACKFRAME = $7;
-     SS_BLACKRECT = $4;
-     SS_CENTER = $1;
-     SS_CENTERIMAGE = $200;
-     SS_ENHMETAFILE = $f;
-     SS_ETCHEDFRAME = $12;
-     SS_ETCHEDHORZ = $10;
-     SS_ETCHEDVERT = $11;
-     SS_GRAYFRAME = $8;
-     SS_GRAYRECT = $5;
-     SS_ICON = $3;
-     SS_LEFT = 0;
-     SS_LEFTNOWORDWRAP = $c;
-     SS_NOPREFIX = $80;
-     SS_NOTIFY = $100;
-     SS_OWNERDRAW = $d;
-     SS_REALSIZEIMAGE = $800;
-     SS_RIGHT = $2;
-     SS_RIGHTJUST = $400;
-     SS_SIMPLE = $b;
-     SS_SUNKEN = $1000;
-     SS_USERITEM = $a;
-     SS_WHITEFRAME = $9;
-     SS_WHITERECT = $6;
-    { Dialog styles }
-     DS_ABSALIGN      = $1;
-     DS_SYSMODAL      = $2;
-     DS_3DLOOK        = $4;
-     DS_FIXEDSYS      = $8;
-     DS_NOFAILCREATE  = $10;
-     DS_LOCALEDIT     = $20;
-     DS_SETFONT       = $40;
-     DS_MODALFRAME    = $80;
-     DS_NOIDLEMSG     = $100;
-     DS_SETFOREGROUND = $200;
-     DS_CONTROL       = $400;
-     DS_CENTER        = $800;
-     DS_CENTERMOUSE   = $1000;
-     DS_CONTEXTHELP   = $2000;
-     DS_NOCLOSEBTN    =	$4000;
-
-  { CreateWindowEx  }
-     WS_EX_LEFT             = 0;
-     WS_EX_LTRREADING       = 0;
-     WS_EX_RIGHTSCROLLBAR   = 0;
-     WS_EX_DLGMODALFRAME    = $1;
-     WS_EX_NOPARENTNOTIFY   = $4;
-     WS_EX_TOPMOST          = $8;
-     WS_EX_ACCEPTFILES      = $10;
-     WS_EX_TRANSPARENT      = $20;
-     WS_EX_MDICHILD         = $40;
-     WS_EX_TOOLWINDOW       = $80;
-     WS_EX_PALETTEWINDOW    = $188;
-     WS_EX_WINDOWEDGE       = $100;
-     WS_EX_CLIENTEDGE       = $200;
-     WS_EX_OVERLAPPEDWINDOW = $300;
-     WS_EX_CONTEXTHELP      = $400;
-     WS_EX_RIGHT            = $1000;
-     WS_EX_RTLREADING       = $2000;
-     WS_EX_LEFTSCROLLBAR    = $4000;
-     WS_EX_CONTROLPARENT    = $10000;
-     WS_EX_STATICEDGE       = $20000;
-     WS_EX_APPWINDOW        = $40000;
-     WS_EX_NOANIMATION	    = $4000000;
-     WS_EX_NOACTIVATE       = $8000000;
-     WS_EX_INK		    = $10000000;
-     WS_EX_ABOVESTARTUP	    = $20000000;
-     WS_EX_NODRAG           = $40000000;
-     WS_EX_CAPTIONOKBTN     = $80000000;
-
-  { CreateWindowStation  }
-     WINSTA_ACCESSCLIPBOARD = $4;
-     WINSTA_ACCESSGLOBALATOMS = $20;
-     WINSTA_CREATEDESKTOP = $8;
-     WINSTA_ENUMDESKTOPS = $1;
-     WINSTA_ENUMERATE = $100;
-     WINSTA_EXITWINDOWS = $40;
-     WINSTA_READATTRIBUTES = $2;
-     WINSTA_READSCREEN = $200;
-     WINSTA_WRITEATTRIBUTES = $10;
-  { DdeCallback  }
-  { DdeClientTransaction  }
-  { DdeEnableCallback  }
-  { DdeGetLastError  }
-  { DdeInitialize  }
-  { DdeNameService  }
-  { DebugProc  }
-     WH_CALLWNDPROC = 4;
-     WH_CALLWNDPROCRET = 12;
-     WH_CBT = 5;
-     WH_DEBUG = 9;
-     WH_GETMESSAGE = 3;
-     WH_JOURNALPLAYBACK = 1;
-     WH_JOURNALRECORD = 0;
-     WH_KEYBOARD = 2;
-     WH_MOUSE = 7;
-     WH_MSGFILTER = -(1);
-     WH_SHELL = 10;
-     WH_SYSMSGFILTER = 6;
-  { already defined above !!
-  #define WH_MSGFILTER  (-1)  }
-     WH_FOREGROUNDIDLE = 11;
-  { DefineDosDevice  }
-     DDD_RAW_TARGET_PATH = 1;
-     DDD_REMOVE_DEFINITION = 2;
-     DDD_EXACT_MATCH_ON_REMOVE = 4;
-  { DeviceCapbilities  }
-     DC_BINNAMES = 12;          //windef
-     DC_BINS = 6;               //windef
-     DC_COPIES = 18;            //windef
-     DC_DRIVER = 11;            //windef
-     DC_DATATYPE_PRODUCED = 21;
-     DC_DUPLEX = 7;             //windef
-     DC_EMF_COMPLIANT = 20;
-     DC_ENUMRESOLUTIONS = 13;   //windef
-     DC_EXTRA = 9;              //windef
-     DC_FIELDS = 1;             //windef
-     DC_FILEDEPENDENCIES = 14;  //windef
-     DC_MAXEXTENT = 5;          //windef
-     DC_MINEXTENT = 4;          //windef
-     DC_ORIENTATION = 17;       //windef
-     DC_PAPERNAMES = 16;        //windef
-     DC_PAPERS = 2;             //windef
-     DC_PAPERSIZE = 3;          //windef
-     DC_SIZE = 8;               //windef
-     DC_TRUETYPE = 15;          //windef
-     DCTT_BITMAP = $1;
-     DCTT_DOWNLOAD = $2;
-     DCTT_SUBDEV = $4;
-     DC_VERSION = 10;           //windef
-     DC_BINADJUST = 19;
-  { already defined above !!
-  #define DC_DATATYPE_PRODUCED  (21)
-   }
-  { DeviceIoControl  }
-  { DlgDirList  }
-     DDL_ARCHIVE = 32;
-     DDL_DIRECTORY = 16;
-     DDL_DRIVES = 16384;
-     DDL_EXCLUSIVE = 32768;
-     DDL_HIDDEN = 2;
-     DDL_READONLY = 1;
-     DDL_READWRITE = 0;
-     DDL_SYSTEM = 4;
-     DDL_POSTMSGS = 8192;
-  { DllEntryPoint  }
-     DLL_PROCESS_ATTACH = 1;
-     DLL_THREAD_ATTACH = 2;
-     DLL_PROCESS_DETACH = 0;
-     DLL_THREAD_DETACH = 3;
-  { DocumentProperties  }
-     DM_IN_BUFFER = 8;   //windef
-     DM_MODIFY = 8;      //windef
-     DM_IN_PROMPT = 4;   //windef
-     DM_PROMPT = 4;      //windef
-     DM_OUT_BUFFER = 2;  //windef
-     DM_COPY = 2;        //windef
-     DM_UPDATE = 1;      //windef
-  { DrawAnimatedRects  }
-     IDANI_OPEN = 1;
-     IDANI_CLOSE = 2;
-  { DrawCaption  }
-     DC_ACTIVE = 1;
-     DC_SMALLCAP = 2;
-  { DrawEdge  }
-     BDR_RAISEDINNER = 4;
-     BDR_SUNKENINNER = 8;
-     BDR_RAISEDOUTER = 1;
-     BDR_SUNKENOUTER = 1;
-     EDGE_BUMP = 9;
-     EDGE_ETCHED = 6;
-     EDGE_RAISED = 5;
-     EDGE_SUNKEN = 10;
-     BF_ADJUST = 8192;
-     BF_BOTTOM = 8;
-     BF_BOTTOMLEFT = 9;
-     BF_BOTTOMRIGHT = 12;
-     BF_DIAGONAL = 16;
-     BF_DIAGONAL_ENDBOTTOMLEFT = 25;
-     BF_DIAGONAL_ENDBOTTOMRIGHT = 28;
-     BF_DIAGONAL_ENDTOPLEFT = 19;
-     BF_DIAGONAL_ENDTOPRIGHT = 22;
-     BF_FLAT = 16384;
-     BF_LEFT = 1;
-     BF_MIDDLE = 2048;
-     BF_MONO = 32768;
-     BF_RECT = 15;
-     BF_RIGHT = 4;
-     BF_SOFT = 4096;
-     BF_TOP = 2;
-     BF_TOPLEFT = 3;
-     BF_TOPRIGHT = 6;
-  { DrawFrameControl  }
-     DFC_BUTTON = 4;
-     DFC_CAPTION = 1;
-     DFC_MENU = 2;
-     DFC_SCROLL = 3;
-     DFCS_BUTTON3STATE = 8;
-     DFCS_BUTTONCHECK = 0;
-     DFCS_BUTTONPUSH = 16;
-     DFCS_BUTTONRADIO = 4;
-     DFCS_BUTTONRADIOIMAGE = 1;
-     DFCS_BUTTONRADIOMASK = 2;
-     DFCS_CAPTIONCLOSE = 0;
-     DFCS_CAPTIONHELP = 4;
-     DFCS_CAPTIONMAX = 2;
-     DFCS_CAPTIONMIN = 1;
-     DFCS_CAPTIONRESTORE = 3;
-     DFCS_MENUARROW = 0;
-     DFCS_MENUBULLET = 2;
-     DFCS_MENUCHECK = 1;
-     DFCS_SCROLLCOMBOBOX = 5;
-     DFCS_SCROLLDOWN = 1;
-     DFCS_SCROLLLEFT = 2;
-     DFCS_SCROLLRIGHT = 3;
-     DFCS_SCROLLSIZEGRIP = 8;
-     DFCS_SCROLLUP = 0;
-     DFCS_ADJUSTRECT = 8192;
-     DFCS_CHECKED = 1024;
-     DFCS_FLAT = 16384;
-     DFCS_INACTIVE = 256;
-     DFCS_MONO = 32768;
-     DFCS_PUSHED = 512;
-  { DrawIconEx  }
-     DI_COMPAT = 4;
-     DI_DEFAULTSIZE = 8;
-     DI_IMAGE = 2;
-     DI_MASK = 1;
-     DI_NORMAL = 3;
-  { DrawState  }
-     DST_BITMAP = 4;
-     DST_COMPLEX = 0;
-     DST_ICON = 3;
-     DST_PREFIXTEXT = 2;
-     DST_TEXT = 1;
-     DSS_NORMAL = 0;
-     DSS_UNION = 16;
-     DSS_DISABLED = 32;
-     DSS_MONO = 128;
-  { DrawStatusText  }
-     SBT_NOBORDERS = 256;
-     SBT_OWNERDRAW = 4096;
-     SBT_POPOUT = 512;
-     SBT_RTLREADING = 1024;
-  { DrawText, DrawTextEx  }
-     DT_BOTTOM = 8;
-     DT_CALCRECT = 1024;
-     DT_CENTER = 1;
-     DT_EDITCONTROL = 8192;
-     DT_END_ELLIPSIS = 32768;
-     DT_PATH_ELLIPSIS = 16384;
-     DT_EXPANDTABS = 64;
-     DT_EXTERNALLEADING = 512;
-     DT_LEFT = 0;
-     DT_MODIFYSTRING = 65536;
-     DT_NOCLIP = 256;
-     DT_NOPREFIX = 2048;
-     DT_RIGHT = 2;
-     DT_RTLREADING = 131072;
-     DT_SINGLELINE = 32;
-     DT_TABSTOP = 128;
-     DT_TOP = 0;
-     DT_VCENTER = 4;
-     DT_WORDBREAK = 16;
-     DT_INTERNAL = 4096;
-  { DuplicateHandle, MapViewOfFile  }
-     DUPLICATE_CLOSE_SOURCE = 1;
-     DUPLICATE_SAME_ACCESS = 2;
-     FILE_MAP_ALL_ACCESS = $f001f;
-     FILE_MAP_READ = 4;
-     FILE_MAP_WRITE = 2;
-     FILE_MAP_COPY = 1;
-     MUTEX_ALL_ACCESS = $1f0001;
-     MUTEX_MODIFY_STATE = 1;
-     //SYNCHRONIZE = $100000;     //~winnt, move to ACCESS_TYPE
-     SEMAPHORE_ALL_ACCESS = $1f0003;
-     SEMAPHORE_MODIFY_STATE = 2;
-     EVENT_ALL_ACCESS = $1f0003;
-     EVENT_MODIFY_STATE = 2;
-     KEY_ALL_ACCESS = $f003f;
-     KEY_CREATE_LINK = 32;
-     KEY_CREATE_SUB_KEY = 4;
-     KEY_ENUMERATE_SUB_KEYS = 8;
-     KEY_EXECUTE = $20019;
-     KEY_NOTIFY = 16;
-     KEY_QUERY_VALUE = 1;
-     KEY_READ = $20019;
-     KEY_SET_VALUE = 2;
-     KEY_WRITE = $20006;
-     PROCESS_ALL_ACCESS = $1f0fff;
-     PROCESS_CREATE_PROCESS = 128;
-     PROCESS_CREATE_THREAD = 2;
-     PROCESS_DUP_HANDLE = 64;
-     PROCESS_QUERY_INFORMATION = 1024;
-     PROCESS_SET_INFORMATION = 512;
-     PROCESS_TERMINATE = 1;
-     PROCESS_VM_OPERATION = 8;
-     PROCESS_VM_READ = 16;
-     PROCESS_VM_WRITE = 32;
-     THREAD_ALL_ACCESS = $1f03ff;
-     THREAD_DIRECT_IMPERSONATION = 512;
-     THREAD_GET_CONTEXT = 8;
-     THREAD_IMPERSONATE = 256;
-     THREAD_QUERY_INFORMATION = 64;
-     THREAD_SET_CONTEXT = 16;
-     THREAD_SET_INFORMATION = 32;
-     THREAD_SET_THREAD_TOKEN = 128;
-     THREAD_SUSPEND_RESUME = 2;
-     THREAD_TERMINATE = 1;
-  { EditWordBreakProc  }
-     WB_ISDELIMITER = 2;
-     WB_LEFT = 0;
-     WB_RIGHT = 1;
-  { EnableScrollBar  }
-     SB_BOTH = 3;
-     SB_CTL = 2;
-     SB_HORZ = 0;
-     SB_VERT = 1;
-     ESB_DISABLE_BOTH = 3;
-     ESB_DISABLE_DOWN = 2;
-     ESB_DISABLE_LEFT = 1;
-     ESB_DISABLE_LTUP = 1;
-     ESB_DISABLE_RIGHT = 2;
-     ESB_DISABLE_RTDN = 2;
-     ESB_DISABLE_UP = 1;
-     ESB_ENABLE_BOTH = 0;
-  { Scroll Bar notifications }
-     SB_LINEUP = 0;
-     SB_LINEDOWN = 1;
-     SB_LINELEFT = 0;
-     SB_LINERIGHT = 1;
-     SB_PAGEUP = 2;
-     SB_PAGEDOWN = 3;
-     SB_PAGELEFT = 2;
-     SB_PAGERIGHT = 3;
-     SB_THUMBPOSITION = 4;
-     SB_THUMBTRACK = 5;
-     SB_ENDSCROLL = 8;
-     SB_LEFT = 6;
-     SB_RIGHT = 7;
-     SB_BOTTOM = 7;
-     SB_TOP = 6;
-  { EnumCalendarInfo  }
-     ENUM_ALL_CALENDARS = -(1);
-  { EnumDateFormats  }
-     DATE_SHORTDATE = 1;
-     DATE_LONGDATE = 2;
-  { EnumDependentServices  }
-     SERVICE_ACTIVE = 1;
-     SERVICE_INACTIVE = 2;
-  { EnumFontFamExProc  }
-     DEVICE_FONTTYPE = 2;
-     RASTER_FONTTYPE = 1;
-     TRUETYPE_FONTTYPE = 4;
-  { EnumObjects, GetCurrentObject, GetObjectType  }
-     OBJ_BRUSH = 2;
-     OBJ_PEN = 1;
-     OBJ_PAL = 5;
-     OBJ_FONT = 6;
-     OBJ_BITMAP = 7;
-     OBJ_EXTPEN = 11;
-     OBJ_REGION = 8;
-     OBJ_DC = 3;
-     OBJ_MEMDC = 10;
-     OBJ_METAFILE = 9;
-     OBJ_METADC = 4;
-     OBJ_ENHMETAFILE = 13;
-     OBJ_ENHMETADC = 12;
-  { EnumPrinters  }
-  { EnumProtocols  }
-  { EnumResLangProc  }
-     RT_ACCELERATOR = MAKEINTRESOURCE(9);
-     RT_BITMAP = MAKEINTRESOURCE(2);
-     RT_DIALOG = MAKEINTRESOURCE(5);
-     RT_FONT = MAKEINTRESOURCE(8);
-     RT_FONTDIR = MAKEINTRESOURCE(7);
-     RT_MENU = MAKEINTRESOURCE(4);
-     RT_RCDATA = MAKEINTRESOURCE(10);
-     RT_STRING = MAKEINTRESOURCE(6);
-     RT_MESSAGETABLE = MAKEINTRESOURCE(11);
-     RT_CURSOR = MAKEINTRESOURCE(1);
-     RT_GROUP_CURSOR = MAKEINTRESOURCE(12);
-     RT_ICON = MAKEINTRESOURCE(3);
-     RT_GROUP_ICON = MAKEINTRESOURCE(13);
-     RT_VERSION = MAKEINTRESOURCE(16);
-
-  { EnumServicesStatus  }
-
-  const
-     SERVICE_WIN32 = 48;
-     SERVICE_DRIVER = 11;
-  { EnumSystemCodePages  }
-     CP_INSTALLED = 1;
-     CP_SUPPORTED = 2;
-  { EnumSystemLocales  }
-     LCID_INSTALLED = 1;
-     LCID_SUPPORTED = 2;
-  { EraseTape  }
-     TAPE_ERASE_LONG = $1;
-     TAPE_ERASE_SHORT = 0;
-  { Escape  }
-     SP_ERROR = -(1);
-     SP_OUTOFDISK = -(4);
-     SP_OUTOFMEMORY = -(5);
-     SP_USERABORT = -(3);
-     PHYSICALWIDTH = 110;
-     PHYSICALHEIGHT = 111;
-     PHYSICALOFFSETX = 112;
-     PHYSICALOFFSETY = 113;
-     SCALINGFACTORX = 114;
-     SCALINGFACTORY = 115;
-     QUERYESCSUPPORT = 8;
-     {ABORTDOC = 2; conflicts with AbortDoc function }
-     cABORTDOC = 2;
-     {ENDDOC = 11; conflicts with AbortDoc function }
-     cENDDOC = 11;
-     GETPHYSPAGESIZE = 12;
-     GETPRINTINGOFFSET = 13;
-     GETSCALINGFACTOR = 14;
-     NEWFRAME = 1;
-     NEXTBAND = 3;
-     PASSTHROUGH = 19;
-     {SETABORTPROC = 9; conflicts with AbortDoc function }
-     cSETABORTPROC = 9;
-     {STARTDOC = 10; conflicts with AbortDoc function }
-     cSTARTDOC = 10;
-  { EscapeCommFunction  }
-     CLRDTR = 6;				  //winbase
-     CLRRTS = 4;				  //winbase
-     SETDTR = 5;				  //winbase
-     SETRTS = 3;				  //winbase	
-     SETXOFF = 1;				  //winbase
-     SETXON = 2;				  //winbase
-     SETBREAK = 8;				  //winbase
-     CLRBREAK = 9;                                //winbase
-     // Some CE devices share a UART between an IRDA port and a serial port.
-     // These escape functions allow control over the mode.
-     SETIR = 10;  // Set the port to IR mode.     //+winbase
-     CLRIR = 11;  // Set the port to non-IR mode. //+winbase
-  { ExitWindowsEx  }
-     EWX_FORCE = 4;
-     EWX_LOGOFF = 0;
-     EWX_POWEROFF = 8;
-     EWX_REBOOT = 2;
-     EWX_SHUTDOWN = 1;
-  { ExtFloodFill  }
-     FLOODFILLBORDER = 0;
-     FLOODFILLSURFACE = 1;
-  { ExtTextOut  }
-     ETO_CLIPPED = 4;
-     ETO_GLYPH_INDEX = 16;
-     ETO_OPAQUE = 2;
-     ETO_RTLREADING = 128;
-  { FindFirstChangeNotification  }
-     FILE_NOTIFY_CHANGE_FILE_NAME = 1;
-     FILE_NOTIFY_CHANGE_DIR_NAME = 2;
-     FILE_NOTIFY_CHANGE_ATTRIBUTES = 4;
-     FILE_NOTIFY_CHANGE_SIZE = 8;
-     FILE_NOTIFY_CHANGE_LAST_WRITE = 16;
-     FILE_NOTIFY_CHANGE_SECURITY = 256;
-  { FindFirstPrinterChangeNotification  }
-  { FindNextPrinterNotification  }
-  { FMExtensionProc  }
-  { FoldString  }
-     MAP_FOLDCZONE = 16;
-     MAP_FOLDDIGITS = 128;
-     MAP_PRECOMPOSED = 32;
-     MAP_COMPOSITE = 64;
-  { ForegroundIdleProc  }
-     HC_ACTION = 0;
-  { FormatMessage  }
-     FORMAT_MESSAGE_ALLOCATE_BUFFER = 256;
-     FORMAT_MESSAGE_IGNORE_INSERTS = 512;
-     FORMAT_MESSAGE_FROM_STRING = 1024;
-     FORMAT_MESSAGE_FROM_HMODULE = 2048;
-     FORMAT_MESSAGE_FROM_SYSTEM = 4096;
-     FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192;
-     FORMAT_MESSAGE_MAX_WIDTH_MASK = 255;
-  { GdiComment  }
-     GDICOMMENT_WINDOWS_METAFILE = -(2147483647);
-     GDICOMMENT_BEGINGROUP = 2;
-     GDICOMMENT_ENDGROUP = 3;
-     GDICOMMENT_MULTIFORMATS = 1073741828;
-     GDICOMMENT_IDENTIFIER = 1128875079;
-  { GenerateConsoleCtrlEvent, HandlerRoutine  }
-     CTRL_C_EVENT = 0;
-     CTRL_BREAK_EVENT = 1;
-     CTRL_CLOSE_EVENT = 2;
-     CTRL_LOGOFF_EVENT = 5;
-     CTRL_SHUTDOWN_EVENT = 6;
-  { GetAddressByName  }
-  { GetArcDirection  }
-     AD_COUNTERCLOCKWISE = 1;
-     AD_CLOCKWISE = 2;
-  { GetClassLong, GetClassWord  }
-     GCW_ATOM = -(32);
-     GCL_CBCLSEXTRA = -(20);
-     GCL_CBWNDEXTRA = -(18);
-     GCL_HBRBACKGROUND = -(10);
-     GCL_HCURSOR = -(12);
-     GCL_HICON = -(14);
-     GCL_HICONSM = -(34);
-     GCL_HMODULE = -(16);
-     GCL_MENUNAME = -(8);
-     GCL_STYLE = -(26);
-     GCL_WNDPROC = -(24);
-  { GetClipboardFormat, SetClipboardData  }
-     CF_BITMAP = 2;
-     CF_DIB = 8;
-     CF_PALETTE = 9;
-     CF_ENHMETAFILE = 14;
-     CF_METAFILEPICT = 3;
-     CF_OEMTEXT = 7;
-     CF_TEXT = 1;
-     CF_UNICODETEXT = 13;
-     CF_DIF = 5;
-     CF_DSPBITMAP = 130;
-     CF_DSPENHMETAFILE = 142;
-     CF_DSPMETAFILEPICT = 131;
-     CF_DSPTEXT = 129;
-     CF_GDIOBJFIRST = 768;
-     CF_GDIOBJLAST = 1023;
-     CF_HDROP = 15;
-     CF_LOCALE = 16;
-     CF_OWNERDISPLAY = 128;
-     CF_PENDATA = 10;
-     CF_PRIVATEFIRST = 512;
-     CF_PRIVATELAST = 767;
-     CF_RIFF = 11;
-     CF_SYLK = 4;
-     CF_WAVE = 12;
-     CF_TIFF = 6;
-  { GetCommMask  }
-     EV_BREAK = 64;
-     EV_CTS = 8;
-     EV_DSR = 16;
-     EV_ERR = 128;
-     EV_EVENT1 = 2048;
-     EV_EVENT2 = 4096;
-     EV_PERR = 512;
-     EV_RING = 256;
-     EV_RLSD = 32;
-     EV_RX80FULL = 1024;
-     EV_RXCHAR = 1;
-     EV_RXFLAG = 2;
-     EV_TXEMPTY = 4;
-     EV_POWER = $2000;  // WINCE Power event.  //+winbase
-
-  { GetCommModemStatus  }
-     MS_CTS_ON = $10;
-     MS_DSR_ON = $20;
-     MS_RING_ON = $40;
-     MS_RLSD_ON = $80;
-  { GetComputerName  }
-     MAX_COMPUTERNAME_LENGTH = 15;
-  { GetCPInfo  }
-     CP_ACP = 0;
-     CP_MACCP = 2;
-     CP_OEMCP = 1;
-  { GetDateFormat  }
-  { already defined above !!
-  #define DATE_SHORTDATE        (1)
-  #define DATE_LONGDATE (2)
-   }
-     DATE_USE_ALT_CALENDAR = 4;
-  { GetDCEx  }
-     DCX_WINDOW = $1;
-     DCX_CACHE = $2;
-     DCX_PARENTCLIP = $20;
-     DCX_CLIPSIBLINGS = $10;
-     DCX_CLIPCHILDREN = $8;
-     DCX_NORESETATTRS = $4;
-     DCX_LOCKWINDOWUPDATE = $400;
-     DCX_EXCLUDERGN = $40;
-     DCX_INTERSECTRGN = $80;
-     DCX_VALIDATE = $200000;
-  { GetDeviceCaps  }
-     DRIVERVERSION = 0;
-     TECHNOLOGY = 2;
-     DT_PLOTTER = 0;
-     DT_RASDISPLAY = 1;
-     DT_RASPRINTER = 2;
-     DT_RASCAMERA = 3;
-     DT_CHARSTREAM = 4;
-     DT_METAFILE = 5;
-     DT_DISPFILE = 6;
-     HORZSIZE = 4;
-     VERTSIZE = 6;
-     HORZRES = 8;
-     VERTRES = 10;
-     LOGPIXELSX = 88;
-     LOGPIXELSY = 90;
-     BITSPIXEL = 12;
-     PLANES = 14;
-     NUMBRUSHES = 16;
-     NUMPENS = 18;
-     NUMFONTS = 22;
-     NUMCOLORS = 24;
-     ASPECTX = 40;
-     ASPECTY = 42;
-     ASPECTXY = 44;
-     PDEVICESIZE = 26;
-     CLIPCAPS = 36;
-     SIZEPALETTE = 104;
-     NUMRESERVED = 106;
-     COLORRES = 108;
-  { already defined above !!
-  #define PHYSICALWIDTH (110)
-  #define PHYSICALHEIGHT        (111)
-  #define PHYSICALOFFSETX       (112)
-  #define PHYSICALOFFSETY       (113)
-  #define SCALINGFACTORX        (114)
-  #define SCALINGFACTORY        (115)
-   }
-     VREFRESH = 116;
-     DESKTOPHORZRES = 118;
-     DESKTOPVERTRES = 117;
-     BLTALIGNMENT = 119;
-     RASTERCAPS = 38;
-     RC_BANDING = 2;
-     RC_BITBLT = 1;
-     RC_BITMAP64 = 8;
-     RC_DI_BITMAP = 128;
-     RC_DIBTODEV = 512;
-     RC_FLOODFILL = 4096;
-     RC_GDI20_OUTPUT = 16;
-     RC_PALETTE = 256;
-     RC_SCALING = 4;
-     RC_STRETCHBLT = 2048;
-     RC_STRETCHDIB = 8192;
-     CURVECAPS = 28;
-     CC_NONE = 0;
-     CC_CIRCLES = 1;
-     CC_PIE = 2;
-     CC_CHORD = 4;
-     CC_ELLIPSES = 8;
-     CC_WIDE = 16;
-     CC_STYLED = 32;
-     CC_WIDESTYLED = 64;
-     CC_INTERIORS = 128;
-     CC_ROUNDRECT = 256;
-     LINECAPS = 30;
-     LC_NONE = 0;
-     LC_POLYLINE = 2;
-     LC_MARKER = 4;
-     LC_POLYMARKER = 8;
-     LC_WIDE = 16;
-     LC_STYLED = 32;
-     LC_WIDESTYLED = 64;
-     LC_INTERIORS = 128;
-     POLYGONALCAPS = 32;
-     PC_NONE = 0;
-     PC_POLYGON = 1;
-     PC_RECTANGLE = 2;
-     PC_WINDPOLYGON = 4;
-     PC_SCANLINE = 8;
-     PC_WIDE = 16;
-     PC_STYLED = 32;
-     PC_WIDESTYLED = 64;
-     PC_INTERIORS = 128;
-     TEXTCAPS = 34;
-     TC_OP_CHARACTER = 1;
-     TC_OP_STROKE = 2;
-     TC_CP_STROKE = 4;
-     TC_CR_90 = 8;
-     TC_CR_ANY = 16;
-     TC_SF_X_YINDEP = 32;
-     TC_SA_DOUBLE = 64;
-     TC_SA_INTEGER = 128;
-     TC_SA_CONTIN = 256;
-     TC_EA_DOUBLE = 512;
-     TC_IA_ABLE = 1024;
-     TC_UA_ABLE = 2048;
-     TC_SO_ABLE = 4096;
-     TC_RA_ABLE = 8192;
-     TC_VA_ABLE = 16384;
-     TC_RESERVED = 32768;
-     TC_SCROLLBLT = 65536;
-     PC_PATHS = 512;
-  { GetDriveType  }
-     DRIVE_REMOVABLE = 2;
-     DRIVE_FIXED = 3;
-     DRIVE_REMOTE = 4;
-     DRIVE_CDROM = 5;
-     DRIVE_RAMDISK = 6;
-     DRIVE_UNKNOWN = 0;
-     DRIVE_NO_ROOT_DIR = 1;
-  { GetExceptionCode  }
-     EXCEPTION_ACCESS_VIOLATION = $c0000005;
-     EXCEPTION_BREAKPOINT = $80000003;
-     EXCEPTION_DATATYPE_MISALIGNMENT = $80000002;
-     EXCEPTION_SINGLE_STEP = $80000004;
-     EXCEPTION_ARRAY_BOUNDS_EXCEEDED = $c000008c;
-     EXCEPTION_FLT_DENORMAL_OPERAND = $c000008d;
-     EXCEPTION_FLT_DIVIDE_BY_ZERO = $c000008e;
-     EXCEPTION_FLT_INEXACT_RESULT = $c000008f;
-     EXCEPTION_FLT_INVALID_OPERATION = $c0000090;
-     EXCEPTION_FLT_OVERFLOW = $c0000091;
-     EXCEPTION_FLT_STACK_CHECK = $c0000092;
-     EXCEPTION_FLT_UNDERFLOW = $c0000093;
-     EXCEPTION_INT_DIVIDE_BY_ZERO = $c0000094;
-     EXCEPTION_INT_OVERFLOW = $c0000095;
-     EXCEPTION_INVALID_HANDLE = $c0000008;
-     EXCEPTION_PRIV_INSTRUCTION = $c0000096;
-     EXCEPTION_NONCONTINUABLE_EXCEPTION = $c0000025;
-     EXCEPTION_NONCONTINUABLE = $1;                  //winnt
-     EXCEPTION_UNWINDING = $2;                       //+winnt
-     EXCEPTION_EXIT_UNWIND = $4;                     //+winnt
-     EXCEPTION_STACK_INVALID = $8;                   //+winnt
-     EXCEPTION_NESTED_CALL = $10;                    //+winnt
-     EXCEPTION_TARGET_UNWIND = $20;                  //+winnt
-     EXCEPTION_COLLIDED_UNWIND = $40;                //+winnt
-     EXCEPTION_UNWIND = EXCEPTION_UNWINDING or EXCEPTION_EXIT_UNWIND or
-                        EXCEPTION_TARGET_UNWIND or EXCEPTION_COLLIDED_UNWIND; //+winnt
-     EXCEPTION_STACK_OVERFLOW = $c00000fd;
-     EXCEPTION_INVALID_DISPOSITION = $c0000026;
-     EXCEPTION_IN_PAGE_ERROR = $c0000006;
-     EXCEPTION_ILLEGAL_INSTRUCTION = $c000001d;
-     EXCEPTION_POSSIBLE_DEADLOCK = $c0000194;
-
-     function IS_UNWINDING( Flag : Longint) : boolean;     //+winnt
-     function IS_DISPATCHING( Flag : Longint) : boolean;   //+winnt
-     function IS_TARGET_UNWIND( Flag : Longint) : Longint; //+winnt
-
-  { GetFileType  }
-  const
-     FILE_TYPE_UNKNOWN = 0;
-     FILE_TYPE_DISK = 1;
-     FILE_TYPE_CHAR = 2;
-     FILE_TYPE_PIPE = 3;
-     GDI_ERROR = $ffffffff;
-  { GetGraphicsMode  }
-     GM_COMPATIBLE = 1;
-     GM_ADVANCED = 2;
-  { GetIconInfo  }
-     IDC_ARROW = MAKEINTRESOURCE(32512);
-     IDC_IBEAM = MAKEINTRESOURCE(32513);
-     IDC_WAIT = MAKEINTRESOURCE(32514);
-     IDC_CROSS = MAKEINTRESOURCE(32515);
-     IDC_UPARROW = MAKEINTRESOURCE(32516);
-     IDC_SIZENWSE = MAKEINTRESOURCE(32642);
-     IDC_SIZENESW = MAKEINTRESOURCE(32643);
-     IDC_SIZEWE = MAKEINTRESOURCE(32644);
-     IDC_SIZENS = MAKEINTRESOURCE(32645);
-     IDC_SIZEALL = MAKEINTRESOURCE(32646);
-     IDC_NO = MAKEINTRESOURCE(32648);
-     IDC_APPSTARTING = MAKEINTRESOURCE(32650);
-     IDC_HELP = MAKEINTRESOURCE(32651);
-     IDI_APPLICATION = MAKEINTRESOURCE(32512);
-     IDI_HAND = MAKEINTRESOURCE(32513);
-     IDI_QUESTION = MAKEINTRESOURCE(32514);
-     IDI_EXCLAMATION = MAKEINTRESOURCE(32515);
-     IDI_ASTERISK = MAKEINTRESOURCE(32516);
-     IDI_WINLOGO = MAKEINTRESOURCE(32517);
-     IDC_SIZE = MAKEINTRESOURCE(32640);
-     IDC_ICON = MAKEINTRESOURCE(32641);
-     IDC_HAND = MAKEINTRESOURCE(32649);
-
-  { GetMapMode  }
-
-  const
-     MM_ANISOTROPIC = 8;
-     MM_HIENGLISH = 5;
-     MM_HIMETRIC = 3;
-     MM_ISOTROPIC = 7;
-     MM_LOENGLISH = 4;
-     MM_LOMETRIC = 2;
-     MM_TEXT = 1;
-     MM_TWIPS = 6;
-  { GetMenuDefaultItem  }
-     GMDI_GOINTOPOPUPS = $2;
-     GMDI_USEDISABLED = $1;
-  { PeekMessage  }
-     PM_NOREMOVE = 0;
-     PM_REMOVE = 1;
-     PM_NOYIELD = 2;
-  { GetNextWindow, GetWindow  }
-     GW_HWNDNEXT = 2;
-     GW_HWNDPREV = 3;
-     GW_CHILD = 5;
-     GW_HWNDFIRST = 0;
-     GW_HWNDLAST = 1;
-     GW_OWNER = 4;
-     GW_MAX = 5; //+winuser
-
-  { GetQueueStatus  }
-     QS_ALLEVENTS = 191;
-     QS_ALLINPUT = 255;
-     QS_HOTKEY = 128;
-     QS_INPUT = 7;
-     QS_KEY = 1;
-     QS_MOUSE = 6;
-     QS_MOUSEBUTTON = 4;
-     QS_MOUSEMOVE = 2;
-     QS_PAINT = 32;
-     QS_POSTMESSAGE = 8;
-     QS_SENDMESSAGE = 64;
-     QS_TIMER = 16;
-  { GetScrollInfo, SetScrollInfo  }
-     SIF_ALL = 23;
-     SIF_PAGE = 2;
-     SIF_POS = 4;
-     SIF_RANGE = 1;
-     SIF_DISABLENOSCROLL = 8;
-     SIF_TRACKPOS = $10;
-  { GetStdHandle  }
-
-
-  { was #define dname def_expr }
-     STD_INPUT_HANDLE = DWORD(-(10));
-     STD_OUTPUT_HANDLE = DWORD(-(11));
-     STD_ERROR_HANDLE = DWORD(-(12));
-
-    { was #define dname def_expr }
-     INVALID_HANDLE_VALUE = HANDLE(-1);
-
-  { GetStockObject  }
-
-     BLACK_BRUSH = 4;
-     DKGRAY_BRUSH = 3;
-     GRAY_BRUSH = 2;
-     HOLLOW_BRUSH = 5;
-     LTGRAY_BRUSH = 1;
-     NULL_BRUSH = 5;
-     WHITE_BRUSH = 0;
-     BLACK_PEN = 7;
-     NULL_PEN = 8;
-     WHITE_PEN = 6;
-     ANSI_FIXED_FONT = 11;
-     ANSI_VAR_FONT = 12;
-     DEVICE_DEFAULT_FONT = 14;
-     DEFAULT_GUI_FONT = 17;
-     OEM_FIXED_FONT = 10;
-     SYSTEM_FONT = 13;
-     SYSTEM_FIXED_FONT = 16;
-     DEFAULT_PALETTE = 15;
-  { GetStringTypeA  }
-     CT_CTYPE1 = 1;
-     CT_CTYPE2 = 2;
-     CT_CTYPE3 = 4;
-     C1_UPPER = 1;
-     C1_LOWER = 2;
-     C1_DIGIT = 4;
-     C1_SPACE = 8;
-     C1_PUNCT = 16;
-     C1_CNTRL = 32;
-     C1_BLANK = 64;
-     C1_XDIGIT = 128;
-     C1_ALPHA = 256;
-     C2_LEFTTORIGHT = 1;
-     C2_RIGHTTOLEFT = 2;
-     C2_EUROPENUMBER = 3;
-     C2_EUROPESEPARATOR = 4;
-     C2_EUROPETERMINATOR = 5;
-     C2_ARABICNUMBER = 6;
-     C2_COMMONSEPARATOR = 7;
-     C2_BLOCKSEPARATOR = 8;
-     C2_SEGMENTSEPARATOR = 9;
-     C2_WHITESPACE = 10;
-     C2_OTHERNEUTRAL = 11;
-     C2_NOTAPPLICABLE = 0;
-     C3_NONSPACING = 1;
-     C3_DIACRITIC = 2;
-     C3_VOWELMARK = 4;
-     C3_SYMBOL = 8;
-     C3_KATAKANA = 16;
-     C3_HIRAGANA = 32;
-     C3_HALFWIDTH = 64;
-     C3_FULLWIDTH = 128;
-     C3_IDEOGRAPH = 256;
-     C3_KASHIDA = 512;
-     C3_ALPHA = 32768;
-     C3_NOTAPPLICABLE = 0;
-  { GetSysColor }
-{$IFDEF WINCE}
-     SYS_COLOR_INDEX_FLAG =$40000000;
-{$ELSE}
-     SYS_COLOR_INDEX_FLAG =0;
-{$ENDIF WINCE}
-     COLOR_SCROLLBAR               = 0 or SYS_COLOR_INDEX_FLAG;
-     COLOR_BACKGROUND              = 1 or SYS_COLOR_INDEX_FLAG;
-     COLOR_ACTIVECAPTION           = 2 or SYS_COLOR_INDEX_FLAG;
-     COLOR_INACTIVECAPTION         = 3 or SYS_COLOR_INDEX_FLAG;
-     COLOR_MENU                    = 4 or SYS_COLOR_INDEX_FLAG;
-     COLOR_WINDOW                  = 5 or SYS_COLOR_INDEX_FLAG;
-     COLOR_WINDOWFRAME             = 6 or SYS_COLOR_INDEX_FLAG;
-     COLOR_MENUTEXT                = 7 or SYS_COLOR_INDEX_FLAG;
-     COLOR_WINDOWTEXT              = 8 or SYS_COLOR_INDEX_FLAG;
-     COLOR_CAPTIONTEXT             = 9 or SYS_COLOR_INDEX_FLAG;
-     COLOR_ACTIVEBORDER            =10 or SYS_COLOR_INDEX_FLAG;
-     COLOR_INACTIVEBORDER          =11 or SYS_COLOR_INDEX_FLAG;
-     COLOR_APPWORKSPACE            =12 or SYS_COLOR_INDEX_FLAG;
-     COLOR_HIGHLIGHT               =13 or SYS_COLOR_INDEX_FLAG;
-     COLOR_HIGHLIGHTTEXT           =14 or SYS_COLOR_INDEX_FLAG;
-     COLOR_BTNFACE                 =15 or SYS_COLOR_INDEX_FLAG;
-     COLOR_BTNSHADOW               =16 or SYS_COLOR_INDEX_FLAG;
-     COLOR_GRAYTEXT                =17 or SYS_COLOR_INDEX_FLAG;
-     COLOR_BTNTEXT                 =18 or SYS_COLOR_INDEX_FLAG;
-     COLOR_INACTIVECAPTIONTEXT     =19 or SYS_COLOR_INDEX_FLAG;
-     COLOR_BTNHIGHLIGHT            =20 or SYS_COLOR_INDEX_FLAG;
-
-     COLOR_3DDKSHADOW              =21 or SYS_COLOR_INDEX_FLAG;
-     COLOR_3DLIGHT                 =22 or SYS_COLOR_INDEX_FLAG;
-     COLOR_INFOTEXT                =23 or SYS_COLOR_INDEX_FLAG;
-     COLOR_INFOBK                  =24 or SYS_COLOR_INDEX_FLAG;
-     COLOR_STATIC                  =25 or SYS_COLOR_INDEX_FLAG;
-     COLOR_STATICTEXT              =26 or SYS_COLOR_INDEX_FLAG;
-     COLOR_GRADIENTACTIVECAPTION   =27 or SYS_COLOR_INDEX_FLAG;
-     COLOR_GRADIENTINACTIVECAPTION =28 or SYS_COLOR_INDEX_FLAG;
-     C_SYS_COLOR_TYPES		   =29;
-
-     COLOR_DESKTOP           =COLOR_BACKGROUND;
-     COLOR_3DFACE            =COLOR_BTNFACE;
-     COLOR_3DSHADOW          =COLOR_BTNSHADOW;
-     COLOR_3DHIGHLIGHT       =COLOR_BTNHIGHLIGHT;
-     COLOR_3DHILIGHT         =COLOR_BTNHIGHLIGHT;
-
-  { GetSystemMetrics  }
-     SM_CYMIN = 29;
-     SM_CXMIN = 28;
-     SM_ARRANGE = 56;
-     SM_CLEANBOOT = 67;
-  { The right value for SM_CEMETRICS for NT 3.5 is 75.  For Windows 95
-     and NT 4.0, it is 76.  The meaning is undocumented, anyhow.   }
-     SM_CMETRICS = 76;
-     SM_CMOUSEBUTTONS = 43;
-     SM_CXBORDER = 5;
-     SM_CYBORDER = 6;
-     SM_CXCURSOR = 13;
-     SM_CYCURSOR = 14;
-     SM_CXDLGFRAME = 7;
-     SM_CYDLGFRAME = 8;
-     SM_CXDOUBLECLK = 36;
-     SM_CYDOUBLECLK = 37;
-     SM_CXDRAG = 68;
-     SM_CYDRAG = 69;
-     SM_CXEDGE = 45;
-     SM_CYEDGE = 46;
-     SM_CXFIXEDFRAME = 7;
-     SM_CYFIXEDFRAME = 8;
-     SM_CXFRAME = 32;
-     SM_CYFRAME = 33;
-     SM_CXFULLSCREEN = 16;
-     SM_CYFULLSCREEN = 17;
-     SM_CXHSCROLL = 21;
-     SM_CYHSCROLL = 3;
-     SM_CXHTHUMB = 10;
-     SM_CXICON = 11;
-     SM_CYICON = 12;
-     SM_CXICONSPACING = 38;
-     SM_CYICONSPACING = 39;
-     SM_CXMAXIMIZED = 61;
-     SM_CYMAXIMIZED = 62;
-     SM_CXMAXTRACK = 59;
-     SM_CYMAXTRACK = 60;
-     SM_CXMENUCHECK = 71;
-     SM_CYMENUCHECK = 72;
-     SM_CXMENUSIZE = 54;
-     SM_CYMENUSIZE = 55;
-     SM_CXMINIMIZED = 57;
-     SM_CYMINIMIZED = 58;
-     SM_CXMINSPACING = 47;
-     SM_CYMINSPACING = 48;
-     SM_CXMINTRACK = 34;
-     SM_CYMINTRACK = 35;
-     SM_CXSCREEN = 0;
-     SM_CYSCREEN = 1;
-     SM_CXSIZE = 30;
-     SM_CYSIZE = 31;
-     SM_CXSIZEFRAME = 32;
-     SM_CYSIZEFRAME = 33;
-     SM_CXSMICON = 49;
-     SM_CYSMICON = 50;
-     SM_CXSMSIZE = 52;
-     SM_CYSMSIZE = 53;
-     SM_CXVSCROLL = 2;
-     {SM_CYHSCROLL = 3;already above }
-     {SM_CXHSCROLL = 21;already above }
-     SM_CYVSCROLL = 20;
-     SM_CYVTHUMB = 9;
-     SM_CYCAPTION = 4;
-     SM_CYKANJIWINDOW = 18;
-     SM_CYMENU = 15;
-     SM_CYSMCAPTION = 51;
-     SM_DBCSENABLED = 42;
-     SM_DEBUG = 22;
-     SM_MENUDROPALIGNMENT = 40;
-     SM_MIDEASTENABLED = 74;
-     SM_MOUSEPRESENT = 19;
-     SM_MOUSEWHEELPRESENT = 75;
-     SM_NETWORK = 63;
-     SM_PENWINDOWS = 41;
-     SM_SECURE = 44;
-     SM_SHOWSOUNDS = 70;
-     SM_SLOWMACHINE = 73;
-     SM_SWAPBUTTON = 23;
-     ARW_BOTTOMLEFT = 0;
-     ARW_BOTTOMRIGHT = $1;
-     ARW_HIDE = $8;
-     ARW_TOPLEFT = $2;
-     ARW_TOPRIGHT = $3;
-     ARW_DOWN = $4;
-     ARW_LEFT = 0;
-     ARW_RIGHT = 0;
-     ARW_UP = $4;
-  { GetSystemPaletteUse  }
-     SYSPAL_NOSTATIC = 2;
-     SYSPAL_STATIC = 1;
-     SYSPAL_ERROR = 0;
-  { GetTextAlign  }
-     TA_BASELINE = 24;
-     TA_BOTTOM = 8;
-     TA_TOP = 0;
-     TA_CENTER = 6;
-     TA_LEFT = 0;
-     TA_RIGHT = 2;
-     TA_RTLREADING = 256;
-     TA_NOUPDATECP = 0;
-     TA_UPDATECP = 1;
-     VTA_BASELINE = 24;
-     VTA_CENTER = 6;
-  { GetThreadPriority  }
-     THREAD_PRIORITY_ABOVE_NORMAL = 1;
-     THREAD_PRIORITY_BELOW_NORMAL = -(1);
-     THREAD_PRIORITY_HIGHEST = 2;
-     THREAD_PRIORITY_IDLE = -(15);
-     THREAD_PRIORITY_LOWEST = -(2);
-     THREAD_PRIORITY_NORMAL = 0;
-     THREAD_PRIORITY_TIME_CRITICAL = 15;
-     THREAD_PRIORITY_ERROR_RETURN = 2147483647;
-     TLS_MINIMUM_AVAILABLE = 64;
-  { GetTimeFormat  }
-     TIME_NOMINUTESORSECONDS = 1;
-     TIME_NOSECONDS = 2;
-     TIME_NOTIMEMARKER = 4;
-     TIME_FORCE24HOURFORMAT = 8;
-  { GetTimeZoneInformation  }
-    { was #define dname def_expr }
-
-
-  const
-     TIME_ZONE_ID_INVALID = DWORD(-1);
-     TIME_ZONE_ID_UNKNOWN = 0;
-     TIME_ZONE_ID_STANDARD = 1;
-     TIME_ZONE_ID_DAYLIGHT = 2;
-  { GetWindowLong  }
-     GWL_EXSTYLE = -(20);
-     GWL_STYLE = -(16);
-     GWL_WNDPROC = -(4);
-     GWL_HINSTANCE = -(6);
-     GWL_HWNDPARENT = -(8);
-     GWL_ID = -(12);
-     GWL_USERDATA = -(21);
-     DWL_DLGPROC = 4;
-     DWL_MSGRESULT = 0;
-     DWL_USER = 8;
-  { GlobalAlloc, GlobalFlags  }
-     GMEM_FIXED = 0;
-     GMEM_MOVEABLE = 2;
-     GPTR = 64;
-     GHND = 66;
-     GMEM_DDESHARE = 8192;
-     GMEM_DISCARDABLE = 256;
-     GMEM_LOWER = 4096;
-     GMEM_NOCOMPACT = 16;
-     GMEM_NODISCARD = 32;
-     GMEM_NOT_BANKED = 4096;
-     GMEM_NOTIFY = 16384;
-     GMEM_SHARE = 8192;
-     GMEM_ZEROINIT = 64;
-     GMEM_DISCARDED = 16384;
-     GMEM_INVALID_HANDLE = 32768;
-     GMEM_LOCKCOUNT = 255;
-  { HeapAlloc, HeapReAlloc  }
-     HEAP_GENERATE_EXCEPTIONS = 4;
-     HEAP_NO_SERIALIZE = 1;
-     HEAP_ZERO_MEMORY = 8;
-     STATUS_NO_MEMORY = $c0000017;
-     STATUS_ACCESS_VIOLATION = $c0000005;
-     HEAP_REALLOC_IN_PLACE_ONLY = 16;
-  { ImageList_Create  }
-     ILC_COLOR = 0;
-     ILC_COLOR4 = 4;
-     ILC_COLOR8 = 8;
-     ILC_COLOR16 = 16;
-     ILC_COLOR24 = 24;
-     ILC_COLOR32 = 32;
-     ILC_COLORDDB = 254;
-     ILC_MASK = 1;
-     ILC_PALETTE = 2048;
-  { ImageList_Draw, ImageList_DrawEx  }
-     ILD_BLEND25 = 2;
-     ILD_BLEND50 = 4;
-     ILD_SELECTED = 4;
-     ILD_BLEND = 4;
-     ILD_FOCUS = 2;
-     ILD_MASK = 16;
-     ILD_NORMAL = 0;
-     ILD_TRANSPARENT = 1;
-     CLR_NONE = $ffffffff;
-     CLR_DEFAULT = $ff000000;
-     CLR_INVALID = $FFFFFFFF;
-  { ImageList_LoadImage  }
-     {LR_DEFAULTCOLOR = 0;already above }
-     LR_LOADFROMFILE = 16;
-     LR_LOADMAP3DCOLORS = 4096;
-     LR_LOADTRANSPARENT = 32;
-     {LR_MONOCHROME = 1;already above }
-  { ImmConfigureIME  }
-     IME_CONFIG_GENERAL = 1;
-     IME_CONFIG_REGISTERWORD = 2;
-     IME_CONFIG_SELECTDICTIONARY = 3;
-  { ImmGetConversionList  }
-     GCL_CONVERSION = 1;
-     GCL_REVERSECONVERSION = 2;
-     GCL_REVERSE_LENGTH = 3;
-  { ImmGetGuideLine  }
-     GGL_LEVEL = 1;
-     GGL_INDEX = 2;
-     GGL_STRING = 3;
-     GGL_PRIVATE = 4;
-     GL_LEVEL_ERROR = 2;
-     GL_LEVEL_FATAL = 1;
-     GL_LEVEL_INFORMATION = 4;
-     GL_LEVEL_NOGUIDELINE = 0;
-     GL_LEVEL_WARNING = 3;
-     GL_ID_CANNOTSAVE = 17;
-     GL_ID_NOCONVERT = 32;
-     GL_ID_NODICTIONARY = 16;
-     GL_ID_NOMODULE = 1;
-     GL_ID_READINGCONFLICT = 35;
-     GL_ID_TOOMANYSTROKE = 34;
-     GL_ID_TYPINGERROR = 33;
-     GL_ID_UNKNOWN = 0;
-     GL_ID_INPUTREADING = 36;
-     GL_ID_INPUTRADICAL = 37;
-     GL_ID_INPUTCODE = 38;
-     GL_ID_CHOOSECANDIDATE = 40;
-     GL_ID_REVERSECONVERSION = 41;
-  { ImmGetProperty  }
-     IGP_PROPERTY = 4;
-     IGP_CONVERSION = 8;
-     IGP_SENTENCE = 12;
-     IGP_UI = 16;
-     IGP_SETCOMPSTR = 20;
-     IGP_SELECT = 24;
-     IME_PROP_AT_CARET = 65536;
-     IME_PROP_SPECIAL_UI = 131072;
-     IME_PROP_CANDLIST_START_FROM_1 = 262144;
-     IME_PROP_UNICODE = 524288;
-     UI_CAP_2700 = 1;
-     UI_CAP_ROT90 = 2;
-     UI_CAP_ROTANY = 4;
-     SCS_CAP_COMPSTR = 1;
-     SCS_CAP_MAKEREAD = 2;
-     SELECT_CAP_CONVERSION = 1;
-     SELECT_CAP_SENTENCE = 2;
-  { ImmNotifyIME  }
-     NI_CHANGECANDIDATELIST = 19;
-     NI_CLOSECANDIDATE = 17;
-     NI_COMPOSITIONSTR = 21;
-     NI_OPENCANDIDATE = 16;
-     NI_SELECTCANDIDATESTR = 18;
-     NI_SETCANDIDATE_PAGESIZE = 23;
-     NI_SETCANDIDATE_PAGESTART = 22;
-     CPS_CANCEL = 4;
-     CPS_COMPLETE = 1;
-     CPS_CONVERT = 2;
-     CPS_REVERT = 3;
-  { ImmSetCompositionString  }
-     SCS_SETSTR = 9;
-     SCS_CHANGEATTR = 18;
-     SCS_CHANGECLAUSE = 36;
-  { ImmUnregisterWord  }
-     IME_REGWORD_STYLE_EUDC = 1;
-     IME_REGWORD_STYLE_USER_FIRST = $80000000;
-     IME_REGWORD_STYLE_USER_LAST = -(1);
-  { InitCommonControlEx }  //+commctrl
-     I_IMAGENONE             = -2; // Desktop listview uses this same value for I_IMAGENONE when (_WIN32_IE >= 0x0501)
-
-     ICC_LISTVIEW_CLASSES  = $00000001; // listview, header
-     ICC_TREEVIEW_CLASSES  = $00000002; // treeview, tooltips
-     ICC_BAR_CLASSES       = $00000004; // toolbar, statusbar, trackbar, tooltips
-     ICC_TAB_CLASSES       = $00000008; // tab, tooltips
-     ICC_UPDOWN_CLASS      = $00000010; // updown
-     ICC_PROGRESS_CLASS    = $00000020; // progress
-     ICC_WIN95_CLASSES     = $0000007F; // ! was ICC_WIN95_CLASSES     = $000000FF
-     ICC_DATE_CLASSES      = $00000100; // month picker, date picker, time picker, updown
-     ICC_COOL_CLASSES      = $00000400; // rebar (coolbar) control
-     ICC_INTERNET_CLASSES  = $00000800; // IP Address control
-     ICC_TOOLTIP_CLASSES   = $00001000; // Tooltip static & button
-     ICC_CAPEDIT_CLASS     = $00002000; // All-caps edit control
-     ICC_FE_CLASSES        = $40000000; // FE specific input subclasses
-
-  { InitializeSecurityDescriptor  }
-     SECURITY_DESCRIPTOR_REVISION = 1;
-  { IsTextUnicode  }
-     IS_TEXT_UNICODE_ASCII16 = 1;
-     IS_TEXT_UNICODE_REVERSE_ASCII16 = 16;
-     IS_TEXT_UNICODE_STATISTICS = 2;
-     IS_TEXT_UNICODE_REVERSE_STATISTICS = 32;
-     IS_TEXT_UNICODE_CONTROLS = 4;
-     IS_TEXT_UNICODE_REVERSE_CONTROLS = 64;
-     IS_TEXT_UNICODE_SIGNATURE = 8;
-     IS_TEXT_UNICODE_REVERSE_SIGNATURE = 128;
-     IS_TEXT_UNICODE_ILLEGAL_CHARS = 256;
-     IS_TEXT_UNICODE_ODD_LENGTH = 512;
-     IS_TEXT_UNICODE_NULL_BYTES = 4096;
-     IS_TEXT_UNICODE_UNICODE_MASK = 15;
-     IS_TEXT_UNICODE_REVERSE_MASK = 240;
-     IS_TEXT_UNICODE_NOT_UNICODE_MASK = 3840;
-     IS_TEXT_UNICODE_NOT_ASCII_MASK = 61440;
-  { JournalPlaybackProc, KeyboardProc  }
-     HC_GETNEXT = 1;
-     HC_SKIP = 2;
-     HC_SYSMODALOFF = 5;
-     HC_SYSMODALON = 4;
-     HC_NOREMOVE = 3;
-  { keybd_event  }
-     KEYEVENTF_EXTENDEDKEY = 1;
-     KEYEVENTF_KEYUP = 2;
-  { LoadBitmap  }
-     OBM_BTNCORNERS = 32758;
-     OBM_BTSIZE = 32761;
-     OBM_CHECK = 32760;
-     OBM_CHECKBOXES = 32759;
-     OBM_CLOSE = 32754;
-     OBM_COMBO = 32738;
-     OBM_DNARROW = 32752;
-     OBM_DNARROWD = 32742;
-     OBM_DNARROWI = 32736;
-     OBM_LFARROW = 32750;
-     OBM_LFARROWI = 32734;
-     OBM_LFARROWD = 32740;
-     OBM_MNARROW = 32739;
-     OBM_OLD_CLOSE = 32767;
-     OBM_OLD_DNARROW = 32764;
-     OBM_OLD_LFARROW = 32762;
-     OBM_OLD_REDUCE = 32757;
-     OBM_OLD_RESTORE = 32755;
-     OBM_OLD_RGARROW = 32763;
-     OBM_OLD_UPARROW = 32765;
-     OBM_OLD_ZOOM = 32756;
-     OBM_REDUCE = 32749;
-     OBM_REDUCED = 32746;
-     OBM_RESTORE = 32747;
-     OBM_RESTORED = 32744;
-     OBM_RGARROW = 32751;
-     OBM_RGARROWD = 32741;
-     OBM_RGARROWI = 32735;
-     OBM_SIZE = 32766;
-     OBM_UPARROW = 32753;
-     OBM_UPARROWD = 32743;
-     OBM_UPARROWI = 32737;
-     OBM_ZOOM = 32748;
-     OBM_ZOOMD = 32745;
-  { LoadLibraryEx  }
-     DONT_RESOLVE_DLL_REFERENCES = 1;
-     LOAD_LIBRARY_AS_DATAFILE = 2;
-     LOAD_WITH_ALTERED_SEARCH_PATH = 8;
-  { LocalAlloc, LocalFlags  }
-     LPTR = 64;
-     LHND = 66;
-     NONZEROLHND = 2;
-     NONZEROLPTR = 0;
-     LMEM_NONZEROLHND = 2;
-     LMEM_NONZEROLPTR = 0;
-     LMEM_FIXED = 0;
-     LMEM_MOVEABLE = 2;
-     LMEM_NOCOMPACT = 16;
-     LMEM_NODISCARD = 32;
-     LMEM_ZEROINIT = 64;
-     LMEM_MODIFY = 128;
-     LMEM_LOCKCOUNT = 255;
-     LMEM_DISCARDABLE = 3840;
-     LMEM_DISCARDED = 16384;
-     LMEM_INVALID_HANDLE = 32768;
-     LMEM_VALID_FLAGS=$0F72;       //+winbase
-  { MessageBeep, MessageBox  }
-     MB_USERICON = $80;
-     MB_ICONASTERISK = $40;
-     MB_ICONEXCLAMATION = $30;
-     MB_ICONWARNING = $30;
-     MB_ICONERROR = $10;
-     MB_ICONHAND = $10;
-     MB_ICONQUESTION = $20;
-     MB_OK = 0;
-     MB_ABORTRETRYIGNORE = $2;
-     MB_APPLMODAL = 0;
-     MB_DEFAULT_DESKTOP_ONLY = $20000;
-     MB_HELP = $4000;
-     MB_RIGHT = $80000;
-     MB_RTLREADING = $100000;
-     MB_TOPMOST = $40000;
-     MB_DEFBUTTON1 = 0;
-     MB_DEFBUTTON2 = $100;
-     MB_DEFBUTTON3 = $200;
-     MB_DEFBUTTON4 = $300;
-     MB_ICONINFORMATION = $40;
-     MB_ICONSTOP = $10;
-     MB_OKCANCEL = $1;
-     MB_RETRYCANCEL = $5;
-     MB_SERVICE_NOTIFICATION = $40000;
-     MB_SETFOREGROUND = $10000;
-     MB_SYSTEMMODAL = $1000;
-     MB_TASKMODAL = $2000;
-     MB_YESNO = $4;
-     MB_YESNOCANCEL = $3;
-     IDABORT = 3;
-     IDCANCEL = 2;
-     IDCLOSE = 8;
-     IDHELP = 9;
-     IDIGNORE = 5;
-     IDNO = 7;
-     IDOK = 1;
-     IDRETRY = 4;
-     IDYES = 6;
-  { MessageProc  }
-     MSGF_DIALOGBOX = 0;
-     MSGF_MENU = 2;
-     MSGF_NEXTWINDOW = 6;
-     MSGF_SCROLLBAR = 5;
-     MSGF_MAINLOOP = 8;
-     MSGF_USER = 4096;
-  { ModifyWorldTransform  }
-     MWT_IDENTITY = 1;
-     MWT_LEFTMULTIPLY = 2;
-     MWT_RIGHTMULTIPLY = 3;
-  { mouse_event  }
-     MOUSEEVENTF_ABSOLUTE = 32768;
-     MOUSEEVENTF_MOVE = 1;
-     MOUSEEVENTF_LEFTDOWN = 2;
-     MOUSEEVENTF_LEFTUP = 4;
-     MOUSEEVENTF_RIGHTDOWN = 8;
-     MOUSEEVENTF_RIGHTUP = 16;
-     MOUSEEVENTF_MIDDLEDOWN = 32;
-     MOUSEEVENTF_MIDDLEUP = 64;
-  { MoveFileEx  }
-     MOVEFILE_REPLACE_EXISTING = 1;
-     MOVEFILE_COPY_ALLOWED = 2;
-     MOVEFILE_DELAY_UNTIL_REBOOT = 4;
-  { MsgWaitForMultipleObjects, WaitForMultipleObjectsEx  }
-     WAIT_OBJECT_0 = 0;
-     WAIT_ABANDONED_0 = $80;
-     WAIT_TIMEOUT = $102;
-     WAIT_IO_COMPLETION = $c0;
-     WAIT_ABANDONED = $80;
-     WAIT_FAILED = $ffffffff;
-     MAXIMUM_WAIT_OBJECTS = $40;     //winnt
-     MAXIMUM_SUSPEND_COUNT = MAXCHAR;    //~winnt
-  { MultiByteToWideChar  }
-     MB_PRECOMPOSED = 1;
-     MB_COMPOSITE = 2;
-     MB_ERR_INVALID_CHARS = 8;
-     MB_USEGLYPHCHARS = 4;
-  { PostMessage  }
-    { was #define dname def_expr }
-    HWND_BROADCAST              = HWND($FFFF);
-
-  const
-  { PropertySheet  }
-     IS_PSREBOOTSYSTEM = 3;
-     IS_PSRESTARTWINDOWS = 2;
-  { PropSheetPageProc  }
-     PSPCB_CREATE = 2;
-     PSPCB_RELEASE = 1;
-  { PurgeComm  }
-     PURGE_TXABORT = 1;
-     PURGE_RXABORT = 2;
-     PURGE_TXCLEAR = 4;
-     PURGE_RXCLEAR = 8;
-  { QueryServiceObjectSecurity  }
-     OWNER_SECURITY_INFORMATION = $1;
-     GROUP_SECURITY_INFORMATION = $2;
-     DACL_SECURITY_INFORMATION = $4;
-     SACL_SECURITY_INFORMATION = $8;
-  { RedrawWindow  }
-     RDW_ERASE = 4;
-     RDW_FRAME = 1024;
-     RDW_INTERNALPAINT = 2;
-     RDW_INVALIDATE = 1;
-     RDW_NOERASE = 32;
-     RDW_NOFRAME = 2048;
-     RDW_NOINTERNALPAINT = 16;
-     RDW_VALIDATE = 8;
-     RDW_ERASENOW = 512;
-     RDW_UPDATENOW = 256;
-     RDW_ALLCHILDREN = 128;
-     RDW_NOCHILDREN = 64;
-  { RegCreateKey  }
-     HKEY_CLASSES_ROOT           = HKEY($80000000);
-     HKEY_CURRENT_USER           = HKEY($80000001);
-     HKEY_LOCAL_MACHINE          = HKEY($80000002);
-     HKEY_USERS                  = HKEY($80000003);
-     HKEY_PERFORMANCE_DATA       = HKEY($80000004);
-     HKEY_CURRENT_CONFIG         = HKEY($80000005);
-     HKEY_DYN_DATA               = HKEY($80000006);
-
-  { RegCreateKeyEx  }
-
-  const
-     REG_OPTION_VOLATILE = $1;
-     REG_OPTION_NON_VOLATILE = 0;
-     REG_CREATED_NEW_KEY = $1;
-     REG_OPENED_EXISTING_KEY = $2;
-  { RegEnumValue  }
-     REG_BINARY = 3;
-     REG_DWORD = 4;
-     REG_DWORD_LITTLE_ENDIAN = 4;
-     REG_DWORD_BIG_ENDIAN = 5;
-     REG_EXPAND_SZ = 2;
-     REG_FULL_RESOURCE_DESCRIPTOR = 9;
-     REG_LINK = 6;
-     REG_MULTI_SZ = 7;
-     REG_NONE = 0;
-     REG_RESOURCE_LIST = 8;
-     REG_RESOURCE_REQUIREMENTS_LIST = 10;
-     REG_SZ = 1;
-  { RegisterHotKey  }
-     MOD_ALT = 1;
-     MOD_CONTROL = 2;
-     MOD_SHIFT = 4;
-     MOD_WIN = 8;
-     IDHOT_SNAPDESKTOP = -(2);
-     IDHOT_SNAPWINDOW = -(1);
-  { RegNotifyChangeKeyValue  }
-     REG_NOTIFY_CHANGE_NAME = $1;
-     REG_NOTIFY_CHANGE_ATTRIBUTES = $2;
-     REG_NOTIFY_CHANGE_LAST_SET = $4;
-     REG_NOTIFY_CHANGE_SECURITY = $8;
-  { ScrollWindowEx  }
-     SW_ERASE = 4;
-     SW_INVALIDATE = 2;
-     SW_SCROLLCHILDREN = 1;
-  { SendMessageTimeout  }
-     SMTO_ABORTIFHUNG = 2;
-     SMTO_BLOCK = 1;
-     SMTO_NORMAL = 0;
-  { SetBkMode  }
-     OPAQUE = 2;
-     TRANSPARENT = 1;
-  { SetDebugErrorLevel  }
-     SLE_ERROR = 1;
-     SLE_MINORERROR = 2;
-     SLE_WARNING = 3;
-  { SetErrorMode  }
-     SEM_FAILCRITICALERRORS = 1;
-     SEM_NOALIGNMENTFAULTEXCEPT = 4;
-     SEM_NOGPFAULTERRORBOX = 2;
-     SEM_NOOPENFILEERRORBOX = 32768;
-  { SetICMMode  }
-     ICM_ON = 2;
-     ICM_OFF = 1;
-     ICM_QUERY = 3;
-  { SetJob  }
-  { Locale Information  }
-     LOCALE_ILANGUAGE = 1;
-     LOCALE_SLANGUAGE = 2;
-     LOCALE_SENGLANGUAGE = 4097;
-     LOCALE_SABBREVLANGNAME = 3;
-     LOCALE_SNATIVELANGNAME = 4;
-     LOCALE_ICOUNTRY = 5;
-     LOCALE_SCOUNTRY = 6;
-     LOCALE_SENGCOUNTRY = 4098;
-     LOCALE_SABBREVCTRYNAME = 7;
-     LOCALE_SNATIVECTRYNAME = 8;
-     LOCALE_IDEFAULTLANGUAGE = 9;
-     LOCALE_IDEFAULTCOUNTRY = 10;
-     LOCALE_IDEFAULTANSICODEPAGE = 4100;
-     LOCALE_IDEFAULTCODEPAGE = 11;
-     LOCALE_SLIST = 12;
-     LOCALE_IMEASURE = 13;
-     LOCALE_SDECIMAL = 14;
-     LOCALE_STHOUSAND = 15;
-     LOCALE_SGROUPING = 16;
-     LOCALE_IDIGITS = 17;
-     LOCALE_ILZERO = 18;
-     LOCALE_INEGNUMBER = 4112;
-     LOCALE_SCURRENCY = 20;
-     LOCALE_SMONDECIMALSEP = 22;
-     LOCALE_SMONTHOUSANDSEP = 23;
-     LOCALE_SMONGROUPING = 24;
-     LOCALE_ICURRDIGITS = 25;
-     LOCALE_ICURRENCY = 27;
-     LOCALE_INEGCURR = 28;
-     LOCALE_SDATE = 29;
-     LOCALE_STIME = 30;
-     LOCALE_STIMEFORMAT = 4099;
-     LOCALE_SSHORTDATE = 31;
-     LOCALE_SLONGDATE = 32;
-     LOCALE_IDATE = 33;
-     LOCALE_ILDATE = 34;
-     LOCALE_ITIME = 35;
-     LOCALE_ITLZERO = 37;
-     LOCALE_IDAYLZERO = 38;
-     LOCALE_IMONLZERO = 39;
-     LOCALE_S1159 = 40;
-     LOCALE_S2359 = 41;
-     LOCALE_ICALENDARTYPE = 4105;
-     LOCALE_IOPTIONALCALENDAR = 4107;
-     LOCALE_IFIRSTDAYOFWEEK = 4108;
-     LOCALE_IFIRSTWEEKOFYEAR = 4109;
-     LOCALE_SDAYNAME1 = 42;
-     LOCALE_SDAYNAME2 = 43;
-     LOCALE_SDAYNAME3 = 44;
-     LOCALE_SDAYNAME4 = 45;
-     LOCALE_SDAYNAME5 = 46;
-     LOCALE_SDAYNAME6 = 47;
-     LOCALE_SDAYNAME7 = 48;
-     LOCALE_SABBREVDAYNAME1 = 49;
-     LOCALE_SABBREVDAYNAME2 = 50;
-     LOCALE_SABBREVDAYNAME3 = 51;
-     LOCALE_SABBREVDAYNAME4 = 52;
-     LOCALE_SABBREVDAYNAME5 = 53;
-     LOCALE_SABBREVDAYNAME6 = 54;
-     LOCALE_SABBREVDAYNAME7 = 55;
-     LOCALE_SMONTHNAME1 = 56;
-     LOCALE_SMONTHNAME2 = 57;
-     LOCALE_SMONTHNAME3 = 58;
-     LOCALE_SMONTHNAME4 = 59;
-     LOCALE_SMONTHNAME5 = 60;
-     LOCALE_SMONTHNAME6 = 61;
-     LOCALE_SMONTHNAME7 = 62;
-     LOCALE_SMONTHNAME8 = 63;
-     LOCALE_SMONTHNAME9 = 64;
-     LOCALE_SMONTHNAME10 = 65;
-     LOCALE_SMONTHNAME11 = 66;
-     LOCALE_SMONTHNAME12 = 67;
-     LOCALE_SMONTHNAME13 = 4110;
-     LOCALE_SABBREVMONTHNAME1 = 68;
-     LOCALE_SABBREVMONTHNAME2 = 69;
-     LOCALE_SABBREVMONTHNAME3 = 70;
-     LOCALE_SABBREVMONTHNAME4 = 71;
-     LOCALE_SABBREVMONTHNAME5 = 72;
-     LOCALE_SABBREVMONTHNAME6 = 73;
-     LOCALE_SABBREVMONTHNAME7 = 74;
-     LOCALE_SABBREVMONTHNAME8 = 75;
-     LOCALE_SABBREVMONTHNAME9 = 76;
-     LOCALE_SABBREVMONTHNAME10 = 77;
-     LOCALE_SABBREVMONTHNAME11 = 78;
-     LOCALE_SABBREVMONTHNAME12 = 79;
-     LOCALE_SABBREVMONTHNAME13 = 4111;
-     LOCALE_SPOSITIVESIGN = 80;
-     LOCALE_SNEGATIVESIGN = 81;
-     LOCALE_IPOSSIGNPOSN = 82;
-     LOCALE_INEGSIGNPOSN = 83;
-     LOCALE_IPOSSYMPRECEDES = 84;
-     LOCALE_IPOSSEPBYSPACE = 85;
-     LOCALE_INEGSYMPRECEDES = 86;
-     LOCALE_INEGSEPBYSPACE = 87;
-     LOCALE_NOUSEROVERRIDE = $80000000;
-     LOCALE_USE_CP_ACP     = $40000000;   // use the system ACP
-     LOCALE_RETURN_NUMBER  = $20000000;   // return number instead
-  { Calendar Type Information  }
-     CAL_ICALINTVALUE = 1;
-     CAL_IYEAROFFSETRANGE = 3;
-     CAL_SABBREVDAYNAME1 = 14;
-     CAL_SABBREVDAYNAME2 = 15;
-     CAL_SABBREVDAYNAME3 = 16;
-     CAL_SABBREVDAYNAME4 = 17;
-     CAL_SABBREVDAYNAME5 = 18;
-     CAL_SABBREVDAYNAME6 = 19;
-     CAL_SABBREVDAYNAME7 = 20;
-     CAL_SABBREVMONTHNAME1 = 34;
-     CAL_SABBREVMONTHNAME2 = 35;
-     CAL_SABBREVMONTHNAME3 = 36;
-     CAL_SABBREVMONTHNAME4 = 37;
-     CAL_SABBREVMONTHNAME5 = 38;
-     CAL_SABBREVMONTHNAME6 = 39;
-     CAL_SABBREVMONTHNAME7 = 40;
-     CAL_SABBREVMONTHNAME8 = 41;
-     CAL_SABBREVMONTHNAME9 = 42;
-     CAL_SABBREVMONTHNAME10 = 43;
-     CAL_SABBREVMONTHNAME11 = 44;
-     CAL_SABBREVMONTHNAME12 = 45;
-     CAL_SABBREVMONTHNAME13 = 46;
-     CAL_SCALNAME = 2;
-     CAL_SDAYNAME1 = 7;
-     CAL_SDAYNAME2 = 8;
-     CAL_SDAYNAME3 = 9;
-     CAL_SDAYNAME4 = 10;
-     CAL_SDAYNAME5 = 11;
-     CAL_SDAYNAME6 = 12;
-     CAL_SDAYNAME7 = 13;
-     CAL_SERASTRING = 4;
-     CAL_SLONGDATE = 6;
-     CAL_SMONTHNAME1 = 21;
-     CAL_SMONTHNAME2 = 22;
-     CAL_SMONTHNAME3 = 23;
-     CAL_SMONTHNAME4 = 24;
-     CAL_SMONTHNAME5 = 25;
-     CAL_SMONTHNAME6 = 26;
-     CAL_SMONTHNAME7 = 27;
-     CAL_SMONTHNAME8 = 28;
-     CAL_SMONTHNAME9 = 29;
-     CAL_SMONTHNAME10 = 30;
-     CAL_SMONTHNAME11 = 31;
-     CAL_SMONTHNAME12 = 32;
-     CAL_SMONTHNAME13 = 33;
-     CAL_SSHORTDATE = 5;
-  { SetProcessWorkingSetSize  }
-     PROCESS_SET_QUOTA = 256;
-  { SetPrinter  }
-  { SetService  }
-  { SetStretchBltMode  }
-     BLACKONWHITE = 1;
-     COLORONCOLOR = 3;
-     HALFTONE = 4;
-     STRETCH_ANDSCANS = 1;
-     STRETCH_DELETESCANS = 3;
-     STRETCH_HALFTONE = 4;
-     STRETCH_ORSCANS = 2;
-     WHITEONBLACK = 2;
-  { SetSystemCursor  }
-     OCR_NORMAL = 32512;
-     OCR_IBEAM = 32513;
-     OCR_WAIT = 32514;
-     OCR_CROSS = 32515;
-     OCR_UP = 32516;
-     OCR_SIZE = 32640;
-     OCR_ICON = 32641;
-     OCR_SIZENWSE = 32642;
-     OCR_SIZENESW = 32643;
-     OCR_SIZEWE = 32644;
-     OCR_SIZENS = 32645;
-     OCR_SIZEALL = 32646;
-     OCR_NO = 32648;
-     OCR_APPSTARTING = 32650;
-  { SetTapePosition  }
-     TAPE_ABSOLUTE_BLOCK = $1;
-     TAPE_LOGICAL_BLOCK = $2;
-     TAPE_REWIND = 0;
-     TAPE_SPACE_END_OF_DATA = $4;
-     TAPE_SPACE_FILEMARKS = $6;
-     TAPE_SPACE_RELATIVE_BLOCKS = $5;
-     TAPE_SPACE_SEQUENTIAL_FMKS = $7;
-     TAPE_SPACE_SEQUENTIAL_SMKS = $9;
-     TAPE_SPACE_SETMARKS = $8;
-  { SetUnhandledExceptionFilter  }
-     EXCEPTION_EXECUTE_HANDLER = 1;
-     EXCEPTION_CONTINUE_EXECUTION = -(1);
-     EXCEPTION_CONTINUE_SEARCH = 0;
-  { SetWindowPos, DeferWindowPos  }
-     HWND_BOTTOM = HWND(1);
-     HWND_NOTOPMOST = HWND(-(2));
-     HWND_TOP = HWND(0);
-     HWND_TOPMOST = HWND(-(1));
-
-
-  const
-     SWP_DRAWFRAME = 32;
-     SWP_FRAMECHANGED = 32;
-     SWP_HIDEWINDOW = 128;
-     SWP_NOACTIVATE = 16;
-     SWP_NOCOPYBITS = 256;
-     SWP_NOMOVE = 2;
-     SWP_NOSIZE = 1;
-     SWP_NOREDRAW = 8;
-     SWP_NOZORDER = 4;
-     SWP_SHOWWINDOW = 64;
-     SWP_NOOWNERZORDER = 512;
-     SWP_NOREPOSITION = 512;
-     SWP_NOSENDCHANGING = 1024;
-  { SHAddToRecentDocs  }
-  { SHAppBarMessage  }
-  { SHChangeNotify  }
-  { ShellProc  }
-     HSHELL_ACTIVATESHELLWINDOW = 3;
-     HSHELL_GETMINRECT = 5;
-     HSHELL_LANGUAGE = 8;
-     HSHELL_REDRAW = 6;
-     HSHELL_TASKMAN = 7;
-     HSHELL_WINDOWACTIVATED = 4;
-     HSHELL_WINDOWCREATED = 1;
-     HSHELL_WINDOWDESTROYED = 2;
-  { SHGetFileInfo  }
-  // supported SHGetFileInfo input flags
-     SHGFI_ICON              = $000000100;     // get icon
-     SHGFI_DISPLAYNAME       = $000000200;     // get display name
-     SHGFI_TYPENAME          = $000000400;     // get type name
-     SHGFI_ATTRIBUTES        = $000000800;     // get attributes
-     SHGFI_SYSICONINDEX      = $000004000;     // get system icon index
-     SHGFI_LARGEICON         = $000000000;     // get large icon
-     SHGFI_SMALLICON         = $000000001;     // get small icon
-     SHGFI_USEFILEATTRIBUTES = $000000010;     // use passed dwFileAttribute
-     SHGFI_PIDL              = $000000008;     // pszPath is a pidl
-// supported SHGetFileInfo output attributes
-     SFGAO_LINK              = $00010000;     // Shortcut (link)
-     SFGAO_READONLY          = $00040000;     // read-only
-     SFGAO_FOLDER            = $20000000;     // It's a folder.
-  { SHGetSpecialFolderLocation  }
-  { ShowWindow  }
-     SW_HIDE = 0;
-     SW_MAXIMIZE = 3;
-     SW_MINIMIZE = 6;
-     SW_NORMAL = 1;
-     SW_RESTORE = 9;
-     SW_SHOW = 5;
-     SW_SHOWDEFAULT = 10;
-     SW_SHOWMAXIMIZED = 3;
-     SW_SHOWMINIMIZED = 2;
-     SW_SHOWMINNOACTIVE = 7;
-     SW_SHOWNA = 8;
-     SW_SHOWNOACTIVATE = 4;
-     SW_SHOWNORMAL = 1;
-     WPF_RESTORETOMAXIMIZED = 2;
-     WPF_SETMINPOSITION = 1;
-  { SID }
-     ////////////////////////////////////////////////////////////////////////
-     //                                                                    //
-     //              Security Id     (SID)                                 //
-     //                                                                    //
-     ////////////////////////////////////////////////////////////////////////
-     //
-     //
-     // Pictorially the structure of an SID is as follows:
-     //
-     //         1   1   1   1   1   1
-     //         5   4   3   2   1   0   9   8   7   6   5   4   3   2   1   0
-     //      +---------------------------------------------------------------+
-     //      |      SubAuthorityCount        |Reserved1 (SBZ)|   Revision    |
-     //      +---------------------------------------------------------------+
-     //      |                   IdentifierAuthority[0]                      |
-     //      +---------------------------------------------------------------+
-     //      |                   IdentifierAuthority[1]                      |
-     //      +---------------------------------------------------------------+
-     //      |                   IdentifierAuthority[2]                      |
-     //      +---------------------------------------------------------------+
-     //      |                                                               |
-     //      +- -  -  -  -  -  -  -  SubAuthority[]  -  -  -  -  -  -  -  - -+
-     //      |                                                               |
-     //      +---------------------------------------------------------------+
-     //
-     //
-     SID_REVISION =1;    // Current revision level
-     SID_MAX_SUB_AUTHORITIES = 15;
-     SID_RECOMMENDED_SUB_AUTHORITIES = 1;    // Will change to around 6
-                                             // in a future release.
-
-
-  { Sleep  }
-     INFINITE = $FFFFFFFF;
-  { SystemParametersInfo  }
-     SPI_GETACCESSTIMEOUT = 60;
-     SPI_GETANIMATION = 72;
-     SPI_GETBEEP = 1;
-     SPI_GETBORDER = 5;
-     SPI_GETDEFAULTINPUTLANG = 89;
-     SPI_GETDRAGFULLWINDOWS = 38;
-     SPI_GETFASTTASKSWITCH = 35;
-     SPI_GETFILTERKEYS = 50;
-     SPI_GETFONTSMOOTHING = 74;
-     SPI_GETGRIDGRANULARITY = 18;
-     SPI_GETHIGHCONTRAST = 66;
-     SPI_GETICONMETRICS = 45;
-     SPI_GETICONTITLELOGFONT = 31;
-     SPI_GETICONTITLEWRAP = 25;
-     SPI_GETKEYBOARDDELAY = 22;
-     SPI_GETKEYBOARDPREF = 68;
-     SPI_GETKEYBOARDSPEED = 10;
-     SPI_GETLOWPOWERACTIVE = 83;
-     SPI_GETLOWPOWERTIMEOUT = 79;
-     SPI_GETMENUDROPALIGNMENT = 27;
-     SPI_GETMINIMIZEDMETRICS = 43;
-     SPI_GETMOUSE = 3;
-     SPI_GETMOUSEKEYS = 54;
-     SPI_GETMOUSETRAILS = 94;
-     SPI_GETNONCLIENTMETRICS = 41;
-     SPI_GETPOWEROFFACTIVE = 84;
-     SPI_GETPOWEROFFTIMEOUT = 80;
-     SPI_GETSCREENREADER = 70;
-     SPI_GETSCREENSAVEACTIVE = 16;
-     SPI_GETSCREENSAVETIMEOUT = 14;
-     SPI_GETSERIALKEYS = 62;
-     SPI_GETSHOWSOUNDS = 56;
-     SPI_GETSOUNDSENTRY = 64;
-     SPI_GETSTICKYKEYS = 58;
-     SPI_GETTOGGLEKEYS = 52;
-     SPI_GETWINDOWSEXTENSION = 92;
-     SPI_GETWORKAREA = 48;
-     SPI_ICONHORIZONTALSPACING = 13;
-     SPI_ICONVERTICALSPACING = 24;
-     SPI_LANGDRIVER = 12;
-     SPI_SCREENSAVERRUNNING = 97;
-     SPI_SETACCESSTIMEOUT = 61;
-     SPI_SETANIMATION = 73;
-     SPI_SETBEEP = 2;
-     SPI_SETBORDER = 6;
-     SPI_SETDEFAULTINPUTLANG = 90;
-     SPI_SETDESKPATTERN = 21;
-     SPI_SETDESKWALLPAPER = 20;
-     SPI_SETDOUBLECLICKTIME = 32;
-     SPI_SETDOUBLECLKHEIGHT = 30;
-     SPI_SETDOUBLECLKWIDTH = 29;
-     SPI_SETDRAGFULLWINDOWS = 37;
-     SPI_SETDRAGHEIGHT = 77;
-     SPI_SETDRAGWIDTH = 76;
-     SPI_SETFASTTASKSWITCH = 36;
-     SPI_SETFILTERKEYS = 51;
-     SPI_SETFONTSMOOTHING = 75;
-     SPI_SETGRIDGRANULARITY = 19;
-     SPI_SETHANDHELD = 78;
-     SPI_SETHIGHCONTRAST = 67;
-     SPI_SETICONMETRICS = 46;
-     SPI_SETICONTITLELOGFONT = 34;
-     SPI_SETICONTITLEWRAP = 26;
-     SPI_SETKEYBOARDDELAY = 23;
-     SPI_SETKEYBOARDPREF = 69;
-     SPI_SETKEYBOARDSPEED = 11;
-     SPI_SETLANGTOGGLE = 91;
-     SPI_SETLOWPOWERACTIVE = 85;
-     SPI_SETLOWPOWERTIMEOUT = 81;
-     SPI_SETMENUDROPALIGNMENT = 28;
-     SPI_SETMINIMIZEDMETRICS = 44;
-     SPI_SETMOUSE = 4;
-     SPI_SETMOUSEBUTTONSWAP = 33;
-     SPI_SETMOUSEKEYS = 55;
-     SPI_SETMOUSETRAILS = 93;
-     SPI_SETNONCLIENTMETRICS = 42;
-     SPI_SETPENWINDOWS = 49;
-     SPI_SETPOWEROFFACTIVE = 86;
-     SPI_SETPOWEROFFTIMEOUT = 82;
-     SPI_SETSCREENREADER = 71;
-     SPI_SETSCREENSAVEACTIVE = 17;
-     SPI_SETSCREENSAVETIMEOUT = 15;
-     SPI_SETSERIALKEYS = 63;
-     SPI_SETSHOWSOUNDS = 57;
-     SPI_SETSOUNDSENTRY = 65;
-     SPI_SETSTICKYKEYS = 59;
-     SPI_SETTOGGLEKEYS = 53;
-     SPI_SETWORKAREA = 47;
-     SPI_SETBATTERYIDLETIMEOUT = 251;
-     SPI_GETBATTERYIDLETIMEOUT = 252;
-     SPI_SETEXTERNALIDLETIMEOUT = 253;
-     SPI_GETEXTERNALIDLETIMEOUT = 254;
-     SPI_SETWAKEUPIDLETIMEOUT = 255;
-     SPI_GETWAKEUPIDLETIMEOUT = 256;
-     SPI_GETPLATFORMTYPE = 257;
-     SPI_GETOEMINFO = 258;
-
-     SPIF_UPDATEINIFILE = 1;
-     SPIF_SENDWININICHANGE = 2;
-     SPIF_SENDCHANGE = 2;
-  { TrackPopupMenu, TrackPopMenuEx  }
-     TPM_CENTERALIGN = $4;
-     TPM_LEFTALIGN = 0;
-     TPM_RIGHTALIGN = $8;
-     TPM_LEFTBUTTON = 0;
-     TPM_RIGHTBUTTON = $2;
-     TPM_HORIZONTAL = 0;
-     TPM_VERTICAL = $40;
-  { TranslateCharsetInfo  }
-     TCI_SRCCHARSET = 1;
-     TCI_SRCCODEPAGE = 2;
-     TCI_SRCFONTSIG = 3;
-  { WideCharToMultiByte  }
-     WC_COMPOSITECHECK = 512;
-     WC_DISCARDNS = 16;
-     WC_SEPCHARS = 32;
-     WC_DEFAULTCHAR = 64;
-  { WinHelp  }
-     HELP_COMMAND = $102;
-     HELP_CONTENTS = $3;
-     HELP_CONTEXT = $1;
-     HELP_CONTEXTPOPUP = $8;
-     HELP_FORCEFILE = $9;
-     HELP_HELPONHELP = $4;
-     HELP_INDEX = $3;
-     HELP_KEY = $101;
-     HELP_MULTIKEY = $201;
-     HELP_PARTIALKEY = $105;
-     HELP_QUIT = $2;
-     HELP_SETCONTENTS = $5;
-     HELP_SETINDEX = $5;
-     HELP_CONTEXTMENU = $a;
-     HELP_FINDER = $b;
-     HELP_WM_HELP = $c;
-     HELP_TCARD = $8000;
-     HELP_TCARD_DATA = $10;
-     HELP_TCARD_OTHER_CALLER = $11;
-  { WNetAddConnectino2  }
-     CONNECT_UPDATE_PROFILE = 1;
-  { WNetConnectionDialog, WNetDisconnectDialog, WNetOpenEnum  }
-     RESOURCETYPE_DISK = 1;
-     RESOURCETYPE_PRINT = 2;
-     RESOURCETYPE_ANY = 0;
-     RESOURCE_CONNECTED = 1;
-     RESOURCE_GLOBALNET = 2;
-     RESOURCE_REMEMBERED = 3;
-     RESOURCEUSAGE_CONNECTABLE = 1;
-     RESOURCEUSAGE_CONTAINER = 2;
-  { WNetGetResourceInformation, WNetGetResourceParent  }
-     WN_BAD_NETNAME = $43;
-     WN_EXTENDED_ERROR = $4b8;
-     WN_MORE_DATA = $ea;
-     WN_NO_NETWORK = $4c6;
-     WN_SUCCESS = 0;
-     WN_ACCESS_DENIED = $5;
-     WN_BAD_PROVIDER = $4b4;
-     WN_NOT_AUTHENTICATED = $4dc;
-  { WNetGetUniversalName  }
-     UNIVERSAL_NAME_INFO_LEVEL = 1;
-     REMOTE_NAME_INFO_LEVEL = 2;
-  { GetExitCodeThread  }
-     STILL_ACTIVE = $103;
-
-  { kfuncs consts }  //+kfuncs
-
-    {$ifdef CPUARM}
-      PUserKData = $FFFFC800;
-    {$else}
-      PUserKData = $00005800;
-    {$endif CPUARM}
-
-     EVENT_PULSE = 1;
-     EVENT_RESET = 2;
-     EVENT_SET = 3;
-
-     SYSHANDLE_OFFSET = $004;
-     NUM_SYS_HANDLES  = 32;
-     SYS_HANDLE_BASE  = 64;
-     SH_WIN32         = 0;
-     SH_CURTHREAD     = 1;
-     SH_CURPROC       = 2;
-     SH_LAST_NOTIFY   = 16; // Last set notified on Thread/Process Termination
-     SH_GDI           = 16;
-     SH_WMGR          = 17;
-     SH_WNET	      = 18; // WNet APIs for network redirector
-     SH_COMM          = 19; // Communications not "COM"
-     SH_FILESYS_APIS  = 20; // File system APIS
-     SH_SHELL         = 21;
-     SH_DEVMGR_APIS   = 22; // File system device manager
-     SH_TAPI	      = 23;
-     SH_PATCHER	      = 24;
-     SH_SERVICES      = 26;
-     SH_LASTRESERVED  = 26;
-
-     TLS_FUNCALLOC    = 0;
-     TLS_FUNCFREE     = 1;
-
-  { COMMPROP structure  }
-     SP_SERIALCOMM = $1;
-     BAUD_075 = $1;
-     BAUD_110 = $2;
-     BAUD_134_5 = $4;
-     BAUD_150 = $8;
-     BAUD_300 = $10;
-     BAUD_600 = $20;
-     BAUD_1200 = $40;
-     BAUD_1800 = $80;
-     BAUD_2400 = $100;
-     BAUD_4800 = $200;
-     BAUD_7200 = $400;
-     BAUD_9600 = $800;
-     BAUD_14400 = $1000;
-     BAUD_19200 = $2000;
-     BAUD_38400 = $4000;
-     BAUD_56K = $8000;
-     BAUD_57600 = $40000;
-     BAUD_115200 = $20000;
-     BAUD_128K = $10000;
-     BAUD_USER = $10000000;
-     PST_FAX = $21;
-     PST_LAT = $101;
-     PST_MODEM = $6;
-     PST_NETWORK_BRIDGE = $100;
-     PST_PARALLELPORT = $2;
-     PST_RS232 = $1;
-     PST_RS422 = $3;
-     PST_RS423 = $4;
-     PST_RS449 = $5;
-     PST_SCANNER = $22;
-     PST_TCPIP_TELNET = $102;
-     PST_UNSPECIFIED = 0;
-     PST_X25 = $103;
-     PCF_16BITMODE = $200;
-     PCF_DTRDSR = $1;
-     PCF_INTTIMEOUTS = $80;
-     PCF_PARITY_CHECK = $8;
-     PCF_RLSD = $4;
-     PCF_RTSCTS = $2;
-     PCF_SETXCHAR = $20;
-     PCF_SPECIALCHARS = $100;
-     PCF_TOTALTIMEOUTS = $40;
-     PCF_XONXOFF = $10;
-     SP_BAUD = $2;
-     SP_DATABITS = $4;
-     SP_HANDSHAKING = $10;
-     SP_PARITY = $1;
-     SP_PARITY_CHECK = $20;
-     SP_RLSD = $40;
-     SP_STOPBITS = $8;
-     DATABITS_5 = 1;
-     DATABITS_6 = 2;
-     DATABITS_7 = 4;
-     DATABITS_8 = 8;
-     DATABITS_16 = 16;
-     DATABITS_16X = 32;
-     STOPBITS_10 = 1;
-     STOPBITS_15 = 2;
-     STOPBITS_20 = 4;
-     PARITY_NONE = 256;
-     PARITY_ODD = 512;
-     PARITY_EVEN = 1024;
-     PARITY_MARK = 2048;
-     PARITY_SPACE = 4096;
-     COMMPROP_INITIALIZED = $e73cf52e;
-  { DCB structure  }
-     CBR_110 = 110;
-     CBR_300 = 300;
-     CBR_600 = 600;
-     CBR_1200 = 1200;
-     CBR_2400 = 2400;
-     CBR_4800 = 4800;
-     CBR_9600 = 9600;
-     CBR_14400 = 14400;
-     CBR_19200 = 19200;
-     CBR_38400 = 38400;
-     CBR_56000 = 56000;
-     CBR_57600 = 57600;
-     CBR_115200 = 115200;
-     CBR_128000 = 128000;
-     CBR_256000 = 256000;
-     DTR_CONTROL_DISABLE = 0;
-     DTR_CONTROL_ENABLE = 1;
-     DTR_CONTROL_HANDSHAKE = 2;
-     RTS_CONTROL_DISABLE = 0;
-     RTS_CONTROL_ENABLE = 1;
-     RTS_CONTROL_HANDSHAKE = 2;
-     RTS_CONTROL_TOGGLE = 3;
-     EVENPARITY = 2;
-     MARKPARITY = 3;
-     NOPARITY = 0;
-     ODDPARITY = 1;
-     SPACEPARITY = 4;
-     ONESTOPBIT = 0;
-     ONE5STOPBITS = 1;
-     TWOSTOPBITS = 2;
-  { Debugging events  }
-     CREATE_PROCESS_DEBUG_EVENT = 3;
-     CREATE_THREAD_DEBUG_EVENT = 2;
-     EXCEPTION_DEBUG_EVENT = 1;
-     EXIT_PROCESS_DEBUG_EVENT = 5;
-     EXIT_THREAD_DEBUG_EVENT = 4;
-     LOAD_DLL_DEBUG_EVENT = 6;
-     OUTPUT_DEBUG_STRING_EVENT = 8;
-     UNLOAD_DLL_DEBUG_EVENT = 7;
-     RIP_EVENT = 9;
-  { PROCESS_HEAP_ENTRY structure  }
-     PROCESS_HEAP_REGION = 1;
-     PROCESS_HEAP_UNCOMMITTED_RANGE = 2;
-     PROCESS_HEAP_ENTRY_BUSY = 4;
-     PROCESS_HEAP_ENTRY_MOVEABLE = 16;
-     PROCESS_HEAP_ENTRY_DDESHARE = 32;
-  { Win32s  }
-     HINSTANCE_ERROR = 32;
-  { WIN32_STREAM_ID structure  }
-     BACKUP_DATA = 1;
-     BACKUP_EA_DATA = 2;
-     BACKUP_SECURITY_DATA = 3;
-     BACKUP_ALTERNATE_DATA = 4;
-     BACKUP_LINK = 5;
-     STREAM_MODIFIED_WHEN_READ = 1;
-     STREAM_CONTAINS_SECURITY = 2;
-  { STARTUPINFO structure  }
-     STARTF_USESHOWWINDOW = 1;
-     STARTF_USEPOSITION = 4;
-     STARTF_USESIZE = 2;
-     STARTF_USECOUNTCHARS = 8;
-     STARTF_USEFILLATTRIBUTE = 16;
-     STARTF_RUNFULLSCREEN = 32;
-     STARTF_FORCEONFEEDBACK = 64;
-     STARTF_FORCEOFFFEEDBACK = 128;
-     STARTF_USESTDHANDLES = 256;
-     STARTF_USEHOTKEY = 512;
-  { OSVERSIONINFO structure  }
-     VER_PLATFORM_WIN32s = 0;
-     VER_PLATFORM_WIN32_WINDOWS = 1;
-     VER_PLATFORM_WIN32_NT = 2;
-  { More versions }
-     VER_SERVER_NT                      = $80000000;  //winnt
-     VER_WORKSTATION_NT                 = $40000000;  //winnt
-     VER_SUITE_SMALLBUSINESS            = $00000001;  //winnt
-     VER_SUITE_ENTERPRISE               = $00000002;  //winnt
-     VER_SUITE_BACKOFFICE               = $00000004;  //winnt
-     VER_SUITE_COMMUNICATIONS           = $00000008;  //winnt
-     VER_SUITE_TERMINAL                 = $00000010;  //winnt
-     VER_SUITE_SMALLBUSINESS_RESTRICTED = $00000020;  //winnt
-     VER_SUITE_EMBEDDEDNT               = $00000040;
-     VER_SUITE_DATACENTER               = $00000080;
-     VER_SUITE_SINGLEUSERTS             = $00000100;
-     VER_SUITE_PERSONAL                 = $00000200;
-     VER_SUITE_BLADE                    = $00000400;
-     VER_SUITE_EMBEDDED_RESTRICTED      = $00000800;
-  { PROPSHEETPAGE structure  }
-     MAXPROPPAGES = 100;
-     PSP_DEFAULT = 0;
-     PSP_DLGINDIRECT = 1;
-     PSP_HASHELP = 32;
-     PSP_USECALLBACK = 128;
-     PSP_USEHICON = 2;
-     PSP_USEICONID = 4;
-     PSP_USEREFPARENT = 64;
-     PSP_USETITLE = 8;
-     PSP_RTLREADING = 16;
-     PSP_PREMATURE = $0400; //prsht
-
-  { PROPSHEETHEADER structure  }  //prsht
-     PSH_DEFAULT = 0;
-     PSH_PROPTITLE = 1;
-     PSH_USEHICON = 2;
-     PSH_USEICONID = 4;
-     PSH_PROPSHEETPAGE = 8;
-     PSH_WIZARDHASFINISH = $0010;
-     PSH_WIZARD = 32;
-     PSH_USEPSTARTPAGE = 64;
-     PSH_NOAPPLYNOW = 128;
-     PSH_USECALLBACK = 256;
-     PSH_HASHELP = 512;
-     PSH_MODELESS = 1024;
-     PSH_RTLREADING = 2048;
-     PSH_WIZARDCONTEXTHELP = $1000;
-     PSH_MAXIMIZE          = $2000;
-     PSH_NOCANCELBUTTON    = $80000000; //specific ppc
-
-     PSCB_INITIALIZED = 1;
-     PSCB_PRECREATE = 2;
-     PSCB_GETVERSION = 3;
-     PSCB_GETTITLE   = 4;
-     PSCB_GETLINKTEXT = 5;
-
-  { PSN_APPLY message  } //prsht
-     PSNRET_NOERROR = 0;
-     PSNRET_INVALID  = 1;
-     PSNRET_INVALID_NOCHANGEPAGE = 2;
-
-  { Property Sheet  }
-     PROP_SM_CXDLG = 212;
-     PROP_SM_CYDLG = 188;
-     PROP_MED_CXDLG = 227;
-     PROP_MED_CYDLG = 215;
-     PROP_LG_CXDLG = 252;
-     PROP_LG_CYDLG = 218;
-
-     PSBTN_APPLYNOW = 4;
-     PSBTN_BACK = 0;
-     PSBTN_CANCEL = 5;
-     PSBTN_FINISH = 2;
-     PSBTN_HELP = 6;
-     PSBTN_MAX  = 6; //prsht
-     PSBTN_NEXT = 1;
-     PSBTN_OK = 3;
-
-     PSWIZB_BACK = 1;
-     PSWIZB_NEXT = 2;
-     PSWIZB_FINISH = 4;
-     PSWIZB_DISABLEDFINISH = 8;
-
-     ID_PSREBOOTSYSTEM = 3;
-     ID_PSRESTARTWINDOWS = 2;
-     WIZ_BODYCX = 184;
-     WIZ_BODYX = 92;
-     WIZ_CXBMP = 80;
-     WIZ_CXDLG = 276;
-     WIZ_CYDLG = 140;
-
-  { VX_FIXEDFILEINFO structure  }
-     VS_FILE_INFO = MAKEINTRESOURCE(16);
-
-
-  const
-     VS_VERSION_INFO = 1;
-     VS_FF_DEBUG = $1;
-     VS_FF_INFOINFERRED = $10;
-     VS_FF_PATCHED = $4;
-     VS_FF_PRERELEASE = $2;
-     VS_FF_PRIVATEBUILD = $8;
-     VS_FF_SPECIALBUILD = $20;
-     VOS_UNKNOWN = 0;
-     VOS_DOS = $10000;
-     VOS_OS216 = $20000;
-     VOS_OS232 = $30000;
-     VOS_NT = $40000;
-     VOS_DOS_WINDOWS16 = $10001;
-     VOS_DOS_WINDOWS32 = $10004;
-     VOS_OS216_PM16 = $20002;
-     VOS_OS232_PM32 = $30003;
-     VOS_NT_WINDOWS32 = $40004;
-     VFT_UNKNOWN = 0;
-     VFT_APP = $1;
-     VFT_DLL = $2;
-     VFT_DRV = $3;
-     VFT_FONT = $4;
-     VFT_VXD = $5;
-     VFT_STATIC_LIB = $7;
-     VFT2_UNKNOWN = 0;
-     VFT2_DRV_PRINTER = $1;
-     VFT2_DRV_KEYBOARD = $2;
-     VFT2_DRV_LANGUAGE = $3;
-     VFT2_DRV_DISPLAY = $4;
-     VFT2_DRV_MOUSE = $5;
-     VFT2_DRV_NETWORK = $6;
-     VFT2_DRV_SYSTEM = $7;
-     VFT2_DRV_INSTALLABLE = $8;
-     VFT2_DRV_SOUND = $9;
-     VFT2_FONT_RASTER = $1;
-     VFT2_FONT_VECTOR = $2;
-     VFT2_FONT_TRUETYPE = $3;
-  { PANOSE structure  }
-     PAN_ANY = 0;
-     PAN_NO_FIT = 1;
-     PAN_FAMILY_TEXT_DISPLAY = 2;
-     PAN_FAMILY_SCRIPT = 3;
-     PAN_FAMILY_DECORATIVE = 4;
-     PAN_FAMILY_PICTORIAL = 5;
-     PAN_SERIF_COVE = 2;
-     PAN_SERIF_OBTUSE_COVE = 3;
-     PAN_SERIF_SQUARE_COVE = 4;
-     PAN_SERIF_OBTUSE_SQUARE_COVE = 5;
-     PAN_SERIF_SQUARE = 6;
-     PAN_SERIF_THIN = 7;
-     PAN_SERIF_BONE = 8;
-     PAN_SERIF_EXAGGERATED = 9;
-     PAN_SERIF_TRIANGLE = 10;
-     PAN_SERIF_NORMAL_SANS = 11;
-     PAN_SERIF_OBTUSE_SANS = 12;
-     PAN_SERIF_PERP_SANS = 13;
-     PAN_SERIF_FLARED = 14;
-     PAN_SERIF_ROUNDED = 15;
-     PAN_WEIGHT_VERY_LIGHT = 2;
-     PAN_WEIGHT_LIGHT = 3;
-     PAN_WEIGHT_THIN = 4;
-     PAN_WEIGHT_BOOK = 5;
-     PAN_WEIGHT_MEDIUM = 6;
-     PAN_WEIGHT_DEMI = 7;
-     PAN_WEIGHT_BOLD = 8;
-     PAN_WEIGHT_HEAVY = 9;
-     PAN_WEIGHT_BLACK = 10;
-     PAN_WEIGHT_NORD = 11;
-     PAN_PROP_OLD_STYLE = 2;
-     PAN_PROP_MODERN = 3;
-     PAN_PROP_EVEN_WIDTH = 4;
-     PAN_PROP_EXPANDED = 5;
-     PAN_PROP_CONDENSED = 6;
-     PAN_PROP_VERY_EXPANDED = 7;
-     PAN_PROP_VERY_CONDENSED = 8;
-     PAN_PROP_MONOSPACED = 9;
-     PAN_CONTRAST_NONE = 2;
-     PAN_CONTRAST_VERY_LOW = 3;
-     PAN_CONTRAST_LOW = 4;
-     PAN_CONTRAST_MEDIUM_LOW = 5;
-     PAN_CONTRAST_MEDIUM = 6;
-     PAN_CONTRAST_MEDIUM_HIGH = 7;
-     PAN_CONTRAST_HIGH = 8;
-     PAN_CONTRAST_VERY_HIGH = 9;
-     PAN_STROKE_GRADUAL_DIAG = 2;
-     PAN_STROKE_GRADUAL_TRAN = 3;
-     PAN_STROKE_GRADUAL_VERT = 4;
-     PAN_STROKE_GRADUAL_HORZ = 5;
-     PAN_STROKE_RAPID_VERT = 6;
-     PAN_STROKE_RAPID_HORZ = 7;
-     PAN_STROKE_INSTANT_VERT = 8;
-     PAN_STRAIGHT_ARMS_HORZ = 2;
-     PAN_STRAIGHT_ARMS_WEDGE = 3;
-     PAN_STRAIGHT_ARMS_VERT = 4;
-     PAN_STRAIGHT_ARMS_SINGLE_SERIF = 5;
-     PAN_STRAIGHT_ARMS_DOUBLE_SERIF = 6;
-     PAN_BENT_ARMS_HORZ = 7;
-     PAN_BENT_ARMS_VERT = 9;
-     PAN_BENT_ARMS_WEDGE = 8;
-     PAN_BENT_ARMS_SINGLE_SERIF = 10;
-     PAN_BENT_ARMS_DOUBLE_SERIF = 11;
-     PAN_LETT_NORMAL_CONTACT = 2;
-     PAN_LETT_NORMAL_WEIGHTED = 3;
-     PAN_LETT_NORMAL_BOXED = 4;
-     PAN_LETT_NORMAL_FLATTENED = 5;
-     PAN_LETT_NORMAL_ROUNDED = 6;
-     PAN_LETT_NORMAL_OFF_CENTER = 7;
-     PAN_LETT_NORMAL_SQUARE = 8;
-     PAN_LETT_OBLIQUE_CONTACT = 9;
-     PAN_LETT_OBLIQUE_WEIGHTED = 10;
-     PAN_LETT_OBLIQUE_BOXED = 11;
-     PAN_LETT_OBLIQUE_FLATTENED = 12;
-     PAN_LETT_OBLIQUE_ROUNDED = 13;
-     PAN_LETT_OBLIQUE_OFF_CENTER = 14;
-     PAN_LETT_OBLIQUE_SQUARE = 15;
-     PAN_MIDLINE_STANDARD_TRIMMED = 2;
-     PAN_MIDLINE_STANDARD_POINTED = 3;
-     PAN_MIDLINE_STANDARD_SERIFED = 4;
-     PAN_MIDLINE_HIGH_TRIMMED = 5;
-     PAN_MIDLINE_HIGH_POINTED = 6;
-     PAN_MIDLINE_HIGH_SERIFED = 7;
-     PAN_MIDLINE_CONSTANT_TRIMMED = 8;
-     PAN_MIDLINE_CONSTANT_POINTED = 9;
-     PAN_MIDLINE_CONSTANT_SERIFED = 10;
-     PAN_MIDLINE_LOW_TRIMMED = 11;
-     PAN_MIDLINE_LOW_POINTED = 12;
-     PAN_MIDLINE_LOW_SERIFED = 13;
-     PAN_XHEIGHT_CONSTANT_SMALL = 2;
-     PAN_XHEIGHT_CONSTANT_STD = 3;
-     PAN_XHEIGHT_CONSTANT_LARGE = 4;
-     PAN_XHEIGHT_DUCKING_SMALL = 5;
-     PAN_XHEIGHT_DUCKING_STD = 6;
-     PAN_XHEIGHT_DUCKING_LARGE = 7;
-  { PALETTENTRY structure  }
-     PC_EXPLICIT = 2;
-     PC_NOCOLLAPSE = 4;
-     PC_RESERVED = 1;
-  { LOGBRUSH structure  }
-     BS_DIBPATTERN = 5;
-     BS_DIBPATTERN8X8 = 8;
-     BS_DIBPATTERNPT = 6;
-     BS_HATCHED = 2;
-     BS_HOLLOW = 1;
-     BS_NULL = 1;
-     BS_PATTERN = 3;
-     BS_PATTERN8X8 = 7;
-     BS_SOLID = 0;
-  { DEVMODE structure  }
-     DM_ORIENTATION = $1;
-     DM_PAPERSIZE = $2;
-     DM_PAPERLENGTH = $4;
-     DM_PAPERWIDTH = $8;
-     DM_SCALE = $10;
-     DM_COPIES = $100;
-     DM_DEFAULTSOURCE = $200;
-     DM_PRINTQUALITY = $400;
-     DM_COLOR = $800;
-     DM_DUPLEX = $1000;
-     DM_YRESOLUTION = $2000;
-     DM_TTOPTION = $4000;
-     DM_COLLATE = $8000;
-     DM_FORMNAME = $10000;
-     DM_LOGPIXELS = $20000;
-     {DM_BITSPERPEL = $40000;
-     DM_PELSWIDTH = $80000;
-     DM_PELSHEIGHT = $100000;
-     DM_DISPLAYFLAGS = $200000;
-     DM_DISPLAYFREQUENCY = $400000;already above }
-     DM_ICMMETHOD = $800000;
-     DM_ICMINTENT = $1000000;
-     DM_MEDIATYPE = $2000000;
-     DM_DITHERTYPE = $4000000;
-   { orientation selections }
-     DMORIENT_LANDSCAPE = 2;
-     DMORIENT_PORTRAIT = 1;
-   { paper selections }
-     DMPAPER_LETTER = 1;
-     DMPAPER_LEGAL = 5;
-     DMPAPER_A4 = 9;
-     DMPAPER_CSHEET = 24;
-     DMPAPER_DSHEET = 25;
-     DMPAPER_ESHEET = 26;
-     DMPAPER_LETTERSMALL = 2;
-     DMPAPER_TABLOID = 3;
-     DMPAPER_LEDGER = 4;
-     DMPAPER_STATEMENT = 6;
-     DMPAPER_EXECUTIVE = 7;
-     DMPAPER_A3 = 8;
-     DMPAPER_A4SMALL = 10;
-     DMPAPER_A5 = 11;
-     DMPAPER_B4 = 12;
-     DMPAPER_B5 = 13;
-     DMPAPER_FOLIO = 14;
-     DMPAPER_QUARTO = 15;
-     DMPAPER_10X14 = 16;
-     DMPAPER_11X17 = 17;
-     DMPAPER_NOTE = 18;
-     DMPAPER_ENV_9 = 19;
-     DMPAPER_ENV_10 = 20;
-     DMPAPER_ENV_11 = 21;
-     DMPAPER_ENV_12 = 22;
-     DMPAPER_ENV_14 = 23;
-     DMPAPER_ENV_DL = 27;
-     DMPAPER_ENV_C5 = 28;
-     DMPAPER_ENV_C3 = 29;
-     DMPAPER_ENV_C4 = 30;
-     DMPAPER_ENV_C6 = 31;
-     DMPAPER_ENV_C65 = 32;
-     DMPAPER_ENV_B4 = 33;
-     DMPAPER_ENV_B5 = 34;
-     DMPAPER_ENV_B6 = 35;
-     DMPAPER_ENV_ITALY = 36;
-     DMPAPER_ENV_MONARCH = 37;
-     DMPAPER_ENV_PERSONAL = 38;
-     DMPAPER_FANFOLD_US = 39;
-     DMPAPER_FANFOLD_STD_GERMAN = 40;
-     DMPAPER_FANFOLD_LGL_GERMAN = 41;
-  { print qualities }
-     DMRES_HIGH = -(4);
-     DMRES_MEDIUM = -(3);
-     DMRES_LOW = -(2);
-     DMRES_DRAFT = -(1);
-  { color enable/disable for color printers }
-     DMCOLOR_COLOR = 2;
-     DMCOLOR_MONOCHROME = 1;
-     DMDUP_SIMPLEX = 1;
-     DMDUP_HORIZONTAL = 3;
-     DMDUP_VERTICAL = 2;
-     DMTT_BITMAP = 1;
-     DMTT_DOWNLOAD = 2;
-     DMTT_SUBDEV = 3;
-     DMCOLLATE_TRUE = 1;
-     DMCOLLATE_FALSE = 0;
-     DM_GRAYSCALE = 1;
-     DM_INTERLACED = 2;
-     DMICMMETHOD_NONE = 1;
-     DMICMMETHOD_SYSTEM = 2;
-     DMICMMETHOD_DRIVER = 3;
-     DMICMMETHOD_DEVICE = 4;
-     DMICMMETHOD_USER = 256;
-     DMICM_SATURATE = 1;
-     DMICM_CONTRAST = 2;
-     DMICM_COLORMETRIC = 3;
-     DMICM_USER = 256;
-     DMMEDIA_STANDARD = 1;
-     DMMEDIA_GLOSSY = 3;
-     DMMEDIA_TRANSPARENCY = 2;
-     DMMEDIA_USER = 256;
-     DMDITHER_NONE = 1;
-     DMDITHER_COARSE = 2;
-     DMDITHER_FINE = 3;
-     DMDITHER_LINEART = 4;
-     DMDITHER_GRAYSCALE = 10;
-     DMDITHER_USER = 256;
-  { RGNDATAHEADER structure  }
-     RDH_RECTANGLES = 1;
-  { TTPOLYGONHEADER structure  }
-     TT_POLYGON_TYPE = 24;
-  { TTPOLYCURVE structure  }
-     TT_PRIM_LINE = 1;
-     TT_PRIM_QSPLINE = 2;
-  { GCP_RESULTS structure  }
-     GCPCLASS_ARABIC = 2;
-     GCPCLASS_HEBREW = 2;
-     GCPCLASS_LATIN = 1;
-     GCPCLASS_LATINNUMBER = 5;
-     GCPCLASS_LOCALNUMBER = 4;
-     GCPCLASS_LATINNUMERICSEPARATOR = 7;
-     GCPCLASS_LATINNUMERICTERMINATOR = 6;
-     GCPCLASS_NEUTRAL = 3;
-     GCPCLASS_NUMERICSEPARATOR = 8;
-     GCPCLASS_PREBOUNDLTR = 128;
-     GCPCLASS_PREBOUNDRTL = 64;
-     GCPCLASS_POSTBOUNDLTR = 32;
-     GCPCLASS_POSTBOUNDRTL = 16;
-     GCPGLYPH_LINKBEFORE = 32768;
-     GCPGLYPH_LINKAFTER = 16384;
-  { RASTERIZER_STATUS structure  }
-     TT_AVAILABLE = 1;
-     TT_ENABLED = 2;
-  { COLORADJUSTMENT structure  }
-     CA_NEGATIVE = 1;
-     CA_LOG_FILTER = 2;
-     ILLUMINANT_DEVICE_DEFAULT = 0;
-     ILLUMINANT_A = 1;
-     ILLUMINANT_B = 2;
-     ILLUMINANT_C = 3;
-     ILLUMINANT_D50 = 4;
-     ILLUMINANT_D55 = 5;
-     ILLUMINANT_D65 = 6;
-     ILLUMINANT_D75 = 7;
-     ILLUMINANT_F2 = 8;
-     ILLUMINANT_TUNGSTEN = 1;
-     ILLUMINANT_DAYLIGHT = 3;
-     ILLUMINANT_FLUORESCENT = 8;
-     ILLUMINANT_NTSC = 3;
-  { DOCINFO structure  }
-     DI_APPBANDING = 1;
-  { EMRMETAHEADER structure  }
-     EMR_HEADER = 1;
-     ENHMETA_SIGNATURE = 1179469088;
-  { RTF event masks  }
-     ENM_CHANGE = 1;
-     ENM_CORRECTTEXT = 4194304;
-     ENM_DROPFILES = 1048576;
-     ENM_KEYEVENTS = 65536;
-     ENM_MOUSEEVENTS = 131072;
-     ENM_PROTECTED = 2097152;
-     ENM_REQUESTRESIZE = 262144;
-     ENM_SCROLL = 4;
-     ENM_SELCHANGE = 524288;
-     ENM_UPDATE = 2;
-     ENM_NONE = 0;
-  { RTF styles  }
-     ES_DISABLENOSCROLL = 8192;
-     ES_EX_NOCALLOLEINIT = 16777216;
-     ES_NOIME = 524288;
-     ES_SAVESEL = 32768;
-     ES_SELFIME = 262144;
-     ES_SUNKEN = 16384;
-     ES_VERTICAL = 4194304;
-     ES_SELECTIONBAR = 16777216;
-  { EM_SETOPTIONS message  }
-     ECOOP_SET = 1;
-     ECOOP_OR = 2;
-     ECOOP_AND = 3;
-     ECOOP_XOR = 4;
-     ECO_AUTOWORDSELECTION = 1;
-     ECO_AUTOVSCROLL = 64;
-     ECO_AUTOHSCROLL = 128;
-     ECO_NOHIDESEL = 256;
-     ECO_READONLY = 2048;
-     ECO_WANTRETURN = 4096;
-     ECO_SAVESEL = 32768;
-     ECO_SELECTIONBAR = 16777216;
-     ECO_VERTICAL = 4194304;
-  { EM_SETCHARFORMAT message  }
-     SCF_WORD = 2;
-     SCF_SELECTION = 1;
-  { EM_STREAMOUT message  }
-     SF_TEXT = 1;
-     SF_RTF = 2;
-     SF_RTFNOOBJS = 3;
-     SF_TEXTIZED = 4;
-     SFF_SELECTION = 32768;
-     SFF_PLAINRTF = 16384;
-  { EM_FINDWORDBREAK message  }
-     WB_CLASSIFY = 3;
-     {WB_ISDELIMITER = 2;
-     WB_LEFT = 0; already above }
-     WB_LEFTBREAK = 6;
-     WB_PREVBREAK = 6;
-     WB_MOVEWORDLEFT = 4;
-     WB_MOVEWORDPREV = 4;
-     WB_MOVEWORDRIGHT = 5;
-     WB_MOVEWORDNEXT = 5;
-     {WB_RIGHT = 1;already above }
-     WB_RIGHTBREAK = 7;
-     WB_NEXTBREAK = 7;
-  { EM_GETPUNCTUATION message  }
-     PC_LEADING = 2;
-     PC_FOLLOWING = 1;
-     PC_DELIMITER = 4;
-     PC_OVERFLOW = 3;
-  { EM_SETWORDWRAPMODE message  }
-     WBF_WORDWRAP = 16;
-     WBF_WORDBREAK = 32;
-     WBF_OVERFLOW = 64;
-     WBF_LEVEL1 = 128;
-     WBF_LEVEL2 = 256;
-     WBF_CUSTOM = 512;
-     WBF_BREAKAFTER = 64;
-     WBF_BREAKLINE = 32;
-     WBF_ISWHITE = 16;
-  { CHARFORMAT structure  }
-     CFM_BOLD = 1;
-     CFM_COLOR = 1073741824;
-     CFM_FACE = 536870912;
-     CFM_ITALIC = 2;
-     CFM_OFFSET = 268435456;
-     CFM_PROTECTED = 16;
-     CFM_SIZE = $80000000;
-     CFM_STRIKEOUT = 8;
-     CFM_UNDERLINE = 4;
-     CFE_AUTOCOLOR = 1073741824;
-     CFE_BOLD = 1;
-     CFE_ITALIC = 2;
-     CFE_STRIKEOUT = 8;
-     CFE_UNDERLINE = 4;
-     CFE_PROTECTED = 16;
-  { PARAFORMAT structure  }
-     PFM_ALIGNMENT = 8;
-     PFM_NUMBERING = 32;
-     PFM_OFFSET = 4;
-     PFM_OFFSETINDENT = $80000000;
-     PFM_RIGHTINDENT = 2;
-     PFM_STARTINDENT = 1;
-     PFM_TABSTOPS = 16;
-     PFN_BULLET = 1;
-     PFA_LEFT = 1;
-     PFA_RIGHT = 2;
-     PFA_CENTER = 3;
-  { SELCHANGE structure  }
-     SEL_EMPTY = 0;
-     SEL_TEXT = 1;
-     SEL_OBJECT = 2;
-     SEL_MULTICHAR = 4;
-     SEL_MULTIOBJECT = 8;
-  { RTF clipboard formats  }
-     CF_RTF = 'Rich Text Format';
-     CF_RETEXTOBJ = 'RichEdit Text and Objects';
-  { DRAWITEMSTRUCT structure  }
-     ODT_BUTTON = 4;
-     ODT_COMBOBOX = 3;
-     ODT_LISTBOX = 2;
-     ODT_LISTVIEW = 102;
-     ODT_MENU = 1;
-     ODT_STATIC = 5;
-     ODT_TAB = 101;
-     ODT_HEADER = 100;
-     ODA_DRAWENTIRE = 1;
-     ODA_FOCUS = 4;
-     ODA_SELECT = 2;
-     ODS_CHECKED = 8;
-     ODS_COMBOBOXEDIT = 4096;
-     ODS_DEFAULT = 32;
-     ODS_DISABLED = 4;
-     ODS_FOCUS = 16;
-     ODS_GRAYED = 2;
-     ODS_SELECTED = 1;
-  { Common control window classes  }
-     ANIMATE_CLASSW = 'SysAnimate32';
-     HOTKEY_CLASSW = 'msctls_hotkey32';
-     PROGRESS_CLASSW = 'msctls_progress32';
-     STATUSCLASSNAMEW = 'msctls_statusbar32';
-     TOOLBARCLASSNAMEW = 'ToolbarWindow32';
-     TOOLTIPS_CLASSW = 'tooltips_class32';
-     TRACKBAR_CLASSW = 'msctls_trackbar32';
-     UPDOWN_CLASSW = 'msctls_updown32';
-     WC_HEADERW = 'SysHeader32';
-     WC_LISTVIEWW = 'SysListView32';
-     WC_TABCONTROLW = 'SysTabControl32';
-     WC_TREEVIEWW = 'SysTreeView32';
-  { Common control styles  }
-     CCS_ADJUSTABLE = $20;
-     CCS_BOTTOM = $3;
-     CCS_NODIVIDER = $40;
-     CCS_NOMOVEY = $2;
-     CCS_NOPARENTALIGN = $8;
-     CCS_NORESIZE = $4;
-     CCS_TOP = $1;
-     CCS_VERT = $80;
-     ANIMATE_CLASSA = 'SysAnimate32';
-     HOTKEY_CLASSA = 'msctls_hotkey32';
-     PROGRESS_CLASSA = 'msctls_progress32';
-     STATUSCLASSNAMEA = 'msctls_statusbar32';
-     TOOLBARCLASSNAMEA = 'ToolbarWindow32';
-     TOOLTIPS_CLASSA = 'tooltips_class32';
-     TRACKBAR_CLASSA = 'msctls_trackbar32';
-     UPDOWN_CLASSA = 'msctls_updown32';
-     WC_HEADERA = 'SysHeader32';
-     WC_LISTVIEWA = 'SysListView32';
-     WC_TABCONTROLA = 'SysTabControl32';
-     WC_TREEVIEWA = 'SysTreeView32';
-{$ifdef UNICODE}
-
-  const
-     ANIMATE_CLASS = ANIMATE_CLASSW;
-     HOTKEY_CLASS = HOTKEY_CLASSW;
-     PROGRESS_CLASS = PROGRESS_CLASSW;
-     STATUSCLASSNAME = STATUSCLASSNAMEW;
-     TOOLBARCLASSNAME = TOOLBARCLASSNAMEW;
-     TOOLTIPS_CLASS = TOOLTIPS_CLASSW;
-     TRACKBAR_CLASS = TRACKBAR_CLASSW;
-     UPDOWN_CLASS = UPDOWN_CLASSW;
-     WC_HEADER = WC_HEADERW;
-     WC_LISTVIEW = WC_LISTVIEWW;
-     WC_TABCONTROL = WC_TABCONTROLW;
-     WC_TREEVIEW = WC_TREEVIEWW;
-{$else}
-
-  const
-     ANIMATE_CLASS = ANIMATE_CLASSA;
-     HOTKEY_CLASS = HOTKEY_CLASSA;
-     PROGRESS_CLASS = PROGRESS_CLASSA;
-     STATUSCLASSNAME = STATUSCLASSNAMEA;
-     TOOLBARCLASSNAME = TOOLBARCLASSNAMEA;
-     TOOLTIPS_CLASS = TOOLTIPS_CLASSA;
-     TRACKBAR_CLASS = TRACKBAR_CLASSA;
-     UPDOWN_CLASS = UPDOWN_CLASSA;
-     WC_HEADER = WC_HEADERA;
-     WC_LISTVIEW = WC_LISTVIEWA;
-     WC_TABCONTROL = WC_TABCONTROLA;
-     WC_TREEVIEW = WC_TREEVIEWA;
-{$endif}
-  { UNICODE  }
-  { Header control styles  }
-
-  const
-     HDS_BUTTONS = 2;
-     HDS_HIDDEN = 8;
-     HDS_HORZ = 0;
-  { HD_ITEM structure  }
-     HDI_BITMAP = 16;
-     HDI_FORMAT = 4;
-     HDI_HEIGHT = 1;
-     HDI_LPARAM = 8;
-     HDI_TEXT = 2;
-     HDI_WIDTH = 1;
-     HDF_CENTER = 2;
-     HDF_LEFT = 0;
-     HDF_RIGHT = 1;
-     HDF_RTLREADING = 4;
-     HDF_BITMAP = 8192;
-     HDF_OWNERDRAW = 32768;
-     HDF_STRING = 16384;
-     HDF_JUSTIFYMASK = 3;
-  { HD_HITTESTINFO structure  }
-     HHT_NOWHERE = 1;
-     HHT_ONDIVIDER = 4;
-     HHT_ONDIVOPEN = 8;
-     HHT_ONHEADER = 2;
-     HHT_TOLEFT = 2048;
-     HHT_TORIGHT = 1024;
-  { TBADDBITMAP structure  }
-     HINST_COMMCTRL = HINST(-(1));
-
-
-  const
-     IDB_STD_LARGE_COLOR = 1;
-     IDB_STD_SMALL_COLOR = 0;
-     IDB_VIEW_LARGE_COLOR = 5;
-     IDB_VIEW_SMALL_COLOR = 4;
-     STD_COPY = 1;
-     STD_CUT = 0;
-     STD_DELETE = 5;
-     STD_FILENEW = 6;
-     STD_FILEOPEN = 7;
-     STD_FILESAVE = 8;
-     STD_FIND = 12;
-     STD_HELP = 11;
-     STD_PASTE = 2;
-     STD_PRINT = 14;
-     STD_PRINTPRE = 9;
-     STD_PROPERTIES = 10;
-     STD_REDOW = 4;
-     STD_REPLACE = 13;
-     STD_UNDO = 3;
-     VIEW_LARGEICONS = 0;
-     VIEW_SMALLICONS = 1;
-     VIEW_LIST = 2;
-     VIEW_DETAILS = 3;
-     VIEW_SORTNAME = 4;
-     VIEW_SORTSIZE = 5;
-     VIEW_SORTDATE = 6;
-     VIEW_SORTTYPE = 7;
-  { Toolbar styles  }
-     TBSTYLE_ALTDRAG = 1024;
-     TBSTYLE_TOOLTIPS = 256;
-     TBSTYLE_WRAPABLE = 512;
-     TBSTYLE_BUTTON = 0;
-     TBSTYLE_CHECK = 2;
-     TBSTYLE_CHECKGROUP = 6;
-     TBSTYLE_GROUP = 4;
-     TBSTYLE_SEP = 1;
-     TBSTYLE_DROPDOWN        = $0008;
-     TBSTYLE_AUTOSIZE        = $0010; // automatically calculate the cx of the button
-     TBSTYLE_FLAT            = $0800;
-     TBSTYLE_LIST            = $1000;
-     TBSTYLE_CUSTOMERASE     = $2000;
-     TBSTYLE_TRANSPARENT     = $8000;
-  { Toolbar states  }
-     TBSTATE_CHECKED = 1;
-     TBSTATE_ENABLED = 4;
-     TBSTATE_HIDDEN = 8;
-     TBSTATE_INDETERMINATE = 16;
-     TBSTATE_PRESSED = 2;
-     TBSTATE_WRAP = 32;
-     TBSTATE_ELLIPSES        = $40;
-     TBSTATE_HIGHLIGHTED     = $80;
-  { Tooltip styles  }
-     TTS_ALWAYSTIP = 1;
-     TTS_NOPREFIX = 2;
-  { TOOLINFO structure  }
-     TTF_IDISHWND = 1;
-     TTF_CENTERTIP = 2;
-     TTF_RTLREADING = 4;
-     TTF_SUBCLASS = 16;
-  { TTM_SETDELAYTIME message  }
-     TTDT_AUTOMATIC = 0;
-     TTDT_AUTOPOP = 2;
-     TTDT_INITIAL = 3;
-     TTDT_RESHOW = 1;
-  { Status window  }
-     SBARS_SIZEGRIP = 256;
-     {SBARS_SIZEGRIP = 256;already above }
-  { DL_DRAGGING message  }
-     DL_MOVECURSOR = 3;
-     DL_COPYCURSOR = 2;
-     DL_STOPCURSOR = 1;
-  { Up-down control styles  }
-     UDS_ALIGNLEFT = 8;
-     UDS_ALIGNRIGHT = 4;
-     UDS_ARROWKEYS = 32;
-     UDS_AUTOBUDDY = 16;
-     UDS_HORZ = 64;
-     UDS_NOTHOUSANDS = 128;
-     UDS_SETBUDDYINT = 2;
-     UDS_WRAP = 1;
-  { UDM_SETRANGE message  }
-     UD_MAXVAL = 32767;
-     UD_MINVAL = -(32767);
-  { HKM_GETHOTKEY message  }
-     HOTKEYF_ALT = 4;
-     HOTKEYF_CONTROL = 2;
-     HOTKEYF_EXT = 8;
-     HOTKEYF_SHIFT = 1;
-  { HKM_SETRULES message  }
-     HKCOMB_A = 8;
-     HKCOMB_C = 4;
-     HKCOMB_CA = 64;
-     HKCOMB_NONE = 1;
-     HKCOMB_S = 2;
-     HKCOMB_SA = 32;
-     HKCOMB_SC = 16;
-     HKCOMB_SCA = 128;
-  { Trackbar styles  }
-     TBS_HORZ = 0;
-     TBS_VERT = 2;
-     TBS_AUTOTICKS = 1;
-     TBS_NOTICKS = 16;
-     TBS_TOP = 4;
-     TBS_BOTTOM = 0;
-     TBS_LEFT = 4;
-     TBS_RIGHT = 0;
-     TBS_BOTH = 8;
-     TBS_ENABLESELRANGE = 32;
-     TBS_FIXEDLENGTH = 64;
-     TBS_NOTHUMB = 128;
-     TB_BOTTOM = 7;
-     TB_ENDTRACK = 8;
-     TB_LINEDOWN = 1;
-     TB_LINEUP = 0;
-     TB_PAGEDOWN = 3;
-     TB_PAGEUP = 2;
-     TB_THUMBPOSITION = 4;
-     TB_THUMBTRACK = 5;
-     TB_TOP = 6;
-  { List view styles  }
-     LVS_ALIGNLEFT = 2048;
-     LVS_ALIGNTOP = 0;
-     LVS_AUTOARRANGE = 256;
-     LVS_EDITLABELS = 512;
-     LVS_ICON = 0;
-     LVS_LIST = 3;
-     LVS_NOCOLUMNHEADER = 16384;
-     LVS_NOLABELWRAP = 128;
-     LVS_NOSCROLL = 8192;
-     LVS_NOSORTHEADER = 32768;
-     LVS_OWNERDRAWFIXED = 1024;
-     LVS_OWNERDATA = $1000;
-     LVS_REPORT = 1;
-     LVS_SHAREIMAGELISTS = 64;
-     LVS_SHOWSELALWAYS = 8;
-     LVS_SINGLESEL = 4;
-     LVS_SMALLICON = 2;
-     LVS_SORTASCENDING = 16;
-     LVS_SORTDESCENDING = 32;
-     LVS_TYPESTYLEMASK = 64512;
-     //extended styles
-     LVS_EX_GRIDLINES        = $00000001;
-     LVS_EX_SUBITEMIMAGES    = $00000002;
-     LVS_EX_CHECKBOXES       = $00000004;
-     LVS_EX_TRACKSELECT      = $00000008;
-     LVS_EX_HEADERDRAGDROP   = $00000010;
-     LVS_EX_FULLROWSELECT    = $00000020; // applies to report mode only
-     LVS_EX_ONECLICKACTIVATE = $00000040;
-     LVS_EX_NOHSCROLL        = $10000000;
-     LVS_EX_GRADIENT         = $20000000; // draw a background gradient
-
-     LVSIL_NORMAL = 0;
-     LVSIL_SMALL = 1;
-     LVSIL_STATE = 2;
-     LVIS_CUT = 4;
-     LVIS_DROPHILITED = 8;
-     LVIS_FOCUSED = 1;
-     LVIS_SELECTED = 2;
-     LVIS_OVERLAYMASK = 3840;
-     LVIS_STATEIMAGEMASK = 61440;
-
-     // progress bar styles
-     PBS_SMOOTH              = 01;
-     PBS_VERTICAL            = 04;
-
-     LPSTR_TEXTCALLBACKW = LPWSTR(-(1));
-     LPSTR_TEXTCALLBACKA = LPSTR(-(1));
-
-
-	{$ifdef UNICODE}
-
-     {const this is a function in fact !!
-              LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKW;}
-     LPSTR_TEXTCALLBACK          = LPWSTR(-(1));
-
-	{$else}
-
-	 {const
-	 LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKA; }
-     LPSTR_TEXTCALLBACK          =LPSTR(-(1));
-	{$endif}
-
-	 { LV_ITEM structure  }
-
-  const
-     LVIF_TEXT = 1;
-     LVIF_IMAGE = 2;
-     LVIF_PARAM = 4;
-     LVIF_STATE = 8;
-     LVIF_INDENT = $10;
-     LVIF_DI_SETITEM = 4096;
-  { LVM_GETNEXTITEM structure  }
-     LVNI_ABOVE = 256;
-     LVNI_ALL = 0;
-     LVNI_BELOW = 512;
-     LVNI_TOLEFT = 1024;
-     LVNI_TORIGHT = 2048;
-     LVNI_CUT = 4;
-     LVNI_DROPHILITED = 8;
-     LVNI_FOCUSED = 1;
-     LVNI_SELECTED = 2;
-  { LV_FINDINFO structure  }
-     LVFI_PARAM = 1;
-     LVFI_PARTIAL = 8;
-     LVFI_STRING = 2;
-     LVFI_WRAP = 32;
-     LVFI_NEARESTXY = 64;
-  { LV_HITTESTINFO structure  }
-     LVHT_ABOVE = 8;
-     LVHT_BELOW = 16;
-     LVHT_NOWHERE = 1;
-     LVHT_ONITEMICON = 2;
-     LVHT_ONITEMLABEL = 4;
-     LVHT_ONITEMSTATEICON = 8;
-     LVHT_TOLEFT = 64;
-     LVHT_TORIGHT = 32;
-     LVHT_ONITEM = LVHT_ONITEMICON or LVHT_ONITEMLABEL or LVHT_ONITEMSTATEICON;
-  { LV_COLUMN structure  }
-     LVCF_FMT = 1;
-     LVCF_SUBITEM = 8;
-     LVCF_TEXT = 4;
-     LVCF_WIDTH = 2;
-     LVCF_IMAGE = $10;
-     LVCF_ORDER = $20;
-     LVCFMT_CENTER = 2;
-     LVCFMT_LEFT = 0;
-     LVCFMT_RIGHT = 1;
-     LVCFMT_JUSTIFYMASK      = $0003;
-     LVCFMT_IMAGE            = $0800;
-     LVCFMT_BITMAP_ON_RIGHT  = $1000;
-  { ListView_GetItemRect  }
-     LVIR_BOUNDS = 0;
-     LVIR_ICON = 1;
-     LVIR_LABEL = 2;
-     LVIR_SELECTBOUNDS = 3;
-  { LVM_ARRANGE message  }
-     LVA_ALIGNLEFT = 1;
-     LVA_ALIGNTOP = 2;
-     LVA_DEFAULT = 0;
-     LVA_SNAPTOGRID = 5;
-  { LVM_SETCOLUMNWIDTH message  }
-     LVSCW_AUTOSIZE = -(1);
-     LVSCW_AUTOSIZE_USEHEADER = -(2);
-  { Tree View styles  }
-     TVS_DISABLEDRAGDROP = 16;
-     TVS_EDITLABELS = 8;
-     TVS_HASBUTTONS = 1;
-     TVS_HASLINES = 2;
-     TVS_LINESATROOT = 4;
-     TVS_SHOWSELALWAYS = 32;
-     TVS_CHECKBOXES = $0100;
-     TVS_SINGLEEXPAND = $0400;
-  { Tree View states  }
-     TVIS_BOLD = 16;
-     TVIS_CUT = 4;
-     TVIS_DROPHILITED = 8;
-     TVIS_EXPANDED = 32;
-     TVIS_EXPANDEDONCE = 64;
-     TVIS_FOCUSED = 1;
-     TVIS_OVERLAYMASK = 3840;
-     TVIS_SELECTED = 2;
-     TVIS_STATEIMAGEMASK = 61440;
-     TVIS_USERMASK = 61440;
-  { TV_ITEM structure  }
-     TVIF_CHILDREN = 64;
-     TVIF_HANDLE = 16;
-     TVIF_IMAGE = 2;
-     TVIF_PARAM = 4;
-     TVIF_SELECTEDIMAGE = 32;
-     TVIF_STATE = 8;
-     TVIF_TEXT = 1;
-     I_CHILDRENCALLBACK = -(1);
-     I_IMAGECALLBACK = -(1);
-  { TV_INSERTSTRUCT structure  }
-    { added manually PM, TREEITEM is not defined in the C headers }
-     type
-       HTREEITEM = THandle;
-
-  const
-    TVI_ROOT = HTREEITEM($FFFF0000);
-    TVI_FIRST =HTREEITEM($FFFF0001);
-    TVI_LAST = HTREEITEM($FFFF0002);
-    TVI_SORT = HTREEITEM($FFFF0003);
-
-  { TV_HITTESTINFO structure  }
-
-  const
-     TVHT_ABOVE = 256;
-     TVHT_BELOW = 512;
-     TVHT_NOWHERE = 1;
-     TVHT_ONITEM = 70;
-     TVHT_ONITEMBUTTON = 16;
-     TVHT_ONITEMICON = 2;
-     TVHT_ONITEMINDENT = 8;
-     TVHT_ONITEMLABEL = 4;
-     TVHT_ONITEMRIGHT = 32;
-     TVHT_ONITEMSTATEICON = 64;
-     TVHT_TOLEFT = 2048;
-     TVHT_TORIGHT = 1024;
-  { TVM_EXPAND message  }
-     TVE_COLLAPSE = 1;
-     TVE_COLLAPSERESET = 32768;
-     TVE_EXPAND = 2;
-     TVE_TOGGLE = 3;
-  { TVM_GETIMAGELIST message  }
-     TVSIL_NORMAL = 0;
-     TVSIL_STATE = 2;
-  { TVM_GETNEXTITEM message  }
-     TVGN_CARET = 9;
-     TVGN_CHILD = 4;
-     TVGN_DROPHILITE = 8;
-     TVGN_FIRSTVISIBLE = 5;
-     TVGN_NEXT = 1;
-     TVGN_NEXTVISIBLE = 6;
-     TVGN_PARENT = 3;
-     TVGN_PREVIOUS = 2;
-     TVGN_PREVIOUSVISIBLE = 7;
-     TVGN_ROOT = 0;
-  { TVN_SELCHANGED message  }
-     TVC_BYKEYBOARD = 2;
-     TVC_BYMOUSE = 1;
-     TVC_UNKNOWN = 0;
-  { Tab control styles  } //commctrl
-     TCS_RIGHTJUSTIFY = 0;
-     TCS_SINGLELINE = 0;
-     TCS_TABS = 0;
-     TCS_SCROLLOPPOSITE = $0001;  // assumes multiline tab
-     TCS_BOTTOM         = $0002;
-     TCS_RIGHT          = $0002;
-     TCS_MULTISELECT    = $0004;  // allow multi-select in button mode
-     TCS_FLATBUTTONS    = $0008;
-     TCS_FORCEICONLEFT  = 16;
-     TCS_FORCELABELLEFT = 32;
-     TCS_HOTTRACK       = $0040;
-     TCS_VERTICAL       = $0080;
-     TCS_BUTTONS = 256;
-     TCS_MULTILINE = 512;
-     TCS_FIXEDWIDTH = 1024;
-     TCS_RAGGEDRIGHT = 2048;
-     TCS_FOCUSONBUTTONDOWN = 4096;
-     TCS_OWNERDRAWFIXED = 8192;
-     TCS_TOOLTIPS= 16384;
-     TCS_FOCUSNEVER = 32768;
-
-     TCS_EX_FLATSEPARATORS = $00000001;
-
-  { TC_ITEM structure  }
-     TCIF_TEXT = 1;
-     TCIF_IMAGE = 2;
-     TCIF_PARAM = 8;
-     TCIF_RTLREADING = 4;
-  { TC_HITTESTINFO structure  }
-     TCHT_NOWHERE = 1;
-     TCHT_ONITEM = 6;
-     TCHT_ONITEMICON = 2;
-     TCHT_ONITEMLABEL = 4;
-  { Animation control styles  }
-     ACS_AUTOPLAY = 4;
-     ACS_CENTER = 1;
-     ACS_TRANSPARENT = 2;
-  { MODEMDEVCAPS structure  }
-     DIALOPTION_BILLING = 64;
-     DIALOPTION_QUIET = 128;
-     DIALOPTION_DIALTONE = 256;
-     MDMVOLFLAG_LOW = 1;
-     MDMVOLFLAG_MEDIUM = 2;
-     MDMVOLFLAG_HIGH = 4;
-     MDMVOL_LOW = 0;
-     MDMVOL_MEDIUM = 1;
-     MDMVOL_HIGH = 2;
-     MDMSPKRFLAG_OFF = 1;
-     MDMSPKRFLAG_DIAL = 2;
-     MDMSPKRFLAG_ON = 4;
-     MDMSPKRFLAG_CALLSETUP = 8;
-     MDMSPKR_OFF = 0;
-     MDMSPKR_DIAL = 1;
-     MDMSPKR_ON = 2;
-     MDMSPKR_CALLSETUP = 3;
-     MDM_BLIND_DIAL = 512;
-     MDM_CCITT_OVERRIDE = 64;
-     MDM_CELLULAR = 8;
-     MDM_COMPRESSION = 1;
-     MDM_ERROR_CONTROL = 2;
-     MDM_FLOWCONTROL_HARD = 16;
-     MDM_FLOWCONTROL_SOFT = 32;
-     MDM_FORCED_EC = 4;
-     MDM_SPEED_ADJUST = 128;
-     MDM_TONE_DIAL = 256;
-     MDM_V23_OVERRIDE = 1024;
-  { Languages  }
-   //
-   //  Language IDs.
-   //
-   //  The following two combinations of primary language ID and
-   //  sublanguage ID have special semantics:
-   //
-   //    Primary Language ID   Sublanguage ID      Result
-   //    -------------------   ---------------     ------------------------
-   //    LANG_NEUTRAL          SUBLANG_NEUTRAL     Language neutral
-   //    LANG_NEUTRAL          SUBLANG_DEFAULT     User default language
-   //    LANG_NEUTRAL          SUBLANG_SYS_DEFAULT System default language
-   //    LANG_INVARIANT        SUBLANG_NEUTRAL     Invariant locale
-   //
-
-   //
-   //  Primary language IDs.
-   //
-
-     LANG_NEUTRAL    = $00;
-     LANG_INVARIANT  = $7f;
-
-     LANG_AFRIKAANS  = $36;
-     LANG_ALBANIAN   = $1c;
-     LANG_ARABIC     = $01;
-     LANG_ARMENIAN   = $2b;
-     LANG_ASSAMESE   = $4d;
-     LANG_AZERI      = $2c;
-     LANG_BASQUE     = $2d;
-     LANG_BELARUSIAN = $23;
-     LANG_BENGALI    = $45;
-     LANG_BULGARIAN  = $02;
-     LANG_CATALAN    = $03;
-     LANG_CHINESE    = $04;
-     LANG_CROATIAN   = $1a;
-     LANG_CZECH      = $05;
-     LANG_DANISH     = $06;
-     LANG_DIVEHI     = $65;
-     LANG_DUTCH      = $13;
-     LANG_ENGLISH    = $09;
-     LANG_ESTONIAN   = $25;
-     LANG_FAEROESE   = $38;
-     LANG_FARSI      = $29;
-     LANG_FINNISH    = $0b;
-     LANG_FRENCH     = $0c;
-     LANG_GALICIAN   = $56;
-     LANG_GEORGIAN   = $37;
-     LANG_GERMAN     = $07;
-     LANG_GREEK      = $08;
-     LANG_GUJARATI   = $47;
-     LANG_HEBREW     = $0d;
-     LANG_HINDI      = $39;
-     LANG_HUNGARIAN  = $0e;
-     LANG_ICELANDIC  = $0f;
-     LANG_INDONESIAN = $21;
-     LANG_ITALIAN    = $10;
-     LANG_JAPANESE   = $11;
-     LANG_KANNADA    = $4b;
-     LANG_KASHMIRI   = $60;
-     LANG_KAZAK      = $3f;
-     LANG_KONKANI    = $57;
-     LANG_KOREAN     = $12;
-     LANG_KYRGYZ     = $40;
-     LANG_LATVIAN    = $26;
-     LANG_LITHUANIAN = $27;
-     LANG_MACEDONIAN = $2f;            // the Former Yugoslav Republic of Macedonia
-     LANG_MALAY      = $3e;
-     LANG_MALAYALAM  = $4c;
-     LANG_MANIPURI   = $58;
-     LANG_MARATHI    = $4e;
-     LANG_MONGOLIAN  = $50;
-     LANG_NEPALI     = $61;
-     LANG_NORWEGIAN  = $14;
-     LANG_ORIYA      = $48;
-     LANG_POLISH     = $15;
-     LANG_PORTUGUESE = $16;
-     LANG_PUNJABI    = $46;
-     LANG_ROMANIAN   = $18;
-     LANG_RUSSIAN    = $19;
-     LANG_SANSKRIT   = $4f;
-     LANG_SERBIAN    = $1a;
-     LANG_SINDHI     = $59;
-     LANG_SLOVAK     = $1b;
-     LANG_SLOVENIAN  = $24;
-     LANG_SPANISH    = $0a;
-     LANG_SWAHILI    = $41;
-     LANG_SWEDISH    = $1d;
-     LANG_SYRIAC     = $5a;
-     LANG_TAMIL      = $49;
-     LANG_TATAR      = $44;
-     LANG_TELUGU     = $4a;
-     LANG_THAI       = $1e;
-     LANG_TURKISH    = $1f;
-     LANG_UKRAINIAN  = $22;
-     LANG_URDU       = $20;
-     LANG_UZBEK      = $43;
-     LANG_VIETNAMESE = $2a;
-
-   //
-   //  Sublanguage IDs.
-   //
-   //  The name immediately following SUBLANG_ dictates which primary
-   //  language ID that sublanguage ID can be combined with to form a
-   //  valid language ID.
-   //
-
-     SUBLANG_NEUTRAL     = $00; // language neutral
-     SUBLANG_DEFAULT     = $01; // user default
-     SUBLANG_SYS_DEFAULT = $02; // system default
-
-     SUBLANG_ARABIC_SAUDI_ARABIA        = $01; // Arabic (Saudi Arabia)
-     SUBLANG_ARABIC_IRAQ                = $02; // Arabic (Iraq)
-     SUBLANG_ARABIC_EGYPT               = $03; // Arabic (Egypt)
-     SUBLANG_ARABIC_LIBYA               = $04; // Arabic (Libya)
-     SUBLANG_ARABIC_ALGERIA             = $05; // Arabic (Algeria)
-     SUBLANG_ARABIC_MOROCCO             = $06; // Arabic (Morocco)
-     SUBLANG_ARABIC_TUNISIA             = $07; // Arabic (Tunisia)
-     SUBLANG_ARABIC_OMAN                = $08; // Arabic (Oman)
-     SUBLANG_ARABIC_YEMEN               = $09; // Arabic (Yemen)
-     SUBLANG_ARABIC_SYRIA               = $0a; // Arabic (Syria)
-     SUBLANG_ARABIC_JORDAN              = $0b; // Arabic (Jordan)
-     SUBLANG_ARABIC_LEBANON             = $0c; // Arabic (Lebanon)
-     SUBLANG_ARABIC_KUWAIT              = $0d; // Arabic (Kuwait)
-     SUBLANG_ARABIC_UAE                 = $0e; // Arabic (U.A.E)
-     SUBLANG_ARABIC_BAHRAIN             = $0f; // Arabic (Bahrain)
-     SUBLANG_ARABIC_QATAR               = $10; // Arabic (Qatar)
-     SUBLANG_AZERI_LATIN                = $01; // Azeri (Latin)
-     SUBLANG_AZERI_CYRILLIC             = $02; // Azeri (Cyrillic)
-     SUBLANG_CHINESE_TRADITIONAL        = $01; // Chinese (Taiwan)
-     SUBLANG_CHINESE_SIMPLIFIED         = $02; // Chinese (PR China)
-     SUBLANG_CHINESE_HONGKONG           = $03; // Chinese (Hong Kong S.A.R., P.R.C.)
-     SUBLANG_CHINESE_SINGAPORE          = $04; // Chinese (Singapore)
-     SUBLANG_CHINESE_MACAU              = $05; // Chinese (Macau S.A.R.)
-     SUBLANG_DUTCH                      = $01; // Dutch
-     SUBLANG_DUTCH_BELGIAN              = $02; // Dutch (Belgian)
-     SUBLANG_ENGLISH_US                 = $01; // English (USA)
-     SUBLANG_ENGLISH_UK                 = $02; // English (UK)
-     SUBLANG_ENGLISH_AUS                = $03; // English (Australian)
-     SUBLANG_ENGLISH_CAN                = $04; // English (Canadian)
-     SUBLANG_ENGLISH_NZ                 = $05; // English (New Zealand)
-     SUBLANG_ENGLISH_EIRE               = $06; // English (Irish)
-     SUBLANG_ENGLISH_SOUTH_AFRICA       = $07; // English (South Africa)
-     SUBLANG_ENGLISH_JAMAICA            = $08; // English (Jamaica)
-     SUBLANG_ENGLISH_CARIBBEAN          = $09; // English (Caribbean)
-     SUBLANG_ENGLISH_BELIZE             = $0a; // English (Belize)
-     SUBLANG_ENGLISH_TRINIDAD           = $0b; // English (Trinidad)
-     SUBLANG_ENGLISH_ZIMBABWE           = $0c; // English (Zimbabwe)
-     SUBLANG_ENGLISH_PHILIPPINES        = $0d; // English (Philippines)
-     SUBLANG_FRENCH                     = $01; // French
-     SUBLANG_FRENCH_BELGIAN             = $02; // French (Belgian)
-     SUBLANG_FRENCH_CANADIAN            = $03; // French (Canadian)
-     SUBLANG_FRENCH_SWISS               = $04; // French (Swiss)
-     SUBLANG_FRENCH_LUXEMBOURG          = $05; // French (Luxembourg)
-     SUBLANG_FRENCH_MONACO              = $06; // French (Monaco)
-     SUBLANG_GERMAN                     = $01; // German
-     SUBLANG_GERMAN_SWISS               = $02; // German (Swiss)
-     SUBLANG_GERMAN_AUSTRIAN            = $03; // German (Austrian)
-     SUBLANG_GERMAN_LUXEMBOURG          = $04; // German (Luxembourg)
-     SUBLANG_GERMAN_LIECHTENSTEIN       = $05; // German (Liechtenstein)
-     SUBLANG_ITALIAN                    = $01; // Italian
-     SUBLANG_ITALIAN_SWISS              = $02; // Italian (Swiss)
-     SUBLANG_KASHMIRI_SASIA             = $02; // Kashmiri (South Asia)
-     SUBLANG_KASHMIRI_INDIA             = $02; // For app compatibility only
-     SUBLANG_KOREAN                     = $01; // Korean (Extended Wansung)
-     SUBLANG_LITHUANIAN                 = $01; // Lithuanian
-     SUBLANG_MALAY_MALAYSIA             = $01; // Malay (Malaysia)
-     SUBLANG_MALAY_BRUNEI_DARUSSALAM    = $02; // Malay (Brunei Darussalam)
-     SUBLANG_NEPALI_INDIA               = $02; // Nepali (India)
-     SUBLANG_NORWEGIAN_BOKMAL           = $01; // Norwegian (Bokmal)
-     SUBLANG_NORWEGIAN_NYNORSK          = $02; // Norwegian (Nynorsk)
-     SUBLANG_PORTUGUESE                 = $02; // Portuguese
-     SUBLANG_PORTUGUESE_BRAZILIAN       = $01; // Portuguese (Brazilian)
-     SUBLANG_SERBIAN_LATIN              = $02; // Serbian (Latin)
-     SUBLANG_SERBIAN_CYRILLIC           = $03; // Serbian (Cyrillic)
-     SUBLANG_SPANISH                    = $01; // Spanish (Castilian)
-     SUBLANG_SPANISH_MEXICAN            = $02; // Spanish (Mexican)
-     SUBLANG_SPANISH_MODERN             = $03; // Spanish (Spain)
-     SUBLANG_SPANISH_GUATEMALA          = $04; // Spanish (Guatemala)
-     SUBLANG_SPANISH_COSTA_RICA         = $05; // Spanish (Costa Rica)
-     SUBLANG_SPANISH_PANAMA             = $06; // Spanish (Panama)
-     SUBLANG_SPANISH_DOMINICAN_REPUBLIC = $07; // Spanish (Dominican Republic)
-     SUBLANG_SPANISH_VENEZUELA          = $08; // Spanish (Venezuela)
-     SUBLANG_SPANISH_COLOMBIA           = $09; // Spanish (Colombia)
-     SUBLANG_SPANISH_PERU               = $0a; // Spanish (Peru)
-     SUBLANG_SPANISH_ARGENTINA          = $0b; // Spanish (Argentina)
-     SUBLANG_SPANISH_ECUADOR            = $0c; // Spanish (Ecuador)
-     SUBLANG_SPANISH_CHILE              = $0d; // Spanish (Chile)
-     SUBLANG_SPANISH_URUGUAY            = $0e; // Spanish (Uruguay)
-     SUBLANG_SPANISH_PARAGUAY           = $0f; // Spanish (Paraguay)
-     SUBLANG_SPANISH_BOLIVIA            = $10; // Spanish (Bolivia)
-     SUBLANG_SPANISH_EL_SALVADOR        = $11; // Spanish (El Salvador)
-     SUBLANG_SPANISH_HONDURAS           = $12; // Spanish (Honduras)
-     SUBLANG_SPANISH_NICARAGUA          = $13; // Spanish (Nicaragua)
-     SUBLANG_SPANISH_PUERTO_RICO        = $14; // Spanish (Puerto Rico)
-     SUBLANG_SWEDISH                    = $01; // Swedish
-     SUBLANG_SWEDISH_FINLAND            = $02; // Swedish (Finland)
-     SUBLANG_URDU_PAKISTAN              = $01; // Urdu (Pakistan)
-     SUBLANG_URDU_INDIA                 = $02; // Urdu (India)
-     SUBLANG_UZBEK_LATIN                = $01; // Uzbek (Latin)
-     SUBLANG_UZBEK_CYRILLIC             = $02; // Uzbek (Cyrillic)
-
-   //
-   //  Sorting IDs.
-   //
-
-     SORT_DEFAULT = $0; // sorting default
-
-     SORT_JAPANESE_XJIS    = $0; // Japanese XJIS order
-     SORT_JAPANESE_UNICODE = $1; // Japanese Unicode order
-
-     SORT_CHINESE_BIG5     = $0; // Chinese BIG5 order
-     SORT_CHINESE_PRCP     = $0; // PRC Chinese Phonetic order
-     SORT_CHINESE_UNICODE  = $1; // Chinese Unicode order
-     SORT_CHINESE_PRC      = $2; // PRC Chinese Stroke Count order
-     SORT_CHINESE_BOPOMOFO = $3; // Traditional Chinese Bopomofo order
-
-     SORT_KOREAN_KSC     = $0; // Korean KSC order
-     SORT_KOREAN_UNICODE = $1; // Korean Unicode order
-
-     SORT_GERMAN_PHONE_BOOK = $1; // German Phone Book order
-
-     SORT_HUNGARIAN_DEFAULT   = $0; // Hungarian Default order
-     SORT_HUNGARIAN_TECHNICAL = $1; // Hungarian Technical order
-
-     SORT_GEORGIAN_TRADITIONAL = $0; // Georgian Traditional order
-     SORT_GEORGIAN_MODERN      = $1; // Georgian Modern order
-
-
-  { SYSTEM_INFO structure  }
-     PROCESSOR_INTEL_386 = 386;
-     PROCESSOR_INTEL_486 = 486;
-     PROCESSOR_INTEL_PENTIUM = 586;
-     PROCESSOR_MIPS_R4000 = 4000;
-     PROCESSOR_ALPHA_21064 = 21064;
-  { FSCTL_SET_COMPRESSION  }
-     COMPRESSION_FORMAT_NONE = 0;
-     COMPRESSION_FORMAT_DEFAULT = 1;
-     COMPRESSION_FORMAT_LZNT1 = 2;
-  { TAPE_GET_DRIVE_PARAMETERS structure  }
-     TAPE_DRIVE_COMPRESSION = 131072;
-     TAPE_DRIVE_ECC = 65536;
-     TAPE_DRIVE_ERASE_BOP_ONLY = 64;
-     TAPE_DRIVE_ERASE_LONG = 32;
-     TAPE_DRIVE_ERASE_IMMEDIATE = 128;
-     TAPE_DRIVE_ERASE_SHORT = 16;
-     TAPE_DRIVE_FIXED = 1;
-     TAPE_DRIVE_FIXED_BLOCK = 1024;
-     TAPE_DRIVE_INITIATOR = 4;
-     TAPE_DRIVE_PADDING = 262144;
-     TAPE_DRIVE_GET_ABSOLUTE_BLK = 1048576;
-     TAPE_DRIVE_GET_LOGICAL_BLK = 2097152;
-     TAPE_DRIVE_REPORT_SMKS = 524288;
-     TAPE_DRIVE_SELECT = 2;
-     TAPE_DRIVE_SET_EOT_WZ_SIZE = 4194304;
-     TAPE_DRIVE_TAPE_CAPACITY = 256;
-     TAPE_DRIVE_TAPE_REMAINING = 512;
-     TAPE_DRIVE_VARIABLE_BLOCK = 2048;
-     TAPE_DRIVE_WRITE_PROTECT = 4096;
-     TAPE_DRIVE_ABS_BLK_IMMED = -(2147475456);
-     TAPE_DRIVE_ABSOLUTE_BLK = -(2147479552);
-     TAPE_DRIVE_END_OF_DATA = -(2147418112);
-     TAPE_DRIVE_FILEMARKS = -(2147221504);
-     TAPE_DRIVE_LOAD_UNLOAD = -(2147483647);
-     TAPE_DRIVE_LOAD_UNLD_IMMED = -(2147483616);
-     TAPE_DRIVE_LOCK_UNLOCK = -(2147483644);
-     TAPE_DRIVE_LOCK_UNLK_IMMED = -(2147483520);
-     TAPE_DRIVE_LOG_BLK_IMMED = -(2147450880);
-     TAPE_DRIVE_LOGICAL_BLK = -(2147467264);
-     TAPE_DRIVE_RELATIVE_BLKS = -(2147352576);
-     TAPE_DRIVE_REVERSE_POSITION = -(2143289344);
-     TAPE_DRIVE_REWIND_IMMEDIATE = -(2147483640);
-     TAPE_DRIVE_SEQUENTIAL_FMKS = -(2146959360);
-     TAPE_DRIVE_SEQUENTIAL_SMKS = -(2145386496);
-     TAPE_DRIVE_SET_BLOCK_SIZE = -(2147483632);
-     TAPE_DRIVE_SET_COMPRESSION = -(2147483136);
-     TAPE_DRIVE_SET_ECC = -(2147483392);
-     TAPE_DRIVE_SET_PADDING = -(2147482624);
-     TAPE_DRIVE_SET_REPORT_SMKS = -(2147481600);
-     TAPE_DRIVE_SETMARKS = -(2146435072);
-     TAPE_DRIVE_SPACE_IMMEDIATE = -(2139095040);
-     TAPE_DRIVE_TENSION = -(2147483646);
-     TAPE_DRIVE_TENSION_IMMED = -(2147483584);
-     TAPE_DRIVE_WRITE_FILEMARKS = -(2113929216);
-     TAPE_DRIVE_WRITE_LONG_FMKS = -(2013265920);
-     TAPE_DRIVE_WRITE_MARK_IMMED = -(1879048192);
-     TAPE_DRIVE_WRITE_SETMARKS = -(2130706432);
-     TAPE_DRIVE_WRITE_SHORT_FMKS = -(2080374784);
-  { ACCESS_MASK, ACCESS TYPES  }
-//     DELETE = $00010000;       //+winnt  // The name conflicts with Delete procedure
-     READ_CONTROL = $00020000; //+winnt
-     WRITE_DAC = $00040000;    //winnt
-     WRITE_OWNER = $00080000;  //winnt
-     SYNCHRONIZE = $00100000;  //winnt
-     //
-     // MaximumAllowed access type
-     //
-     MAXIMUM_ALLOWED = $2000000;   //winnt
-     GENERIC_READ = $80000000;     //winnt
-     GENERIC_WRITE = $40000000;    //winnt
-     GENERIC_EXECUTE = $20000000;  //+winnt
-     GENERIC_ALL = $10000000;      //winnt
-  { Standard rights  }
-     STANDARD_RIGHTS_REQUIRED = $f0000;      //winnt
-     STANDARD_RIGHTS_WRITE = READ_CONTROL;   //~winnt
-     STANDARD_RIGHTS_READ = READ_CONTROL;    //~winnt
-     STANDARD_RIGHTS_EXECUTE = READ_CONTROL; //~winnt
-     STANDARD_RIGHTS_ALL = $1f0000;
-     SPECIFIC_RIGHTS_ALL = $ffff;
-     //
-     // AccessSystemAcl access type
-     //
-     ACCESS_SYSTEM_SECURITY = $1000000;
-  { SID  }
-     /////////////////////////////////////////////////////////////////////////////
-     //                                                                         //
-     // Universal well-known SIDs                                               //
-     //                                                                         //
-     //     Null SID                     S-1-0-0                                //
-     //     World                        S-1-1-0                                //
-     //     Local                        S-1-2-0                                //
-     //     Creator Owner ID             S-1-3-0                                //
-     //     Creator Group ID             S-1-3-1                                //
-     //     Creator Owner Server ID      S-1-3-2                                //
-     //     Creator Group Server ID      S-1-3-3                                //
-     //                                                                         //
-     //     (Non-unique IDs)             S-1-4                                  //
-     //                                                                         //
-     /////////////////////////////////////////////////////////////////////////////
-
-     SECURITY_NULL_SID_AUTHORITY : SID_IDENTIFIER_AUTHORITY_REC = ( 0,0,0,0,0,0);  //+winnt
-     SECURITY_WORLD_SID_AUTHORITY : SID_IDENTIFIER_AUTHORITY_REC = (0,0,0,0,0,1);  //+winnt
-     SECURITY_LOCAL_SID_AUTHORITY : SID_IDENTIFIER_AUTHORITY_REC = (0,0,0,0,0,2);  //+winnt
-     SECURITY_CREATOR_SID_AUTHORITY : SID_IDENTIFIER_AUTHORITY_REC = (0,0,0,0,0,3);//+winnt
-     SECURITY_NON_UNIQUE_AUTHORITY : SID_IDENTIFIER_AUTHORITY_REC = (0,0,0,0,0,4); //+winnt
-     SECURITY_NULL_RID = 0;                  //winnt
-     SECURITY_WORLD_RID = 0;                 //winnt
-     SECURITY_LOCAL_RID = 0;                 //winnt
-     SECURITY_CREATOR_OWNER_RID = 0;         //winnt
-     SECURITY_CREATOR_GROUP_RID = $1;        //winnt
-     SECURITY_CREATOR_OWNER_SERVER_RID = $2; //+winnt
-     SECURITY_CREATOR_GROUP_SERVER_RID = $3; //+winnt
-     /////////////////////////////////////////////////////////////////////////////
-     //                                                                         //
-     // NT well-known SIDs                                                      //
-     //                                                                         //
-     //     NT Authority          S-1-5                                         //
-     //     Dialup                S-1-5-1                                       //
-     //                                                                         //
-     //     Network               S-1-5-2                                       //
-     //     Batch                 S-1-5-3                                       //
-     //     Interactive           S-1-5-4                                       //
-     //     Service               S-1-5-6                                       //
-     //     AnonymousLogon        S-1-5-7       (aka null logon session)        //
-     //     Proxy                 S-1-5-8                                       //
-     //     ServerLogon           S-1-5-9       (aka domain controller account) //
-     //     Self                  S-1-5-10      (self RID)                      //
-     //     Authenticated User    S-1-5-11      (Authenticated user somewhere)  //
-     //     Restricted Code       S-1-5-12      (Running restricted code)       //
-     //                                                                         //
-     //     (Logon IDs)           S-1-5-5-X-Y                                   //
-     //                                                                         //
-     //     (NT non-unique IDs)   S-1-5-0x15-...                                //
-     //                                                                         //
-     //     (Built-in domain)     s-1-5-0x20                                    //
-     //                                                                         //
-     /////////////////////////////////////////////////////////////////////////////
-     SECURITY_NT_AUTHORITY : SID_IDENTIFIER_AUTHORITY_REC = (0,0,0,0,0,5); //+winnt
-
-     SECURITY_DIALUP_RID                 = $1;        //winnt
-     SECURITY_NETWORK_RID                = $2;        //winnt
-     SECURITY_BATCH_RID                  = $3;        //winnt
-     SECURITY_INTERACTIVE_RID            = $4;        //winnt
-     SECURITY_LOGON_IDS_RID              = $5;        //winnt
-     SECURITY_LOGON_IDS_RID_COUNT        = $3;        //winnt
-     SECURITY_SERVICE_RID                = $6;        //winnt
-     SECURITY_ANONYMOUS_LOGON_RID        = $00000007; //+winnt
-     SECURITY_PROXY_RID                  = $00000008; //+winnt
-     SECURITY_ENTERPRISE_CONTROLLERS_RID = $00000009; //+winnt
-     SECURITY_SERVER_LOGON_RID           = SECURITY_ENTERPRISE_CONTROLLERS_RID; //+winnt
-     SECURITY_PRINCIPAL_SELF_RID         = $0000000A; //+winnt
-     SECURITY_AUTHENTICATED_USER_RID     = $0000000B; //+winnt
-     SECURITY_RESTRICTED_CODE_RID        = $0000000C; //+winnt
-
-     SECURITY_LOCAL_SYSTEM_RID           = $12;       //winnt
-     SECURITY_NT_NON_UNIQUE              = $00000015; //+winnt
-     SECURITY_BUILTIN_DOMAIN_RID         = $20;       //winnt
-     // Well-known users ...
-     DOMAIN_USER_RID_ADMIN               = $1f4;      //winnt
-     DOMAIN_USER_RID_GUEST               = $1f5;      //winnt
-     DOMAIN_USER_RID_KRBTGT              = $000001F6; //+winnt
-     // well-known groups ...
-     DOMAIN_GROUP_RID_ADMINS             = $200;      //winnt
-     DOMAIN_GROUP_RID_USERS              = $201;      //winnt
-     DOMAIN_GROUP_RID_GUESTS             = $00000202; //+winnt
-     DOMAIN_GROUP_RID_COMPUTERS          = $00000203; //+winnt
-     DOMAIN_GROUP_RID_CONTROLLERS        = $00000204; //+winnt
-     DOMAIN_GROUP_RID_CERT_ADMINS        = $00000205; //+winnt
-     DOMAIN_GROUP_RID_SCHEMA_ADMINS      = $00000206; //+winnt
-     DOMAIN_GROUP_RID_ENTERPRISE_ADMINS  = $00000207; //+winnt
-     // well-known aliases ...
-     DOMAIN_ALIAS_RID_ADMINS = $220;                  //winnt
-     DOMAIN_ALIAS_RID_USERS = $221;                   //winnt
-     DOMAIN_ALIAS_RID_GUESTS = $222;                  //winnt
-     DOMAIN_ALIAS_RID_POWER_USERS = $223;             //winnt
-     DOMAIN_ALIAS_RID_ACCOUNT_OPS = $224;             //winnt
-     DOMAIN_ALIAS_RID_SYSTEM_OPS = $225;              //winnt
-     DOMAIN_ALIAS_RID_PRINT_OPS = $226;               //winnt
-     DOMAIN_ALIAS_RID_BACKUP_OPS = $227;              //winnt
-     DOMAIN_ALIAS_RID_REPLICATOR = $228;              //winnt
-
-     //
-     // Allocate the System Luid.  The first 1000 LUIDs are reserved.
-     // Use #999 here (0x3E7 = 999)
-     //
-     SYSTEM_LUID : LUID = ( LowPart: $3E7; HighPart: $0 );
-     ANONYMOUS_LOGON_LUID : LUID = (LowPart: $3e6; HighPart: $0 );
-
-     //
-     // Group attributes
-     //
-     SE_GROUP_MANDATORY = $1;                         //winnt
-     SE_GROUP_ENABLED_BY_DEFAULT = $2;                //winnt
-     SE_GROUP_ENABLED = $4;                           //winnt
-     SE_GROUP_OWNER = $8;                             //winnt
-     SE_GROUP_USE_FOR_DENY_ONLY = $00000010;          //+winnt
-     SE_GROUP_LOGON_ID = $c0000000;                   //winnt
-
-  { ACL Defines  }
-     ACL_REVISION = 2;
-     ACL_REVISION_DS = 4;             //+winnt
-     // This is the history of ACL revisions.  Add a new one whenever
-     // ACL_REVISION is updated
-     ACL_REVISION1=1;                 //+winnt
-     ACL_REVISION2=2;                 //+winnt
-     ACL_REVISION3=3;                 //+winnt
-     ACL_REVISION4=4;                 //+winnt
-     MIN_ACL_REVISION=ACL_REVISION2;  //+winnt
-     MAX_ACL_REVISION=ACL_REVISION4;  //+winnt
-  { ACE_HEADER structure  }
-     ACCESS_MIN_MS_ACE_TYPE  = $0;          //+winnt
-     ACCESS_ALLOWED_ACE_TYPE = $0;
-     ACCESS_DENIED_ACE_TYPE = $1;
-     SYSTEM_AUDIT_ACE_TYPE = $2;
-     SYSTEM_ALARM_ACE_TYPE = $3;
-     ACCESS_MAX_MS_V2_ACE_TYPE = $3;        //+winnt
-     ACCESS_ALLOWED_COMPOUND_ACE_TYPE = $4; //+winnt
-     ACCESS_MAX_MS_V3_ACE_TYPE = $4;
-
-     ACCESS_MIN_MS_OBJECT_ACE_TYPE = $5;    //+winnt
-     ACCESS_ALLOWED_OBJECT_ACE_TYPE = $5;   //+winnt
-     ACCESS_DENIED_OBJECT_ACE_TYPE = $6;    //+winnt
-     SYSTEM_AUDIT_OBJECT_ACE_TYPE = $7;     //+winnt
-     SYSTEM_ALARM_OBJECT_ACE_TYPE = $8;     //+winnt
-     ACCESS_MAX_MS_OBJECT_ACE_TYPE = $8;    //+winnt
-
-     ACCESS_MAX_MS_V4_ACE_TYPE = $8;        //+winnt
-     ACCESS_MAX_MS_ACE_TYPE = $8;           //+winnt
-
-  { ACE flags in the ACE_HEADER structure  }
-     //
-     //  The following are the inherit flags that go into the AceFlags field
-     //  of an Ace header.
-     //
-     OBJECT_INHERIT_ACE = $1;              //winnt
-     CONTAINER_INHERIT_ACE = $2;           //winnt
-     NO_PROPAGATE_INHERIT_ACE = $4;        //winnt
-     INHERIT_ONLY_ACE = $8;                //winnt
-     INHERITED_ACE = $10;                  //+winnt
-     VALID_INHERIT_FLAGS = $1F;            //+winnt
-     //  The following are the currently defined ACE flags that go into the
-     //  AceFlags field of an ACE header.  Each ACE type has its own set of
-     //  AceFlags.
-     //
-     //  SUCCESSFUL_ACCESS_ACE_FLAG - used only with system audit and alarm ACE
-     //  types to indicate that a message is generated for successful accesses.
-     //
-     //  FAILED_ACCESS_ACE_FLAG - used only with system audit and alarm ACE types
-     //  to indicate that a message is generated for failed accesses.
-     //
-     //
-     //  SYSTEM_AUDIT and SYSTEM_ALARM AceFlags
-     //
-     //  These control the signaling of audit and alarms for success or failure.
-     //
-     SUCCESSFUL_ACCESS_ACE_FLAG = $40;     //winnt
-     FAILED_ACCESS_ACE_FLAG = $80;         //winnt
-  { SECURITY_DESCRIPTOR_CONTROL  }
-     {SECURITY_DESCRIPTOR_REVISION = 1;already defined above }
-     SECURITY_DESCRIPTOR_MIN_LENGTH = 20;
-     SE_OWNER_DEFAULTED = 1;
-     SE_GROUP_DEFAULTED = 2;
-     SE_DACL_PRESENT = 4;
-     SE_DACL_DEFAULTED = 8;
-     SE_SACL_PRESENT = 16;
-     SE_SACL_DEFAULTED = 32;
-     SE_SELF_RELATIVE = 32768;
-  { PRIVILEGE_SET  }
-     SE_PRIVILEGE_ENABLED_BY_DEFAULT = $1;
-     SE_PRIVILEGE_ENABLED = $2;
-     SE_PRIVILEGE_USED_FOR_ACCESS = $80000000;
-     PRIVILEGE_SET_ALL_NECESSARY = $1;
-  { OPENFILENAME structure  }
-     OFN_ALLOWMULTISELECT = $200;
-     OFN_CREATEPROMPT = $2000;
-     OFN_ENABLEHOOK = $20;
-     OFN_ENABLETEMPLATE = $40;
-     OFN_ENABLETEMPLATEHANDLE = $80;
-     OFN_EXPLORER = $80000;
-     OFN_EXTENSIONDIFFERENT = $400;
-     OFN_FILEMUSTEXIST = $1000;
-     OFN_HIDEREADONLY = $4;
-     OFN_LONGNAMES = $200000;
-     OFN_NOCHANGEDIR = $8;
-     OFN_NODEREFERENCELINKS = $100000;
-     OFN_NOLONGNAMES = $40000;
-     OFN_NONETWORKBUTTON = $20000;
-     OFN_NOREADONLYRETURN = $8000;
-     OFN_NOTESTFILECREATE = $10000;
-     OFN_NOVALIDATE = $100;
-     OFN_OVERWRITEPROMPT = $2;
-     OFN_PATHMUSTEXIST = $800;
-     OFN_READONLY = $1;
-     OFN_SHAREAWARE = $4000;
-     OFN_SHOWHELP = $10;
-     OFN_PROJECT  = $00400000;
-     OFN_PROPERTY = $00800000;
-     OFN_SHOW_ALL = $01000000;
-  { SHAREVISTRING message  }
-     OFN_SHAREFALLTHROUGH = $2;
-     OFN_SHARENOWARN = $1;
-     OFN_SHAREWARN = 0;
-  { Open/Save notifications  }
-     CDN_INITDONE = $fffffda7;
-     CDN_SELCHANGE = $fffffda6;
-     CDN_FOLDERCHANGE = $fffffda5;
-     CDN_SHAREVIOLATION = $fffffda4;
-     CDN_HELP = $fffffda3;
-     CDN_FILEOK = $fffffda2;
-     CDN_TYPECHANGE = $fffffda1;
-  { Open/Save messages  }
-     CDM_GETFILEPATH = $465;
-     CDM_GETFOLDERIDLIST = $467;
-     CDM_GETFOLDERPATH = $466;
-     CDM_GETSPEC = $464;
-     CDM_HIDECONTROL = $469;
-     CDM_SETCONTROLTEXT = $468;
-     CDM_SETDEFEXT = $46a;
-  { CHOOSECOLOR structure  }
-     CC_ENABLEHOOK = $10;
-     CC_ENABLETEMPLATE = $20;
-     CC_ENABLETEMPLATEHANDLE = $40;
-     CC_FULLOPEN = $2;
-     CC_PREVENTFULLOPEN = $4;
-     CC_RGBINIT = $1;
-     CC_SHOWHELP = $8;
-     CC_SOLIDCOLOR = $80;
-  { FINDREPLACE structure  }
-     FR_DIALOGTERM = $40;
-     FR_DOWN = $1;
-     FR_ENABLEHOOK = $100;
-     FR_ENABLETEMPLATE = $200;
-     FR_ENABLETEMPLATEHANDLE = $2000;
-     FR_FINDNEXT = $8;
-     FR_HIDEUPDOWN = $4000;
-     FR_HIDEMATCHCASE = $8000;
-     FR_HIDEWHOLEWORD = $10000;
-     FR_MATCHCASE = $4;
-     FR_NOMATCHCASE = $800;
-     FR_NOUPDOWN = $400;
-     FR_NOWHOLEWORD = $1000;
-     FR_REPLACE = $10;
-     FR_REPLACEALL = $20;
-     FR_SHOWHELP = $80;
-     FR_WHOLEWORD = $2;
-  { CHOOSEFONT structure  }
-     CF_APPLY = $200;
-     CF_ANSIONLY = $400;
-     CF_BOTH = $3;
-     CF_TTONLY = $40000;
-     CF_EFFECTS = $100;
-     CF_ENABLEHOOK = $8;
-     CF_ENABLETEMPLATE = $10;
-     CF_ENABLETEMPLATEHANDLE = $20;
-     CF_FIXEDPITCHONLY = $4000;
-     CF_FORCEFONTEXIST = $10000;
-     CF_INITTOLOGFONTSTRUCT = $40;
-     CF_LIMITSIZE = $2000;
-     CF_NOOEMFONTS = $800;
-     CF_NOFACESEL = $80000;
-     CF_NOSCRIPTSEL = $800000;
-     CF_NOSTYLESEL = $100000;
-     CF_NOSIZESEL = $200000;
-     CF_NOSIMULATIONS = $1000;
-     CF_NOVECTORFONTS = $800;
-     CF_NOVERTFONTS = $1000000;
-     CF_PRINTERFONTS = $2;
-     CF_SCALABLEONLY = $20000;
-     CF_SCREENFONTS = $1;
-     CF_SCRIPTSONLY = $400;
-     CF_SELECTSCRIPT = $400000;
-     CF_SHOWHELP = $4;
-     CF_USESTYLE = $80;
-     CF_WYSIWYG = $8000;
-     BOLD_FONTTYPE = $100;
-     ITALIC_FONTTYPE = $200;
-     PRINTER_FONTTYPE = $4000;
-     REGULAR_FONTTYPE = $400;
-     SCREEN_FONTTYPE = $2000;
-     SIMULATED_FONTTYPE = $8000;
-  { Common dialog messages  }
-     COLOROKSTRINGW = 'commdlg_ColorOK';
-     FILEOKSTRINGW = 'commdlg_FileNameOK';
-     FINDMSGSTRINGW = 'commdlg_FindReplace';
-     HELPMSGSTRINGW = 'commdlg_help';
-     LBSELCHSTRINGW = 'commdlg_LBSelChangedNotify';
-     SETRGBSTRINGW = 'commdlg_SetRGBColor';
-     SHAREVISTRINGW = 'commdlg_ShareViolation';
-     COLOROKSTRINGA = 'commdlg_ColorOK';
-     FILEOKSTRINGA = 'commdlg_FileNameOK';
-     FINDMSGSTRINGA = 'commdlg_FindReplace';
-     HELPMSGSTRINGA = 'commdlg_help';
-     LBSELCHSTRINGA = 'commdlg_LBSelChangedNotify';
-     SETRGBSTRINGA = 'commdlg_SetRGBColor';
-     SHAREVISTRINGA = 'commdlg_ShareViolation';
-{$ifdef UNICODE}
-
-  const
-     COLOROKSTRING = COLOROKSTRINGW;
-     FILEOKSTRING = FILEOKSTRINGW;
-     FINDMSGSTRING = FINDMSGSTRINGW;
-     HELPMSGSTRING = HELPMSGSTRINGW;
-     LBSELCHSTRING = LBSELCHSTRINGW;
-     SETRGBSTRING = SETRGBSTRINGW;
-     SHAREVISTRING = SHAREVISTRINGW;
-{$else}
-
-  const
-     COLOROKSTRING = COLOROKSTRINGA;
-     FILEOKSTRING = FILEOKSTRINGA;
-     FINDMSGSTRING = FINDMSGSTRINGA;
-     HELPMSGSTRING = HELPMSGSTRINGA;
-     LBSELCHSTRING = LBSELCHSTRINGA;
-     SETRGBSTRING = SETRGBSTRINGA;
-     SHAREVISTRING = SHAREVISTRINGA;
-{$endif}
-  { LBSELCHSTRING message  }
-
-  const
-     CD_LBSELCHANGE = 0;
-     CD_LBSELADD = 2;
-     CD_LBSELSUB = 1;
-     CD_LBSELNOITEMS = -(1);
-  { DEVNAMES structure  }
-     DN_DEFAULTPRN = 1;
-  { PRINTDLG structure  }
-     PD_ALLPAGES = 0;
-     PD_COLLATE = 16;
-     PD_DISABLEPRINTTOFILE = 524288;
-     PD_ENABLEPRINTHOOK = 4096;
-     PD_ENABLEPRINTTEMPLATE = 16384;
-     PD_ENABLEPRINTTEMPLATEHANDLE = 65536;
-     PD_ENABLESETUPHOOK = 8192;
-     PD_ENABLESETUPTEMPLATE = 32768;
-     PD_ENABLESETUPTEMPLATEHANDLE = 131072;
-     PD_HIDEPRINTTOFILE = 1048576;
-     PD_NOPAGENUMS = 8;
-     PD_NOSELECTION = 4;
-     PD_NOWARNING = 128;
-     PD_PAGENUMS = 2;
-     PD_PRINTSETUP = 64;
-     PD_PRINTTOFILE = 32;
-     PD_RETURNDC = 256;
-     PD_RETURNDEFAULT = 1024;
-     PD_RETURNIC = 512;
-     PD_SELECTION = 1;
-     PD_SHOWHELP = 2048;
-     PD_USEDEVMODECOPIES = 262144;
-     PD_USEDEVMODECOPIESANDCOLLATE = 262144;
-  { PAGESETUPDLG structure  }
-     PSD_DEFAULTMINMARGINS = 0;
-     PSD_DISABLEMARGINS = 16;
-     PSD_DISABLEORIENTATION = 256;
-     PSD_DISABLEPAGEPAINTING = 524288;
-     PSD_DISABLEPAPER = 512;
-     PSD_DISABLEPRINTER = 32;
-     PSD_ENABLEPAGEPAINTHOOK = 262144;
-     PSD_ENABLEPAGESETUPHOOK = 8192;
-     PSD_ENABLEPAGESETUPTEMPLATE = 32768;
-     PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 131072;
-     PSD_INHUNDREDTHSOFMILLIMETERS = 8;
-     PSD_INTHOUSANDTHSOFINCHES = 4;
-     PSD_INWININIINTLMEASURE = 0;
-     PSD_MARGINS = 2;
-     PSD_MINMARGINS = 1;
-     PSD_NOWARNING = 128;
-     PSD_RETURNDEFAULT = 1024;
-     PSD_SHOWHELP = 2048;
-  { WM_SHOWWINDOW message  }
-     SW_OTHERUNZOOM = 4;
-     SW_OTHERZOOM = 2;
-     SW_PARENTCLOSING = 1;
-     SW_PARENTOPENING = 3;
-  { Virtual Key codes  }
-     VK_LBUTTON = 1;
-     VK_RBUTTON = 2;
-     VK_CANCEL = 3;
-     VK_MBUTTON = 4;
-     VK_BACK = 8;
-     VK_TAB = 9;
-     VK_CLEAR = 12;
-     VK_RETURN = 13;
-     VK_SHIFT = 16;
-     VK_CONTROL = 17;
-     VK_MENU = 18;
-     VK_PAUSE = 19;
-     VK_CAPITAL = 20;
-     VK_ESCAPE = 27;
-     VK_SPACE = 32;
-     VK_PRIOR = 33;
-     VK_NEXT = 34;
-     VK_END = 35;
-     VK_HOME = 36;
-     VK_LEFT = 37;
-     VK_UP = 38;
-     VK_RIGHT = 39;
-     VK_DOWN = 40;
-     VK_SELECT = 41;
-     VK_PRINT = 42;
-     VK_EXECUTE = 43;
-     VK_SNAPSHOT = 44;
-     VK_INSERT = 45;
-     VK_DELETE = 46;
-     VK_HELP = 47;
-     VK_0 = 48;
-     VK_1 = 49;
-     VK_2 = 50;
-     VK_3 = 51;
-     VK_4 = 52;
-     VK_5 = 53;
-     VK_6 = 54;
-     VK_7 = 55;
-     VK_8 = 56;
-     VK_9 = 57;
-     VK_A = 65;
-     VK_B = 66;
-     VK_C = 67;
-     VK_D = 68;
-     VK_E = 69;
-     VK_F = 70;
-     VK_G = 71;
-     VK_H = 72;
-     VK_I = 73;
-     VK_J = 74;
-     VK_K = 75;
-     VK_L = 76;
-     VK_M = 77;
-     VK_N = 78;
-     VK_O = 79;
-     VK_P = 80;
-     VK_Q = 81;
-     VK_R = 82;
-     VK_S = 83;
-     VK_T = 84;
-     VK_U = 85;
-     VK_V = 86;
-     VK_W = 87;
-     VK_X = 88;
-     VK_Y = 89;
-     VK_Z = 90;
-     VK_LWIN = 91;
-     VK_RWIN = 92;
-     VK_APPS = 93;
-     VK_NUMPAD0 = 96;
-     VK_NUMPAD1 = 97;
-     VK_NUMPAD2 = 98;
-     VK_NUMPAD3 = 99;
-     VK_NUMPAD4 = 100;
-     VK_NUMPAD5 = 101;
-     VK_NUMPAD6 = 102;
-     VK_NUMPAD7 = 103;
-     VK_NUMPAD8 = 104;
-     VK_NUMPAD9 = 105;
-     VK_MULTIPLY = 106;
-     VK_ADD = 107;
-     VK_SEPARATOR = 108;
-     VK_SUBTRACT = 109;
-     VK_DECIMAL = 110;
-     VK_DIVIDE = 111;
-     VK_F1 = 112;
-     VK_F2 = 113;
-     VK_F3 = 114;
-     VK_F4 = 115;
-     VK_F5 = 116;
-     VK_F6 = 117;
-     VK_F7 = 118;
-     VK_F8 = 119;
-     VK_F9 = 120;
-     VK_F10 = 121;
-     VK_F11 = 122;
-     VK_F12 = 123;
-     VK_F13 = 124;
-     VK_F14 = 125;
-     VK_F15 = 126;
-     VK_F16 = 127;
-     VK_F17 = 128;
-     VK_F18 = 129;
-     VK_F19 = 130;
-     VK_F20 = 131;
-     VK_F21 = 132;
-     VK_F22 = 133;
-     VK_F23 = 134;
-     VK_F24 = 135;
-  { GetAsyncKeyState  }
-     VK_NUMLOCK = 144;
-     VK_SCROLL = 145;
-     VK_LSHIFT = 160;
-     VK_LCONTROL = 162;
-     VK_LMENU = 164;
-     VK_RSHIFT = 161;
-     VK_RCONTROL = 163;
-     VK_RMENU = 165;
-  { ImmGetVirtualKey  }
-     VK_PROCESSKEY = 229;
-
-     // these constants are xda-specific:
-     VK_TOUCHPAD   = $01; // VK_LBUTTON
-     VK_ANSWER     = $72; // VK_F5
-     VK_HANGUP     = $73; // VK_F4
-     VK_VOLUME     = $75; // VK_F6
-
-     VK_TOPBUTTONS = $5b; // VK_LWIN
-     // VK_TOPBUTTONS is sent together with one of these:
-     VK_CALENDER   = $C1;
-     VK_CONTACTS   = $C2;
-
-     // note that when holding the navigator button down continuously,
-     // occasionally the OS will report no keys pressed down.
-
-     VK_NAVIGATOR_MOVE = $84; // VK_F21
-     // VK_NAVIGATOR_MOVE is sent together with one of these:
-     VK_NAVIGATE_LEFT  = $25; // VK_LEFT
-     VK_NAVIGATE_UP    = $26; // VK_UP
-     VK_NAVIGATE_RIGHT = $27; // VK_RIGHT
-     VK_NAVIGATE_DOWN  = $28; // VK_DOWN
-
-     VK_NAVIGATOR_SELECT = $86; // VK_F23
-
-     VK_ONOFF            = $DF; // VK_OFF
-
-  { Keystroke Message Flags  }
-     KF_ALTDOWN = 8192;
-     KF_DLGMODE = 2048;
-     KF_EXTENDED = 256;
-     KF_MENUMODE = 4096;
-     KF_REPEAT = 16384;
-     KF_UP = 32768;
-  { GetKeyboardLayoutName  }
-     KL_NAMELENGTH = 9;
-  { WM_ACTIVATE message  }
-     WA_ACTIVE = 1;
-     WA_CLICKACTIVE = 2;
-     WA_INACTIVE = 0;
-  { WM_ACTIVATE message  }
-     PWR_CRITICALRESUME = 3;
-     PWR_SUSPENDREQUEST = 1;
-     PWR_SUSPENDRESUME = 2;
-     PWR_FAIL = -(1);
-     PWR_OK = 1;
-  { WM_NOTIFYFORMAT message  }
-     NF_QUERY = 3;
-     NF_REQUERY = 4;
-     NFR_ANSI = 1;
-     NFR_UNICODE = 2;
-  { WM_SIZING message  }
-     WMSZ_BOTTOM = 6;
-     WMSZ_BOTTOMLEFT = 7;
-     WMSZ_BOTTOMRIGHT = 8;
-     WMSZ_LEFT = 1;
-     WMSZ_RIGHT = 2;
-     WMSZ_TOP = 3;
-     WMSZ_TOPLEFT = 4;
-     WMSZ_TOPRIGHT = 5;
-  { WM_MOUSEACTIVATE message  }
-     MA_ACTIVATE = 1;
-     MA_ACTIVATEANDEAT = 2;
-     MA_NOACTIVATE = 3;
-     MA_NOACTIVATEANDEAT = 4;
-  { WM_SIZE message  }
-     SIZE_MAXHIDE = 4;
-     SIZE_MAXIMIZED = 2;
-     SIZE_MAXSHOW = 3;
-     SIZE_MINIMIZED = 1;
-     SIZE_RESTORED = 0;
-  { WM_NCCALCSIZE message  }
-     WVR_ALIGNTOP = 16;
-     WVR_ALIGNLEFT = 32;
-     WVR_ALIGNBOTTOM = 64;
-     WVR_ALIGNRIGHT = 128;
-     WVR_HREDRAW = 256;
-     WVR_VREDRAW = 512;
-     WVR_REDRAW = 768;
-     WVR_VALIDRECTS = 1024;
-  { WM_NCHITTEST message  }
-     HTBOTTOM = 15;
-     HTBOTTOMLEFT = 16;
-     HTBOTTOMRIGHT = 17;
-     HTCAPTION = 2;
-     HTCLIENT = 1;
-     HTERROR = -(2);
-     HTGROWBOX = 4;
-     HTHSCROLL = 6;
-     HTLEFT = 10;
-     HTMENU = 5;
-     HTNOWHERE = 0;
-     HTREDUCE = 8;
-     HTRIGHT = 11;
-     HTSIZE = 4;
-     HTSYSMENU = 3;
-     HTTOP = 12;
-     HTTOPLEFT = 13;
-     HTTOPRIGHT = 14;
-     HTTRANSPARENT = -(1);
-     HTVSCROLL = 7;
-     HTZOOM = 9;
-  { Mouse messages  }
-     MK_CONTROL = 8;
-     MK_LBUTTON = 1;
-     MK_MBUTTON = 16;
-     MK_RBUTTON = 2;
-     MK_SHIFT = 4;
-  { WNDCLASS structure  }
-     CS_VREDRAW = 1;
-     CS_HREDRAW = 2;
-     CS_DBLCLKS = 8;
-     CS_PARENTDC = 128;
-     CS_NOCLOSE = 512;
-     CS_SAVEBITS = 2048;
-     CS_GLOBALCLASS = 16384;
-     CS_IME = $10000;
-
-     DLGWINDOWEXTRA = 32;
-  { ACCEL structure  }
-     FALT = 16;
-     FCONTROL = 8;
-     FNOINVERT = 2;
-     FSHIFT = 4;
-     FVIRTKEY = 1;
-  { MENUITEMINFO structure  }
-     MIIM_CHECKMARKS = 8;
-     MIIM_DATA = 32;
-     MIIM_ID = 2;
-     MIIM_STATE = 1;
-     MIIM_SUBMENU = 4;
-     MIIM_TYPE = 16;
-     MFT_BITMAP = $4;
-     MFT_MENUBARBREAK = $20;
-     MFT_MENUBREAK = $40;
-     MFT_OWNERDRAW = $100;
-     MFT_RADIOCHECK = $200;
-     MFT_RIGHTJUSTIFY = $4000;
-     MFT_SEPARATOR = $800;
-     MFT_STRING = 0;
-     MFS_CHECKED = $8;
-     MFS_DEFAULT = $1000;
-     MFS_DISABLED = $3;
-     MFS_ENABLED = 0;
-     MFS_GRAYED = $3;
-     MFS_HILITE = $80;
-     MFS_UNCHECKED = 0;
-     MFS_UNHILITE = 0;
-  { SERIALKEYS structure  }
-     SERKF_AVAILABLE = 2;
-     SERKF_INDICATOR = 4;
-     SERKF_SERIALKEYSON = 1;
-  { FILTERKEYS structure  }
-     FKF_AVAILABLE = 2;
-     FKF_CLICKON = 64;
-     FKF_FILTERKEYSON = 1;
-     FKF_HOTKEYACTIVE = 4;
-     FKF_HOTKEYSOUND = 16;
-     FKF_CONFIRMHOTKEY = 8;
-     FKF_INDICATOR = 32;
-  { HELPINFO structure  }
-     HELPINFO_MENUITEM = 2;
-     HELPINFO_WINDOW = 1;
-  { WM_PRINT message  }
-     PRF_CHECKVISIBLE = $1;
-     PRF_CHILDREN = $10;
-     PRF_CLIENT = $4;
-     PRF_ERASEBKGND = $8;
-     PRF_NONCLIENT = $2;
-     PRF_OWNED = $20;
-  { MapWindowPoints  }
-    { was #define dname def_expr }
-    HWND_DESKTOP = HWND(0);
-
-  { WM_SYSCOMMAND message  }
-
-  const
-     SC_CLOSE = 61536;
-     SC_CONTEXTHELP = 61824;
-     SC_DEFAULT = 61792;
-     SC_HOTKEY = 61776;
-     SC_HSCROLL = 61568;
-     SC_KEYMENU = 61696;
-     SC_MAXIMIZE = 61488;
-     SC_ZOOM = 61488;
-     SC_MINIMIZE = 61472;
-     SC_ICON = 61472;
-     SC_MONITORPOWER = 61808;
-     SC_MOUSEMENU = 61584;
-     SC_MOVE = 61456;
-     SC_NEXTWINDOW = 61504;
-     SC_PREVWINDOW = 61520;
-     SC_RESTORE = 61728;
-     SC_SCREENSAVE = 61760;
-     SC_SIZE = 61440;
-     SC_TASKLIST = 61744;
-     SC_VSCROLL = 61552;
-  { DM_GETDEFID message  }
-     DC_HASDEFID = 21323;
-  { WM_GETDLGCODE message  }
-     DLGC_BUTTON = 8192;
-     DLGC_DEFPUSHBUTTON = 16;
-     DLGC_HASSETSEL = 8;
-     DLGC_RADIOBUTTON = 64;
-     DLGC_STATIC = 256;
-     DLGC_UNDEFPUSHBUTTON = 32;
-     DLGC_WANTALLKEYS = 4;
-     DLGC_WANTARROWS = 1;
-     DLGC_WANTCHARS = 128;
-     DLGC_WANTMESSAGE = 4;
-     DLGC_WANTTAB = 2;
-  { EM_SETMARGINS message  }
-     EC_LEFTMARGIN = 1;
-     EC_RIGHTMARGIN = 2;
-     EC_USEFONTINFO = 65535;
-  { LB_SETCOUNT message  }
-     LB_ERR = -(1);
-     LB_ERRSPACE = -(2);
-     LB_OKAY = 0;
-  { CB_DIR message  }
-     CB_ERR = -(1);
-     CB_ERRSPACE = -(2);
-  { WM_IME_CONTROL message  }
-     IMC_GETCANDIDATEPOS = 7;
-     IMC_GETCOMPOSITIONFONT = 9;
-     IMC_GETCOMPOSITIONWINDOW = 11;
-     IMC_GETSTATUSWINDOWPOS = 15;
-     IMC_CLOSESTATUSWINDOW = 33;
-     IMC_OPENSTATUSWINDOW = 34;
-     IMC_SETCANDIDATEPOS = 8;
-     IMC_SETCOMPOSITIONFONT = 10;
-     IMC_SETCOMPOSITIONWINDOW = 12;
-     IMC_SETSTATUSWINDOWPOS = 16;
-  { WM_IME_CONTROL message  }
-     IMN_CHANGECANDIDATE = 3;
-     IMN_CLOSECANDIDATE = 4;
-     IMN_CLOSESTATUSWINDOW = 1;
-     IMN_GUIDELINE = 13;
-     IMN_OPENCANDIDATE = 5;
-     IMN_OPENSTATUSWINDOW = 2;
-     IMN_SETCANDIDATEPOS = 9;
-     IMN_SETCOMPOSITIONFONT = 10;
-     IMN_SETCOMPOSITIONWINDOW = 11;
-     IMN_SETCONVERSIONMODE = 6;
-     IMN_SETOPENSTATUS = 8;
-     IMN_SETSENTENCEMODE = 7;
-     IMN_SETSTATUSWINDOWPOS = 12;
-     IMN_PRIVATE = 14;
-  { STICKYKEYS structure  }
-     SKF_AUDIBLEFEEDBACK = 64;
-     SKF_AVAILABLE = 2;
-     SKF_CONFIRMHOTKEY = 8;
-     SKF_HOTKEYACTIVE = 4;
-     SKF_HOTKEYSOUND = 16;
-     SKF_INDICATOR = 32;
-     SKF_STICKYKEYSON = 1;
-     SKF_TRISTATE = 128;
-     SKF_TWOKEYSOFF = 256;
-  { MOUSEKEYS structure  }
-     MKF_AVAILABLE = 2;
-     MKF_CONFIRMHOTKEY = 8;
-     MKF_HOTKEYACTIVE = 4;
-     MKF_HOTKEYSOUND = 16;
-     MKF_INDICATOR = 32;
-     MKF_MOUSEKEYSON = 1;
-     MKF_MODIFIERS = 64;
-     MKF_REPLACENUMBERS = 128;
-  { SOUNDSENTRY structure  }
-     SSF_AVAILABLE = 2;
-     SSF_SOUNDSENTRYON = 1;
-     SSTF_BORDER = 2;
-     SSTF_CHARS = 1;
-     SSTF_DISPLAY = 3;
-     SSTF_NONE = 0;
-     SSGF_DISPLAY = 3;
-     SSGF_NONE = 0;
-     SSWF_CUSTOM = 4;
-     SSWF_DISPLAY = 3;
-     SSWF_NONE = 0;
-     SSWF_TITLE = 1;
-     SSWF_WINDOW = 2;
-  { ACCESSTIMEOUT structure  }
-     ATF_ONOFFFEEDBACK = 2;
-     ATF_TIMEOUTON = 1;
-  { HIGHCONTRAST structure  }
-     HCF_AVAILABLE = 2;
-     HCF_CONFIRMHOTKEY = 8;
-     HCF_HIGHCONTRASTON = 1;
-     HCF_HOTKEYACTIVE = 4;
-     HCF_HOTKEYAVAILABLE = 64;
-     HCF_HOTKEYSOUND = 16;
-     HCF_INDICATOR = 32;
-  { TOGGLEKEYS structure  }
-     TKF_AVAILABLE = 2;
-     TKF_CONFIRMHOTKEY = 8;
-     TKF_HOTKEYACTIVE = 4;
-     TKF_HOTKEYSOUND = 16;
-     TKF_TOGGLEKEYSON = 1;
-  { Installable Policy  }
-     PP_DISPLAYERRORS = 1;
-  { SERVICE_INFO structure  }
-     RESOURCEDISPLAYTYPE_DOMAIN = 1;
-     RESOURCEDISPLAYTYPE_FILE = 4;
-     RESOURCEDISPLAYTYPE_GENERIC = 0;
-     RESOURCEDISPLAYTYPE_GROUP = 5;
-     RESOURCEDISPLAYTYPE_SERVER = 2;
-     RESOURCEDISPLAYTYPE_SHARE = 3;
-  { KEY_EVENT_RECORD structure  }
-     CAPSLOCK_ON = 128;
-     ENHANCED_KEY = 256;
-     LEFT_ALT_PRESSED = 2;
-     LEFT_CTRL_PRESSED = 8;
-     NUMLOCK_ON = 32;
-     RIGHT_ALT_PRESSED = 1;
-     RIGHT_CTRL_PRESSED = 4;
-     SCROLLLOCK_ON = 64;
-     SHIFT_PRESSED = 16;
-  { MOUSE_EVENT_RECORD structure  }
-     FROM_LEFT_1ST_BUTTON_PRESSED = 1;
-     RIGHTMOST_BUTTON_PRESSED = 2;
-     FROM_LEFT_2ND_BUTTON_PRESSED = 4;
-     FROM_LEFT_3RD_BUTTON_PRESSED = 8;
-     FROM_LEFT_4TH_BUTTON_PRESSED = 16;
-     DOUBLE_CLICK = 2;
-     MOUSE_MOVED = 1;
-  { INPUT_RECORD structure  }
-     KEY_EVENT = 1;
-     _MOUSE_EVENT = 2; {conflict with function mouse_event}
-     cMOUSE_EVENT = 2;
-     WINDOW_BUFFER_SIZE_EVENT = 4;
-     MENU_EVENT = 8;
-     FOCUS_EVENT = 16;
-  { BITMAPINFOHEADER structure  }
-     BI_RGB = 0;
-     BI_RLE8 = 1;
-     BI_RLE4 = 2;
-     BI_BITFIELDS = 3;
-  { Extensions to OpenGL  }
-  { wglUseFontOutlines  }
-     WGL_FONT_LINES = 0;
-     WGL_FONT_POLYGONS = 1;
-  { LAYERPLANEDESCRIPTOR structure  }
-  { PIXELFORMATDESCRIPTOR structure  }
-     PFD_GENERIC_FORMAT = $40;
-     PFD_NEED_PALETTE = $80;
-     PFD_NEED_SYSTEM_PALETTE = $100;
-     PFD_SWAP_EXCHANGE = $200;
-     PFD_SWAP_COPY = $400;
-     PFD_SWAP_LAYER_BUFFERS = $800;
-     PFD_GENERIC_ACCELERATED = $1000;
-     PFD_SUPPORT_DIRECTDRAW = $2000;
-  { TEXTMETRIC structure  }
-     TMPF_FIXED_PITCH = $1;
-     TMPF_VECTOR = $2;
-     TMPF_TRUETYPE = $4;
-     TMPF_DEVICE = $8;
-     WM_CTLCOLOR = 25;
-
-  { --------------------- old stuff, need to organize! ---------------  }
-  { BEGINNING of windowsx.h stuff from old headers:  }
-  {  Not convertable by H2PAS
-  #define __CRACK_VOID_F(fn,args) (void)(fn args)
-  #define __CRACK_BOOL_F(fn,args) (BOOL)(fn args)
-  #define __CRACK_HMENU_F(fn,args) (HMENU)(fn args)
-  #define __CRACK_HWND_F(fn,args) (HWND)(fn args)
-  #define __CRACK_LONG_F(fn, args) (LRESULT)(fn args)
-  #define __CRACK_ZERO_F(fn, args)  (fn args,0)
-   }
-  { was #define dname(params) def_expr }
-  function GetFirstChild(h:HWND):HWND;
-
-  { was #define dname(params) def_expr }
-  function GetNextSibling(h:HWND):HWND;
-
-  { was #define dname(params) def_expr }
-  function GetWindowID(h:HWND):longint;
-
-  { was #define dname(params) def_expr }
-  function SubclassWindow(h:HWND; p:LONG):LONG;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function GET_WM_COMMAND_CMD(w,l : longint) : longint;
-    { return type might be wrong }
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function GET_WM_COMMAND_ID(w,l : longint) : longint;
-    { return type might be wrong }
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GET_WM_CTLCOLOR_HDC(w,l,msg : longint) : HDC;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GET_WM_CTLCOLOR_HWND(w,l,msg : longint) : HWND;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function GET_WM_HSCROLL_CODE(w,l : longint) : longint;
-    { return type might be wrong }
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GET_WM_HSCROLL_HWND(w,l : longint) : HWND;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function GET_WM_HSCROLL_POS(w,l : longint) : longint;
-    { return type might be wrong }
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function GET_WM_MDIACTIVATE_FACTIVATE(h,a,b : longint) : longint;
-    { return type might be wrong }
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GET_WM_MDIACTIVATE_HWNDACTIVATE(a,b : longint) : HWND;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GET_WM_MDIACTIVATE_HWNDDEACT(a,b : longint) : HWND;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function GET_WM_VSCROLL_CODE(w,l : longint) : longint;
-    { return type might be wrong }
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GET_WM_VSCROLL_HWND(w,l : longint) : HWND;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function GET_WM_VSCROLL_POS(w,l : longint) : longint;
-    { return type might be wrong }
-
-  {  Not convertable by H2PAS
-  #define FORWARD_WM_CLOSE(h, fn)                 __CRACK_VOID_F(fn,(h, WM_CLOSE, 0, 0))
-  #define FORWARD_WM_COMMAND(h, id, c, n, fn)     __CRACK_VOID_F(fn,(h, WM_COMMAND, MAKEWPARAM(id,n), (LPARAM)c))
-  #define FORWARD_WM_CREATE(h, p, fn)             __CRACK_BOOL_F(fn,(h, WM_CREATE, 0, (LPARAM)p))
-  #define FORWARD_WM_DESTROY(h, fn)               __CRACK_VOID_F(fn,(h, WM_DESTROY, 0, 0))
-  #define FORWARD_WM_ENABLE(h, e, fn)             __CRACK_VOID_F(fn,(h, WM_ENABLE, (WPARAM)e, 0))
-  #define FORWARD_WM_INITDIALOG(h, c, l, fn)      __CRACK_BOOL_F(fn,(h, WM_INITDIALOG, (WPARAM)c, l))
-  #define FORWARD_WM_MDICASCADE(h, c, fn)         __CRACK_BOOL_F(fn,(h, WM_MDICASCADE, (WPARAM)c, 0))
-  #define FORWARD_WM_MDIDESTROY(h, d, fn)         __CRACK_VOID_F(fn,(h, WM_MDIDESTROY, (WPARAM)d, 0))
-  #define FORWARD_WM_MDIGETACTIVE(h, fn)          __CRACK_HWND_F(fn,(h, WM_MDIGETACTIVE, 0, 0))
-  #define FORWARD_WM_MDIICONARRANGE(h, fn)        __CRACK_VOID_F(fn,(h, WM_MDIICONARRANGE, 0, 0))
-  #define FORWARD_WM_MDISETMENU(h, fr, hf, hw, fn) __CRACK_HMENU_F(fn,(h, WM_MDISETMENU, (WPARAM)((fr) ? (hf) : 0), (LPARAM)(hw)))
-  #define FORWARD_WM_MDITILE(h, c, fn)            __CRACK_BOOL_F(fn,(h, WM_MDITILE, (WPARAM)(c), 0))
-  #define FORWARD_WM_PAINT(h, fn)                 __CRACK_VOID_F(fn,(h, WM_PAINT, 0, 0))
-  #define FORWARD_WM_QUERYENDSESSION(h, fn)       __CRACK_BOOL_F(fn,(h, WM_QUERYENDSESSION, 0, 0))
-  #define FORWARD_WM_SIZE(h, state, cx, cy, fn)   __CRACK_VOID_F(fn,(h, WM_SIZE, (WPARAM)state, MAKELPARAM(cx, cy)))
-  #define FORWARD_WM_SYSCOMMAND(h, c, x, y, fn)   __CRACK_VOID_F(fn,(h, WM_SYSCOMMAND, (WPARAM)c, MAKELPARAM(x, y)))
-
-  #define HANDLE_WM_CLOSE(h, w, l, fn)            __CRACK_ZERO_F(fn,(h));
-  #define HANDLE_WM_COMMAND(h, w, l, fn)          __CRACK_ZERO_F(fn,(h, SEXT_LOWORD(w), (HWND)l, HIWORD(w)))
-  #define HANDLE_WM_CREATE(h, w, l, fn)           (LRESULT)((fn(h, (CREATESTRUCT  )l)) ? 0 : -1)
-  #define HANDLE_WM_DESTROY(h, w, l, fn)          __CRACK_ZERO_F(fn,(h))
-  #define HANDLE_WM_ENABLE(h, w, l, fn)           __CRACK_ZERO_F(fn,(h, (BOOL)w))
-  #define HANDLE_WM_INITDIALOG(h, w, l, fn)       __CRACK_LONG_F(fn,(h, (HWND)w, l))
-  #define HANDLE_WM_MDICASCADE(h, w, l, fn)       __CRACK_LONG_F(fn, (h, (UINT)w)
-  #define HANDLE_WM_MDIDESTROY(h, w, l, fn)       __CRACK_ZERO_F(fn,(h, (HWND)w))
-  #define HANDLE_WM_MDIGETACTIVE(h, w, l, fn)     __CRACK_LONG_F(fn,(h))
-  #define HANDLE_WM_MDIICONARRANGE(h, w, l, fn)   __CRACK_ZERO_F(fn,(h))
-  #define HANDLE_WM_MDISETMENU(h, w, l, fn)       __CRACK_LONG_F(fn,(h, (BOOL)w, (HMENU)w, (HMENU)l)
-  #define HANDLE_WM_MDITILE(h, w, l, fn)          __CRACK_LONG_F(fn,(h, (UINT)w))
-  #define HANDLE_WM_PAINT(h, w, l, fn)            __CRACK_ZERO_F(fn,(h))
-  #define HANDLE_WM_QUERYENDSESSION(h, w, l, fn)  MAKELRESULT(fn(h), 0)
-  #define HANDLE_WM_SIZE(h, w, l, fn)             __CRACK_ZERO_F(fn,(h, (UINT)w, SEXT_LOWORD(l), SEXT_HIWORD(l)))
-  #define HANDLE_WM_SYSCOMMAND(h, w, l, fn)       __CRACK_ZERO_F(fn,(h, (UINT)w, SEXT_LOWORD(l), SEXT_HIWORD(l)))
-   }
-  { Totally disgusting! get wParam and lParam from the environment !  }
-  {  Not convertable by H2PAS
-  #define HANDLE_MSG(h, message, fn) case message: return HANDLE_##message(h, wParam, lParam, fn)
-   }
-  { END OF windowsx.h stuff from old headers  }
-  { ------------------------------------------------------------------  }
-  { BEGINNING of shellapi.h stuff from old headers  }
-
-  const
-     SE_ERR_SHARE = 26;
-     SE_ERR_ASSOCINCOMPLETE = 27;
-     SE_ERR_DDETIMEOUT = 28;
-     SE_ERR_DDEFAIL = 29;
-     SE_ERR_DDEBUSY = 30;
-     SE_ERR_NOASSOC = 31;
-  { END OF shellapi.h stuff from old headers  }
-  { ------------------------------------------------------------------  }
-  { From ddeml.h in old Cygnus headers  }
-     XCLASS_BOOL = $1000;
-     XCLASS_DATA = $2000;
-     XCLASS_FLAGS = $4000;
-     XCLASS_MASK = $fc00;
-     XCLASS_NOTIFICATION = $8000;
-     XTYPF_NOBLOCK = $0002;
-     XTYP_ADVDATA = $4010;
-     XTYP_ADVREQ = $2022;
-     XTYP_ADVSTART = $1030;
-     XTYP_ADVSTOP = $8040;
-     XTYP_CONNECT = $1062;
-     XTYP_CONNECT_CONFIRM = $8072;
-     XTYP_DISCONNECT = $80c2;
-     XTYP_EXECUTE = $4050;
-     XTYP_POKE = $4090;
-     XTYP_REQUEST = $20b0;
-     XTYP_WILDCONNECT = $20E2;
-     XTYP_REGISTER = $80A2;
-     XTYP_ERROR = $8002;
-     XTYP_XACT_COMPLETE = $8080;
-     XTYP_UNREGISTER = $80D2;
-     DMLERR_DLL_USAGE = $4004;
-     DMLERR_INVALIDPARAMETER = $4006;
-     DMLERR_NOTPROCESSED = $4009;
-     DMLERR_POSTMSG_FAILED = $400c;
-     DMLERR_SERVER_DIED = $400e;
-     DMLERR_SYS_ERROR = $400f;
-     DMLERR_BUSY = $4001;
-     DMLERR_DATAACKTIMEOUT = $4002;
-     DMLERR_ADVACKTIMEOUT = $4000;
-     DMLERR_DLL_NOT_INITIALIZED = $4003;
-     DMLERR_LOW_MEMORY = $4007;
-     DMLERR_MEMORY_ERROR = $4008;
-     DMLERR_POKEACKTIMEOUT = $400b;
-     DMLERR_NO_CONV_ESTABLISHED = $400a;
-     DMLERR_REENTRANCY = $400d;
-     DMLERR_UNFOUND_QUEUE_ID = $4011;
-     DMLERR_UNADVACKTIMEOUT = $4010;
-     DMLERR_EXECACKTIMEOUT = $4005;
-     DDE_FACK = $8000;
-     DDE_FNOTPROCESSED = $0000;
-     DNS_REGISTER = $0001;
-     DNS_UNREGISTER = $0002;
-     CP_WINANSI = 1004;
-     CP_WINUNICODE = 1200;
-  {  Not convertable by H2PAS
-  #define EXPENTRY CALLBACK
-   }
-     APPCLASS_STANDARD = $00000000;
-  { End of stuff from ddeml.h in old Cygnus headers  }
-  { -----------------------------------------------  }
-     BKMODE_LAST = 2;
-     CTLCOLOR_MSGBOX = 0;
-     CTLCOLOR_EDIT = 1;
-     CTLCOLOR_LISTBOX = 2;
-     CTLCOLOR_BTN = 3;
-     CTLCOLOR_DLG = 4;
-     CTLCOLOR_SCROLLBAR = 5;
-     CTLCOLOR_STATIC = 6;
-     CTLCOLOR_MAX = 7;
-     META_SETMAPMODE = $0103;
-     META_SETWINDOWORG = $020B;
-     META_SETWINDOWEXT = $020C;
-     POLYFILL_LAST = 2;
-     STATUS_WAIT_0 = $00000000;
-     STATUS_ABANDONED_WAIT_0 = $00000080;
-     STATUS_USER_APC = $000000C0;
-     STATUS_TIMEOUT = $00000102;
-     STATUS_PENDING = $00000103;
-     STATUS_GUARD_PAGE_VIOLATION = $80000001;
-     STATUS_DATATYPE_MISALIGNMENT = $80000002;
-     STATUS_BREAKPOINT = $80000003;
-     STATUS_SINGLE_STEP = $80000004;
-     STATUS_IN_PAGE_ERROR = $C0000006;
-     STATUS_INVALID_HANDLE = $C0000008;
-     STATUS_ILLEGAL_INSTRUCTION = $C000001D;
-     STATUS_NONCONTINUABLE_EXCEPTION = $C0000025;
-     STATUS_INVALID_DISPOSITION = $C0000026;
-     STATUS_ARRAY_BOUNDS_EXCEEDED = $C000008C;
-     STATUS_FLOAT_DENORMAL_OPERAND = $C000008D;
-     STATUS_FLOAT_DIVIDE_BY_ZERO = $C000008E;
-     STATUS_FLOAT_INEXACT_RESULT = $C000008F;
-     STATUS_FLOAT_INVALID_OPERATION = $C0000090;
-     STATUS_FLOAT_OVERFLOW = $C0000091;
-     STATUS_FLOAT_STACK_CHECK = $C0000092;
-     STATUS_FLOAT_UNDERFLOW = $C0000093;
-     STATUS_INTEGER_DIVIDE_BY_ZERO = $C0000094;
-     STATUS_INTEGER_OVERFLOW = $C0000095;
-     STATUS_PRIVILEGED_INSTRUCTION = $C0000096;
-     STATUS_STACK_OVERFLOW = $C00000FD;
-     STATUS_CONTROL_C_EXIT = $C000013A;
-{$define EXCEPTION_CTRL_C}
-     PROCESSOR_ARCHITECTURE_INTEL = 0;
-     PROCESSOR_ARCHITECTURE_MIPS = 1;
-     PROCESSOR_ARCHITECTURE_ALPHA = 2;
-     PROCESSOR_ARCHITECTURE_PPC = 3;
-  { was #define dname(params) def_expr }
-  function FreeModule(h:HINST):WINBOOL;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function MakeProcInstance(p,i : longint) : longint;
-    { return type might be wrong }
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function FreeProcInstance(p : longint) : longint;
-    { return type might be wrong }
-
-
-  const
-    { _fmemcpy = memcpy; these are functions }
-  { Used by wxwindows.  }
-     SIZEFULLSCREEN = SIZE_MAXIMIZED;
-     SIZENORMAL = SIZE_RESTORED;
-     SIZEICONIC = SIZE_MINIMIZED;
-     { NPLOGPALETTE = PLOGPALETTE; probably a type }
-  { In the old winnt.h  }
-  (*  Not convertable by H2PAS anyhow with if 0
-  #if 0
-  #ifdef __ANAL__
-  #define DECLARE_HANDLE(h) struct h##__ { int dummy; }; typedef struct h##__  h
-  #else
-  #define DECLARE_HANDLE(h)  typedef void  h
-  #endif
-  DECLARE_HANDLE(HANDLE);
-  #endif
-   *)
-
-{$ifdef i386}                              //+winnt
-
-  { x86  }
-  { The doc refered me to winnt.h, so I had to look...  }
-
-  const
-     SIZE_OF_80387_REGISTERS = 80;         //winnt
-     MAXIMUM_SUPPORTED_EXTENSION = 512;    //winnt
-  { Values for contextflags  }
-     CONTEXT_i386 = $10000;
-     CONTEXT_i486 = $10000;                //+winnt
-     CONTEXT_CONTROL = CONTEXT_i386 or 1;
-     CONTEXT_INTEGER = CONTEXT_i386 or 2;
-     CONTEXT_SEGMENTS = CONTEXT_i386 or 4;
-     CONTEXT_FLOATING_POINT = CONTEXT_i386 or 8;
-     CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 or $10;
-     CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 or $20; //+winnt
-     CONTEXT_FULL = (CONTEXT_CONTROL or CONTEXT_INTEGER) or CONTEXT_SEGMENTS;
-  { our own invention  }
-     FLAG_TRACE_BIT = $100;
-     CONTEXT_DEBUGGER = CONTEXT_FULL or CONTEXT_FLOATING_POINT;
-{$endif i386}
-
-{$ifdef _MIPS_} //+winnt all block added
-//
-// Processor Feature Values used in IsProcessorFeaturePresent API
-//
-     PF_MIPS_MIPSII          = $81000001; // MIPSII  instruction set
-     PF_MIPS_MIPSIII         = $81000002; // MIPSIII instruction set
-     PF_MIPS_MIPSIV          = $81000003; // MIPSIV  instruction set
-     PF_MIPS_SMART_ASE       = $81000004; // MIPS smart card arch. specific ext.
-     PF_MIPS_MIPS16          = $81000005; // MIPS16  instruction set
-     PF_MIPS_MIPS32          = $81000006; // MIPS32  instruction set
-     PF_MIPS_MIPS64          = $81000007; // MIPS64  instruction set
-     PF_MIPS_FPU             = $81000008; // FPU support
-     PF_MIPS_CPU_4KEX        = $81000009; // "R4K" exception model
-     PF_MIPS_CPU_4KTLB       = $8100000A; // "R4K" TLB handler
-     PF_MIPS_CPU_32FPR       = $8100000B; // 32 dbl. prec. FP registers
-     PF_MIPS_CPU_COUNTER     = $8100000C; // Cycle count/compare
-     PF_MIPS_CPU_WATCH       = $8100000D; // watchpoint registers
-     PF_MIPS_CPU_DIVEC       = $8100000E; // dedicated interrupt vector
-     PF_MIPS_CPU_VCE         = $8100000F; // virt. coherence conflict possible
-     PF_MIPS_CPU_CACHE_CDEX  = $81000010; // Create_Dirty_Exclusive CACHE op
-     PF_MIPS_CPU_MCHECK      = $81000011; // Machine check exception
-     PF_MIPS_CPU_EJTAG       = $81000012; // EJTAG exception
-     PF_MIPS_PERF_COUNTER    = $81000013; // perf counter
-     PF_MIPS_ARCH_2          = $81000014; // arch. release 2
-
-     CONTEXT_R4000 = $00010000;    // r4000 context
-
-     CONTEXT_CONTROL          = CONTEXT_R4000 or $00000001;
-     CONTEXT_FLOATING_POINT   = CONTEXT_R4000 or $00000002;
-     CONTEXT_INTEGER          = CONTEXT_R4000 or $00000004;
-     CONTEXT_EXTENDED_FLOAT   = CONTEXT_FLOATING_POINT or $00000008;
-     CONTEXT_EXTENDED_INTEGER = CONTEXT_INTEGER or $00000010;
-     CONTEXT_FULL             = CONTEXT_CONTROL or CONTEXT_FLOATING_POINT or
-                            CONTEXT_INTEGER or CONTEXT_EXTENDED_INTEGER;
-{$ifdef _MIPS64} //+winnt
- CONTEXT32_LENGTH=$1B8;
-{$else}
- CONTEXT32_LENGTH=$130;  // The original 32-bit Context length (pre NT 4.0)
-{$endif _MIPS64}
-
-{$endif _MIPS_} //+winnt
-
-{$ifdef _PPC_} //~winnt, now _PPC_ instead of __PPC__, moved after mips
-  const
-     CONTEXT_CONTROL = 1;
-     CONTEXT_FLOATING_POINT = 2;
-     CONTEXT_INTEGER = 4;
-     CONTEXT_DEBUG_REGISTERS = 8;
-     CONTEXT_FULL = (CONTEXT_CONTROL or CONTEXT_FLOATING_POINT) or CONTEXT_INTEGER;
-     CONTEXT_DEBUGGER = CONTEXT_FULL;
-{$endif _PPC_} //~winnt
-
-{$ifdef _MPPC_} //+winnt all block
-  const
-     CONTEXT_CONTROL = 1;
-     CONTEXT_FLOATING_POINT = 2;
-     CONTEXT_INTEGER = 4;
-     CONTEXT_DEBUG_REGISTERS = 8;
-     CONTEXT_FULL = (CONTEXT_CONTROL or CONTEXT_FLOATING_POINT) or CONTEXT_INTEGER;
-{$endif _MPPC_} //+winnt
-
-{$ifdef _IA64_} //+winnt all block
-     SIZE_OF_80387_REGISTERS = 80;
-     CONTEXT_IA64 = $00080000;    // IA64 context
-     CONTEXT_CONTROL = CONTEXT_IA64 or $00000001;
-     CONTEXT_LOWER_FLOATING_POINT = CONTEXT_IA64 or $00000002;
-     CONTEXT_HIGHER_FLOATING_POINT = CONTEXT_IA64 or $00000004;
-     CONTEXT_INTEGER = CONTEXT_IA64 or $00000008;
-     CONTEXT_DEBUG = CONTEXT_IA64 or $00000010;
-
-     CONTEXT_FLOATING_POINT = CONTEXT_LOWER_FLOATING_POINT or CONTEXT_HIGHER_FLOATING_POINT;
-     CONTEXT_FULL = CONTEXT_CONTROL or CONTEXT_FLOATING_POINT or CONTEXT_INTEGER;
-
-     CONTEXT_i386 = $00010000;    // this assumes that i386 and
-     CONTEXT_i486 = $00010000;    // i486 have identical context records
-     CONTEXT_X86 = $00010000;    // X86 have identical context records
-
-     CONTEXT86_CONTROL = CONTEXT_i386 or $00000001; // SS:SP, CS:IP, FLAGS, BP
-     CONTEXT86_INTEGER = CONTEXT_i386 or $00000002; // AX, BX, CX, DX, SI, DI
-     CONTEXT86_SEGMENTS = CONTEXT_i386 or $00000004; // DS, ES, FS, GS
-     CONTEXT86_FLOATING_POINT = CONTEXT_i386 or $00000008; // 387 state
-     CONTEXT86_DEBUG_REGISTERS = CONTEXT_i386 or $00000010; // DB 0-3,6,7
-
-     CONTEXT86_FULL = CONTEXT86_CONTROL or CONTEXT86_INTEGER or CONTEXT86_SEGMENTS;    // context corresponding to set flags will be returned.
-{$endif _IA64_} //+winnt
-
-{$ifdef SHx} //+winnt all block added
-//
-// Processor Feature Values used in IsProcessorFeaturePresent API
-//
-     PF_SHX_SH3 = $82000001;
-     PF_SHX_SH4 = $82000002;
-     PF_SHX_SH5 = $82000003;
-     PF_SHX_DSP = $82000004;
-     PF_SHX_FPU = $82000005;
-//
-// The following flags control the contents of the CONTEXT structure.
-//
-     CONTEXT_SH3 = $00000040;
-     CONTEXT_SH4	= $000000c0;	// CONTEXT_SH3 | 0x80 - must contain the SH3 bits
-
-{$ifdef SH3}
-     CONTEXT_CONTROL = CONTEXT_SH3 or $00000001;
-     CONTEXT_INTEGER = CONTEXT_SH3 or $00000002;
-     CONTEXT_DEBUG_REGISTERS = CONTEXT_SH3 or $00000008;
-     CONTEXT_DSP_REGISTERS = CONTEXT_SH3 or $00000010;
-     CONTEXT_FULL = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_DEBUG_REGISTERS or CONTEXT_DSP_REGISTERS;
-{$else}	// SH4
-     CONTEXT_CONTROL = CONTEXT_SH4 or $00000001;
-     CONTEXT_INTEGER = CONTEXT_SH4 or $00000002;
-     CONTEXT_DEBUG_REGISTERS = CONTEXT_SH4 or $00000008;
-     CONTEXT_FLOATING_POINT = CONTEXT_SH4 or $00000004;
-     CONTEXT_FULL = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_DEBUG_REGISTERS or CONTEXT_FLOATING_POINT;
-{$endif SH3}
-
-{$endif SHx} //+winnt
-
-{$ifdef CPUARM} //+winnt all block added
-//
-// Processor Feature Values used in IsProcessorFeaturePresent API
-//
-     PF_ARM_V4                       = $80000001;
-     PF_ARM_V5                       = $80000002;
-     PF_ARM_V6                       = $80000003;
-     PF_ARM_V7                       = $80000004;
-     PF_ARM_THUMB                    = $80000005;
-     PF_ARM_JAZELLE                  = $80000006;
-     PF_ARM_DSP                      = $80000007;
-     PF_ARM_MOVE_CP                  = $80000008;
-     PF_ARM_VFP10                    = $80000009;
-     PF_ARM_MPU                      = $8000000A;
-     PF_ARM_WRITE_BUFFER             = $8000000B;
-     PF_ARM_MBX                      = $8000000C;
-     PF_ARM_L2CACHE                  = $8000000D;
-     PF_ARM_PHYSICALLY_TAGGED_CACHE  = $8000000E;
-     PF_ARM_VFP_SINGLE_PRECISION     = $8000000F;
-     PF_ARM_VFP_DOUBLE_PRECISION     = $80000010;
-     PF_ARM_ITCM                     = $80000011;
-     PF_ARM_DTCM                     = $80000012;
-     PF_ARM_UNIFIED_CACHE            = $80000013;
-     PF_ARM_WRITE_BACK_CACHE         = $80000014;
-     PF_ARM_CACHE_CAN_BE_LOCKED_DOWN = $80000015;
-     PF_ARM_L2CACHE_MEMORY_MAPPED    = $80000016;
-     PF_ARM_L2CACHE_COPROC           = $80000017;
-
-
-// Specific OEM extentions
-     PF_ARM_INTEL_XSCALE				     = $80010001;
-     PF_ARM_INTEL_PMU                = $80010002;
-     PF_ARM_INTEL_WMMX               = $80010003;
-
-     CONTEXT_ARM = $0000040;
-     CONTEXT_CONTROL = CONTEXT_ARM or $00000001;
-     CONTEXT_INTEGER = CONTEXT_ARM or $00000002;
-     CONTEXT_FLOATING_POINT = CONTEXT_ARM or $00000004;
-
-     CONTEXT_FULL = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_FLOATING_POINT;
-
-     NUM_VFP_REGS = 32;
-     NUM_EXTRA_CONTROL_REGS = 8;
-
-{$endif CPUARM} //+winnt
-
-  const
-     { ASCIICHAR = AsciiChar; this is the kind of thing that can
-     make problems for FPC !! }
-  {  ignored in H2PAS
-  #define FAR
-     handled in H2PAS
-  #define PACKED __attribute__((packed))
-   }
-     FILTER_TEMP_DUPLICATE_ACCOUNT = $0001;
-     FILTER_NORMAL_ACCOUNT = $0002;
-     FILTER_INTERDOMAIN_TRUST_ACCOUNT = $0008;
-     FILTER_WORKSTATION_TRUST_ACCOUNT = $0010;
-     FILTER_SERVER_TRUST_ACCOUNT = $0020;
-     LOGON32_LOGON_INTERACTIVE = $02;
-     LOGON32_LOGON_BATCH = $04;
-     LOGON32_LOGON_SERVICE = $05;
-     LOGON32_PROVIDER_DEFAULT = $00;
-     LOGON32_PROVIDER_WINNT35 = $01;
-     QID_SYNC = $FFFFFFFF;
-  { Magic numbers in PE executable header.   }
-  { e_magic field  }
-     IMAGE_DOS_SIGNATURE = $5a4d;
-  { nt_signature field  }
-     IMAGE_NT_SIGNATURE = $4550;
-
-
-  { Severity values }
-    SEVERITY_SUCCESS = 0;
-    SEVERITY_ERROR = 1;
-
- { Variant type codes (wtypes.h).
-    Some, not all though }
-    VT_EMPTY           = 0;
-    VT_NULL            = 1;
-    VT_I2              = 2;
-    VT_I4              = 3;
-    VT_R4              = 4;
-    VT_R8              = 5;
-    VT_BSTR            = 8;
-    VT_ERROR           = 10;
-    VT_BOOL            = 11;
-    VT_UI1             = 17;
-    VT_BYREF        = $4000;
-    VT_RESERVED     = $8000;
-
-{ Define the facility codes }
-
-const
-  FACILITY_WINDOWS                     = 8;
-  FACILITY_STORAGE                     = 3;
-  FACILITY_RPC                         = 1;
-  FACILITY_SSPI                        = 9;
-  FACILITY_WIN32                       = 7;
-  FACILITY_CONTROL                     = 10;
-  FACILITY_NULL                        = 0;
-  FACILITY_INTERNET                    = 12;
-  FACILITY_ITF                         = 4;
-  FACILITY_DISPATCH                    = 2;
-  FACILITY_CERT                        = 11;
-
-{ Manually added, bug 2672}
-  ICON_SMALL                           = 0;
-  ICON_BIG                             = 1;
-
-// Manually added, bug 3270
-  COLOR_HOTLIGHT                = 26;
-  //COLOR_GRADIENTACTIVECAPTION   = 27; moved to GetSysColor
-  //COLOR_GRADIENTINACTIVECAPTION = 28;
-  COLOR_MENUHILIGHT             = 29;
-  COLOR_MENUBAR                 = 30;
-
-  WM_APP                        = $8000;
-
-  // ShellExecuteEx mask
-  SEE_MASK_NOCLOSEPROCESS =  $00000040;
-  SEE_MASK_FLAG_NO_UI     =  $00000400;
-
-{$endif read_interface}
-
-
-{$ifdef read_implementation}
-
-
-
-
-
-    { was #define dname(params) def_expr }
-    { argument types are unknown }
-    { return type might be wrong }
-    function IS_UNWINDING( Flag : Longint) : boolean;
-    begin
-     IS_UNWINDING:=(Flag and EXCEPTION_UNWIND)<>0;
-    end;
-
-    { was #define dname(params) def_expr }
-    { argument types are unknown }
-    { return type might be wrong }
-    function IS_DISPATCHING( Flag : Longint) : boolean;
-    begin
-     IS_DISPATCHING:=(Flag and EXCEPTION_UNWIND)=0;
-    end;
-
-    { was #define dname(params) def_expr }
-    { argument types are unknown }
-    { return type might be wrong }
-    function IS_TARGET_UNWIND( Flag : Longint) : Longint;
-    begin
-     IS_TARGET_UNWIND:=(Flag and EXCEPTION_TARGET_UNWIND);
-    end;
-
-    { was #define dname(params) def_expr }
-    { argument types are unknown }
-    { return type might be wrong }
-    function MakeProcInstance(p,i : longint) : longint;
-      { return type might be wrong }
-      begin
-         MakeProcInstance:=p;
-      end;
-
-    { was #define dname(params) def_expr }
-    { argument types are unknown }
-    { return type might be wrong }
-    function FreeProcInstance(p : longint) : longint;
-      { return type might be wrong }
-      begin
-         FreeProcInstance:=p;
-      end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function GET_WM_COMMAND_CMD(w,l : longint) : longint;
-    { return type might be wrong }
-    begin
-       GET_WM_COMMAND_CMD:=HIWORD(w);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function GET_WM_COMMAND_ID(w,l : longint) : longint;
-    { return type might be wrong }
-    begin
-       GET_WM_COMMAND_ID:=LOWORD(w);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GET_WM_CTLCOLOR_HDC(w,l,msg : longint) : HDC;
-    begin
-       GET_WM_CTLCOLOR_HDC:=HDC(w);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GET_WM_CTLCOLOR_HWND(w,l,msg : longint) : HWND;
-    begin
-       GET_WM_CTLCOLOR_HWND:=HWND(l);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function GET_WM_HSCROLL_CODE(w,l : longint) : longint;
-    { return type might be wrong }
-    begin
-       GET_WM_HSCROLL_CODE:=LOWORD(w);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GET_WM_HSCROLL_HWND(w,l : longint) : HWND;
-    begin
-       GET_WM_HSCROLL_HWND:=HWND(l);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function GET_WM_HSCROLL_POS(w,l : longint) : longint;
-    { return type might be wrong }
-    begin
-       GET_WM_HSCROLL_POS:=HIWORD(w);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function GET_WM_MDIACTIVATE_FACTIVATE(h,a,b : longint) : longint;
-    { return type might be wrong }
-    begin
-       GET_WM_MDIACTIVATE_FACTIVATE:=longint(b = LONG(h));
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GET_WM_MDIACTIVATE_HWNDACTIVATE(a,b : longint) : HWND;
-    begin
-       GET_WM_MDIACTIVATE_HWNDACTIVATE:=HWND(b);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GET_WM_MDIACTIVATE_HWNDDEACT(a,b : longint) : HWND;
-    begin
-       GET_WM_MDIACTIVATE_HWNDDEACT:=HWND(a);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function GET_WM_VSCROLL_CODE(w,l : longint) : longint;
-    { return type might be wrong }
-    begin
-       GET_WM_VSCROLL_CODE:=LOWORD(w);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  function GET_WM_VSCROLL_HWND(w,l : longint) : HWND;
-    begin
-       GET_WM_VSCROLL_HWND:=HWND(l);
-    end;
-
-  { was #define dname(params) def_expr }
-  { argument types are unknown }
-  { return type might be wrong }
-  function GET_WM_VSCROLL_POS(w,l : longint) : longint;
-    { return type might be wrong }
-    begin
-       GET_WM_VSCROLL_POS:=HIWORD(w);
-    end;
-
-  { was #define dname(params) def_expr }
-  function FreeModule(h:HINST):WINBOOL;
-    begin
-       FreeModule:=FreeLibrary(h);
-    end;
-
-  { was #define dname(params) def_expr }
-  function GetNextSibling(h:HWND):HWND;
-    begin
-       GetNextSibling:=GetWindow(h,GW_HWNDNEXT);
-    end;
-  { was #define dname(params) def_expr }
-  function GetWindowID(h:HWND):longint;
-    begin
-       GetWindowID:=GetDlgCtrlID(h);
-    end;
-
-  { was #define dname(params) def_expr }
-  function SubclassWindow(h:HWND; p:LONG):LONG;
-    begin
-       SubclassWindow:=SetWindowLong(h,GWL_WNDPROC,p);
-    end;
-
-  { was #define dname(params) def_expr }
-  function GetFirstChild(h:HWND):HWND;
-    begin
-       //GetFirstChild:=GetTopWindow(h);
-       GetFirstChild:=GetWindow(h,GW_CHILD);
-    end;
-
-{$ifdef WINCE}
-{$endif WINCE}
-
-{$ifdef WIN32}
-{$endif WIN32}
-
-{$endif read_implementation}
-
-
+{
+    This file is part of the Free Pascal run time library.
+    This unit contains the constant definitions for the Win32 API
+    Copyright (c) 1999-2000 by Florian Klaempfl,
+    member of the Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{
+  Defines.h
+
+  Windows32 API definitions
+
+  Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+
+  Author: Scott Christley <[email protected]>
+
+  This file is part of the Windows32 API Library.
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Library General Public
+  License as published by the Free Software Foundation; either
+  version 2 of the License, or (at your option) any later version.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Library General Public License for more details.
+
+  If you are interested in a warranty or support for this source code,
+  contact Scott Christley <[email protected]> for more information.
+
+  License along with this library; see the file COPYING.LIB.
+  If not, write to the Free Software Foundation,
+  59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+}
+
+
+{$ifdef read_interface}
+
+
+{$PACKRECORDS C}
+
+
+  const
+     UNICODE_NULL  = widechar(#0);
+     NULL=0;                            //+windef
+     //FALSE=0;                         //+windef, removed can't compile
+     //TRUE=1;                          //+windef, removed can't compile
+     MAX_PATH = 260;                    //windef
+     LF_FACESIZE = 32;
+     LF_FULLFACESIZE = 64;
+     ELF_VENDOR_SIZE = 4;
+     SECURITY_STATIC_TRACKING = 0;
+     SECURITY_DYNAMIC_TRACKING = 1;
+     MAX_DEFAULTCHAR = 2;
+     MAX_LEADBYTES = 12;
+     EXCEPTION_MAXIMUM_PARAMETERS = 15; //winnt
+     CCHDEVICENAME = 32;
+     CCHFORMNAME = 32;
+     MENU_TEXT_LEN = 40;
+     MAX_LANA = 254;
+     NCBNAMSZ = 16;
+     NETBIOS_NAME_LEN = 16;
+     OFS_MAXPATHNAME = 128;
+     MAX_TAB_STOPS = 32;
+     RAS_MaxCallbackNumber = 128;
+     RAS_MaxDeviceName = 128;
+     RAS_MaxDeviceType = 16;
+     RAS_MaxEntryName = 256;
+     RAS_MaxIpAddress = 15;
+     RAS_MaxIpxAddress = 21;
+     RAS_MaxPhoneNumber = 128;
+     UNLEN = 256;
+     PWLEN = 256;
+     CNLEN = 15;
+     DNLEN = 15;
+  { Unsigned types max  }
+     MAXDWORD = $FFFFFFFF;     //winnt
+     MAXWORD = $FFFF;          //winnt
+     MAXBYTE = $FF;            //winnt
+  { Signed types max/min  }
+     MINCHAR = $80;            //winnt
+     MAXCHAR = $7F;            //winnt
+     MINSHORT = $8000;         //winnt
+     MAXSHORT = $7FFF;         //winnt
+     MINLONG = $80000000;      //winnt
+     MAXLONG = $7FFFFFFF;      //winnt
+  { _llseek  }
+     FILE_BEGIN = 0;
+     FILE_CURRENT = 1;
+     FILE_END = 2;
+  { _lopen, LZOpenFile, OpenFile  }
+     OF_READ = 0;
+     OF_READWRITE = 2;
+     OF_WRITE = 1;
+     OF_SHARE_COMPAT = 0;
+     OF_SHARE_DENY_NONE = 64;
+     OF_SHARE_DENY_READ = 48;
+     OF_SHARE_DENY_WRITE = 32;
+     OF_SHARE_EXCLUSIVE = 16;
+     OF_CANCEL = 2048;
+     OF_CREATE = 4096;
+     OF_DELETE = 512;
+     OF_EXIST = 16384;
+     OF_PARSE = 256;
+     OF_PROMPT = 8192;
+     OF_REOPEN = 32768;
+     OF_VERIFY = 1024;
+  { ActivateKeyboardLayout, LoadKeyboardLayout  }
+     HKL_NEXT = 1;
+     HKL_PREV = 0;
+     KLF_REORDER = 8;
+     KLF_UNLOADPREVIOUS = 4;
+     KLF_ACTIVATE = 1;
+     KLF_NOTELLSHELL = 128;
+     KLF_REPLACELANG = 16;
+     KLF_SUBSTITUTE_OK = 2;
+  { AppendMenu  }
+     MF_BITMAP = $4;
+     MF_DISABLED = $2;
+     MF_ENABLED = 0;
+     MF_GRAYED = $1;
+     MF_HELP = $4000;
+     MF_MENUBARBREAK = $20;
+     MF_MENUBREAK = $40;
+     MF_MOUSESELECT = $8000;
+     MF_OWNERDRAW = $100;
+     MF_POPUP = $10;
+     MF_SEPARATOR = $800;
+     MF_STRING = 0;
+     MF_SYSMENU = $2000;
+     MF_USECHECKBITMAPS = $200;
+  { Ternary Raster Operations - BitBlt  }
+     BLACKNESS = $00000042;
+     NOTSRCERASE = $001100A6;
+     NOTSRCCOPY = $00330008;
+     SRCERASE = $00440328;
+     DSTINVERT = $00550009;
+     PATINVERT = $005A0049;
+     SRCINVERT = $00660046;
+     SRCAND = $008800C6;
+     MERGEPAINT = $00BB0226;
+     MERGECOPY = $00C000CA;
+     SRCCOPY = $00CC0020;
+     SRCPAINT = $00EE0086;
+     PATCOPY = $00F00021;
+     PATPAINT = $00FB0A09;
+     WHITENESS = $00FF0062;
+  { Binary Raster Operations  }
+     R2_BLACK = 1;
+     R2_COPYPEN = 13;
+     R2_MASKNOTPEN = 3;
+     R2_MASKPEN = 9;
+     R2_MASKPENNOT = 5;
+     R2_MERGENOTPEN = 12;
+     R2_MERGEPEN = 15;
+     R2_MERGEPENNOT = 14;
+     R2_NOP = 11;
+     R2_NOT = 6;
+     R2_NOTCOPYPEN = 4;
+     R2_NOTMASKPEN = 8;
+     R2_NOTMERGEPEN = 2;
+     R2_NOTXORPEN = 10;
+     R2_WHITE = 16;
+     R2_XORPEN = 7;
+  { BroadcastSystemMessage  }
+     BSF_FLUSHDISK = 4;
+     BSF_FORCEIFHUNG = 32;
+     BSF_IGNORECURRENTTASK = 2;
+     BSF_NOHANG = 8;
+     BSF_POSTMESSAGE = 16;
+     BSF_QUERY = 1;
+     BSM_ALLCOMPONENTS = 0;
+     BSM_APPLICATIONS = 8;
+     BSM_INSTALLABLEDRIVERS = 4;
+     BSM_NETDRIVER = 2;
+     BSM_VXDS = 1;
+     BROADCAST_QUERY_DENY = 1112363332;
+  { CascadeWindows, TileWindows  }
+     MDITILE_SKIPDISABLED = 2;
+     MDITILE_HORIZONTAL = 1;
+     MDITILE_VERTICAL = 0;
+  { CBTProc  }
+     HCBT_ACTIVATE = 5;
+     HCBT_CLICKSKIPPED = 6;
+     HCBT_CREATEWND = 3;
+     HCBT_DESTROYWND = 4;
+     HCBT_KEYSKIPPED = 7;
+     HCBT_MINMAX = 1;
+     HCBT_MOVESIZE = 0;
+     HCBT_QS = 2;
+     HCBT_SETFOCUS = 9;
+     HCBT_SYSCOMMAND = 8;
+  { ChangeDisplaySettings  }
+     DM_BITSPERPEL              = $40000;
+     DM_PELSWIDTH               = $80000;
+     DM_PELSHEIGHT              = $100000;
+     DM_DISPLAYFLAGS            = $200000;
+     DM_DISPLAYFREQUENCY        = $400000;
+     DM_DISPLAYORIENTATION      = $00800000;
+     DM_DISPLAYQUERYORIENTATION = $01000000;
+  { rotation angle for screen rotation }
+     DMDO_0       = 0;
+     DMDO_90      = 1;
+     DMDO_180     = 2;
+     DMDO_270     = 4;
+     DMDO_DEFAULT = DMDO_0;
+
+     CDS_UPDATEREGISTRY = 1;
+     CDS_TEST = 2;
+     CDS_FULLSCREEN = 4;
+     CDS_GLOBAL = 8;
+     CDS_SET_PRIMARY = $10;
+     CDS_RESET = $40000000;
+     CDS_SETRECT = $20000000;
+     CDS_NORESET = $10000000;
+     DISP_CHANGE_SUCCESSFUL = 0;
+     DISP_CHANGE_RESTART = 1;
+     DISP_CHANGE_BADFLAGS = -(4);
+     DISP_CHANGE_FAILED = -(1);
+     DISP_CHANGE_BADMODE = -(2);
+     DISP_CHANGE_NOTUPDATED = -(3);
+  { ChangeServiceConfig  }
+     SERVICE_NO_CHANGE = -(1);
+     SERVICE_WIN32_OWN_PROCESS = 16;
+     SERVICE_WIN32_SHARE_PROCESS = 32;
+     SERVICE_KERNEL_DRIVER = 1;
+     SERVICE_FILE_SYSTEM_DRIVER = 2;
+     SERVICE_INTERACTIVE_PROCESS = 256;
+     SERVICE_BOOT_START = 0;
+     SERVICE_SYSTEM_START = 1;
+     SERVICE_AUTO_START = 2;
+     SERVICE_DEMAND_START = 3;
+     SERVICE_DISABLED = 4;
+  { SERVICE_STATUS structure  }
+     SERVICE_STOPPED = 1;
+     SERVICE_START_PENDING = 2;
+     SERVICE_STOP_PENDING = 3;
+     SERVICE_RUNNING = 4;
+     SERVICE_CONTINUE_PENDING = 5;
+     SERVICE_PAUSE_PENDING = 6;
+     SERVICE_PAUSED = 7;
+     SERVICE_ACCEPT_STOP = 1;
+     SERVICE_ACCEPT_PAUSE_CONTINUE = 2;
+     SERVICE_ACCEPT_SHUTDOWN = 4;
+  { CheckDlgButton  }
+     BST_CHECKED = 1;
+     BST_INDETERMINATE = 2;
+     BST_UNCHECKED = 0;
+     BST_FOCUS = 8;
+     BST_PUSHED = 4;
+  { CheckMenuItem, HiliteMenuItem  }
+     MF_BYCOMMAND = 0;
+     MF_BYPOSITION = $400;
+     MF_CHECKED = $8;
+     MF_UNCHECKED = 0;
+     MF_HILITE = $80;
+     MF_UNHILITE = 0;
+  { ChildWindowFromPointEx  }
+     CWP_ALL = 0;
+     CWP_SKIPINVISIBLE = 1;
+     CWP_SKIPDISABLED = 2;
+     CWP_SKIPTRANSPARENT = 4;
+  { ClearCommError  }
+     CE_BREAK = 16;
+     CE_DNS = 2048;
+     CE_FRAME = 8;
+     CE_IOE = 1024;
+     CE_MODE = 32768;
+     CE_OOP = 4096;
+     CE_OVERRUN = 2;
+     CE_PTO = 512;
+     CE_RXOVER = 1;
+     CE_RXPARITY = 4;
+     CE_TXFULL = 256;
+  { ChooseMatchToTarget  }
+  { CombineRgn  }
+     RGN_AND = 1;
+     RGN_COPY = 5;
+     RGN_DIFF = 4;
+     RGN_OR = 2;
+     RGN_XOR = 3;
+     NULLREGION = 1;
+     SIMPLEREGION = 2;
+     COMPLEXREGION = 3;
+     ERROR = 0;
+  { CommonDlgExtendedError  }
+     CDERR_DIALOGFAILURE = $ffff;
+     CDERR_FINDRESFAILURE = 6;
+     CDERR_INITIALIZATION = 2;
+     CDERR_LOADRESFAILURE = 7;
+     CDERR_LOADSTRFAILURE = 5;
+     CDERR_LOCKRESFAILURE = 8;
+     CDERR_MEMALLOCFAILURE = 9;
+     CDERR_MEMLOCKFAILURE = 10;
+     CDERR_NOHINSTANCE = 4;
+     CDERR_NOHOOK = 11;
+     CDERR_NOTEMPLATE = 3;
+     CDERR_REGISTERMSGFAIL = 12;
+     CDERR_STRUCTSIZE = 1;
+     PDERR_CREATEICFAILURE = $1000 + 10;
+     PDERR_DEFAULTDIFFERENT = $1000 + 12;
+     PDERR_DNDMMISMATCH = $1000 + 9;
+     PDERR_GETDEVMODEFAIL = $1000 + 5;
+     PDERR_INITFAILURE = $1000 + 6;
+     PDERR_LOADDRVFAILURE = $1000 + 4;
+     PDERR_NODEFAULTPRN = $1000 + 8;
+     PDERR_NODEVICES = $1000 + 7;
+     PDERR_PARSEFAILURE = $1000 + 2;
+     PDERR_PRINTERNOTFOUND = $1000 + 11;
+     PDERR_RETDEFFAILURE = $1000 + 3;
+     PDERR_SETUPFAILURE = $1000 + 1;
+     CFERR_MAXLESSTHANMIN = $2000 + 2;
+     CFERR_NOFONTS = $2000 + 1;
+     FNERR_BUFFERTOOSMALL = $3000 + 3;
+     FNERR_INVALIDFILENAME = $3000 + 2;
+     FNERR_SUBCLASSFAILURE = $3000 + 1;
+     FRERR_BUFFERLENGTHZERO = $4000 + 1;
+  { CompareString, LCMapString  }
+     //LOCALE_SYSTEM_DEFAULT = $800; //-winnt, replaced by function
+     //LOCALE_USER_DEFAULT = $400;   //-winnt, replaced by function
+     NORM_IGNORECASE = 1;
+     NORM_IGNOREKANATYPE = 65536;
+     NORM_IGNORENONSPACE = 2;
+     NORM_IGNORESYMBOLS = 4;
+     NORM_IGNOREWIDTH = 131072;
+     SORT_STRINGSORT = 4096;
+     LCMAP_BYTEREV = 2048;
+     LCMAP_FULLWIDTH = 8388608;
+     LCMAP_HALFWIDTH = 4194304;
+     LCMAP_HIRAGANA = 1048576;
+     LCMAP_KATAKANA = 2097152;
+     LCMAP_LOWERCASE = 256;
+     LCMAP_SORTKEY = 1024;
+     LCMAP_UPPERCASE = 512;
+  { ContinueDebugEvent  }
+     DBG_CONTINUE = $10002;
+     DBG_CONTROL_BREAK = $40010008;
+     DBG_CONTROL_C = $40010005;
+     DBG_EXCEPTION_NOT_HANDLED = $80010001;
+     DBG_TERMINATE_THREAD = $40010003;
+     DBG_TERMINATE_PROCESS = $40010004;
+  { ControlService  }
+     SERVICE_CONTROL_STOP = 1;
+     SERVICE_CONTROL_PAUSE = 2;
+     SERVICE_CONTROL_CONTINUE = 3;
+     SERVICE_CONTROL_INTERROGATE = 4;
+     SERVICE_CONTROL_SHUTDOWN = 5;
+  { CopyImage, LoadImage  }
+     IMAGE_BITMAP = 0;
+     IMAGE_CURSOR = 2;
+     IMAGE_ENHMETAFILE = 1;
+     IMAGE_ICON = 1;
+     LR_COPYDELETEORG = 8;
+     LR_COPYRETURNORG = 4;
+     LR_MONOCHROME = 1;
+     LR_CREATEDIBSECTION = 8192;
+     LR_DEFAULTSIZE = 64;
+  { CreateDesktop  }
+     DF_ALLOWOTHERACCOUNTHOOK = $1;
+     DESKTOP_CREATEMENU = $4;
+     DESKTOP_CREATEWINDOW = $2;
+     DESKTOP_ENUMERATE = $40;
+     DESKTOP_HOOKCONTROL = $8;
+     DESKTOP_JOURNALPLAYBACK = $20;
+     DESKTOP_JOURNALRECORD = $10;
+     DESKTOP_READOBJECTS = $1;
+     DESKTOP_SWITCHDESKTOP = $100;
+     DESKTOP_WRITEOBJECTS = $80;
+     WSF_VISIBLE = $1;
+  { CreateDIBitmap  }
+     CBM_INIT = $4;
+     DIB_PAL_COLORS = 1;
+     DIB_RGB_COLORS = 0;
+  { file & pipe  }
+     FILE_READ_DATA = $0001;
+  { directory  }
+     FILE_LIST_DIRECTORY = $0001;
+  { file & pipe  }
+     FILE_WRITE_DATA = $0002;
+  { directory  }
+     FILE_ADD_FILE = $0002;
+  { file  }
+     FILE_APPEND_DATA = $0004;
+  { directory  }
+     FILE_ADD_SUBDIRECTORY = $0004;
+  { named pipe  }
+     FILE_CREATE_PIPE_INSTANCE = $0004;
+  { file & directory  }
+     FILE_READ_EA = $0008;
+     FILE_READ_PROPERTIES = FILE_READ_EA;
+  { file & directory  }
+     FILE_WRITE_EA = $0010;
+     FILE_WRITE_PROPERTIES = FILE_WRITE_EA;
+  { file  }
+     FILE_EXECUTE = $0020;
+  { directory  }
+     FILE_TRAVERSE = $0020;
+  { directory  }
+     FILE_DELETE_CHILD = $0040;
+  { all  }
+     FILE_READ_ATTRIBUTES = $0080;
+  { all  }
+     FILE_WRITE_ATTRIBUTES = $0100;
+  { displaced lower
+  #define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)
+
+  #define FILE_GENERIC_READ         (STANDARD_RIGHTS_READ     |\
+                                     FILE_READ_DATA           |\
+                                     FILE_READ_ATTRIBUTES     |\
+                                     FILE_READ_EA             |\
+                                     SYNCHRONIZE)
+
+
+  #define FILE_GENERIC_WRITE        (STANDARD_RIGHTS_WRITE    |\
+                                     FILE_WRITE_DATA          |\
+                                     FILE_WRITE_ATTRIBUTES    |\
+                                     FILE_WRITE_EA            |\
+                                     FILE_APPEND_DATA         |\
+                                     SYNCHRONIZE)
+
+
+  #define FILE_GENERIC_EXECUTE      (STANDARD_RIGHTS_EXECUTE  |\
+                                     FILE_READ_ATTRIBUTES     |\
+                                     FILE_EXECUTE             |\
+                                     SYNCHRONIZE)
+   }
+     FILE_SHARE_DELETE = 4;
+     FILE_SHARE_READ = 1;
+     FILE_SHARE_WRITE = 2;
+     CONSOLE_TEXTMODE_BUFFER = 1;
+     CREATE_NEW = 1;
+     CREATE_ALWAYS = 2;
+     OPEN_EXISTING = 3;
+     OPEN_ALWAYS = 4;
+     TRUNCATE_EXISTING = 5;
+     FILE_ATTRIBUTE_ARCHIVE = 32;
+     FILE_ATTRIBUTE_COMPRESSED = 2048;
+     FILE_ATTRIBUTE_NORMAL = 128;
+     FILE_ATTRIBUTE_DIRECTORY = 16;
+     FILE_ATTRIBUTE_HIDDEN = 2;
+     FILE_ATTRIBUTE_READONLY = 1;
+     FILE_ATTRIBUTE_SYSTEM = 4;
+     FILE_ATTRIBUTE_TEMPORARY = 256;
+     FILE_FLAG_WRITE_THROUGH = $80000000;
+     FILE_FLAG_OVERLAPPED = 1073741824;
+     FILE_FLAG_NO_BUFFERING = 536870912;
+     FILE_FLAG_RANDOM_ACCESS = 268435456;
+     FILE_FLAG_SEQUENTIAL_SCAN = 134217728;
+     FILE_FLAG_DELETE_ON_CLOSE = 67108864;
+     FILE_FLAG_BACKUP_SEMANTICS = 33554432;
+     FILE_FLAG_POSIX_SEMANTICS = 16777216;
+     SECURITY_ANONYMOUS = 0;
+     SECURITY_IDENTIFICATION = 65536;
+     SECURITY_IMPERSONATION = 131072;
+     SECURITY_DELEGATION = 196608;
+     SECURITY_CONTEXT_TRACKING = 262144;
+     SECURITY_EFFECTIVE_ONLY = 524288;
+     SECURITY_SQOS_PRESENT = 1048576;
+  { CreateFileMapping, VirtualAlloc, VirtualFree, VirtualProtect  }
+     SEC_COMMIT = 134217728;
+     SEC_IMAGE = 16777216;
+     SEC_NOCACHE = 268435456;
+     SEC_RESERVE = 67108864;
+     PAGE_READONLY = 2;
+     PAGE_READWRITE = 4;
+     PAGE_WRITECOPY = 8;
+     PAGE_EXECUTE = 16;
+     PAGE_EXECUTE_READ = 32;
+     PAGE_EXECUTE_READWRITE = 64;
+     PAGE_EXECUTE_WRITECOPY = 128;
+     PAGE_GUARD = 256;
+     PAGE_NOACCESS = 1;
+     PAGE_NOCACHE = 512;
+     MEM_COMMIT = 4096;
+     MEM_FREE = 65536;
+     MEM_RESERVE = 8192;
+     MEM_IMAGE = 16777216;
+     MEM_MAPPED = 262144;
+     MEM_PRIVATE = 131072;
+     MEM_DECOMMIT = 16384;
+     MEM_RELEASE = 32768;
+     MEM_TOP_DOWN = 1048576;
+     EXCEPTION_GUARD_PAGE = $80000001;
+     SECTION_EXTEND_SIZE = $10;
+     SECTION_MAP_READ = $4;
+     SECTION_MAP_WRITE = $2;
+     SECTION_QUERY = $1;
+     SECTION_ALL_ACCESS = $f001f;
+  { CreateFont  }
+     FW_DONTCARE = 0;
+     FW_THIN = 100;
+     FW_EXTRALIGHT = 200;
+     FW_LIGHT = 300;
+     FW_NORMAL = 400;
+     FW_REGULAR = FW_NORMAL;
+     FW_MEDIUM = 500;
+     FW_SEMIBOLD = 600;
+     FW_BOLD = 700;
+     FW_EXTRABOLD = 800;
+     FW_HEAVY = 900;
+     ANSI_CHARSET = 0;
+     DEFAULT_CHARSET = 1;
+     SYMBOL_CHARSET = 2;
+     SHIFTJIS_CHARSET = 128;
+     HANGEUL_CHARSET = 129;
+     GB2312_CHARSET = 134;
+     CHINESEBIG5_CHARSET = 136;
+     GREEK_CHARSET = 161;
+     TURKISH_CHARSET = 162;
+     HEBREW_CHARSET = 177;
+     ARABIC_CHARSET = 178;
+     BALTIC_CHARSET = 186;
+     RUSSIAN_CHARSET = 204;
+     THAI_CHARSET = 222;
+     EASTEUROPE_CHARSET = 238;
+
+     OEM_CHARSET = 255;
+     OEM_CERTIFY_TRUST = 2;   //+windef
+     OEM_CERTIFY_RUN = 1;     //+windef
+     OEM_CERTIFY_FALSE = 0;   //+windef
+
+     OUT_DEFAULT_PRECIS = 0;
+     OUT_STRING_PRECIS = 1;
+     OUT_CHARACTER_PRECIS = 2;
+     OUT_STROKE_PRECIS = 3;
+     OUT_TT_PRECIS = 4;
+     OUT_DEVICE_PRECIS = 5;
+     OUT_RASTER_PRECIS = 6;
+     OUT_TT_ONLY_PRECIS = 7;
+     OUT_OUTLINE_PRECIS = 8;
+     CLIP_DEFAULT_PRECIS = 0;
+     CLIP_CHARACTER_PRECIS = 1;
+     CLIP_STROKE_PRECIS = 2;
+     CLIP_MASK = 15;
+     CLIP_LH_ANGLES = 16;
+     CLIP_TT_ALWAYS = 32;
+     CLIP_EMBEDDED = 128;
+     DEFAULT_QUALITY = 0;
+     DRAFT_QUALITY = 1;
+     PROOF_QUALITY = 2;
+     NONANTIALIASED_QUALITY = 3;
+     ANTIALIASED_QUALITY = 4;
+     DEFAULT_PITCH = 0;
+     FIXED_PITCH = 1;
+     VARIABLE_PITCH = 2;
+     MONO_FONT = 8;
+     FF_DECORATIVE = 80;
+     FF_DONTCARE = 0;
+     FF_MODERN = 48;
+     FF_ROMAN = 16;
+     FF_SCRIPT = 64;
+     FF_SWISS = 32;
+  { CreateHatchBrush  }
+     HS_BDIAGONAL = 3;
+     HS_CROSS = 4;
+     HS_DIAGCROSS = 5;
+     HS_FDIAGONAL = 2;
+     HS_HORIZONTAL = 0;
+     HS_VERTICAL = 1;
+  { CreateIconFromResourceEx  }
+     LR_DEFAULTCOLOR = 0;
+     LR_LOADREALSIZE = 128;
+  { already defined above !!
+  #define LR_MONOCHROME (1)
+   }
+  { CreateMappedBitmap  }
+     CMB_MASKED = 2;
+  { CreateNamedPipe  }
+     PIPE_ACCESS_DUPLEX = 3;
+     PIPE_ACCESS_INBOUND = 1;
+     PIPE_ACCESS_OUTBOUND = 2;
+     //WRITE_DAC = $40000;     //~winnt, moved to ACCESS_TYPES
+     //WRITE_OWNER = $80000;   //~winnt, moved to ACCESS_TYPES
+     //ACCESS_SYSTEM_SECURITY = $1000000;  //~winnt, moved to ACCESS_TYPES
+     PIPE_TYPE_BYTE = 0;
+     PIPE_TYPE_MESSAGE = 4;
+     PIPE_READMODE_BYTE = 0;
+     PIPE_READMODE_MESSAGE = 2;
+     PIPE_WAIT = 0;
+     PIPE_NOWAIT = 1;
+  { CreatePen, ExtCreatePen  }
+     PS_GEOMETRIC = 65536;
+     PS_COSMETIC = 0;
+     PS_ALTERNATE = 8;
+     PS_SOLID = 0;
+     PS_DASH = 1;
+     PS_DOT = 2;
+     PS_DASHDOT = 3;
+     PS_DASHDOTDOT = 4;
+     PS_NULL = 5;
+     PS_USERSTYLE = 7;
+     PS_INSIDEFRAME = 6;
+     PS_ENDCAP_ROUND = 0;
+     PS_ENDCAP_SQUARE = 256;
+     PS_ENDCAP_FLAT = 512;
+     PS_JOIN_BEVEL = 4096;
+     PS_JOIN_MITER = 8192;
+     PS_JOIN_ROUND = 0;
+     PS_STYLE_MASK = 15;
+     PS_ENDCAP_MASK = 3840;
+     PS_TYPE_MASK = 983040;
+  { CreateProcess  }
+     CREATE_DEFAULT_ERROR_MODE = 67108864;
+     CREATE_NEW_CONSOLE = 16;
+     CREATE_NEW_PROCESS_GROUP = 512;
+     CREATE_SEPARATE_WOW_VDM = 2048;
+     CREATE_SUSPENDED = 4;
+     CREATE_UNICODE_ENVIRONMENT = 1024;
+     DEBUG_PROCESS = 1;
+     DEBUG_ONLY_THIS_PROCESS = 2;
+     DETACHED_PROCESS = 8;
+     HIGH_PRIORITY_CLASS = 128;
+     IDLE_PRIORITY_CLASS = 64;
+     NORMAL_PRIORITY_CLASS = 32;
+     REALTIME_PRIORITY_CLASS = 256;
+  { CreateService  }
+     SERVICE_ALL_ACCESS = $f01ff;
+     SERVICE_CHANGE_CONFIG = 2;
+     SERVICE_ENUMERATE_DEPENDENTS = 8;
+     SERVICE_INTERROGATE = 128;
+     SERVICE_PAUSE_CONTINUE = 64;
+     SERVICE_QUERY_CONFIG = 1;
+     SERVICE_QUERY_STATUS = 4;
+     SERVICE_START = 16;
+     SERVICE_STOP = 32;
+     SERVICE_USER_DEFINED_CONTROL = 256;
+     SERVICE_DELETE = $10000;
+     SERVICE_READ_CONTROL = $20000;
+     SERVICE_GENERIC_EXECUTE = $20000000;
+  { already defined above !!
+  #define SERVICE_WIN32_OWN_PROCESS     (16)
+  #define SERVICE_WIN32_SHARE_PROCESS   (32)
+  #define SERVICE_KERNEL_DRIVER (1)
+  #define SERVICE_FILE_SYSTEM_DRIVER    (2)
+  #define SERVICE_INTERACTIVE_PROCESS   (256)
+  #define SERVICE_BOOT_START    (0)
+  #define SERVICE_SYSTEM_START  (1)
+  #define SERVICE_AUTO_START    (2)
+  #define SERVICE_DEMAND_START  (3)
+  #define SERVICE_DISABLED      (4)
+   }
+     SERVICE_ERROR_IGNORE = 0;
+     SERVICE_ERROR_NORMAL = 1;
+     SERVICE_ERROR_SEVERE = 2;
+     SERVICE_ERROR_CRITICAL = 3;
+  { CreateTapePartition, WriteTapemark  }
+     TAPE_FIXED_PARTITIONS = 0;
+     TAPE_INITIATOR_PARTITIONS = $2;
+     TAPE_SELECT_PARTITIONS = $1;
+     TAPE_FILEMARKS = $1;
+     TAPE_LONG_FILEMARKS = $3;
+     TAPE_SETMARKS = 0;
+     TAPE_SHORT_FILEMARKS = $2;
+  { CreateWindow  }
+     CW_USEDEFAULT = longint($80000000);
+     WS_BORDER = $800000;
+     WS_CAPTION = $c00000;
+     WS_CHILD = $40000000;
+     WS_CHILDWINDOW = $40000000;
+     WS_CLIPCHILDREN = $2000000;
+     WS_CLIPSIBLINGS = $4000000;
+     WS_DISABLED = $8000000;
+     WS_DLGFRAME = $400000;
+     WS_GROUP = $20000;
+     WS_HSCROLL = $100000;
+     WS_MAXIMIZEBOX = $20000;
+     WS_MINIMIZEBOX = $10000;
+     WS_OVERLAPPED = WS_BORDER or WS_CAPTION;
+     WS_POPUP = $80000000;
+     WS_SIZEBOX = $40000;
+     WS_SYSMENU = $80000;
+     WS_TABSTOP = $10000;
+     WS_THICKFRAME = $40000;
+     WS_VISIBLE = $10000000;
+     WS_VSCROLL = $200000;
+     BS_3STATE = $5;
+     BS_AUTO3STATE = $6;
+     BS_AUTOCHECKBOX = $3;
+     BS_AUTORADIOBUTTON = $9;
+     BS_BITMAP = $80;
+     BS_BOTTOM = $800;
+     BS_CENTER = $300;
+     BS_CHECKBOX = $2;
+     BS_DEFPUSHBUTTON = $1;
+     BS_GROUPBOX = $7;
+     BS_ICON = $40;
+     BS_LEFT = $100;
+     BS_LEFTTEXT = $20;
+     BS_MULTILINE = $2000;
+     BS_NOTIFY = $4000;
+     BS_OWNERDRAW = $b;
+     BS_PUSHBUTTON = 0;
+     BS_PUSHLIKE = $1000;
+     BS_RADIOBUTTON = $4;
+     BS_RIGHT = $200;
+     BS_RIGHTBUTTON = $20;
+     BS_TEXT = 0;
+     BS_TOP = $400;
+     BS_USERBUTTON = $8;
+     BS_VCENTER = $c00;
+     BS_FLAT = $8000;
+     CBS_AUTOHSCROLL = $40;
+     CBS_DISABLENOSCROLL = $800;
+     CBS_DROPDOWN = $2;
+     CBS_DROPDOWNLIST = $3;
+     CBS_HASSTRINGS = $200;
+     CBS_LOWERCASE = $4000;
+     CBS_NOINTEGRALHEIGHT = $400;
+     CBS_OEMCONVERT = $80;
+     CBS_OWNERDRAWFIXED = $10;
+     CBS_OWNERDRAWVARIABLE = $20;
+     CBS_SIMPLE = $1;
+     CBS_SORT = $100;
+     CBS_UPPERCASE = $2000;
+     ES_AUTOHSCROLL = $80;
+     ES_AUTOVSCROLL = $40;
+     ES_CENTER = $1;
+     ES_LEFT = 0;
+     ES_LOWERCASE = $10;
+     ES_MULTILINE = $4;
+     ES_NOHIDESEL = $100;
+     ES_NUMBER = $2000;
+     ES_OEMCONVERT = $400;
+     ES_PASSWORD = $20;
+     ES_READONLY = $800;
+     ES_RIGHT = $2;
+     ES_UPPERCASE = $8;
+     ES_WANTRETURN = $1000;
+     LBS_DISABLENOSCROLL = $1000;
+     LBS_EXTENDEDSEL = $800;
+     LBS_HASSTRINGS = $40;
+     LBS_MULTICOLUMN = $200;
+     LBS_MULTIPLESEL = $8;
+     LBS_NODATA = $2000;
+     LBS_NOINTEGRALHEIGHT = $100;
+     LBS_NOREDRAW = $4;
+     LBS_NOSEL = $4000;
+     LBS_NOTIFY = $1;
+     LBS_OWNERDRAWFIXED = $10;
+     LBS_OWNERDRAWVARIABLE = $20;
+     LBS_SORT = $2;
+     LBS_STANDARD = $a00003;
+     LBS_USETABSTOPS = $80;
+     LBS_WANTKEYBOARDINPUT = $400;
+     SBS_BOTTOMALIGN = $4;
+     SBS_HORZ = 0;
+     SBS_LEFTALIGN = $2;
+     SBS_RIGHTALIGN = $4;
+     SBS_SIZEBOX = $8;
+     SBS_SIZEBOXBOTTOMRIGHTALIGN = $4;
+     SBS_SIZEBOXTOPLEFTALIGN = $2;
+     SBS_SIZEGRIP = $10;
+     SBS_TOPALIGN = $2;
+     SBS_VERT = $1;
+     SS_BITMAP = $e;
+     SS_BLACKFRAME = $7;
+     SS_BLACKRECT = $4;
+     SS_CENTER = $1;
+     SS_CENTERIMAGE = $200;
+     SS_ENHMETAFILE = $f;
+     SS_ETCHEDFRAME = $12;
+     SS_ETCHEDHORZ = $10;
+     SS_ETCHEDVERT = $11;
+     SS_GRAYFRAME = $8;
+     SS_GRAYRECT = $5;
+     SS_ICON = $3;
+     SS_LEFT = 0;
+     SS_LEFTNOWORDWRAP = $c;
+     SS_NOPREFIX = $80;
+     SS_NOTIFY = $100;
+     SS_OWNERDRAW = $d;
+     SS_REALSIZEIMAGE = $800;
+     SS_RIGHT = $2;
+     SS_RIGHTJUST = $400;
+     SS_SIMPLE = $b;
+     SS_SUNKEN = $1000;
+     SS_USERITEM = $a;
+     SS_WHITEFRAME = $9;
+     SS_WHITERECT = $6;
+    { Dialog styles }
+     DS_ABSALIGN      = $1;
+     DS_SYSMODAL      = $2;
+     DS_3DLOOK        = $4;
+     DS_FIXEDSYS      = $8;
+     DS_NOFAILCREATE  = $10;
+     DS_LOCALEDIT     = $20;
+     DS_SETFONT       = $40;
+     DS_MODALFRAME    = $80;
+     DS_NOIDLEMSG     = $100;
+     DS_SETFOREGROUND = $200;
+     DS_CONTROL       = $400;
+     DS_CENTER        = $800;
+     DS_CENTERMOUSE   = $1000;
+     DS_CONTEXTHELP   = $2000;
+     DS_NOCLOSEBTN    =	$4000;
+
+  { CreateWindowEx  }
+     WS_EX_LEFT             = 0;
+     WS_EX_LTRREADING       = 0;
+     WS_EX_RIGHTSCROLLBAR   = 0;
+     WS_EX_DLGMODALFRAME    = $1;
+     WS_EX_NOPARENTNOTIFY   = $4;
+     WS_EX_TOPMOST          = $8;
+     WS_EX_ACCEPTFILES      = $10;
+     WS_EX_TRANSPARENT      = $20;
+     WS_EX_MDICHILD         = $40;
+     WS_EX_TOOLWINDOW       = $80;
+     WS_EX_PALETTEWINDOW    = $188;
+     WS_EX_WINDOWEDGE       = $100;
+     WS_EX_CLIENTEDGE       = $200;
+     WS_EX_OVERLAPPEDWINDOW = $300;
+     WS_EX_CONTEXTHELP      = $400;
+     WS_EX_RIGHT            = $1000;
+     WS_EX_RTLREADING       = $2000;
+     WS_EX_LEFTSCROLLBAR    = $4000;
+     WS_EX_CONTROLPARENT    = $10000;
+     WS_EX_STATICEDGE       = $20000;
+     WS_EX_APPWINDOW        = $40000;
+     WS_EX_NOANIMATION	    = $4000000;
+     WS_EX_NOACTIVATE       = $8000000;
+     WS_EX_INK		    = $10000000;
+     WS_EX_ABOVESTARTUP	    = $20000000;
+     WS_EX_NODRAG           = $40000000;
+     WS_EX_CAPTIONOKBTN     = $80000000;
+
+  { CreateWindowStation  }
+     WINSTA_ACCESSCLIPBOARD = $4;
+     WINSTA_ACCESSGLOBALATOMS = $20;
+     WINSTA_CREATEDESKTOP = $8;
+     WINSTA_ENUMDESKTOPS = $1;
+     WINSTA_ENUMERATE = $100;
+     WINSTA_EXITWINDOWS = $40;
+     WINSTA_READATTRIBUTES = $2;
+     WINSTA_READSCREEN = $200;
+     WINSTA_WRITEATTRIBUTES = $10;
+  { DdeCallback  }
+  { DdeClientTransaction  }
+  { DdeEnableCallback  }
+  { DdeGetLastError  }
+  { DdeInitialize  }
+  { DdeNameService  }
+  { DebugProc  }
+     WH_CALLWNDPROC = 4;
+     WH_CALLWNDPROCRET = 12;
+     WH_CBT = 5;
+     WH_DEBUG = 9;
+     WH_GETMESSAGE = 3;
+     WH_JOURNALPLAYBACK = 1;
+     WH_JOURNALRECORD = 0;
+     WH_KEYBOARD = 2;
+     WH_MOUSE = 7;
+     WH_MSGFILTER = -(1);
+     WH_SHELL = 10;
+     WH_SYSMSGFILTER = 6;
+  { already defined above !!
+  #define WH_MSGFILTER  (-1)  }
+     WH_FOREGROUNDIDLE = 11;
+  { DefineDosDevice  }
+     DDD_RAW_TARGET_PATH = 1;
+     DDD_REMOVE_DEFINITION = 2;
+     DDD_EXACT_MATCH_ON_REMOVE = 4;
+  { DeviceCapbilities  }
+     DC_BINNAMES = 12;          //windef
+     DC_BINS = 6;               //windef
+     DC_COPIES = 18;            //windef
+     DC_DRIVER = 11;            //windef
+     DC_DATATYPE_PRODUCED = 21;
+     DC_DUPLEX = 7;             //windef
+     DC_EMF_COMPLIANT = 20;
+     DC_ENUMRESOLUTIONS = 13;   //windef
+     DC_EXTRA = 9;              //windef
+     DC_FIELDS = 1;             //windef
+     DC_FILEDEPENDENCIES = 14;  //windef
+     DC_MAXEXTENT = 5;          //windef
+     DC_MINEXTENT = 4;          //windef
+     DC_ORIENTATION = 17;       //windef
+     DC_PAPERNAMES = 16;        //windef
+     DC_PAPERS = 2;             //windef
+     DC_PAPERSIZE = 3;          //windef
+     DC_SIZE = 8;               //windef
+     DC_TRUETYPE = 15;          //windef
+     DCTT_BITMAP = $1;
+     DCTT_DOWNLOAD = $2;
+     DCTT_SUBDEV = $4;
+     DC_VERSION = 10;           //windef
+     DC_BINADJUST = 19;
+  { already defined above !!
+  #define DC_DATATYPE_PRODUCED  (21)
+   }
+  { DeviceIoControl  }
+  { DlgDirList  }
+     DDL_ARCHIVE = 32;
+     DDL_DIRECTORY = 16;
+     DDL_DRIVES = 16384;
+     DDL_EXCLUSIVE = 32768;
+     DDL_HIDDEN = 2;
+     DDL_READONLY = 1;
+     DDL_READWRITE = 0;
+     DDL_SYSTEM = 4;
+     DDL_POSTMSGS = 8192;
+  { DllEntryPoint  }
+     DLL_PROCESS_ATTACH = 1;
+     DLL_THREAD_ATTACH = 2;
+     DLL_PROCESS_DETACH = 0;
+     DLL_THREAD_DETACH = 3;
+  { DocumentProperties  }
+     DM_IN_BUFFER = 8;   //windef
+     DM_MODIFY = 8;      //windef
+     DM_IN_PROMPT = 4;   //windef
+     DM_PROMPT = 4;      //windef
+     DM_OUT_BUFFER = 2;  //windef
+     DM_COPY = 2;        //windef
+     DM_UPDATE = 1;      //windef
+  { DrawAnimatedRects  }
+     IDANI_OPEN = 1;
+     IDANI_CLOSE = 2;
+  { DrawCaption  }
+     DC_ACTIVE = 1;
+     DC_SMALLCAP = 2;
+  { DrawEdge  }
+     BDR_RAISEDINNER = 4;
+     BDR_SUNKENINNER = 8;
+     BDR_RAISEDOUTER = 1;
+     BDR_SUNKENOUTER = 1;
+     EDGE_BUMP = 9;
+     EDGE_ETCHED = 6;
+     EDGE_RAISED = 5;
+     EDGE_SUNKEN = 10;
+     BF_ADJUST = 8192;
+     BF_BOTTOM = 8;
+     BF_BOTTOMLEFT = 9;
+     BF_BOTTOMRIGHT = 12;
+     BF_DIAGONAL = 16;
+     BF_DIAGONAL_ENDBOTTOMLEFT = 25;
+     BF_DIAGONAL_ENDBOTTOMRIGHT = 28;
+     BF_DIAGONAL_ENDTOPLEFT = 19;
+     BF_DIAGONAL_ENDTOPRIGHT = 22;
+     BF_FLAT = 16384;
+     BF_LEFT = 1;
+     BF_MIDDLE = 2048;
+     BF_MONO = 32768;
+     BF_RECT = 15;
+     BF_RIGHT = 4;
+     BF_SOFT = 4096;
+     BF_TOP = 2;
+     BF_TOPLEFT = 3;
+     BF_TOPRIGHT = 6;
+  { DrawFrameControl  }
+     DFC_BUTTON = 4;
+     DFC_CAPTION = 1;
+     DFC_MENU = 2;
+     DFC_SCROLL = 3;
+     DFCS_BUTTON3STATE = 8;
+     DFCS_BUTTONCHECK = 0;
+     DFCS_BUTTONPUSH = 16;
+     DFCS_BUTTONRADIO = 4;
+     DFCS_BUTTONRADIOIMAGE = 1;
+     DFCS_BUTTONRADIOMASK = 2;
+     DFCS_CAPTIONCLOSE = 0;
+     DFCS_CAPTIONHELP = 4;
+     DFCS_CAPTIONMAX = 2;
+     DFCS_CAPTIONMIN = 1;
+     DFCS_CAPTIONRESTORE = 3;
+     DFCS_MENUARROW = 0;
+     DFCS_MENUBULLET = 2;
+     DFCS_MENUCHECK = 1;
+     DFCS_SCROLLCOMBOBOX = 5;
+     DFCS_SCROLLDOWN = 1;
+     DFCS_SCROLLLEFT = 2;
+     DFCS_SCROLLRIGHT = 3;
+     DFCS_SCROLLSIZEGRIP = 8;
+     DFCS_SCROLLUP = 0;
+     DFCS_ADJUSTRECT = 8192;
+     DFCS_CHECKED = 1024;
+     DFCS_FLAT = 16384;
+     DFCS_INACTIVE = 256;
+     DFCS_MONO = 32768;
+     DFCS_PUSHED = 512;
+  { DrawIconEx  }
+     DI_COMPAT = 4;
+     DI_DEFAULTSIZE = 8;
+     DI_IMAGE = 2;
+     DI_MASK = 1;
+     DI_NORMAL = 3;
+  { DrawState  }
+     DST_BITMAP = 4;
+     DST_COMPLEX = 0;
+     DST_ICON = 3;
+     DST_PREFIXTEXT = 2;
+     DST_TEXT = 1;
+     DSS_NORMAL = 0;
+     DSS_UNION = 16;
+     DSS_DISABLED = 32;
+     DSS_MONO = 128;
+  { DrawStatusText  }
+     SBT_NOBORDERS = 256;
+     SBT_OWNERDRAW = 4096;
+     SBT_POPOUT = 512;
+     SBT_RTLREADING = 1024;
+  { DrawText, DrawTextEx  }
+     DT_BOTTOM = 8;
+     DT_CALCRECT = 1024;
+     DT_CENTER = 1;
+     DT_EDITCONTROL = 8192;
+     DT_END_ELLIPSIS = 32768;
+     DT_PATH_ELLIPSIS = 16384;
+     DT_EXPANDTABS = 64;
+     DT_EXTERNALLEADING = 512;
+     DT_LEFT = 0;
+     DT_MODIFYSTRING = 65536;
+     DT_NOCLIP = 256;
+     DT_NOPREFIX = 2048;
+     DT_RIGHT = 2;
+     DT_RTLREADING = 131072;
+     DT_SINGLELINE = 32;
+     DT_TABSTOP = 128;
+     DT_TOP = 0;
+     DT_VCENTER = 4;
+     DT_WORDBREAK = 16;
+     DT_INTERNAL = 4096;
+  { DuplicateHandle, MapViewOfFile  }
+     DUPLICATE_CLOSE_SOURCE = 1;
+     DUPLICATE_SAME_ACCESS = 2;
+     FILE_MAP_ALL_ACCESS = $f001f;
+     FILE_MAP_READ = 4;
+     FILE_MAP_WRITE = 2;
+     FILE_MAP_COPY = 1;
+     MUTEX_ALL_ACCESS = $1f0001;
+     MUTEX_MODIFY_STATE = 1;
+     //SYNCHRONIZE = $100000;     //~winnt, move to ACCESS_TYPE
+     SEMAPHORE_ALL_ACCESS = $1f0003;
+     SEMAPHORE_MODIFY_STATE = 2;
+     EVENT_ALL_ACCESS = $1f0003;
+     EVENT_MODIFY_STATE = 2;
+     KEY_ALL_ACCESS = $f003f;
+     KEY_CREATE_LINK = 32;
+     KEY_CREATE_SUB_KEY = 4;
+     KEY_ENUMERATE_SUB_KEYS = 8;
+     KEY_EXECUTE = $20019;
+     KEY_NOTIFY = 16;
+     KEY_QUERY_VALUE = 1;
+     KEY_READ = $20019;
+     KEY_SET_VALUE = 2;
+     KEY_WRITE = $20006;
+     PROCESS_ALL_ACCESS = $1f0fff;
+     PROCESS_CREATE_PROCESS = 128;
+     PROCESS_CREATE_THREAD = 2;
+     PROCESS_DUP_HANDLE = 64;
+     PROCESS_QUERY_INFORMATION = 1024;
+     PROCESS_SET_INFORMATION = 512;
+     PROCESS_TERMINATE = 1;
+     PROCESS_VM_OPERATION = 8;
+     PROCESS_VM_READ = 16;
+     PROCESS_VM_WRITE = 32;
+     THREAD_ALL_ACCESS = $1f03ff;
+     THREAD_DIRECT_IMPERSONATION = 512;
+     THREAD_GET_CONTEXT = 8;
+     THREAD_IMPERSONATE = 256;
+     THREAD_QUERY_INFORMATION = 64;
+     THREAD_SET_CONTEXT = 16;
+     THREAD_SET_INFORMATION = 32;
+     THREAD_SET_THREAD_TOKEN = 128;
+     THREAD_SUSPEND_RESUME = 2;
+     THREAD_TERMINATE = 1;
+  { EditWordBreakProc  }
+     WB_ISDELIMITER = 2;
+     WB_LEFT = 0;
+     WB_RIGHT = 1;
+  { EnableScrollBar  }
+     SB_BOTH = 3;
+     SB_CTL = 2;
+     SB_HORZ = 0;
+     SB_VERT = 1;
+     ESB_DISABLE_BOTH = 3;
+     ESB_DISABLE_DOWN = 2;
+     ESB_DISABLE_LEFT = 1;
+     ESB_DISABLE_LTUP = 1;
+     ESB_DISABLE_RIGHT = 2;
+     ESB_DISABLE_RTDN = 2;
+     ESB_DISABLE_UP = 1;
+     ESB_ENABLE_BOTH = 0;
+  { Scroll Bar notifications }
+     SB_LINEUP = 0;
+     SB_LINEDOWN = 1;
+     SB_LINELEFT = 0;
+     SB_LINERIGHT = 1;
+     SB_PAGEUP = 2;
+     SB_PAGEDOWN = 3;
+     SB_PAGELEFT = 2;
+     SB_PAGERIGHT = 3;
+     SB_THUMBPOSITION = 4;
+     SB_THUMBTRACK = 5;
+     SB_ENDSCROLL = 8;
+     SB_LEFT = 6;
+     SB_RIGHT = 7;
+     SB_BOTTOM = 7;
+     SB_TOP = 6;
+  { EnumCalendarInfo  }
+     ENUM_ALL_CALENDARS = -(1);
+  { EnumDateFormats  }
+     DATE_SHORTDATE = 1;
+     DATE_LONGDATE = 2;
+  { EnumDependentServices  }
+     SERVICE_ACTIVE = 1;
+     SERVICE_INACTIVE = 2;
+  { EnumFontFamExProc  }
+     DEVICE_FONTTYPE = 2;
+     RASTER_FONTTYPE = 1;
+     TRUETYPE_FONTTYPE = 4;
+  { EnumObjects, GetCurrentObject, GetObjectType  }
+     OBJ_BRUSH = 2;
+     OBJ_PEN = 1;
+     OBJ_PAL = 5;
+     OBJ_FONT = 6;
+     OBJ_BITMAP = 7;
+     OBJ_EXTPEN = 11;
+     OBJ_REGION = 8;
+     OBJ_DC = 3;
+     OBJ_MEMDC = 10;
+     OBJ_METAFILE = 9;
+     OBJ_METADC = 4;
+     OBJ_ENHMETAFILE = 13;
+     OBJ_ENHMETADC = 12;
+  { EnumPrinters  }
+  { EnumProtocols  }
+  { EnumResLangProc  }
+     RT_ACCELERATOR = MAKEINTRESOURCE(9);
+     RT_BITMAP = MAKEINTRESOURCE(2);
+     RT_DIALOG = MAKEINTRESOURCE(5);
+     RT_FONT = MAKEINTRESOURCE(8);
+     RT_FONTDIR = MAKEINTRESOURCE(7);
+     RT_MENU = MAKEINTRESOURCE(4);
+     RT_RCDATA = MAKEINTRESOURCE(10);
+     RT_STRING = MAKEINTRESOURCE(6);
+     RT_MESSAGETABLE = MAKEINTRESOURCE(11);
+     RT_CURSOR = MAKEINTRESOURCE(1);
+     RT_GROUP_CURSOR = MAKEINTRESOURCE(12);
+     RT_ICON = MAKEINTRESOURCE(3);
+     RT_GROUP_ICON = MAKEINTRESOURCE(13);
+     RT_VERSION = MAKEINTRESOURCE(16);
+
+  { EnumServicesStatus  }
+
+  const
+     SERVICE_WIN32 = 48;
+     SERVICE_DRIVER = 11;
+  { EnumSystemCodePages  }
+     CP_INSTALLED = 1;
+     CP_SUPPORTED = 2;
+  { EnumSystemLocales  }
+     LCID_INSTALLED = 1;
+     LCID_SUPPORTED = 2;
+  { EraseTape  }
+     TAPE_ERASE_LONG = $1;
+     TAPE_ERASE_SHORT = 0;
+  { Escape  }
+     SP_ERROR = -(1);
+     SP_OUTOFDISK = -(4);
+     SP_OUTOFMEMORY = -(5);
+     SP_USERABORT = -(3);
+     PHYSICALWIDTH = 110;
+     PHYSICALHEIGHT = 111;
+     PHYSICALOFFSETX = 112;
+     PHYSICALOFFSETY = 113;
+     SCALINGFACTORX = 114;
+     SCALINGFACTORY = 115;
+     QUERYESCSUPPORT = 8;
+     {ABORTDOC = 2; conflicts with AbortDoc function }
+     cABORTDOC = 2;
+     {ENDDOC = 11; conflicts with AbortDoc function }
+     cENDDOC = 11;
+     GETPHYSPAGESIZE = 12;
+     GETPRINTINGOFFSET = 13;
+     GETSCALINGFACTOR = 14;
+     NEWFRAME = 1;
+     NEXTBAND = 3;
+     PASSTHROUGH = 19;
+     {SETABORTPROC = 9; conflicts with AbortDoc function }
+     cSETABORTPROC = 9;
+     {STARTDOC = 10; conflicts with AbortDoc function }
+     cSTARTDOC = 10;
+  { EscapeCommFunction  }
+     CLRDTR = 6;				  //winbase
+     CLRRTS = 4;				  //winbase
+     SETDTR = 5;				  //winbase
+     SETRTS = 3;				  //winbase	
+     SETXOFF = 1;				  //winbase
+     SETXON = 2;				  //winbase
+     SETBREAK = 8;				  //winbase
+     CLRBREAK = 9;                                //winbase
+     // Some CE devices share a UART between an IRDA port and a serial port.
+     // These escape functions allow control over the mode.
+     SETIR = 10;  // Set the port to IR mode.     //+winbase
+     CLRIR = 11;  // Set the port to non-IR mode. //+winbase
+  { ExitWindowsEx  }
+     EWX_FORCE = 4;
+     EWX_LOGOFF = 0;
+     EWX_POWEROFF = 8;
+     EWX_REBOOT = 2;
+     EWX_SHUTDOWN = 1;
+  { ExtFloodFill  }
+     FLOODFILLBORDER = 0;
+     FLOODFILLSURFACE = 1;
+  { ExtTextOut  }
+     ETO_CLIPPED = 4;
+     ETO_GLYPH_INDEX = 16;
+     ETO_OPAQUE = 2;
+     ETO_RTLREADING = 128;
+  { FindFirstChangeNotification  }
+     FILE_NOTIFY_CHANGE_FILE_NAME = 1;
+     FILE_NOTIFY_CHANGE_DIR_NAME = 2;
+     FILE_NOTIFY_CHANGE_ATTRIBUTES = 4;
+     FILE_NOTIFY_CHANGE_SIZE = 8;
+     FILE_NOTIFY_CHANGE_LAST_WRITE = 16;
+     FILE_NOTIFY_CHANGE_SECURITY = 256;
+  { FindFirstPrinterChangeNotification  }
+  { FindNextPrinterNotification  }
+  { FMExtensionProc  }
+  { FoldString  }
+     MAP_FOLDCZONE = 16;
+     MAP_FOLDDIGITS = 128;
+     MAP_PRECOMPOSED = 32;
+     MAP_COMPOSITE = 64;
+  { ForegroundIdleProc  }
+     HC_ACTION = 0;
+  { FormatMessage  }
+     FORMAT_MESSAGE_ALLOCATE_BUFFER = 256;
+     FORMAT_MESSAGE_IGNORE_INSERTS = 512;
+     FORMAT_MESSAGE_FROM_STRING = 1024;
+     FORMAT_MESSAGE_FROM_HMODULE = 2048;
+     FORMAT_MESSAGE_FROM_SYSTEM = 4096;
+     FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192;
+     FORMAT_MESSAGE_MAX_WIDTH_MASK = 255;
+  { GdiComment  }
+     GDICOMMENT_WINDOWS_METAFILE = -(2147483647);
+     GDICOMMENT_BEGINGROUP = 2;
+     GDICOMMENT_ENDGROUP = 3;
+     GDICOMMENT_MULTIFORMATS = 1073741828;
+     GDICOMMENT_IDENTIFIER = 1128875079;
+  { GenerateConsoleCtrlEvent, HandlerRoutine  }
+     CTRL_C_EVENT = 0;
+     CTRL_BREAK_EVENT = 1;
+     CTRL_CLOSE_EVENT = 2;
+     CTRL_LOGOFF_EVENT = 5;
+     CTRL_SHUTDOWN_EVENT = 6;
+  { GetAddressByName  }
+  { GetArcDirection  }
+     AD_COUNTERCLOCKWISE = 1;
+     AD_CLOCKWISE = 2;
+  { GetClassLong, GetClassWord  }
+     GCW_ATOM = -(32);
+     GCL_CBCLSEXTRA = -(20);
+     GCL_CBWNDEXTRA = -(18);
+     GCL_HBRBACKGROUND = -(10);
+     GCL_HCURSOR = -(12);
+     GCL_HICON = -(14);
+     GCL_HICONSM = -(34);
+     GCL_HMODULE = -(16);
+     GCL_MENUNAME = -(8);
+     GCL_STYLE = -(26);
+     GCL_WNDPROC = -(24);
+  { GetClipboardFormat, SetClipboardData  }
+     CF_BITMAP = 2;
+     CF_DIB = 8;
+     CF_PALETTE = 9;
+     CF_ENHMETAFILE = 14;
+     CF_METAFILEPICT = 3;
+     CF_OEMTEXT = 7;
+     CF_TEXT = 1;
+     CF_UNICODETEXT = 13;
+     CF_DIF = 5;
+     CF_DSPBITMAP = 130;
+     CF_DSPENHMETAFILE = 142;
+     CF_DSPMETAFILEPICT = 131;
+     CF_DSPTEXT = 129;
+     CF_GDIOBJFIRST = 768;
+     CF_GDIOBJLAST = 1023;
+     CF_HDROP = 15;
+     CF_LOCALE = 16;
+     CF_OWNERDISPLAY = 128;
+     CF_PENDATA = 10;
+     CF_PRIVATEFIRST = 512;
+     CF_PRIVATELAST = 767;
+     CF_RIFF = 11;
+     CF_SYLK = 4;
+     CF_WAVE = 12;
+     CF_TIFF = 6;
+  { GetCommMask  }
+     EV_BREAK = 64;
+     EV_CTS = 8;
+     EV_DSR = 16;
+     EV_ERR = 128;
+     EV_EVENT1 = 2048;
+     EV_EVENT2 = 4096;
+     EV_PERR = 512;
+     EV_RING = 256;
+     EV_RLSD = 32;
+     EV_RX80FULL = 1024;
+     EV_RXCHAR = 1;
+     EV_RXFLAG = 2;
+     EV_TXEMPTY = 4;
+     EV_POWER = $2000;  // WINCE Power event.  //+winbase
+
+  { GetCommModemStatus  }
+     MS_CTS_ON = $10;
+     MS_DSR_ON = $20;
+     MS_RING_ON = $40;
+     MS_RLSD_ON = $80;
+  { GetComputerName  }
+     MAX_COMPUTERNAME_LENGTH = 15;
+  { GetCPInfo  }
+     CP_ACP = 0;
+     CP_MACCP = 2;
+     CP_OEMCP = 1;
+  { GetDateFormat  }
+  { already defined above !!
+  #define DATE_SHORTDATE        (1)
+  #define DATE_LONGDATE (2)
+   }
+     DATE_USE_ALT_CALENDAR = 4;
+  { GetDCEx  }
+     DCX_WINDOW = $1;
+     DCX_CACHE = $2;
+     DCX_PARENTCLIP = $20;
+     DCX_CLIPSIBLINGS = $10;
+     DCX_CLIPCHILDREN = $8;
+     DCX_NORESETATTRS = $4;
+     DCX_LOCKWINDOWUPDATE = $400;
+     DCX_EXCLUDERGN = $40;
+     DCX_INTERSECTRGN = $80;
+     DCX_VALIDATE = $200000;
+  { GetDeviceCaps  }
+     DRIVERVERSION = 0;
+     TECHNOLOGY = 2;
+     DT_PLOTTER = 0;
+     DT_RASDISPLAY = 1;
+     DT_RASPRINTER = 2;
+     DT_RASCAMERA = 3;
+     DT_CHARSTREAM = 4;
+     DT_METAFILE = 5;
+     DT_DISPFILE = 6;
+     HORZSIZE = 4;
+     VERTSIZE = 6;
+     HORZRES = 8;
+     VERTRES = 10;
+     LOGPIXELSX = 88;
+     LOGPIXELSY = 90;
+     BITSPIXEL = 12;
+     PLANES = 14;
+     NUMBRUSHES = 16;
+     NUMPENS = 18;
+     NUMFONTS = 22;
+     NUMCOLORS = 24;
+     ASPECTX = 40;
+     ASPECTY = 42;
+     ASPECTXY = 44;
+     PDEVICESIZE = 26;
+     CLIPCAPS = 36;
+     SIZEPALETTE = 104;
+     NUMRESERVED = 106;
+     COLORRES = 108;
+  { already defined above !!
+  #define PHYSICALWIDTH (110)
+  #define PHYSICALHEIGHT        (111)
+  #define PHYSICALOFFSETX       (112)
+  #define PHYSICALOFFSETY       (113)
+  #define SCALINGFACTORX        (114)
+  #define SCALINGFACTORY        (115)
+   }
+     VREFRESH = 116;
+     DESKTOPHORZRES = 118;
+     DESKTOPVERTRES = 117;
+     BLTALIGNMENT = 119;
+     RASTERCAPS = 38;
+     RC_BANDING = 2;
+     RC_BITBLT = 1;
+     RC_BITMAP64 = 8;
+     RC_DI_BITMAP = 128;
+     RC_DIBTODEV = 512;
+     RC_FLOODFILL = 4096;
+     RC_GDI20_OUTPUT = 16;
+     RC_PALETTE = 256;
+     RC_SCALING = 4;
+     RC_STRETCHBLT = 2048;
+     RC_STRETCHDIB = 8192;
+     CURVECAPS = 28;
+     CC_NONE = 0;
+     CC_CIRCLES = 1;
+     CC_PIE = 2;
+     CC_CHORD = 4;
+     CC_ELLIPSES = 8;
+     CC_WIDE = 16;
+     CC_STYLED = 32;
+     CC_WIDESTYLED = 64;
+     CC_INTERIORS = 128;
+     CC_ROUNDRECT = 256;
+     LINECAPS = 30;
+     LC_NONE = 0;
+     LC_POLYLINE = 2;
+     LC_MARKER = 4;
+     LC_POLYMARKER = 8;
+     LC_WIDE = 16;
+     LC_STYLED = 32;
+     LC_WIDESTYLED = 64;
+     LC_INTERIORS = 128;
+     POLYGONALCAPS = 32;
+     PC_NONE = 0;
+     PC_POLYGON = 1;
+     PC_RECTANGLE = 2;
+     PC_WINDPOLYGON = 4;
+     PC_SCANLINE = 8;
+     PC_WIDE = 16;
+     PC_STYLED = 32;
+     PC_WIDESTYLED = 64;
+     PC_INTERIORS = 128;
+     TEXTCAPS = 34;
+     TC_OP_CHARACTER = 1;
+     TC_OP_STROKE = 2;
+     TC_CP_STROKE = 4;
+     TC_CR_90 = 8;
+     TC_CR_ANY = 16;
+     TC_SF_X_YINDEP = 32;
+     TC_SA_DOUBLE = 64;
+     TC_SA_INTEGER = 128;
+     TC_SA_CONTIN = 256;
+     TC_EA_DOUBLE = 512;
+     TC_IA_ABLE = 1024;
+     TC_UA_ABLE = 2048;
+     TC_SO_ABLE = 4096;
+     TC_RA_ABLE = 8192;
+     TC_VA_ABLE = 16384;
+     TC_RESERVED = 32768;
+     TC_SCROLLBLT = 65536;
+     PC_PATHS = 512;
+  { GetDriveType  }
+     DRIVE_REMOVABLE = 2;
+     DRIVE_FIXED = 3;
+     DRIVE_REMOTE = 4;
+     DRIVE_CDROM = 5;
+     DRIVE_RAMDISK = 6;
+     DRIVE_UNKNOWN = 0;
+     DRIVE_NO_ROOT_DIR = 1;
+  { GetExceptionCode  }
+     EXCEPTION_ACCESS_VIOLATION = $c0000005;
+     EXCEPTION_BREAKPOINT = $80000003;
+     EXCEPTION_DATATYPE_MISALIGNMENT = $80000002;
+     EXCEPTION_SINGLE_STEP = $80000004;
+     EXCEPTION_ARRAY_BOUNDS_EXCEEDED = $c000008c;
+     EXCEPTION_FLT_DENORMAL_OPERAND = $c000008d;
+     EXCEPTION_FLT_DIVIDE_BY_ZERO = $c000008e;
+     EXCEPTION_FLT_INEXACT_RESULT = $c000008f;
+     EXCEPTION_FLT_INVALID_OPERATION = $c0000090;
+     EXCEPTION_FLT_OVERFLOW = $c0000091;
+     EXCEPTION_FLT_STACK_CHECK = $c0000092;
+     EXCEPTION_FLT_UNDERFLOW = $c0000093;
+     EXCEPTION_INT_DIVIDE_BY_ZERO = $c0000094;
+     EXCEPTION_INT_OVERFLOW = $c0000095;
+     EXCEPTION_INVALID_HANDLE = $c0000008;
+     EXCEPTION_PRIV_INSTRUCTION = $c0000096;
+     EXCEPTION_NONCONTINUABLE_EXCEPTION = $c0000025;
+     EXCEPTION_NONCONTINUABLE = $1;                  //winnt
+     EXCEPTION_UNWINDING = $2;                       //+winnt
+     EXCEPTION_EXIT_UNWIND = $4;                     //+winnt
+     EXCEPTION_STACK_INVALID = $8;                   //+winnt
+     EXCEPTION_NESTED_CALL = $10;                    //+winnt
+     EXCEPTION_TARGET_UNWIND = $20;                  //+winnt
+     EXCEPTION_COLLIDED_UNWIND = $40;                //+winnt
+     EXCEPTION_UNWIND = EXCEPTION_UNWINDING or EXCEPTION_EXIT_UNWIND or
+                        EXCEPTION_TARGET_UNWIND or EXCEPTION_COLLIDED_UNWIND; //+winnt
+     EXCEPTION_STACK_OVERFLOW = $c00000fd;
+     EXCEPTION_INVALID_DISPOSITION = $c0000026;
+     EXCEPTION_IN_PAGE_ERROR = $c0000006;
+     EXCEPTION_ILLEGAL_INSTRUCTION = $c000001d;
+     EXCEPTION_POSSIBLE_DEADLOCK = $c0000194;
+
+     function IS_UNWINDING( Flag : Longint) : boolean;     //+winnt
+     function IS_DISPATCHING( Flag : Longint) : boolean;   //+winnt
+     function IS_TARGET_UNWIND( Flag : Longint) : Longint; //+winnt
+
+  { GetFileType  }
+  const
+     FILE_TYPE_UNKNOWN = 0;
+     FILE_TYPE_DISK = 1;
+     FILE_TYPE_CHAR = 2;
+     FILE_TYPE_PIPE = 3;
+     GDI_ERROR = $ffffffff;
+  { GetGraphicsMode  }
+     GM_COMPATIBLE = 1;
+     GM_ADVANCED = 2;
+  { GetIconInfo  }
+     IDC_ARROW = MAKEINTRESOURCE(32512);
+     IDC_IBEAM = MAKEINTRESOURCE(32513);
+     IDC_WAIT = MAKEINTRESOURCE(32514);
+     IDC_CROSS = MAKEINTRESOURCE(32515);
+     IDC_UPARROW = MAKEINTRESOURCE(32516);
+     IDC_SIZENWSE = MAKEINTRESOURCE(32642);
+     IDC_SIZENESW = MAKEINTRESOURCE(32643);
+     IDC_SIZEWE = MAKEINTRESOURCE(32644);
+     IDC_SIZENS = MAKEINTRESOURCE(32645);
+     IDC_SIZEALL = MAKEINTRESOURCE(32646);
+     IDC_NO = MAKEINTRESOURCE(32648);
+     IDC_APPSTARTING = MAKEINTRESOURCE(32650);
+     IDC_HELP = MAKEINTRESOURCE(32651);
+     IDI_APPLICATION = MAKEINTRESOURCE(32512);
+     IDI_HAND = MAKEINTRESOURCE(32513);
+     IDI_QUESTION = MAKEINTRESOURCE(32514);
+     IDI_EXCLAMATION = MAKEINTRESOURCE(32515);
+     IDI_ASTERISK = MAKEINTRESOURCE(32516);
+     IDI_WINLOGO = MAKEINTRESOURCE(32517);
+     IDC_SIZE = MAKEINTRESOURCE(32640);
+     IDC_ICON = MAKEINTRESOURCE(32641);
+     IDC_HAND = MAKEINTRESOURCE(32649);
+
+  { GetMapMode  }
+
+  const
+     MM_ANISOTROPIC = 8;
+     MM_HIENGLISH = 5;
+     MM_HIMETRIC = 3;
+     MM_ISOTROPIC = 7;
+     MM_LOENGLISH = 4;
+     MM_LOMETRIC = 2;
+     MM_TEXT = 1;
+     MM_TWIPS = 6;
+  { GetMenuDefaultItem  }
+     GMDI_GOINTOPOPUPS = $2;
+     GMDI_USEDISABLED = $1;
+  { PeekMessage  }
+     PM_NOREMOVE = 0;
+     PM_REMOVE = 1;
+     PM_NOYIELD = 2;
+  { GetNextWindow, GetWindow  }
+     GW_HWNDNEXT = 2;
+     GW_HWNDPREV = 3;
+     GW_CHILD = 5;
+     GW_HWNDFIRST = 0;
+     GW_HWNDLAST = 1;
+     GW_OWNER = 4;
+     GW_MAX = 5; //+winuser
+
+  { GetQueueStatus  }
+     QS_ALLEVENTS = 191;
+     QS_ALLINPUT = 255;
+     QS_HOTKEY = 128;
+     QS_INPUT = 7;
+     QS_KEY = 1;
+     QS_MOUSE = 6;
+     QS_MOUSEBUTTON = 4;
+     QS_MOUSEMOVE = 2;
+     QS_PAINT = 32;
+     QS_POSTMESSAGE = 8;
+     QS_SENDMESSAGE = 64;
+     QS_TIMER = 16;
+  { GetScrollInfo, SetScrollInfo  }
+     SIF_ALL = 23;
+     SIF_PAGE = 2;
+     SIF_POS = 4;
+     SIF_RANGE = 1;
+     SIF_DISABLENOSCROLL = 8;
+     SIF_TRACKPOS = $10;
+  { GetStdHandle  }
+
+
+  { was #define dname def_expr }
+     STD_INPUT_HANDLE = DWORD(-(10));
+     STD_OUTPUT_HANDLE = DWORD(-(11));
+     STD_ERROR_HANDLE = DWORD(-(12));
+
+    { was #define dname def_expr }
+     INVALID_HANDLE_VALUE = HANDLE(-1);
+
+  { GetStockObject  }
+
+     BLACK_BRUSH = 4;
+     DKGRAY_BRUSH = 3;
+     GRAY_BRUSH = 2;
+     HOLLOW_BRUSH = 5;
+     LTGRAY_BRUSH = 1;
+     NULL_BRUSH = 5;
+     WHITE_BRUSH = 0;
+     BLACK_PEN = 7;
+     NULL_PEN = 8;
+     WHITE_PEN = 6;
+     ANSI_FIXED_FONT = 11;
+     ANSI_VAR_FONT = 12;
+     DEVICE_DEFAULT_FONT = 14;
+     DEFAULT_GUI_FONT = 17;
+     OEM_FIXED_FONT = 10;
+     SYSTEM_FONT = 13;
+     SYSTEM_FIXED_FONT = 16;
+     DEFAULT_PALETTE = 15;
+  { GetStringTypeA  }
+     CT_CTYPE1 = 1;
+     CT_CTYPE2 = 2;
+     CT_CTYPE3 = 4;
+     C1_UPPER = 1;
+     C1_LOWER = 2;
+     C1_DIGIT = 4;
+     C1_SPACE = 8;
+     C1_PUNCT = 16;
+     C1_CNTRL = 32;
+     C1_BLANK = 64;
+     C1_XDIGIT = 128;
+     C1_ALPHA = 256;
+     C2_LEFTTORIGHT = 1;
+     C2_RIGHTTOLEFT = 2;
+     C2_EUROPENUMBER = 3;
+     C2_EUROPESEPARATOR = 4;
+     C2_EUROPETERMINATOR = 5;
+     C2_ARABICNUMBER = 6;
+     C2_COMMONSEPARATOR = 7;
+     C2_BLOCKSEPARATOR = 8;
+     C2_SEGMENTSEPARATOR = 9;
+     C2_WHITESPACE = 10;
+     C2_OTHERNEUTRAL = 11;
+     C2_NOTAPPLICABLE = 0;
+     C3_NONSPACING = 1;
+     C3_DIACRITIC = 2;
+     C3_VOWELMARK = 4;
+     C3_SYMBOL = 8;
+     C3_KATAKANA = 16;
+     C3_HIRAGANA = 32;
+     C3_HALFWIDTH = 64;
+     C3_FULLWIDTH = 128;
+     C3_IDEOGRAPH = 256;
+     C3_KASHIDA = 512;
+     C3_ALPHA = 32768;
+     C3_NOTAPPLICABLE = 0;
+  { GetSysColor }
+{$IFDEF WINCE}
+     SYS_COLOR_INDEX_FLAG =$40000000;
+{$ELSE}
+     SYS_COLOR_INDEX_FLAG =0;
+{$ENDIF WINCE}
+     COLOR_SCROLLBAR               = 0 or SYS_COLOR_INDEX_FLAG;
+     COLOR_BACKGROUND              = 1 or SYS_COLOR_INDEX_FLAG;
+     COLOR_ACTIVECAPTION           = 2 or SYS_COLOR_INDEX_FLAG;
+     COLOR_INACTIVECAPTION         = 3 or SYS_COLOR_INDEX_FLAG;
+     COLOR_MENU                    = 4 or SYS_COLOR_INDEX_FLAG;
+     COLOR_WINDOW                  = 5 or SYS_COLOR_INDEX_FLAG;
+     COLOR_WINDOWFRAME             = 6 or SYS_COLOR_INDEX_FLAG;
+     COLOR_MENUTEXT                = 7 or SYS_COLOR_INDEX_FLAG;
+     COLOR_WINDOWTEXT              = 8 or SYS_COLOR_INDEX_FLAG;
+     COLOR_CAPTIONTEXT             = 9 or SYS_COLOR_INDEX_FLAG;
+     COLOR_ACTIVEBORDER            =10 or SYS_COLOR_INDEX_FLAG;
+     COLOR_INACTIVEBORDER          =11 or SYS_COLOR_INDEX_FLAG;
+     COLOR_APPWORKSPACE            =12 or SYS_COLOR_INDEX_FLAG;
+     COLOR_HIGHLIGHT               =13 or SYS_COLOR_INDEX_FLAG;
+     COLOR_HIGHLIGHTTEXT           =14 or SYS_COLOR_INDEX_FLAG;
+     COLOR_BTNFACE                 =15 or SYS_COLOR_INDEX_FLAG;
+     COLOR_BTNSHADOW               =16 or SYS_COLOR_INDEX_FLAG;
+     COLOR_GRAYTEXT                =17 or SYS_COLOR_INDEX_FLAG;
+     COLOR_BTNTEXT                 =18 or SYS_COLOR_INDEX_FLAG;
+     COLOR_INACTIVECAPTIONTEXT     =19 or SYS_COLOR_INDEX_FLAG;
+     COLOR_BTNHIGHLIGHT            =20 or SYS_COLOR_INDEX_FLAG;
+
+     COLOR_3DDKSHADOW              =21 or SYS_COLOR_INDEX_FLAG;
+     COLOR_3DLIGHT                 =22 or SYS_COLOR_INDEX_FLAG;
+     COLOR_INFOTEXT                =23 or SYS_COLOR_INDEX_FLAG;
+     COLOR_INFOBK                  =24 or SYS_COLOR_INDEX_FLAG;
+     COLOR_STATIC                  =25 or SYS_COLOR_INDEX_FLAG;
+     COLOR_STATICTEXT              =26 or SYS_COLOR_INDEX_FLAG;
+     COLOR_GRADIENTACTIVECAPTION   =27 or SYS_COLOR_INDEX_FLAG;
+     COLOR_GRADIENTINACTIVECAPTION =28 or SYS_COLOR_INDEX_FLAG;
+     C_SYS_COLOR_TYPES		   =29;
+
+     COLOR_DESKTOP           =COLOR_BACKGROUND;
+     COLOR_3DFACE            =COLOR_BTNFACE;
+     COLOR_3DSHADOW          =COLOR_BTNSHADOW;
+     COLOR_3DHIGHLIGHT       =COLOR_BTNHIGHLIGHT;
+     COLOR_3DHILIGHT         =COLOR_BTNHIGHLIGHT;
+
+  { GetSystemMetrics  }
+     SM_CYMIN = 29;
+     SM_CXMIN = 28;
+     SM_ARRANGE = 56;
+     SM_CLEANBOOT = 67;
+  { The right value for SM_CEMETRICS for NT 3.5 is 75.  For Windows 95
+     and NT 4.0, it is 76.  The meaning is undocumented, anyhow.   }
+     SM_CMETRICS = 76;
+     SM_CMOUSEBUTTONS = 43;
+     SM_CXBORDER = 5;
+     SM_CYBORDER = 6;
+     SM_CXCURSOR = 13;
+     SM_CYCURSOR = 14;
+     SM_CXDLGFRAME = 7;
+     SM_CYDLGFRAME = 8;
+     SM_CXDOUBLECLK = 36;
+     SM_CYDOUBLECLK = 37;
+     SM_CXDRAG = 68;
+     SM_CYDRAG = 69;
+     SM_CXEDGE = 45;
+     SM_CYEDGE = 46;
+     SM_CXFIXEDFRAME = 7;
+     SM_CYFIXEDFRAME = 8;
+     SM_CXFRAME = 32;
+     SM_CYFRAME = 33;
+     SM_CXFULLSCREEN = 16;
+     SM_CYFULLSCREEN = 17;
+     SM_CXHSCROLL = 21;
+     SM_CYHSCROLL = 3;
+     SM_CXHTHUMB = 10;
+     SM_CXICON = 11;
+     SM_CYICON = 12;
+     SM_CXICONSPACING = 38;
+     SM_CYICONSPACING = 39;
+     SM_CXMAXIMIZED = 61;
+     SM_CYMAXIMIZED = 62;
+     SM_CXMAXTRACK = 59;
+     SM_CYMAXTRACK = 60;
+     SM_CXMENUCHECK = 71;
+     SM_CYMENUCHECK = 72;
+     SM_CXMENUSIZE = 54;
+     SM_CYMENUSIZE = 55;
+     SM_CXMINIMIZED = 57;
+     SM_CYMINIMIZED = 58;
+     SM_CXMINSPACING = 47;
+     SM_CYMINSPACING = 48;
+     SM_CXMINTRACK = 34;
+     SM_CYMINTRACK = 35;
+     SM_CXSCREEN = 0;
+     SM_CYSCREEN = 1;
+     SM_CXSIZE = 30;
+     SM_CYSIZE = 31;
+     SM_CXSIZEFRAME = 32;
+     SM_CYSIZEFRAME = 33;
+     SM_CXSMICON = 49;
+     SM_CYSMICON = 50;
+     SM_CXSMSIZE = 52;
+     SM_CYSMSIZE = 53;
+     SM_CXVSCROLL = 2;
+     {SM_CYHSCROLL = 3;already above }
+     {SM_CXHSCROLL = 21;already above }
+     SM_CYVSCROLL = 20;
+     SM_CYVTHUMB = 9;
+     SM_CYCAPTION = 4;
+     SM_CYKANJIWINDOW = 18;
+     SM_CYMENU = 15;
+     SM_CYSMCAPTION = 51;
+     SM_DBCSENABLED = 42;
+     SM_DEBUG = 22;
+     SM_MENUDROPALIGNMENT = 40;
+     SM_MIDEASTENABLED = 74;
+     SM_MOUSEPRESENT = 19;
+     SM_MOUSEWHEELPRESENT = 75;
+     SM_NETWORK = 63;
+     SM_PENWINDOWS = 41;
+     SM_SECURE = 44;
+     SM_SHOWSOUNDS = 70;
+     SM_SLOWMACHINE = 73;
+     SM_SWAPBUTTON = 23;
+     ARW_BOTTOMLEFT = 0;
+     ARW_BOTTOMRIGHT = $1;
+     ARW_HIDE = $8;
+     ARW_TOPLEFT = $2;
+     ARW_TOPRIGHT = $3;
+     ARW_DOWN = $4;
+     ARW_LEFT = 0;
+     ARW_RIGHT = 0;
+     ARW_UP = $4;
+  { GetSystemPaletteUse  }
+     SYSPAL_NOSTATIC = 2;
+     SYSPAL_STATIC = 1;
+     SYSPAL_ERROR = 0;
+  { GetTextAlign  }
+     TA_BASELINE = 24;
+     TA_BOTTOM = 8;
+     TA_TOP = 0;
+     TA_CENTER = 6;
+     TA_LEFT = 0;
+     TA_RIGHT = 2;
+     TA_RTLREADING = 256;
+     TA_NOUPDATECP = 0;
+     TA_UPDATECP = 1;
+     VTA_BASELINE = 24;
+     VTA_CENTER = 6;
+  { GetThreadPriority  }
+     THREAD_PRIORITY_ABOVE_NORMAL = 1;
+     THREAD_PRIORITY_BELOW_NORMAL = -(1);
+     THREAD_PRIORITY_HIGHEST = 2;
+     THREAD_PRIORITY_IDLE = -(15);
+     THREAD_PRIORITY_LOWEST = -(2);
+     THREAD_PRIORITY_NORMAL = 0;
+     THREAD_PRIORITY_TIME_CRITICAL = 15;
+     THREAD_PRIORITY_ERROR_RETURN = 2147483647;
+     TLS_MINIMUM_AVAILABLE = 64;
+  { GetTimeFormat  }
+     TIME_NOMINUTESORSECONDS = 1;
+     TIME_NOSECONDS = 2;
+     TIME_NOTIMEMARKER = 4;
+     TIME_FORCE24HOURFORMAT = 8;
+  { GetTimeZoneInformation  }
+    { was #define dname def_expr }
+
+
+  const
+     TIME_ZONE_ID_INVALID = DWORD(-1);
+     TIME_ZONE_ID_UNKNOWN = 0;
+     TIME_ZONE_ID_STANDARD = 1;
+     TIME_ZONE_ID_DAYLIGHT = 2;
+  { GetWindowLong  }
+     GWL_EXSTYLE = -(20);
+     GWL_STYLE = -(16);
+     GWL_WNDPROC = -(4);
+     GWL_HINSTANCE = -(6);
+     GWL_HWNDPARENT = -(8);
+     GWL_ID = -(12);
+     GWL_USERDATA = -(21);
+     DWL_DLGPROC = 4;
+     DWL_MSGRESULT = 0;
+     DWL_USER = 8;
+  { GlobalAlloc, GlobalFlags  }
+     GMEM_FIXED = 0;
+     GMEM_MOVEABLE = 2;
+     GPTR = 64;
+     GHND = 66;
+     GMEM_DDESHARE = 8192;
+     GMEM_DISCARDABLE = 256;
+     GMEM_LOWER = 4096;
+     GMEM_NOCOMPACT = 16;
+     GMEM_NODISCARD = 32;
+     GMEM_NOT_BANKED = 4096;
+     GMEM_NOTIFY = 16384;
+     GMEM_SHARE = 8192;
+     GMEM_ZEROINIT = 64;
+     GMEM_DISCARDED = 16384;
+     GMEM_INVALID_HANDLE = 32768;
+     GMEM_LOCKCOUNT = 255;
+  { HeapAlloc, HeapReAlloc  }
+     HEAP_GENERATE_EXCEPTIONS = 4;
+     HEAP_NO_SERIALIZE = 1;
+     HEAP_ZERO_MEMORY = 8;
+     STATUS_NO_MEMORY = $c0000017;
+     STATUS_ACCESS_VIOLATION = $c0000005;
+     HEAP_REALLOC_IN_PLACE_ONLY = 16;
+  { ImageList_Create  }
+     ILC_COLOR = 0;
+     ILC_COLOR4 = 4;
+     ILC_COLOR8 = 8;
+     ILC_COLOR16 = 16;
+     ILC_COLOR24 = 24;
+     ILC_COLOR32 = 32;
+     ILC_COLORDDB = 254;
+     ILC_MASK = 1;
+     ILC_PALETTE = 2048;
+  { ImageList_Draw, ImageList_DrawEx  }
+     ILD_BLEND25 = 2;
+     ILD_BLEND50 = 4;
+     ILD_SELECTED = 4;
+     ILD_BLEND = 4;
+     ILD_FOCUS = 2;
+     ILD_MASK = 16;
+     ILD_NORMAL = 0;
+     ILD_TRANSPARENT = 1;
+     CLR_NONE = $ffffffff;
+     CLR_DEFAULT = $ff000000;
+     CLR_INVALID = $FFFFFFFF;
+  { ImageList_LoadImage  }
+     {LR_DEFAULTCOLOR = 0;already above }
+     LR_LOADFROMFILE = 16;
+     LR_LOADMAP3DCOLORS = 4096;
+     LR_LOADTRANSPARENT = 32;
+     {LR_MONOCHROME = 1;already above }
+  { ImmConfigureIME  }
+     IME_CONFIG_GENERAL = 1;
+     IME_CONFIG_REGISTERWORD = 2;
+     IME_CONFIG_SELECTDICTIONARY = 3;
+  { ImmGetConversionList  }
+     GCL_CONVERSION = 1;
+     GCL_REVERSECONVERSION = 2;
+     GCL_REVERSE_LENGTH = 3;
+  { ImmGetGuideLine  }
+     GGL_LEVEL = 1;
+     GGL_INDEX = 2;
+     GGL_STRING = 3;
+     GGL_PRIVATE = 4;
+     GL_LEVEL_ERROR = 2;
+     GL_LEVEL_FATAL = 1;
+     GL_LEVEL_INFORMATION = 4;
+     GL_LEVEL_NOGUIDELINE = 0;
+     GL_LEVEL_WARNING = 3;
+     GL_ID_CANNOTSAVE = 17;
+     GL_ID_NOCONVERT = 32;
+     GL_ID_NODICTIONARY = 16;
+     GL_ID_NOMODULE = 1;
+     GL_ID_READINGCONFLICT = 35;
+     GL_ID_TOOMANYSTROKE = 34;
+     GL_ID_TYPINGERROR = 33;
+     GL_ID_UNKNOWN = 0;
+     GL_ID_INPUTREADING = 36;
+     GL_ID_INPUTRADICAL = 37;
+     GL_ID_INPUTCODE = 38;
+     GL_ID_CHOOSECANDIDATE = 40;
+     GL_ID_REVERSECONVERSION = 41;
+  { ImmGetProperty  }
+     IGP_PROPERTY = 4;
+     IGP_CONVERSION = 8;
+     IGP_SENTENCE = 12;
+     IGP_UI = 16;
+     IGP_SETCOMPSTR = 20;
+     IGP_SELECT = 24;
+     IME_PROP_AT_CARET = 65536;
+     IME_PROP_SPECIAL_UI = 131072;
+     IME_PROP_CANDLIST_START_FROM_1 = 262144;
+     IME_PROP_UNICODE = 524288;
+     UI_CAP_2700 = 1;
+     UI_CAP_ROT90 = 2;
+     UI_CAP_ROTANY = 4;
+     SCS_CAP_COMPSTR = 1;
+     SCS_CAP_MAKEREAD = 2;
+     SELECT_CAP_CONVERSION = 1;
+     SELECT_CAP_SENTENCE = 2;
+  { ImmNotifyIME  }
+     NI_CHANGECANDIDATELIST = 19;
+     NI_CLOSECANDIDATE = 17;
+     NI_COMPOSITIONSTR = 21;
+     NI_OPENCANDIDATE = 16;
+     NI_SELECTCANDIDATESTR = 18;
+     NI_SETCANDIDATE_PAGESIZE = 23;
+     NI_SETCANDIDATE_PAGESTART = 22;
+     CPS_CANCEL = 4;
+     CPS_COMPLETE = 1;
+     CPS_CONVERT = 2;
+     CPS_REVERT = 3;
+  { ImmSetCompositionString  }
+     SCS_SETSTR = 9;
+     SCS_CHANGEATTR = 18;
+     SCS_CHANGECLAUSE = 36;
+  { ImmUnregisterWord  }
+     IME_REGWORD_STYLE_EUDC = 1;
+     IME_REGWORD_STYLE_USER_FIRST = $80000000;
+     IME_REGWORD_STYLE_USER_LAST = -(1);
+  { InitCommonControlEx }  //+commctrl
+     I_IMAGENONE             = -2; // Desktop listview uses this same value for I_IMAGENONE when (_WIN32_IE >= 0x0501)
+
+     ICC_LISTVIEW_CLASSES  = $00000001; // listview, header
+     ICC_TREEVIEW_CLASSES  = $00000002; // treeview, tooltips
+     ICC_BAR_CLASSES       = $00000004; // toolbar, statusbar, trackbar, tooltips
+     ICC_TAB_CLASSES       = $00000008; // tab, tooltips
+     ICC_UPDOWN_CLASS      = $00000010; // updown
+     ICC_PROGRESS_CLASS    = $00000020; // progress
+     ICC_WIN95_CLASSES     = $0000007F; // ! was ICC_WIN95_CLASSES     = $000000FF
+     ICC_DATE_CLASSES      = $00000100; // month picker, date picker, time picker, updown
+     ICC_COOL_CLASSES      = $00000400; // rebar (coolbar) control
+     ICC_INTERNET_CLASSES  = $00000800; // IP Address control
+     ICC_TOOLTIP_CLASSES   = $00001000; // Tooltip static & button
+     ICC_CAPEDIT_CLASS     = $00002000; // All-caps edit control
+     ICC_FE_CLASSES        = $40000000; // FE specific input subclasses
+
+  { InitializeSecurityDescriptor  }
+     SECURITY_DESCRIPTOR_REVISION = 1;
+  { IsTextUnicode  }
+     IS_TEXT_UNICODE_ASCII16 = 1;
+     IS_TEXT_UNICODE_REVERSE_ASCII16 = 16;
+     IS_TEXT_UNICODE_STATISTICS = 2;
+     IS_TEXT_UNICODE_REVERSE_STATISTICS = 32;
+     IS_TEXT_UNICODE_CONTROLS = 4;
+     IS_TEXT_UNICODE_REVERSE_CONTROLS = 64;
+     IS_TEXT_UNICODE_SIGNATURE = 8;
+     IS_TEXT_UNICODE_REVERSE_SIGNATURE = 128;
+     IS_TEXT_UNICODE_ILLEGAL_CHARS = 256;
+     IS_TEXT_UNICODE_ODD_LENGTH = 512;
+     IS_TEXT_UNICODE_NULL_BYTES = 4096;
+     IS_TEXT_UNICODE_UNICODE_MASK = 15;
+     IS_TEXT_UNICODE_REVERSE_MASK = 240;
+     IS_TEXT_UNICODE_NOT_UNICODE_MASK = 3840;
+     IS_TEXT_UNICODE_NOT_ASCII_MASK = 61440;
+  { JournalPlaybackProc, KeyboardProc  }
+     HC_GETNEXT = 1;
+     HC_SKIP = 2;
+     HC_SYSMODALOFF = 5;
+     HC_SYSMODALON = 4;
+     HC_NOREMOVE = 3;
+  { keybd_event  }
+     KEYEVENTF_EXTENDEDKEY = 1;
+     KEYEVENTF_KEYUP = 2;
+  { LoadBitmap  }
+     OBM_BTNCORNERS = 32758;
+     OBM_BTSIZE = 32761;
+     OBM_CHECK = 32760;
+     OBM_CHECKBOXES = 32759;
+     OBM_CLOSE = 32754;
+     OBM_COMBO = 32738;
+     OBM_DNARROW = 32752;
+     OBM_DNARROWD = 32742;
+     OBM_DNARROWI = 32736;
+     OBM_LFARROW = 32750;
+     OBM_LFARROWI = 32734;
+     OBM_LFARROWD = 32740;
+     OBM_MNARROW = 32739;
+     OBM_OLD_CLOSE = 32767;
+     OBM_OLD_DNARROW = 32764;
+     OBM_OLD_LFARROW = 32762;
+     OBM_OLD_REDUCE = 32757;
+     OBM_OLD_RESTORE = 32755;
+     OBM_OLD_RGARROW = 32763;
+     OBM_OLD_UPARROW = 32765;
+     OBM_OLD_ZOOM = 32756;
+     OBM_REDUCE = 32749;
+     OBM_REDUCED = 32746;
+     OBM_RESTORE = 32747;
+     OBM_RESTORED = 32744;
+     OBM_RGARROW = 32751;
+     OBM_RGARROWD = 32741;
+     OBM_RGARROWI = 32735;
+     OBM_SIZE = 32766;
+     OBM_UPARROW = 32753;
+     OBM_UPARROWD = 32743;
+     OBM_UPARROWI = 32737;
+     OBM_ZOOM = 32748;
+     OBM_ZOOMD = 32745;
+  { LoadLibraryEx  }
+     DONT_RESOLVE_DLL_REFERENCES = 1;
+     LOAD_LIBRARY_AS_DATAFILE = 2;
+     LOAD_WITH_ALTERED_SEARCH_PATH = 8;
+  { LocalAlloc, LocalFlags  }
+     LPTR = 64;
+     LHND = 66;
+     NONZEROLHND = 2;
+     NONZEROLPTR = 0;
+     LMEM_NONZEROLHND = 2;
+     LMEM_NONZEROLPTR = 0;
+     LMEM_FIXED = 0;
+     LMEM_MOVEABLE = 2;
+     LMEM_NOCOMPACT = 16;
+     LMEM_NODISCARD = 32;
+     LMEM_ZEROINIT = 64;
+     LMEM_MODIFY = 128;
+     LMEM_LOCKCOUNT = 255;
+     LMEM_DISCARDABLE = 3840;
+     LMEM_DISCARDED = 16384;
+     LMEM_INVALID_HANDLE = 32768;
+     LMEM_VALID_FLAGS=$0F72;       //+winbase
+  { MessageBeep, MessageBox  }
+     MB_USERICON = $80;
+     MB_ICONASTERISK = $40;
+     MB_ICONEXCLAMATION = $30;
+     MB_ICONWARNING = $30;
+     MB_ICONERROR = $10;
+     MB_ICONHAND = $10;
+     MB_ICONQUESTION = $20;
+     MB_OK = 0;
+     MB_ABORTRETRYIGNORE = $2;
+     MB_APPLMODAL = 0;
+     MB_DEFAULT_DESKTOP_ONLY = $20000;
+     MB_HELP = $4000;
+     MB_RIGHT = $80000;
+     MB_RTLREADING = $100000;
+     MB_TOPMOST = $40000;
+     MB_DEFBUTTON1 = 0;
+     MB_DEFBUTTON2 = $100;
+     MB_DEFBUTTON3 = $200;
+     MB_DEFBUTTON4 = $300;
+     MB_ICONINFORMATION = $40;
+     MB_ICONSTOP = $10;
+     MB_OKCANCEL = $1;
+     MB_RETRYCANCEL = $5;
+     MB_SERVICE_NOTIFICATION = $40000;
+     MB_SETFOREGROUND = $10000;
+     MB_SYSTEMMODAL = $1000;
+     MB_TASKMODAL = $2000;
+     MB_YESNO = $4;
+     MB_YESNOCANCEL = $3;
+     IDABORT = 3;
+     IDCANCEL = 2;
+     IDCLOSE = 8;
+     IDHELP = 9;
+     IDIGNORE = 5;
+     IDNO = 7;
+     IDOK = 1;
+     IDRETRY = 4;
+     IDYES = 6;
+  { MessageProc  }
+     MSGF_DIALOGBOX = 0;
+     MSGF_MENU = 2;
+     MSGF_NEXTWINDOW = 6;
+     MSGF_SCROLLBAR = 5;
+     MSGF_MAINLOOP = 8;
+     MSGF_USER = 4096;
+  { ModifyWorldTransform  }
+     MWT_IDENTITY = 1;
+     MWT_LEFTMULTIPLY = 2;
+     MWT_RIGHTMULTIPLY = 3;
+  { mouse_event  }
+     MOUSEEVENTF_ABSOLUTE = 32768;
+     MOUSEEVENTF_MOVE = 1;
+     MOUSEEVENTF_LEFTDOWN = 2;
+     MOUSEEVENTF_LEFTUP = 4;
+     MOUSEEVENTF_RIGHTDOWN = 8;
+     MOUSEEVENTF_RIGHTUP = 16;
+     MOUSEEVENTF_MIDDLEDOWN = 32;
+     MOUSEEVENTF_MIDDLEUP = 64;
+  { MoveFileEx  }
+     MOVEFILE_REPLACE_EXISTING = 1;
+     MOVEFILE_COPY_ALLOWED = 2;
+     MOVEFILE_DELAY_UNTIL_REBOOT = 4;
+  { MsgWaitForMultipleObjects, WaitForMultipleObjectsEx  }
+     WAIT_OBJECT_0 = 0;
+     WAIT_ABANDONED_0 = $80;
+     WAIT_TIMEOUT = $102;
+     WAIT_IO_COMPLETION = $c0;
+     WAIT_ABANDONED = $80;
+     WAIT_FAILED = $ffffffff;
+     MAXIMUM_WAIT_OBJECTS = $40;     //winnt
+     MAXIMUM_SUSPEND_COUNT = MAXCHAR;    //~winnt
+  { MultiByteToWideChar  }
+     MB_PRECOMPOSED = 1;
+     MB_COMPOSITE = 2;
+     MB_ERR_INVALID_CHARS = 8;
+     MB_USEGLYPHCHARS = 4;
+  { PostMessage  }
+    { was #define dname def_expr }
+    HWND_BROADCAST              = HWND($FFFF);
+
+  const
+  { PropertySheet  }
+     IS_PSREBOOTSYSTEM = 3;
+     IS_PSRESTARTWINDOWS = 2;
+  { PropSheetPageProc  }
+     PSPCB_CREATE = 2;
+     PSPCB_RELEASE = 1;
+  { PurgeComm  }
+     PURGE_TXABORT = 1;
+     PURGE_RXABORT = 2;
+     PURGE_TXCLEAR = 4;
+     PURGE_RXCLEAR = 8;
+  { QueryServiceObjectSecurity  }
+     OWNER_SECURITY_INFORMATION = $1;
+     GROUP_SECURITY_INFORMATION = $2;
+     DACL_SECURITY_INFORMATION = $4;
+     SACL_SECURITY_INFORMATION = $8;
+  { RedrawWindow  }
+     RDW_ERASE = 4;
+     RDW_FRAME = 1024;
+     RDW_INTERNALPAINT = 2;
+     RDW_INVALIDATE = 1;
+     RDW_NOERASE = 32;
+     RDW_NOFRAME = 2048;
+     RDW_NOINTERNALPAINT = 16;
+     RDW_VALIDATE = 8;
+     RDW_ERASENOW = 512;
+     RDW_UPDATENOW = 256;
+     RDW_ALLCHILDREN = 128;
+     RDW_NOCHILDREN = 64;
+  { RegCreateKey  }
+     HKEY_CLASSES_ROOT           = HKEY($80000000);
+     HKEY_CURRENT_USER           = HKEY($80000001);
+     HKEY_LOCAL_MACHINE          = HKEY($80000002);
+     HKEY_USERS                  = HKEY($80000003);
+     HKEY_PERFORMANCE_DATA       = HKEY($80000004);
+     HKEY_CURRENT_CONFIG         = HKEY($80000005);
+     HKEY_DYN_DATA               = HKEY($80000006);
+
+  { RegCreateKeyEx  }
+
+  const
+     REG_OPTION_VOLATILE = $1;
+     REG_OPTION_NON_VOLATILE = 0;
+     REG_CREATED_NEW_KEY = $1;
+     REG_OPENED_EXISTING_KEY = $2;
+  { RegEnumValue  }
+     REG_BINARY = 3;
+     REG_DWORD = 4;
+     REG_DWORD_LITTLE_ENDIAN = 4;
+     REG_DWORD_BIG_ENDIAN = 5;
+     REG_EXPAND_SZ = 2;
+     REG_FULL_RESOURCE_DESCRIPTOR = 9;
+     REG_LINK = 6;
+     REG_MULTI_SZ = 7;
+     REG_NONE = 0;
+     REG_RESOURCE_LIST = 8;
+     REG_RESOURCE_REQUIREMENTS_LIST = 10;
+     REG_SZ = 1;
+  { RegisterHotKey  }
+     MOD_ALT = 1;
+     MOD_CONTROL = 2;
+     MOD_SHIFT = 4;
+     MOD_WIN = 8;
+     IDHOT_SNAPDESKTOP = -(2);
+     IDHOT_SNAPWINDOW = -(1);
+  { RegNotifyChangeKeyValue  }
+     REG_NOTIFY_CHANGE_NAME = $1;
+     REG_NOTIFY_CHANGE_ATTRIBUTES = $2;
+     REG_NOTIFY_CHANGE_LAST_SET = $4;
+     REG_NOTIFY_CHANGE_SECURITY = $8;
+  { ScrollWindowEx  }
+     SW_ERASE = 4;
+     SW_INVALIDATE = 2;
+     SW_SCROLLCHILDREN = 1;
+  { SendMessageTimeout  }
+     SMTO_ABORTIFHUNG = 2;
+     SMTO_BLOCK = 1;
+     SMTO_NORMAL = 0;
+  { SetBkMode  }
+     OPAQUE = 2;
+     TRANSPARENT = 1;
+  { SetDebugErrorLevel  }
+     SLE_ERROR = 1;
+     SLE_MINORERROR = 2;
+     SLE_WARNING = 3;
+  { SetErrorMode  }
+     SEM_FAILCRITICALERRORS = 1;
+     SEM_NOALIGNMENTFAULTEXCEPT = 4;
+     SEM_NOGPFAULTERRORBOX = 2;
+     SEM_NOOPENFILEERRORBOX = 32768;
+  { SetICMMode  }
+     ICM_ON = 2;
+     ICM_OFF = 1;
+     ICM_QUERY = 3;
+  { SetJob  }
+  { Locale Information  }
+     LOCALE_ILANGUAGE = 1;
+     LOCALE_SLANGUAGE = 2;
+     LOCALE_SENGLANGUAGE = 4097;
+     LOCALE_SABBREVLANGNAME = 3;
+     LOCALE_SNATIVELANGNAME = 4;
+     LOCALE_ICOUNTRY = 5;
+     LOCALE_SCOUNTRY = 6;
+     LOCALE_SENGCOUNTRY = 4098;
+     LOCALE_SABBREVCTRYNAME = 7;
+     LOCALE_SNATIVECTRYNAME = 8;
+     LOCALE_IDEFAULTLANGUAGE = 9;
+     LOCALE_IDEFAULTCOUNTRY = 10;
+     LOCALE_IDEFAULTANSICODEPAGE = 4100;
+     LOCALE_IDEFAULTCODEPAGE = 11;
+     LOCALE_SLIST = 12;
+     LOCALE_IMEASURE = 13;
+     LOCALE_SDECIMAL = 14;
+     LOCALE_STHOUSAND = 15;
+     LOCALE_SGROUPING = 16;
+     LOCALE_IDIGITS = 17;
+     LOCALE_ILZERO = 18;
+     LOCALE_INEGNUMBER = 4112;
+     LOCALE_SCURRENCY = 20;
+     LOCALE_SMONDECIMALSEP = 22;
+     LOCALE_SMONTHOUSANDSEP = 23;
+     LOCALE_SMONGROUPING = 24;
+     LOCALE_ICURRDIGITS = 25;
+     LOCALE_ICURRENCY = 27;
+     LOCALE_INEGCURR = 28;
+     LOCALE_SDATE = 29;
+     LOCALE_STIME = 30;
+     LOCALE_STIMEFORMAT = 4099;
+     LOCALE_SSHORTDATE = 31;
+     LOCALE_SLONGDATE = 32;
+     LOCALE_IDATE = 33;
+     LOCALE_ILDATE = 34;
+     LOCALE_ITIME = 35;
+     LOCALE_ITLZERO = 37;
+     LOCALE_IDAYLZERO = 38;
+     LOCALE_IMONLZERO = 39;
+     LOCALE_S1159 = 40;
+     LOCALE_S2359 = 41;
+     LOCALE_ICALENDARTYPE = 4105;
+     LOCALE_IOPTIONALCALENDAR = 4107;
+     LOCALE_IFIRSTDAYOFWEEK = 4108;
+     LOCALE_IFIRSTWEEKOFYEAR = 4109;
+     LOCALE_SDAYNAME1 = 42;
+     LOCALE_SDAYNAME2 = 43;
+     LOCALE_SDAYNAME3 = 44;
+     LOCALE_SDAYNAME4 = 45;
+     LOCALE_SDAYNAME5 = 46;
+     LOCALE_SDAYNAME6 = 47;
+     LOCALE_SDAYNAME7 = 48;
+     LOCALE_SABBREVDAYNAME1 = 49;
+     LOCALE_SABBREVDAYNAME2 = 50;
+     LOCALE_SABBREVDAYNAME3 = 51;
+     LOCALE_SABBREVDAYNAME4 = 52;
+     LOCALE_SABBREVDAYNAME5 = 53;
+     LOCALE_SABBREVDAYNAME6 = 54;
+     LOCALE_SABBREVDAYNAME7 = 55;
+     LOCALE_SMONTHNAME1 = 56;
+     LOCALE_SMONTHNAME2 = 57;
+     LOCALE_SMONTHNAME3 = 58;
+     LOCALE_SMONTHNAME4 = 59;
+     LOCALE_SMONTHNAME5 = 60;
+     LOCALE_SMONTHNAME6 = 61;
+     LOCALE_SMONTHNAME7 = 62;
+     LOCALE_SMONTHNAME8 = 63;
+     LOCALE_SMONTHNAME9 = 64;
+     LOCALE_SMONTHNAME10 = 65;
+     LOCALE_SMONTHNAME11 = 66;
+     LOCALE_SMONTHNAME12 = 67;
+     LOCALE_SMONTHNAME13 = 4110;
+     LOCALE_SABBREVMONTHNAME1 = 68;
+     LOCALE_SABBREVMONTHNAME2 = 69;
+     LOCALE_SABBREVMONTHNAME3 = 70;
+     LOCALE_SABBREVMONTHNAME4 = 71;
+     LOCALE_SABBREVMONTHNAME5 = 72;
+     LOCALE_SABBREVMONTHNAME6 = 73;
+     LOCALE_SABBREVMONTHNAME7 = 74;
+     LOCALE_SABBREVMONTHNAME8 = 75;
+     LOCALE_SABBREVMONTHNAME9 = 76;
+     LOCALE_SABBREVMONTHNAME10 = 77;
+     LOCALE_SABBREVMONTHNAME11 = 78;
+     LOCALE_SABBREVMONTHNAME12 = 79;
+     LOCALE_SABBREVMONTHNAME13 = 4111;
+     LOCALE_SPOSITIVESIGN = 80;
+     LOCALE_SNEGATIVESIGN = 81;
+     LOCALE_IPOSSIGNPOSN = 82;
+     LOCALE_INEGSIGNPOSN = 83;
+     LOCALE_IPOSSYMPRECEDES = 84;
+     LOCALE_IPOSSEPBYSPACE = 85;
+     LOCALE_INEGSYMPRECEDES = 86;
+     LOCALE_INEGSEPBYSPACE = 87;
+     LOCALE_NOUSEROVERRIDE = $80000000;
+     LOCALE_USE_CP_ACP     = $40000000;   // use the system ACP
+     LOCALE_RETURN_NUMBER  = $20000000;   // return number instead
+  { Calendar Type Information  }
+     CAL_ICALINTVALUE = 1;
+     CAL_IYEAROFFSETRANGE = 3;
+     CAL_SABBREVDAYNAME1 = 14;
+     CAL_SABBREVDAYNAME2 = 15;
+     CAL_SABBREVDAYNAME3 = 16;
+     CAL_SABBREVDAYNAME4 = 17;
+     CAL_SABBREVDAYNAME5 = 18;
+     CAL_SABBREVDAYNAME6 = 19;
+     CAL_SABBREVDAYNAME7 = 20;
+     CAL_SABBREVMONTHNAME1 = 34;
+     CAL_SABBREVMONTHNAME2 = 35;
+     CAL_SABBREVMONTHNAME3 = 36;
+     CAL_SABBREVMONTHNAME4 = 37;
+     CAL_SABBREVMONTHNAME5 = 38;
+     CAL_SABBREVMONTHNAME6 = 39;
+     CAL_SABBREVMONTHNAME7 = 40;
+     CAL_SABBREVMONTHNAME8 = 41;
+     CAL_SABBREVMONTHNAME9 = 42;
+     CAL_SABBREVMONTHNAME10 = 43;
+     CAL_SABBREVMONTHNAME11 = 44;
+     CAL_SABBREVMONTHNAME12 = 45;
+     CAL_SABBREVMONTHNAME13 = 46;
+     CAL_SCALNAME = 2;
+     CAL_SDAYNAME1 = 7;
+     CAL_SDAYNAME2 = 8;
+     CAL_SDAYNAME3 = 9;
+     CAL_SDAYNAME4 = 10;
+     CAL_SDAYNAME5 = 11;
+     CAL_SDAYNAME6 = 12;
+     CAL_SDAYNAME7 = 13;
+     CAL_SERASTRING = 4;
+     CAL_SLONGDATE = 6;
+     CAL_SMONTHNAME1 = 21;
+     CAL_SMONTHNAME2 = 22;
+     CAL_SMONTHNAME3 = 23;
+     CAL_SMONTHNAME4 = 24;
+     CAL_SMONTHNAME5 = 25;
+     CAL_SMONTHNAME6 = 26;
+     CAL_SMONTHNAME7 = 27;
+     CAL_SMONTHNAME8 = 28;
+     CAL_SMONTHNAME9 = 29;
+     CAL_SMONTHNAME10 = 30;
+     CAL_SMONTHNAME11 = 31;
+     CAL_SMONTHNAME12 = 32;
+     CAL_SMONTHNAME13 = 33;
+     CAL_SSHORTDATE = 5;
+  { SetProcessWorkingSetSize  }
+     PROCESS_SET_QUOTA = 256;
+  { SetPrinter  }
+  { SetService  }
+  { SetStretchBltMode  }
+     BLACKONWHITE = 1;
+     COLORONCOLOR = 3;
+     HALFTONE = 4;
+     STRETCH_ANDSCANS = 1;
+     STRETCH_DELETESCANS = 3;
+     STRETCH_HALFTONE = 4;
+     STRETCH_ORSCANS = 2;
+     WHITEONBLACK = 2;
+  { SetSystemCursor  }
+     OCR_NORMAL = 32512;
+     OCR_IBEAM = 32513;
+     OCR_WAIT = 32514;
+     OCR_CROSS = 32515;
+     OCR_UP = 32516;
+     OCR_SIZE = 32640;
+     OCR_ICON = 32641;
+     OCR_SIZENWSE = 32642;
+     OCR_SIZENESW = 32643;
+     OCR_SIZEWE = 32644;
+     OCR_SIZENS = 32645;
+     OCR_SIZEALL = 32646;
+     OCR_NO = 32648;
+     OCR_APPSTARTING = 32650;
+  { SetTapePosition  }
+     TAPE_ABSOLUTE_BLOCK = $1;
+     TAPE_LOGICAL_BLOCK = $2;
+     TAPE_REWIND = 0;
+     TAPE_SPACE_END_OF_DATA = $4;
+     TAPE_SPACE_FILEMARKS = $6;
+     TAPE_SPACE_RELATIVE_BLOCKS = $5;
+     TAPE_SPACE_SEQUENTIAL_FMKS = $7;
+     TAPE_SPACE_SEQUENTIAL_SMKS = $9;
+     TAPE_SPACE_SETMARKS = $8;
+  { SetUnhandledExceptionFilter  }
+     EXCEPTION_EXECUTE_HANDLER = 1;
+     EXCEPTION_CONTINUE_EXECUTION = -(1);
+     EXCEPTION_CONTINUE_SEARCH = 0;
+  { SetWindowPos, DeferWindowPos  }
+     HWND_BOTTOM = HWND(1);
+     HWND_NOTOPMOST = HWND(-(2));
+     HWND_TOP = HWND(0);
+     HWND_TOPMOST = HWND(-(1));
+
+
+  const
+     SWP_DRAWFRAME = 32;
+     SWP_FRAMECHANGED = 32;
+     SWP_HIDEWINDOW = 128;
+     SWP_NOACTIVATE = 16;
+     SWP_NOCOPYBITS = 256;
+     SWP_NOMOVE = 2;
+     SWP_NOSIZE = 1;
+     SWP_NOREDRAW = 8;
+     SWP_NOZORDER = 4;
+     SWP_SHOWWINDOW = 64;
+     SWP_NOOWNERZORDER = 512;
+     SWP_NOREPOSITION = 512;
+     SWP_NOSENDCHANGING = 1024;
+  { SHAddToRecentDocs  }
+  { SHAppBarMessage  }
+  { SHChangeNotify  }
+  { ShellProc  }
+     HSHELL_ACTIVATESHELLWINDOW = 3;
+     HSHELL_GETMINRECT = 5;
+     HSHELL_LANGUAGE = 8;
+     HSHELL_REDRAW = 6;
+     HSHELL_TASKMAN = 7;
+     HSHELL_WINDOWACTIVATED = 4;
+     HSHELL_WINDOWCREATED = 1;
+     HSHELL_WINDOWDESTROYED = 2;
+  { SHGetFileInfo  }
+  // supported SHGetFileInfo input flags
+     SHGFI_ICON              = $000000100;     // get icon
+     SHGFI_DISPLAYNAME       = $000000200;     // get display name
+     SHGFI_TYPENAME          = $000000400;     // get type name
+     SHGFI_ATTRIBUTES        = $000000800;     // get attributes
+     SHGFI_SYSICONINDEX      = $000004000;     // get system icon index
+     SHGFI_LARGEICON         = $000000000;     // get large icon
+     SHGFI_SMALLICON         = $000000001;     // get small icon
+     SHGFI_USEFILEATTRIBUTES = $000000010;     // use passed dwFileAttribute
+     SHGFI_PIDL              = $000000008;     // pszPath is a pidl
+// supported SHGetFileInfo output attributes
+     SFGAO_LINK              = $00010000;     // Shortcut (link)
+     SFGAO_READONLY          = $00040000;     // read-only
+     SFGAO_FOLDER            = $20000000;     // It's a folder.
+  { SHGetSpecialFolderLocation  }
+  { ShowWindow  }
+     SW_HIDE = 0;
+     SW_MAXIMIZE = 3;
+     SW_MINIMIZE = 6;
+     SW_NORMAL = 1;
+     SW_RESTORE = 9;
+     SW_SHOW = 5;
+     SW_SHOWDEFAULT = 10;
+     SW_SHOWMAXIMIZED = 3;
+     SW_SHOWMINIMIZED = 2;
+     SW_SHOWMINNOACTIVE = 7;
+     SW_SHOWNA = 8;
+     SW_SHOWNOACTIVATE = 4;
+     SW_SHOWNORMAL = 1;
+     WPF_RESTORETOMAXIMIZED = 2;
+     WPF_SETMINPOSITION = 1;
+  { SID }
+     ////////////////////////////////////////////////////////////////////////
+     //                                                                    //
+     //              Security Id     (SID)                                 //
+     //                                                                    //
+     ////////////////////////////////////////////////////////////////////////
+     //
+     //
+     // Pictorially the structure of an SID is as follows:
+     //
+     //         1   1   1   1   1   1
+     //         5   4   3   2   1   0   9   8   7   6   5   4   3   2   1   0
+     //      +---------------------------------------------------------------+
+     //      |      SubAuthorityCount        |Reserved1 (SBZ)|   Revision    |
+     //      +---------------------------------------------------------------+
+     //      |                   IdentifierAuthority[0]                      |
+     //      +---------------------------------------------------------------+
+     //      |                   IdentifierAuthority[1]                      |
+     //      +---------------------------------------------------------------+
+     //      |                   IdentifierAuthority[2]                      |
+     //      +---------------------------------------------------------------+
+     //      |                                                               |
+     //      +- -  -  -  -  -  -  -  SubAuthority[]  -  -  -  -  -  -  -  - -+
+     //      |                                                               |
+     //      +---------------------------------------------------------------+
+     //
+     //
+     SID_REVISION =1;    // Current revision level
+     SID_MAX_SUB_AUTHORITIES = 15;
+     SID_RECOMMENDED_SUB_AUTHORITIES = 1;    // Will change to around 6
+                                             // in a future release.
+
+
+  { Sleep  }
+     INFINITE = $FFFFFFFF;
+  { SystemParametersInfo  }
+     SPI_GETACCESSTIMEOUT = 60;
+     SPI_GETANIMATION = 72;
+     SPI_GETBEEP = 1;
+     SPI_GETBORDER = 5;
+     SPI_GETDEFAULTINPUTLANG = 89;
+     SPI_GETDRAGFULLWINDOWS = 38;
+     SPI_GETFASTTASKSWITCH = 35;
+     SPI_GETFILTERKEYS = 50;
+     SPI_GETFONTSMOOTHING = 74;
+     SPI_GETGRIDGRANULARITY = 18;
+     SPI_GETHIGHCONTRAST = 66;
+     SPI_GETICONMETRICS = 45;
+     SPI_GETICONTITLELOGFONT = 31;
+     SPI_GETICONTITLEWRAP = 25;
+     SPI_GETKEYBOARDDELAY = 22;
+     SPI_GETKEYBOARDPREF = 68;
+     SPI_GETKEYBOARDSPEED = 10;
+     SPI_GETLOWPOWERACTIVE = 83;
+     SPI_GETLOWPOWERTIMEOUT = 79;
+     SPI_GETMENUDROPALIGNMENT = 27;
+     SPI_GETMINIMIZEDMETRICS = 43;
+     SPI_GETMOUSE = 3;
+     SPI_GETMOUSEKEYS = 54;
+     SPI_GETMOUSETRAILS = 94;
+     SPI_GETNONCLIENTMETRICS = 41;
+     SPI_GETPOWEROFFACTIVE = 84;
+     SPI_GETPOWEROFFTIMEOUT = 80;
+     SPI_GETSCREENREADER = 70;
+     SPI_GETSCREENSAVEACTIVE = 16;
+     SPI_GETSCREENSAVETIMEOUT = 14;
+     SPI_GETSERIALKEYS = 62;
+     SPI_GETSHOWSOUNDS = 56;
+     SPI_GETSOUNDSENTRY = 64;
+     SPI_GETSTICKYKEYS = 58;
+     SPI_GETTOGGLEKEYS = 52;
+     SPI_GETWINDOWSEXTENSION = 92;
+     SPI_GETWORKAREA = 48;
+     SPI_ICONHORIZONTALSPACING = 13;
+     SPI_ICONVERTICALSPACING = 24;
+     SPI_LANGDRIVER = 12;
+     SPI_SCREENSAVERRUNNING = 97;
+     SPI_SETACCESSTIMEOUT = 61;
+     SPI_SETANIMATION = 73;
+     SPI_SETBEEP = 2;
+     SPI_SETBORDER = 6;
+     SPI_SETDEFAULTINPUTLANG = 90;
+     SPI_SETDESKPATTERN = 21;
+     SPI_SETDESKWALLPAPER = 20;
+     SPI_SETDOUBLECLICKTIME = 32;
+     SPI_SETDOUBLECLKHEIGHT = 30;
+     SPI_SETDOUBLECLKWIDTH = 29;
+     SPI_SETDRAGFULLWINDOWS = 37;
+     SPI_SETDRAGHEIGHT = 77;
+     SPI_SETDRAGWIDTH = 76;
+     SPI_SETFASTTASKSWITCH = 36;
+     SPI_SETFILTERKEYS = 51;
+     SPI_SETFONTSMOOTHING = 75;
+     SPI_SETGRIDGRANULARITY = 19;
+     SPI_SETHANDHELD = 78;
+     SPI_SETHIGHCONTRAST = 67;
+     SPI_SETICONMETRICS = 46;
+     SPI_SETICONTITLELOGFONT = 34;
+     SPI_SETICONTITLEWRAP = 26;
+     SPI_SETKEYBOARDDELAY = 23;
+     SPI_SETKEYBOARDPREF = 69;
+     SPI_SETKEYBOARDSPEED = 11;
+     SPI_SETLANGTOGGLE = 91;
+     SPI_SETLOWPOWERACTIVE = 85;
+     SPI_SETLOWPOWERTIMEOUT = 81;
+     SPI_SETMENUDROPALIGNMENT = 28;
+     SPI_SETMINIMIZEDMETRICS = 44;
+     SPI_SETMOUSE = 4;
+     SPI_SETMOUSEBUTTONSWAP = 33;
+     SPI_SETMOUSEKEYS = 55;
+     SPI_SETMOUSETRAILS = 93;
+     SPI_SETNONCLIENTMETRICS = 42;
+     SPI_SETPENWINDOWS = 49;
+     SPI_SETPOWEROFFACTIVE = 86;
+     SPI_SETPOWEROFFTIMEOUT = 82;
+     SPI_SETSCREENREADER = 71;
+     SPI_SETSCREENSAVEACTIVE = 17;
+     SPI_SETSCREENSAVETIMEOUT = 15;
+     SPI_SETSERIALKEYS = 63;
+     SPI_SETSHOWSOUNDS = 57;
+     SPI_SETSOUNDSENTRY = 65;
+     SPI_SETSTICKYKEYS = 59;
+     SPI_SETTOGGLEKEYS = 53;
+     SPI_SETWORKAREA = 47;
+     SPI_SETBATTERYIDLETIMEOUT = 251;
+     SPI_GETBATTERYIDLETIMEOUT = 252;
+     SPI_SETEXTERNALIDLETIMEOUT = 253;
+     SPI_GETEXTERNALIDLETIMEOUT = 254;
+     SPI_SETWAKEUPIDLETIMEOUT = 255;
+     SPI_GETWAKEUPIDLETIMEOUT = 256;
+     SPI_GETPLATFORMTYPE = 257;
+     SPI_GETOEMINFO = 258;
+
+     SPIF_UPDATEINIFILE = 1;
+     SPIF_SENDWININICHANGE = 2;
+     SPIF_SENDCHANGE = 2;
+  { TrackPopupMenu, TrackPopMenuEx  }
+     TPM_CENTERALIGN = $4;
+     TPM_LEFTALIGN = 0;
+     TPM_RIGHTALIGN = $8;
+     TPM_LEFTBUTTON = 0;
+     TPM_RIGHTBUTTON = $2;
+     TPM_HORIZONTAL = 0;
+     TPM_BOTTOMALIGN = $20;
+     TPM_VERTICAL = $40;
+  { TranslateCharsetInfo  }
+     TCI_SRCCHARSET = 1;
+     TCI_SRCCODEPAGE = 2;
+     TCI_SRCFONTSIG = 3;
+  { WideCharToMultiByte  }
+     WC_COMPOSITECHECK = 512;
+     WC_DISCARDNS = 16;
+     WC_SEPCHARS = 32;
+     WC_DEFAULTCHAR = 64;
+  { WinHelp  }
+     HELP_COMMAND = $102;
+     HELP_CONTENTS = $3;
+     HELP_CONTEXT = $1;
+     HELP_CONTEXTPOPUP = $8;
+     HELP_FORCEFILE = $9;
+     HELP_HELPONHELP = $4;
+     HELP_INDEX = $3;
+     HELP_KEY = $101;
+     HELP_MULTIKEY = $201;
+     HELP_PARTIALKEY = $105;
+     HELP_QUIT = $2;
+     HELP_SETCONTENTS = $5;
+     HELP_SETINDEX = $5;
+     HELP_CONTEXTMENU = $a;
+     HELP_FINDER = $b;
+     HELP_WM_HELP = $c;
+     HELP_TCARD = $8000;
+     HELP_TCARD_DATA = $10;
+     HELP_TCARD_OTHER_CALLER = $11;
+  { WNetAddConnectino2  }
+     CONNECT_UPDATE_PROFILE = 1;
+  { WNetConnectionDialog, WNetDisconnectDialog, WNetOpenEnum  }
+     RESOURCETYPE_DISK = 1;
+     RESOURCETYPE_PRINT = 2;
+     RESOURCETYPE_ANY = 0;
+     RESOURCE_CONNECTED = 1;
+     RESOURCE_GLOBALNET = 2;
+     RESOURCE_REMEMBERED = 3;
+     RESOURCEUSAGE_CONNECTABLE = 1;
+     RESOURCEUSAGE_CONTAINER = 2;
+  { WNetGetResourceInformation, WNetGetResourceParent  }
+     WN_BAD_NETNAME = $43;
+     WN_EXTENDED_ERROR = $4b8;
+     WN_MORE_DATA = $ea;
+     WN_NO_NETWORK = $4c6;
+     WN_SUCCESS = 0;
+     WN_ACCESS_DENIED = $5;
+     WN_BAD_PROVIDER = $4b4;
+     WN_NOT_AUTHENTICATED = $4dc;
+  { WNetGetUniversalName  }
+     UNIVERSAL_NAME_INFO_LEVEL = 1;
+     REMOTE_NAME_INFO_LEVEL = 2;
+  { GetExitCodeThread  }
+     STILL_ACTIVE = $103;
+
+  { kfuncs consts }  //+kfuncs
+
+    {$ifdef CPUARM}
+      PUserKData = $FFFFC800;
+    {$else}
+      PUserKData = $00005800;
+    {$endif CPUARM}
+
+     EVENT_PULSE = 1;
+     EVENT_RESET = 2;
+     EVENT_SET = 3;
+
+     SYSHANDLE_OFFSET = $004;
+     NUM_SYS_HANDLES  = 32;
+     SYS_HANDLE_BASE  = 64;
+     SH_WIN32         = 0;
+     SH_CURTHREAD     = 1;
+     SH_CURPROC       = 2;
+     SH_LAST_NOTIFY   = 16; // Last set notified on Thread/Process Termination
+     SH_GDI           = 16;
+     SH_WMGR          = 17;
+     SH_WNET	      = 18; // WNet APIs for network redirector
+     SH_COMM          = 19; // Communications not "COM"
+     SH_FILESYS_APIS  = 20; // File system APIS
+     SH_SHELL         = 21;
+     SH_DEVMGR_APIS   = 22; // File system device manager
+     SH_TAPI	      = 23;
+     SH_PATCHER	      = 24;
+     SH_SERVICES      = 26;
+     SH_LASTRESERVED  = 26;
+
+     TLS_FUNCALLOC    = 0;
+     TLS_FUNCFREE     = 1;
+
+  { COMMPROP structure  }
+     SP_SERIALCOMM = $1;
+     BAUD_075 = $1;
+     BAUD_110 = $2;
+     BAUD_134_5 = $4;
+     BAUD_150 = $8;
+     BAUD_300 = $10;
+     BAUD_600 = $20;
+     BAUD_1200 = $40;
+     BAUD_1800 = $80;
+     BAUD_2400 = $100;
+     BAUD_4800 = $200;
+     BAUD_7200 = $400;
+     BAUD_9600 = $800;
+     BAUD_14400 = $1000;
+     BAUD_19200 = $2000;
+     BAUD_38400 = $4000;
+     BAUD_56K = $8000;
+     BAUD_57600 = $40000;
+     BAUD_115200 = $20000;
+     BAUD_128K = $10000;
+     BAUD_USER = $10000000;
+     PST_FAX = $21;
+     PST_LAT = $101;
+     PST_MODEM = $6;
+     PST_NETWORK_BRIDGE = $100;
+     PST_PARALLELPORT = $2;
+     PST_RS232 = $1;
+     PST_RS422 = $3;
+     PST_RS423 = $4;
+     PST_RS449 = $5;
+     PST_SCANNER = $22;
+     PST_TCPIP_TELNET = $102;
+     PST_UNSPECIFIED = 0;
+     PST_X25 = $103;
+     PCF_16BITMODE = $200;
+     PCF_DTRDSR = $1;
+     PCF_INTTIMEOUTS = $80;
+     PCF_PARITY_CHECK = $8;
+     PCF_RLSD = $4;
+     PCF_RTSCTS = $2;
+     PCF_SETXCHAR = $20;
+     PCF_SPECIALCHARS = $100;
+     PCF_TOTALTIMEOUTS = $40;
+     PCF_XONXOFF = $10;
+     SP_BAUD = $2;
+     SP_DATABITS = $4;
+     SP_HANDSHAKING = $10;
+     SP_PARITY = $1;
+     SP_PARITY_CHECK = $20;
+     SP_RLSD = $40;
+     SP_STOPBITS = $8;
+     DATABITS_5 = 1;
+     DATABITS_6 = 2;
+     DATABITS_7 = 4;
+     DATABITS_8 = 8;
+     DATABITS_16 = 16;
+     DATABITS_16X = 32;
+     STOPBITS_10 = 1;
+     STOPBITS_15 = 2;
+     STOPBITS_20 = 4;
+     PARITY_NONE = 256;
+     PARITY_ODD = 512;
+     PARITY_EVEN = 1024;
+     PARITY_MARK = 2048;
+     PARITY_SPACE = 4096;
+     COMMPROP_INITIALIZED = $e73cf52e;
+  { DCB structure  }
+     CBR_110 = 110;
+     CBR_300 = 300;
+     CBR_600 = 600;
+     CBR_1200 = 1200;
+     CBR_2400 = 2400;
+     CBR_4800 = 4800;
+     CBR_9600 = 9600;
+     CBR_14400 = 14400;
+     CBR_19200 = 19200;
+     CBR_38400 = 38400;
+     CBR_56000 = 56000;
+     CBR_57600 = 57600;
+     CBR_115200 = 115200;
+     CBR_128000 = 128000;
+     CBR_256000 = 256000;
+     DTR_CONTROL_DISABLE = 0;
+     DTR_CONTROL_ENABLE = 1;
+     DTR_CONTROL_HANDSHAKE = 2;
+     RTS_CONTROL_DISABLE = 0;
+     RTS_CONTROL_ENABLE = 1;
+     RTS_CONTROL_HANDSHAKE = 2;
+     RTS_CONTROL_TOGGLE = 3;
+     EVENPARITY = 2;
+     MARKPARITY = 3;
+     NOPARITY = 0;
+     ODDPARITY = 1;
+     SPACEPARITY = 4;
+     ONESTOPBIT = 0;
+     ONE5STOPBITS = 1;
+     TWOSTOPBITS = 2;
+  { Debugging events  }
+     CREATE_PROCESS_DEBUG_EVENT = 3;
+     CREATE_THREAD_DEBUG_EVENT = 2;
+     EXCEPTION_DEBUG_EVENT = 1;
+     EXIT_PROCESS_DEBUG_EVENT = 5;
+     EXIT_THREAD_DEBUG_EVENT = 4;
+     LOAD_DLL_DEBUG_EVENT = 6;
+     OUTPUT_DEBUG_STRING_EVENT = 8;
+     UNLOAD_DLL_DEBUG_EVENT = 7;
+     RIP_EVENT = 9;
+  { PROCESS_HEAP_ENTRY structure  }
+     PROCESS_HEAP_REGION = 1;
+     PROCESS_HEAP_UNCOMMITTED_RANGE = 2;
+     PROCESS_HEAP_ENTRY_BUSY = 4;
+     PROCESS_HEAP_ENTRY_MOVEABLE = 16;
+     PROCESS_HEAP_ENTRY_DDESHARE = 32;
+  { Win32s  }
+     HINSTANCE_ERROR = 32;
+  { WIN32_STREAM_ID structure  }
+     BACKUP_DATA = 1;
+     BACKUP_EA_DATA = 2;
+     BACKUP_SECURITY_DATA = 3;
+     BACKUP_ALTERNATE_DATA = 4;
+     BACKUP_LINK = 5;
+     STREAM_MODIFIED_WHEN_READ = 1;
+     STREAM_CONTAINS_SECURITY = 2;
+  { STARTUPINFO structure  }
+     STARTF_USESHOWWINDOW = 1;
+     STARTF_USEPOSITION = 4;
+     STARTF_USESIZE = 2;
+     STARTF_USECOUNTCHARS = 8;
+     STARTF_USEFILLATTRIBUTE = 16;
+     STARTF_RUNFULLSCREEN = 32;
+     STARTF_FORCEONFEEDBACK = 64;
+     STARTF_FORCEOFFFEEDBACK = 128;
+     STARTF_USESTDHANDLES = 256;
+     STARTF_USEHOTKEY = 512;
+  { OSVERSIONINFO structure  }
+     VER_PLATFORM_WIN32s = 0;
+     VER_PLATFORM_WIN32_WINDOWS = 1;
+     VER_PLATFORM_WIN32_NT = 2;
+  { More versions }
+     VER_SERVER_NT                      = $80000000;  //winnt
+     VER_WORKSTATION_NT                 = $40000000;  //winnt
+     VER_SUITE_SMALLBUSINESS            = $00000001;  //winnt
+     VER_SUITE_ENTERPRISE               = $00000002;  //winnt
+     VER_SUITE_BACKOFFICE               = $00000004;  //winnt
+     VER_SUITE_COMMUNICATIONS           = $00000008;  //winnt
+     VER_SUITE_TERMINAL                 = $00000010;  //winnt
+     VER_SUITE_SMALLBUSINESS_RESTRICTED = $00000020;  //winnt
+     VER_SUITE_EMBEDDEDNT               = $00000040;
+     VER_SUITE_DATACENTER               = $00000080;
+     VER_SUITE_SINGLEUSERTS             = $00000100;
+     VER_SUITE_PERSONAL                 = $00000200;
+     VER_SUITE_BLADE                    = $00000400;
+     VER_SUITE_EMBEDDED_RESTRICTED      = $00000800;
+  { PROPSHEETPAGE structure  }
+     MAXPROPPAGES = 100;
+     PSP_DEFAULT = 0;
+     PSP_DLGINDIRECT = 1;
+     PSP_HASHELP = 32;
+     PSP_USECALLBACK = 128;
+     PSP_USEHICON = 2;
+     PSP_USEICONID = 4;
+     PSP_USEREFPARENT = 64;
+     PSP_USETITLE = 8;
+     PSP_RTLREADING = 16;
+     PSP_PREMATURE = $0400; //prsht
+
+  { PROPSHEETHEADER structure  }  //prsht
+     PSH_DEFAULT = 0;
+     PSH_PROPTITLE = 1;
+     PSH_USEHICON = 2;
+     PSH_USEICONID = 4;
+     PSH_PROPSHEETPAGE = 8;
+     PSH_WIZARDHASFINISH = $0010;
+     PSH_WIZARD = 32;
+     PSH_USEPSTARTPAGE = 64;
+     PSH_NOAPPLYNOW = 128;
+     PSH_USECALLBACK = 256;
+     PSH_HASHELP = 512;
+     PSH_MODELESS = 1024;
+     PSH_RTLREADING = 2048;
+     PSH_WIZARDCONTEXTHELP = $1000;
+     PSH_MAXIMIZE          = $2000;
+     PSH_NOCANCELBUTTON    = $80000000; //specific ppc
+
+     PSCB_INITIALIZED = 1;
+     PSCB_PRECREATE = 2;
+     PSCB_GETVERSION = 3;
+     PSCB_GETTITLE   = 4;
+     PSCB_GETLINKTEXT = 5;
+
+  { PSN_APPLY message  } //prsht
+     PSNRET_NOERROR = 0;
+     PSNRET_INVALID  = 1;
+     PSNRET_INVALID_NOCHANGEPAGE = 2;
+
+  { Property Sheet  }
+     PROP_SM_CXDLG = 212;
+     PROP_SM_CYDLG = 188;
+     PROP_MED_CXDLG = 227;
+     PROP_MED_CYDLG = 215;
+     PROP_LG_CXDLG = 252;
+     PROP_LG_CYDLG = 218;
+
+     PSBTN_APPLYNOW = 4;
+     PSBTN_BACK = 0;
+     PSBTN_CANCEL = 5;
+     PSBTN_FINISH = 2;
+     PSBTN_HELP = 6;
+     PSBTN_MAX  = 6; //prsht
+     PSBTN_NEXT = 1;
+     PSBTN_OK = 3;
+
+     PSWIZB_BACK = 1;
+     PSWIZB_NEXT = 2;
+     PSWIZB_FINISH = 4;
+     PSWIZB_DISABLEDFINISH = 8;
+
+     ID_PSREBOOTSYSTEM = 3;
+     ID_PSRESTARTWINDOWS = 2;
+     WIZ_BODYCX = 184;
+     WIZ_BODYX = 92;
+     WIZ_CXBMP = 80;
+     WIZ_CXDLG = 276;
+     WIZ_CYDLG = 140;
+
+  { VX_FIXEDFILEINFO structure  }
+     VS_FILE_INFO = MAKEINTRESOURCE(16);
+
+
+  const
+     VS_VERSION_INFO = 1;
+     VS_FF_DEBUG = $1;
+     VS_FF_INFOINFERRED = $10;
+     VS_FF_PATCHED = $4;
+     VS_FF_PRERELEASE = $2;
+     VS_FF_PRIVATEBUILD = $8;
+     VS_FF_SPECIALBUILD = $20;
+     VOS_UNKNOWN = 0;
+     VOS_DOS = $10000;
+     VOS_OS216 = $20000;
+     VOS_OS232 = $30000;
+     VOS_NT = $40000;
+     VOS_DOS_WINDOWS16 = $10001;
+     VOS_DOS_WINDOWS32 = $10004;
+     VOS_OS216_PM16 = $20002;
+     VOS_OS232_PM32 = $30003;
+     VOS_NT_WINDOWS32 = $40004;
+     VFT_UNKNOWN = 0;
+     VFT_APP = $1;
+     VFT_DLL = $2;
+     VFT_DRV = $3;
+     VFT_FONT = $4;
+     VFT_VXD = $5;
+     VFT_STATIC_LIB = $7;
+     VFT2_UNKNOWN = 0;
+     VFT2_DRV_PRINTER = $1;
+     VFT2_DRV_KEYBOARD = $2;
+     VFT2_DRV_LANGUAGE = $3;
+     VFT2_DRV_DISPLAY = $4;
+     VFT2_DRV_MOUSE = $5;
+     VFT2_DRV_NETWORK = $6;
+     VFT2_DRV_SYSTEM = $7;
+     VFT2_DRV_INSTALLABLE = $8;
+     VFT2_DRV_SOUND = $9;
+     VFT2_FONT_RASTER = $1;
+     VFT2_FONT_VECTOR = $2;
+     VFT2_FONT_TRUETYPE = $3;
+  { PANOSE structure  }
+     PAN_ANY = 0;
+     PAN_NO_FIT = 1;
+     PAN_FAMILY_TEXT_DISPLAY = 2;
+     PAN_FAMILY_SCRIPT = 3;
+     PAN_FAMILY_DECORATIVE = 4;
+     PAN_FAMILY_PICTORIAL = 5;
+     PAN_SERIF_COVE = 2;
+     PAN_SERIF_OBTUSE_COVE = 3;
+     PAN_SERIF_SQUARE_COVE = 4;
+     PAN_SERIF_OBTUSE_SQUARE_COVE = 5;
+     PAN_SERIF_SQUARE = 6;
+     PAN_SERIF_THIN = 7;
+     PAN_SERIF_BONE = 8;
+     PAN_SERIF_EXAGGERATED = 9;
+     PAN_SERIF_TRIANGLE = 10;
+     PAN_SERIF_NORMAL_SANS = 11;
+     PAN_SERIF_OBTUSE_SANS = 12;
+     PAN_SERIF_PERP_SANS = 13;
+     PAN_SERIF_FLARED = 14;
+     PAN_SERIF_ROUNDED = 15;
+     PAN_WEIGHT_VERY_LIGHT = 2;
+     PAN_WEIGHT_LIGHT = 3;
+     PAN_WEIGHT_THIN = 4;
+     PAN_WEIGHT_BOOK = 5;
+     PAN_WEIGHT_MEDIUM = 6;
+     PAN_WEIGHT_DEMI = 7;
+     PAN_WEIGHT_BOLD = 8;
+     PAN_WEIGHT_HEAVY = 9;
+     PAN_WEIGHT_BLACK = 10;
+     PAN_WEIGHT_NORD = 11;
+     PAN_PROP_OLD_STYLE = 2;
+     PAN_PROP_MODERN = 3;
+     PAN_PROP_EVEN_WIDTH = 4;
+     PAN_PROP_EXPANDED = 5;
+     PAN_PROP_CONDENSED = 6;
+     PAN_PROP_VERY_EXPANDED = 7;
+     PAN_PROP_VERY_CONDENSED = 8;
+     PAN_PROP_MONOSPACED = 9;
+     PAN_CONTRAST_NONE = 2;
+     PAN_CONTRAST_VERY_LOW = 3;
+     PAN_CONTRAST_LOW = 4;
+     PAN_CONTRAST_MEDIUM_LOW = 5;
+     PAN_CONTRAST_MEDIUM = 6;
+     PAN_CONTRAST_MEDIUM_HIGH = 7;
+     PAN_CONTRAST_HIGH = 8;
+     PAN_CONTRAST_VERY_HIGH = 9;
+     PAN_STROKE_GRADUAL_DIAG = 2;
+     PAN_STROKE_GRADUAL_TRAN = 3;
+     PAN_STROKE_GRADUAL_VERT = 4;
+     PAN_STROKE_GRADUAL_HORZ = 5;
+     PAN_STROKE_RAPID_VERT = 6;
+     PAN_STROKE_RAPID_HORZ = 7;
+     PAN_STROKE_INSTANT_VERT = 8;
+     PAN_STRAIGHT_ARMS_HORZ = 2;
+     PAN_STRAIGHT_ARMS_WEDGE = 3;
+     PAN_STRAIGHT_ARMS_VERT = 4;
+     PAN_STRAIGHT_ARMS_SINGLE_SERIF = 5;
+     PAN_STRAIGHT_ARMS_DOUBLE_SERIF = 6;
+     PAN_BENT_ARMS_HORZ = 7;
+     PAN_BENT_ARMS_VERT = 9;
+     PAN_BENT_ARMS_WEDGE = 8;
+     PAN_BENT_ARMS_SINGLE_SERIF = 10;
+     PAN_BENT_ARMS_DOUBLE_SERIF = 11;
+     PAN_LETT_NORMAL_CONTACT = 2;
+     PAN_LETT_NORMAL_WEIGHTED = 3;
+     PAN_LETT_NORMAL_BOXED = 4;
+     PAN_LETT_NORMAL_FLATTENED = 5;
+     PAN_LETT_NORMAL_ROUNDED = 6;
+     PAN_LETT_NORMAL_OFF_CENTER = 7;
+     PAN_LETT_NORMAL_SQUARE = 8;
+     PAN_LETT_OBLIQUE_CONTACT = 9;
+     PAN_LETT_OBLIQUE_WEIGHTED = 10;
+     PAN_LETT_OBLIQUE_BOXED = 11;
+     PAN_LETT_OBLIQUE_FLATTENED = 12;
+     PAN_LETT_OBLIQUE_ROUNDED = 13;
+     PAN_LETT_OBLIQUE_OFF_CENTER = 14;
+     PAN_LETT_OBLIQUE_SQUARE = 15;
+     PAN_MIDLINE_STANDARD_TRIMMED = 2;
+     PAN_MIDLINE_STANDARD_POINTED = 3;
+     PAN_MIDLINE_STANDARD_SERIFED = 4;
+     PAN_MIDLINE_HIGH_TRIMMED = 5;
+     PAN_MIDLINE_HIGH_POINTED = 6;
+     PAN_MIDLINE_HIGH_SERIFED = 7;
+     PAN_MIDLINE_CONSTANT_TRIMMED = 8;
+     PAN_MIDLINE_CONSTANT_POINTED = 9;
+     PAN_MIDLINE_CONSTANT_SERIFED = 10;
+     PAN_MIDLINE_LOW_TRIMMED = 11;
+     PAN_MIDLINE_LOW_POINTED = 12;
+     PAN_MIDLINE_LOW_SERIFED = 13;
+     PAN_XHEIGHT_CONSTANT_SMALL = 2;
+     PAN_XHEIGHT_CONSTANT_STD = 3;
+     PAN_XHEIGHT_CONSTANT_LARGE = 4;
+     PAN_XHEIGHT_DUCKING_SMALL = 5;
+     PAN_XHEIGHT_DUCKING_STD = 6;
+     PAN_XHEIGHT_DUCKING_LARGE = 7;
+  { PALETTENTRY structure  }
+     PC_EXPLICIT = 2;
+     PC_NOCOLLAPSE = 4;
+     PC_RESERVED = 1;
+  { LOGBRUSH structure  }
+     BS_DIBPATTERN = 5;
+     BS_DIBPATTERN8X8 = 8;
+     BS_DIBPATTERNPT = 6;
+     BS_HATCHED = 2;
+     BS_HOLLOW = 1;
+     BS_NULL = 1;
+     BS_PATTERN = 3;
+     BS_PATTERN8X8 = 7;
+     BS_SOLID = 0;
+  { DEVMODE structure  }
+     DM_ORIENTATION = $1;
+     DM_PAPERSIZE = $2;
+     DM_PAPERLENGTH = $4;
+     DM_PAPERWIDTH = $8;
+     DM_SCALE = $10;
+     DM_COPIES = $100;
+     DM_DEFAULTSOURCE = $200;
+     DM_PRINTQUALITY = $400;
+     DM_COLOR = $800;
+     DM_DUPLEX = $1000;
+     DM_YRESOLUTION = $2000;
+     DM_TTOPTION = $4000;
+     DM_COLLATE = $8000;
+     DM_FORMNAME = $10000;
+     DM_LOGPIXELS = $20000;
+     {DM_BITSPERPEL = $40000;
+     DM_PELSWIDTH = $80000;
+     DM_PELSHEIGHT = $100000;
+     DM_DISPLAYFLAGS = $200000;
+     DM_DISPLAYFREQUENCY = $400000;already above }
+     DM_ICMMETHOD = $800000;
+     DM_ICMINTENT = $1000000;
+     DM_MEDIATYPE = $2000000;
+     DM_DITHERTYPE = $4000000;
+   { orientation selections }
+     DMORIENT_LANDSCAPE = 2;
+     DMORIENT_PORTRAIT = 1;
+   { paper selections }
+     DMPAPER_LETTER = 1;
+     DMPAPER_LEGAL = 5;
+     DMPAPER_A4 = 9;
+     DMPAPER_CSHEET = 24;
+     DMPAPER_DSHEET = 25;
+     DMPAPER_ESHEET = 26;
+     DMPAPER_LETTERSMALL = 2;
+     DMPAPER_TABLOID = 3;
+     DMPAPER_LEDGER = 4;
+     DMPAPER_STATEMENT = 6;
+     DMPAPER_EXECUTIVE = 7;
+     DMPAPER_A3 = 8;
+     DMPAPER_A4SMALL = 10;
+     DMPAPER_A5 = 11;
+     DMPAPER_B4 = 12;
+     DMPAPER_B5 = 13;
+     DMPAPER_FOLIO = 14;
+     DMPAPER_QUARTO = 15;
+     DMPAPER_10X14 = 16;
+     DMPAPER_11X17 = 17;
+     DMPAPER_NOTE = 18;
+     DMPAPER_ENV_9 = 19;
+     DMPAPER_ENV_10 = 20;
+     DMPAPER_ENV_11 = 21;
+     DMPAPER_ENV_12 = 22;
+     DMPAPER_ENV_14 = 23;
+     DMPAPER_ENV_DL = 27;
+     DMPAPER_ENV_C5 = 28;
+     DMPAPER_ENV_C3 = 29;
+     DMPAPER_ENV_C4 = 30;
+     DMPAPER_ENV_C6 = 31;
+     DMPAPER_ENV_C65 = 32;
+     DMPAPER_ENV_B4 = 33;
+     DMPAPER_ENV_B5 = 34;
+     DMPAPER_ENV_B6 = 35;
+     DMPAPER_ENV_ITALY = 36;
+     DMPAPER_ENV_MONARCH = 37;
+     DMPAPER_ENV_PERSONAL = 38;
+     DMPAPER_FANFOLD_US = 39;
+     DMPAPER_FANFOLD_STD_GERMAN = 40;
+     DMPAPER_FANFOLD_LGL_GERMAN = 41;
+  { print qualities }
+     DMRES_HIGH = -(4);
+     DMRES_MEDIUM = -(3);
+     DMRES_LOW = -(2);
+     DMRES_DRAFT = -(1);
+  { color enable/disable for color printers }
+     DMCOLOR_COLOR = 2;
+     DMCOLOR_MONOCHROME = 1;
+     DMDUP_SIMPLEX = 1;
+     DMDUP_HORIZONTAL = 3;
+     DMDUP_VERTICAL = 2;
+     DMTT_BITMAP = 1;
+     DMTT_DOWNLOAD = 2;
+     DMTT_SUBDEV = 3;
+     DMCOLLATE_TRUE = 1;
+     DMCOLLATE_FALSE = 0;
+     DM_GRAYSCALE = 1;
+     DM_INTERLACED = 2;
+     DMICMMETHOD_NONE = 1;
+     DMICMMETHOD_SYSTEM = 2;
+     DMICMMETHOD_DRIVER = 3;
+     DMICMMETHOD_DEVICE = 4;
+     DMICMMETHOD_USER = 256;
+     DMICM_SATURATE = 1;
+     DMICM_CONTRAST = 2;
+     DMICM_COLORMETRIC = 3;
+     DMICM_USER = 256;
+     DMMEDIA_STANDARD = 1;
+     DMMEDIA_GLOSSY = 3;
+     DMMEDIA_TRANSPARENCY = 2;
+     DMMEDIA_USER = 256;
+     DMDITHER_NONE = 1;
+     DMDITHER_COARSE = 2;
+     DMDITHER_FINE = 3;
+     DMDITHER_LINEART = 4;
+     DMDITHER_GRAYSCALE = 10;
+     DMDITHER_USER = 256;
+  { RGNDATAHEADER structure  }
+     RDH_RECTANGLES = 1;
+  { TTPOLYGONHEADER structure  }
+     TT_POLYGON_TYPE = 24;
+  { TTPOLYCURVE structure  }
+     TT_PRIM_LINE = 1;
+     TT_PRIM_QSPLINE = 2;
+  { GCP_RESULTS structure  }
+     GCPCLASS_ARABIC = 2;
+     GCPCLASS_HEBREW = 2;
+     GCPCLASS_LATIN = 1;
+     GCPCLASS_LATINNUMBER = 5;
+     GCPCLASS_LOCALNUMBER = 4;
+     GCPCLASS_LATINNUMERICSEPARATOR = 7;
+     GCPCLASS_LATINNUMERICTERMINATOR = 6;
+     GCPCLASS_NEUTRAL = 3;
+     GCPCLASS_NUMERICSEPARATOR = 8;
+     GCPCLASS_PREBOUNDLTR = 128;
+     GCPCLASS_PREBOUNDRTL = 64;
+     GCPCLASS_POSTBOUNDLTR = 32;
+     GCPCLASS_POSTBOUNDRTL = 16;
+     GCPGLYPH_LINKBEFORE = 32768;
+     GCPGLYPH_LINKAFTER = 16384;
+  { RASTERIZER_STATUS structure  }
+     TT_AVAILABLE = 1;
+     TT_ENABLED = 2;
+  { COLORADJUSTMENT structure  }
+     CA_NEGATIVE = 1;
+     CA_LOG_FILTER = 2;
+     ILLUMINANT_DEVICE_DEFAULT = 0;
+     ILLUMINANT_A = 1;
+     ILLUMINANT_B = 2;
+     ILLUMINANT_C = 3;
+     ILLUMINANT_D50 = 4;
+     ILLUMINANT_D55 = 5;
+     ILLUMINANT_D65 = 6;
+     ILLUMINANT_D75 = 7;
+     ILLUMINANT_F2 = 8;
+     ILLUMINANT_TUNGSTEN = 1;
+     ILLUMINANT_DAYLIGHT = 3;
+     ILLUMINANT_FLUORESCENT = 8;
+     ILLUMINANT_NTSC = 3;
+  { DOCINFO structure  }
+     DI_APPBANDING = 1;
+  { EMRMETAHEADER structure  }
+     EMR_HEADER = 1;
+     ENHMETA_SIGNATURE = 1179469088;
+  { RTF event masks  }
+     ENM_CHANGE = 1;
+     ENM_CORRECTTEXT = 4194304;
+     ENM_DROPFILES = 1048576;
+     ENM_KEYEVENTS = 65536;
+     ENM_MOUSEEVENTS = 131072;
+     ENM_PROTECTED = 2097152;
+     ENM_REQUESTRESIZE = 262144;
+     ENM_SCROLL = 4;
+     ENM_SELCHANGE = 524288;
+     ENM_UPDATE = 2;
+     ENM_NONE = 0;
+  { RTF styles  }
+     ES_DISABLENOSCROLL = 8192;
+     ES_EX_NOCALLOLEINIT = 16777216;
+     ES_NOIME = 524288;
+     ES_SAVESEL = 32768;
+     ES_SELFIME = 262144;
+     ES_SUNKEN = 16384;
+     ES_VERTICAL = 4194304;
+     ES_SELECTIONBAR = 16777216;
+  { EM_SETOPTIONS message  }
+     ECOOP_SET = 1;
+     ECOOP_OR = 2;
+     ECOOP_AND = 3;
+     ECOOP_XOR = 4;
+     ECO_AUTOWORDSELECTION = 1;
+     ECO_AUTOVSCROLL = 64;
+     ECO_AUTOHSCROLL = 128;
+     ECO_NOHIDESEL = 256;
+     ECO_READONLY = 2048;
+     ECO_WANTRETURN = 4096;
+     ECO_SAVESEL = 32768;
+     ECO_SELECTIONBAR = 16777216;
+     ECO_VERTICAL = 4194304;
+  { EM_SETCHARFORMAT message  }
+     SCF_WORD = 2;
+     SCF_SELECTION = 1;
+  { EM_STREAMOUT message  }
+     SF_TEXT = 1;
+     SF_RTF = 2;
+     SF_RTFNOOBJS = 3;
+     SF_TEXTIZED = 4;
+     SFF_SELECTION = 32768;
+     SFF_PLAINRTF = 16384;
+  { EM_FINDWORDBREAK message  }
+     WB_CLASSIFY = 3;
+     {WB_ISDELIMITER = 2;
+     WB_LEFT = 0; already above }
+     WB_LEFTBREAK = 6;
+     WB_PREVBREAK = 6;
+     WB_MOVEWORDLEFT = 4;
+     WB_MOVEWORDPREV = 4;
+     WB_MOVEWORDRIGHT = 5;
+     WB_MOVEWORDNEXT = 5;
+     {WB_RIGHT = 1;already above }
+     WB_RIGHTBREAK = 7;
+     WB_NEXTBREAK = 7;
+  { EM_GETPUNCTUATION message  }
+     PC_LEADING = 2;
+     PC_FOLLOWING = 1;
+     PC_DELIMITER = 4;
+     PC_OVERFLOW = 3;
+  { EM_SETWORDWRAPMODE message  }
+     WBF_WORDWRAP = 16;
+     WBF_WORDBREAK = 32;
+     WBF_OVERFLOW = 64;
+     WBF_LEVEL1 = 128;
+     WBF_LEVEL2 = 256;
+     WBF_CUSTOM = 512;
+     WBF_BREAKAFTER = 64;
+     WBF_BREAKLINE = 32;
+     WBF_ISWHITE = 16;
+  { CHARFORMAT structure  }
+     CFM_BOLD = 1;
+     CFM_COLOR = 1073741824;
+     CFM_FACE = 536870912;
+     CFM_ITALIC = 2;
+     CFM_OFFSET = 268435456;
+     CFM_PROTECTED = 16;
+     CFM_SIZE = $80000000;
+     CFM_STRIKEOUT = 8;
+     CFM_UNDERLINE = 4;
+     CFE_AUTOCOLOR = 1073741824;
+     CFE_BOLD = 1;
+     CFE_ITALIC = 2;
+     CFE_STRIKEOUT = 8;
+     CFE_UNDERLINE = 4;
+     CFE_PROTECTED = 16;
+  { PARAFORMAT structure  }
+     PFM_ALIGNMENT = 8;
+     PFM_NUMBERING = 32;
+     PFM_OFFSET = 4;
+     PFM_OFFSETINDENT = $80000000;
+     PFM_RIGHTINDENT = 2;
+     PFM_STARTINDENT = 1;
+     PFM_TABSTOPS = 16;
+     PFN_BULLET = 1;
+     PFA_LEFT = 1;
+     PFA_RIGHT = 2;
+     PFA_CENTER = 3;
+  { SELCHANGE structure  }
+     SEL_EMPTY = 0;
+     SEL_TEXT = 1;
+     SEL_OBJECT = 2;
+     SEL_MULTICHAR = 4;
+     SEL_MULTIOBJECT = 8;
+  { RTF clipboard formats  }
+     CF_RTF = 'Rich Text Format';
+     CF_RETEXTOBJ = 'RichEdit Text and Objects';
+  { DRAWITEMSTRUCT structure  }
+     ODT_BUTTON = 4;
+     ODT_COMBOBOX = 3;
+     ODT_LISTBOX = 2;
+     ODT_LISTVIEW = 102;
+     ODT_MENU = 1;
+     ODT_STATIC = 5;
+     ODT_TAB = 101;
+     ODT_HEADER = 100;
+     ODA_DRAWENTIRE = 1;
+     ODA_FOCUS = 4;
+     ODA_SELECT = 2;
+     ODS_CHECKED = 8;
+     ODS_COMBOBOXEDIT = 4096;
+     ODS_DEFAULT = 32;
+     ODS_DISABLED = 4;
+     ODS_FOCUS = 16;
+     ODS_GRAYED = 2;
+     ODS_SELECTED = 1;
+  { Common control window classes  }
+     ANIMATE_CLASSW = 'SysAnimate32';
+     HOTKEY_CLASSW = 'msctls_hotkey32';
+     PROGRESS_CLASSW = 'msctls_progress32';
+     STATUSCLASSNAMEW = 'msctls_statusbar32';
+     TOOLBARCLASSNAMEW = 'ToolbarWindow32';
+     TOOLTIPS_CLASSW = 'tooltips_class32';
+     TRACKBAR_CLASSW = 'msctls_trackbar32';
+     UPDOWN_CLASSW = 'msctls_updown32';
+     WC_HEADERW = 'SysHeader32';
+     WC_LISTVIEWW = 'SysListView32';
+     WC_TABCONTROLW = 'SysTabControl32';
+     WC_TREEVIEWW = 'SysTreeView32';
+  { Common control styles  }
+     CCS_ADJUSTABLE = $20;
+     CCS_BOTTOM = $3;
+     CCS_NODIVIDER = $40;
+     CCS_NOMOVEY = $2;
+     CCS_NOPARENTALIGN = $8;
+     CCS_NORESIZE = $4;
+     CCS_TOP = $1;
+     CCS_VERT = $80;
+     ANIMATE_CLASSA = 'SysAnimate32';
+     HOTKEY_CLASSA = 'msctls_hotkey32';
+     PROGRESS_CLASSA = 'msctls_progress32';
+     STATUSCLASSNAMEA = 'msctls_statusbar32';
+     TOOLBARCLASSNAMEA = 'ToolbarWindow32';
+     TOOLTIPS_CLASSA = 'tooltips_class32';
+     TRACKBAR_CLASSA = 'msctls_trackbar32';
+     UPDOWN_CLASSA = 'msctls_updown32';
+     WC_HEADERA = 'SysHeader32';
+     WC_LISTVIEWA = 'SysListView32';
+     WC_TABCONTROLA = 'SysTabControl32';
+     WC_TREEVIEWA = 'SysTreeView32';
+{$ifdef UNICODE}
+
+  const
+     ANIMATE_CLASS = ANIMATE_CLASSW;
+     HOTKEY_CLASS = HOTKEY_CLASSW;
+     PROGRESS_CLASS = PROGRESS_CLASSW;
+     STATUSCLASSNAME = STATUSCLASSNAMEW;
+     TOOLBARCLASSNAME = TOOLBARCLASSNAMEW;
+     TOOLTIPS_CLASS = TOOLTIPS_CLASSW;
+     TRACKBAR_CLASS = TRACKBAR_CLASSW;
+     UPDOWN_CLASS = UPDOWN_CLASSW;
+     WC_HEADER = WC_HEADERW;
+     WC_LISTVIEW = WC_LISTVIEWW;
+     WC_TABCONTROL = WC_TABCONTROLW;
+     WC_TREEVIEW = WC_TREEVIEWW;
+{$else}
+
+  const
+     ANIMATE_CLASS = ANIMATE_CLASSA;
+     HOTKEY_CLASS = HOTKEY_CLASSA;
+     PROGRESS_CLASS = PROGRESS_CLASSA;
+     STATUSCLASSNAME = STATUSCLASSNAMEA;
+     TOOLBARCLASSNAME = TOOLBARCLASSNAMEA;
+     TOOLTIPS_CLASS = TOOLTIPS_CLASSA;
+     TRACKBAR_CLASS = TRACKBAR_CLASSA;
+     UPDOWN_CLASS = UPDOWN_CLASSA;
+     WC_HEADER = WC_HEADERA;
+     WC_LISTVIEW = WC_LISTVIEWA;
+     WC_TABCONTROL = WC_TABCONTROLA;
+     WC_TREEVIEW = WC_TREEVIEWA;
+{$endif}
+  { UNICODE  }
+  { Header control styles  }
+
+  const
+     HDS_BUTTONS = 2;
+     HDS_HIDDEN = 8;
+     HDS_HORZ = 0;
+  { HD_ITEM structure  }
+     HDI_BITMAP = 16;
+     HDI_FORMAT = 4;
+     HDI_HEIGHT = 1;
+     HDI_LPARAM = 8;
+     HDI_TEXT = 2;
+     HDI_WIDTH = 1;
+     HDF_CENTER = 2;
+     HDF_LEFT = 0;
+     HDF_RIGHT = 1;
+     HDF_RTLREADING = 4;
+     HDF_BITMAP = 8192;
+     HDF_OWNERDRAW = 32768;
+     HDF_STRING = 16384;
+     HDF_JUSTIFYMASK = 3;
+  { HD_HITTESTINFO structure  }
+     HHT_NOWHERE = 1;
+     HHT_ONDIVIDER = 4;
+     HHT_ONDIVOPEN = 8;
+     HHT_ONHEADER = 2;
+     HHT_TOLEFT = 2048;
+     HHT_TORIGHT = 1024;
+  { TBADDBITMAP structure  }
+     HINST_COMMCTRL = HINST(-(1));
+
+
+  const
+     IDB_STD_LARGE_COLOR = 1;
+     IDB_STD_SMALL_COLOR = 0;
+     IDB_VIEW_LARGE_COLOR = 5;
+     IDB_VIEW_SMALL_COLOR = 4;
+     STD_COPY = 1;
+     STD_CUT = 0;
+     STD_DELETE = 5;
+     STD_FILENEW = 6;
+     STD_FILEOPEN = 7;
+     STD_FILESAVE = 8;
+     STD_FIND = 12;
+     STD_HELP = 11;
+     STD_PASTE = 2;
+     STD_PRINT = 14;
+     STD_PRINTPRE = 9;
+     STD_PROPERTIES = 10;
+     STD_REDOW = 4;
+     STD_REPLACE = 13;
+     STD_UNDO = 3;
+     VIEW_LARGEICONS = 0;
+     VIEW_SMALLICONS = 1;
+     VIEW_LIST = 2;
+     VIEW_DETAILS = 3;
+     VIEW_SORTNAME = 4;
+     VIEW_SORTSIZE = 5;
+     VIEW_SORTDATE = 6;
+     VIEW_SORTTYPE = 7;
+  { Toolbar styles  }
+     TBSTYLE_ALTDRAG = 1024;
+     TBSTYLE_TOOLTIPS = 256;
+     TBSTYLE_WRAPABLE = 512;
+     TBSTYLE_BUTTON = 0;
+     TBSTYLE_CHECK = 2;
+     TBSTYLE_CHECKGROUP = 6;
+     TBSTYLE_GROUP = 4;
+     TBSTYLE_SEP = 1;
+     TBSTYLE_DROPDOWN        = $0008;
+     TBSTYLE_AUTOSIZE        = $0010; // automatically calculate the cx of the button
+     TBSTYLE_FLAT            = $0800;
+     TBSTYLE_LIST            = $1000;
+     TBSTYLE_CUSTOMERASE     = $2000;
+     TBSTYLE_TRANSPARENT     = $8000;
+  { Toolbar states  }
+     TBSTATE_CHECKED = 1;
+     TBSTATE_ENABLED = 4;
+     TBSTATE_HIDDEN = 8;
+     TBSTATE_INDETERMINATE = 16;
+     TBSTATE_PRESSED = 2;
+     TBSTATE_WRAP = 32;
+     TBSTATE_ELLIPSES        = $40;
+     TBSTATE_HIGHLIGHTED     = $80;
+  { Tooltip styles  }
+     TTS_ALWAYSTIP = 1;
+     TTS_NOPREFIX = 2;
+  { TOOLINFO structure  }
+     TTF_IDISHWND = 1;
+     TTF_CENTERTIP = 2;
+     TTF_RTLREADING = 4;
+     TTF_SUBCLASS = 16;
+  { TTM_SETDELAYTIME message  }
+     TTDT_AUTOMATIC = 0;
+     TTDT_AUTOPOP = 2;
+     TTDT_INITIAL = 3;
+     TTDT_RESHOW = 1;
+  { Status window  }
+     SBARS_SIZEGRIP = 256;
+     {SBARS_SIZEGRIP = 256;already above }
+  { DL_DRAGGING message  }
+     DL_MOVECURSOR = 3;
+     DL_COPYCURSOR = 2;
+     DL_STOPCURSOR = 1;
+  { Up-down control styles  }
+     UDS_ALIGNLEFT = 8;
+     UDS_ALIGNRIGHT = 4;
+     UDS_ARROWKEYS = 32;
+     UDS_AUTOBUDDY = 16;
+     UDS_HORZ = 64;
+     UDS_NOTHOUSANDS = 128;
+     UDS_SETBUDDYINT = 2;
+     UDS_WRAP = 1;
+  { UDM_SETRANGE message  }
+     UD_MAXVAL = 32767;
+     UD_MINVAL = -(32767);
+  { HKM_GETHOTKEY message  }
+     HOTKEYF_ALT = 4;
+     HOTKEYF_CONTROL = 2;
+     HOTKEYF_EXT = 8;
+     HOTKEYF_SHIFT = 1;
+  { HKM_SETRULES message  }
+     HKCOMB_A = 8;
+     HKCOMB_C = 4;
+     HKCOMB_CA = 64;
+     HKCOMB_NONE = 1;
+     HKCOMB_S = 2;
+     HKCOMB_SA = 32;
+     HKCOMB_SC = 16;
+     HKCOMB_SCA = 128;
+  { Trackbar styles  }
+     TBS_HORZ = 0;
+     TBS_VERT = 2;
+     TBS_AUTOTICKS = 1;
+     TBS_NOTICKS = 16;
+     TBS_TOP = 4;
+     TBS_BOTTOM = 0;
+     TBS_LEFT = 4;
+     TBS_RIGHT = 0;
+     TBS_BOTH = 8;
+     TBS_ENABLESELRANGE = 32;
+     TBS_FIXEDLENGTH = 64;
+     TBS_NOTHUMB = 128;
+     TB_BOTTOM = 7;
+     TB_ENDTRACK = 8;
+     TB_LINEDOWN = 1;
+     TB_LINEUP = 0;
+     TB_PAGEDOWN = 3;
+     TB_PAGEUP = 2;
+     TB_THUMBPOSITION = 4;
+     TB_THUMBTRACK = 5;
+     TB_TOP = 6;
+  { List view styles  }
+     LVS_ALIGNLEFT = 2048;
+     LVS_ALIGNTOP = 0;
+     LVS_AUTOARRANGE = 256;
+     LVS_EDITLABELS = 512;
+     LVS_ICON = 0;
+     LVS_LIST = 3;
+     LVS_NOCOLUMNHEADER = 16384;
+     LVS_NOLABELWRAP = 128;
+     LVS_NOSCROLL = 8192;
+     LVS_NOSORTHEADER = 32768;
+     LVS_OWNERDRAWFIXED = 1024;
+     LVS_OWNERDATA = $1000;
+     LVS_REPORT = 1;
+     LVS_SHAREIMAGELISTS = 64;
+     LVS_SHOWSELALWAYS = 8;
+     LVS_SINGLESEL = 4;
+     LVS_SMALLICON = 2;
+     LVS_SORTASCENDING = 16;
+     LVS_SORTDESCENDING = 32;
+     LVS_TYPESTYLEMASK = 64512;
+     //extended styles
+     LVS_EX_GRIDLINES        = $00000001;
+     LVS_EX_SUBITEMIMAGES    = $00000002;
+     LVS_EX_CHECKBOXES       = $00000004;
+     LVS_EX_TRACKSELECT      = $00000008;
+     LVS_EX_HEADERDRAGDROP   = $00000010;
+     LVS_EX_FULLROWSELECT    = $00000020; // applies to report mode only
+     LVS_EX_ONECLICKACTIVATE = $00000040;
+     LVS_EX_NOHSCROLL        = $10000000;
+     LVS_EX_GRADIENT         = $20000000; // draw a background gradient
+
+     LVSIL_NORMAL = 0;
+     LVSIL_SMALL = 1;
+     LVSIL_STATE = 2;
+     LVIS_CUT = 4;
+     LVIS_DROPHILITED = 8;
+     LVIS_FOCUSED = 1;
+     LVIS_SELECTED = 2;
+     LVIS_OVERLAYMASK = 3840;
+     LVIS_STATEIMAGEMASK = 61440;
+
+     // progress bar styles
+     PBS_SMOOTH              = 01;
+     PBS_VERTICAL            = 04;
+
+     LPSTR_TEXTCALLBACKW = LPWSTR(-(1));
+     LPSTR_TEXTCALLBACKA = LPSTR(-(1));
+
+
+	{$ifdef UNICODE}
+
+     {const this is a function in fact !!
+              LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKW;}
+     LPSTR_TEXTCALLBACK          = LPWSTR(-(1));
+
+	{$else}
+
+	 {const
+	 LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKA; }
+     LPSTR_TEXTCALLBACK          =LPSTR(-(1));
+	{$endif}
+
+	 { LV_ITEM structure  }
+
+  const
+     LVIF_TEXT = 1;
+     LVIF_IMAGE = 2;
+     LVIF_PARAM = 4;
+     LVIF_STATE = 8;
+     LVIF_INDENT = $10;
+     LVIF_DI_SETITEM = 4096;
+  { LVM_GETNEXTITEM structure  }
+     LVNI_ABOVE = 256;
+     LVNI_ALL = 0;
+     LVNI_BELOW = 512;
+     LVNI_TOLEFT = 1024;
+     LVNI_TORIGHT = 2048;
+     LVNI_CUT = 4;
+     LVNI_DROPHILITED = 8;
+     LVNI_FOCUSED = 1;
+     LVNI_SELECTED = 2;
+  { LV_FINDINFO structure  }
+     LVFI_PARAM = 1;
+     LVFI_PARTIAL = 8;
+     LVFI_STRING = 2;
+     LVFI_WRAP = 32;
+     LVFI_NEARESTXY = 64;
+  { LV_HITTESTINFO structure  }
+     LVHT_ABOVE = 8;
+     LVHT_BELOW = 16;
+     LVHT_NOWHERE = 1;
+     LVHT_ONITEMICON = 2;
+     LVHT_ONITEMLABEL = 4;
+     LVHT_ONITEMSTATEICON = 8;
+     LVHT_TOLEFT = 64;
+     LVHT_TORIGHT = 32;
+     LVHT_ONITEM = LVHT_ONITEMICON or LVHT_ONITEMLABEL or LVHT_ONITEMSTATEICON;
+  { LV_COLUMN structure  }
+     LVCF_FMT = 1;
+     LVCF_SUBITEM = 8;
+     LVCF_TEXT = 4;
+     LVCF_WIDTH = 2;
+     LVCF_IMAGE = $10;
+     LVCF_ORDER = $20;
+     LVCFMT_CENTER = 2;
+     LVCFMT_LEFT = 0;
+     LVCFMT_RIGHT = 1;
+     LVCFMT_JUSTIFYMASK      = $0003;
+     LVCFMT_IMAGE            = $0800;
+     LVCFMT_BITMAP_ON_RIGHT  = $1000;
+  { ListView_GetItemRect  }
+     LVIR_BOUNDS = 0;
+     LVIR_ICON = 1;
+     LVIR_LABEL = 2;
+     LVIR_SELECTBOUNDS = 3;
+  { LVM_ARRANGE message  }
+     LVA_ALIGNLEFT = 1;
+     LVA_ALIGNTOP = 2;
+     LVA_DEFAULT = 0;
+     LVA_SNAPTOGRID = 5;
+  { LVM_SETCOLUMNWIDTH message  }
+     LVSCW_AUTOSIZE = -(1);
+     LVSCW_AUTOSIZE_USEHEADER = -(2);
+  { Tree View styles  }
+     TVS_DISABLEDRAGDROP = 16;
+     TVS_EDITLABELS = 8;
+     TVS_HASBUTTONS = 1;
+     TVS_HASLINES = 2;
+     TVS_LINESATROOT = 4;
+     TVS_SHOWSELALWAYS = 32;
+     TVS_CHECKBOXES = $0100;
+     TVS_SINGLEEXPAND = $0400;
+  { Tree View states  }
+     TVIS_BOLD = 16;
+     TVIS_CUT = 4;
+     TVIS_DROPHILITED = 8;
+     TVIS_EXPANDED = 32;
+     TVIS_EXPANDEDONCE = 64;
+     TVIS_FOCUSED = 1;
+     TVIS_OVERLAYMASK = 3840;
+     TVIS_SELECTED = 2;
+     TVIS_STATEIMAGEMASK = 61440;
+     TVIS_USERMASK = 61440;
+  { TV_ITEM structure  }
+     TVIF_CHILDREN = 64;
+     TVIF_HANDLE = 16;
+     TVIF_IMAGE = 2;
+     TVIF_PARAM = 4;
+     TVIF_SELECTEDIMAGE = 32;
+     TVIF_STATE = 8;
+     TVIF_TEXT = 1;
+     I_CHILDRENCALLBACK = -(1);
+     I_IMAGECALLBACK = -(1);
+  { TV_INSERTSTRUCT structure  }
+    { added manually PM, TREEITEM is not defined in the C headers }
+     type
+       HTREEITEM = THandle;
+
+  const
+    TVI_ROOT = HTREEITEM($FFFF0000);
+    TVI_FIRST =HTREEITEM($FFFF0001);
+    TVI_LAST = HTREEITEM($FFFF0002);
+    TVI_SORT = HTREEITEM($FFFF0003);
+
+  { TV_HITTESTINFO structure  }
+
+  const
+     TVHT_ABOVE = 256;
+     TVHT_BELOW = 512;
+     TVHT_NOWHERE = 1;
+     TVHT_ONITEM = 70;
+     TVHT_ONITEMBUTTON = 16;
+     TVHT_ONITEMICON = 2;
+     TVHT_ONITEMINDENT = 8;
+     TVHT_ONITEMLABEL = 4;
+     TVHT_ONITEMRIGHT = 32;
+     TVHT_ONITEMSTATEICON = 64;
+     TVHT_TOLEFT = 2048;
+     TVHT_TORIGHT = 1024;
+  { TVM_EXPAND message  }
+     TVE_COLLAPSE = 1;
+     TVE_COLLAPSERESET = 32768;
+     TVE_EXPAND = 2;
+     TVE_TOGGLE = 3;
+  { TVM_GETIMAGELIST message  }
+     TVSIL_NORMAL = 0;
+     TVSIL_STATE = 2;
+  { TVM_GETNEXTITEM message  }
+     TVGN_CARET = 9;
+     TVGN_CHILD = 4;
+     TVGN_DROPHILITE = 8;
+     TVGN_FIRSTVISIBLE = 5;
+     TVGN_NEXT = 1;
+     TVGN_NEXTVISIBLE = 6;
+     TVGN_PARENT = 3;
+     TVGN_PREVIOUS = 2;
+     TVGN_PREVIOUSVISIBLE = 7;
+     TVGN_ROOT = 0;
+  { TVN_SELCHANGED message  }
+     TVC_BYKEYBOARD = 2;
+     TVC_BYMOUSE = 1;
+     TVC_UNKNOWN = 0;
+  { Tab control styles  } //commctrl
+     TCS_RIGHTJUSTIFY = 0;
+     TCS_SINGLELINE = 0;
+     TCS_TABS = 0;
+     TCS_SCROLLOPPOSITE = $0001;  // assumes multiline tab
+     TCS_BOTTOM         = $0002;
+     TCS_RIGHT          = $0002;
+     TCS_MULTISELECT    = $0004;  // allow multi-select in button mode
+     TCS_FLATBUTTONS    = $0008;
+     TCS_FORCEICONLEFT  = 16;
+     TCS_FORCELABELLEFT = 32;
+     TCS_HOTTRACK       = $0040;
+     TCS_VERTICAL       = $0080;
+     TCS_BUTTONS = 256;
+     TCS_MULTILINE = 512;
+     TCS_FIXEDWIDTH = 1024;
+     TCS_RAGGEDRIGHT = 2048;
+     TCS_FOCUSONBUTTONDOWN = 4096;
+     TCS_OWNERDRAWFIXED = 8192;
+     TCS_TOOLTIPS= 16384;
+     TCS_FOCUSNEVER = 32768;
+
+     TCS_EX_FLATSEPARATORS = $00000001;
+
+  { TC_ITEM structure  }
+     TCIF_TEXT = 1;
+     TCIF_IMAGE = 2;
+     TCIF_PARAM = 8;
+     TCIF_RTLREADING = 4;
+  { TC_HITTESTINFO structure  }
+     TCHT_NOWHERE = 1;
+     TCHT_ONITEM = 6;
+     TCHT_ONITEMICON = 2;
+     TCHT_ONITEMLABEL = 4;
+  { Animation control styles  }
+     ACS_AUTOPLAY = 4;
+     ACS_CENTER = 1;
+     ACS_TRANSPARENT = 2;
+  { MODEMDEVCAPS structure  }
+     DIALOPTION_BILLING = 64;
+     DIALOPTION_QUIET = 128;
+     DIALOPTION_DIALTONE = 256;
+     MDMVOLFLAG_LOW = 1;
+     MDMVOLFLAG_MEDIUM = 2;
+     MDMVOLFLAG_HIGH = 4;
+     MDMVOL_LOW = 0;
+     MDMVOL_MEDIUM = 1;
+     MDMVOL_HIGH = 2;
+     MDMSPKRFLAG_OFF = 1;
+     MDMSPKRFLAG_DIAL = 2;
+     MDMSPKRFLAG_ON = 4;
+     MDMSPKRFLAG_CALLSETUP = 8;
+     MDMSPKR_OFF = 0;
+     MDMSPKR_DIAL = 1;
+     MDMSPKR_ON = 2;
+     MDMSPKR_CALLSETUP = 3;
+     MDM_BLIND_DIAL = 512;
+     MDM_CCITT_OVERRIDE = 64;
+     MDM_CELLULAR = 8;
+     MDM_COMPRESSION = 1;
+     MDM_ERROR_CONTROL = 2;
+     MDM_FLOWCONTROL_HARD = 16;
+     MDM_FLOWCONTROL_SOFT = 32;
+     MDM_FORCED_EC = 4;
+     MDM_SPEED_ADJUST = 128;
+     MDM_TONE_DIAL = 256;
+     MDM_V23_OVERRIDE = 1024;
+  { Languages  }
+   //
+   //  Language IDs.
+   //
+   //  The following two combinations of primary language ID and
+   //  sublanguage ID have special semantics:
+   //
+   //    Primary Language ID   Sublanguage ID      Result
+   //    -------------------   ---------------     ------------------------
+   //    LANG_NEUTRAL          SUBLANG_NEUTRAL     Language neutral
+   //    LANG_NEUTRAL          SUBLANG_DEFAULT     User default language
+   //    LANG_NEUTRAL          SUBLANG_SYS_DEFAULT System default language
+   //    LANG_INVARIANT        SUBLANG_NEUTRAL     Invariant locale
+   //
+
+   //
+   //  Primary language IDs.
+   //
+
+     LANG_NEUTRAL    = $00;
+     LANG_INVARIANT  = $7f;
+
+     LANG_AFRIKAANS  = $36;
+     LANG_ALBANIAN   = $1c;
+     LANG_ARABIC     = $01;
+     LANG_ARMENIAN   = $2b;
+     LANG_ASSAMESE   = $4d;
+     LANG_AZERI      = $2c;
+     LANG_BASQUE     = $2d;
+     LANG_BELARUSIAN = $23;
+     LANG_BENGALI    = $45;
+     LANG_BULGARIAN  = $02;
+     LANG_CATALAN    = $03;
+     LANG_CHINESE    = $04;
+     LANG_CROATIAN   = $1a;
+     LANG_CZECH      = $05;
+     LANG_DANISH     = $06;
+     LANG_DIVEHI     = $65;
+     LANG_DUTCH      = $13;
+     LANG_ENGLISH    = $09;
+     LANG_ESTONIAN   = $25;
+     LANG_FAEROESE   = $38;
+     LANG_FARSI      = $29;
+     LANG_FINNISH    = $0b;
+     LANG_FRENCH     = $0c;
+     LANG_GALICIAN   = $56;
+     LANG_GEORGIAN   = $37;
+     LANG_GERMAN     = $07;
+     LANG_GREEK      = $08;
+     LANG_GUJARATI   = $47;
+     LANG_HEBREW     = $0d;
+     LANG_HINDI      = $39;
+     LANG_HUNGARIAN  = $0e;
+     LANG_ICELANDIC  = $0f;
+     LANG_INDONESIAN = $21;
+     LANG_ITALIAN    = $10;
+     LANG_JAPANESE   = $11;
+     LANG_KANNADA    = $4b;
+     LANG_KASHMIRI   = $60;
+     LANG_KAZAK      = $3f;
+     LANG_KONKANI    = $57;
+     LANG_KOREAN     = $12;
+     LANG_KYRGYZ     = $40;
+     LANG_LATVIAN    = $26;
+     LANG_LITHUANIAN = $27;
+     LANG_MACEDONIAN = $2f;            // the Former Yugoslav Republic of Macedonia
+     LANG_MALAY      = $3e;
+     LANG_MALAYALAM  = $4c;
+     LANG_MANIPURI   = $58;
+     LANG_MARATHI    = $4e;
+     LANG_MONGOLIAN  = $50;
+     LANG_NEPALI     = $61;
+     LANG_NORWEGIAN  = $14;
+     LANG_ORIYA      = $48;
+     LANG_POLISH     = $15;
+     LANG_PORTUGUESE = $16;
+     LANG_PUNJABI    = $46;
+     LANG_ROMANIAN   = $18;
+     LANG_RUSSIAN    = $19;
+     LANG_SANSKRIT   = $4f;
+     LANG_SERBIAN    = $1a;
+     LANG_SINDHI     = $59;
+     LANG_SLOVAK     = $1b;
+     LANG_SLOVENIAN  = $24;
+     LANG_SPANISH    = $0a;
+     LANG_SWAHILI    = $41;
+     LANG_SWEDISH    = $1d;
+     LANG_SYRIAC     = $5a;
+     LANG_TAMIL      = $49;
+     LANG_TATAR      = $44;
+     LANG_TELUGU     = $4a;
+     LANG_THAI       = $1e;
+     LANG_TURKISH    = $1f;
+     LANG_UKRAINIAN  = $22;
+     LANG_URDU       = $20;
+     LANG_UZBEK      = $43;
+     LANG_VIETNAMESE = $2a;
+
+   //
+   //  Sublanguage IDs.
+   //
+   //  The name immediately following SUBLANG_ dictates which primary
+   //  language ID that sublanguage ID can be combined with to form a
+   //  valid language ID.
+   //
+
+     SUBLANG_NEUTRAL     = $00; // language neutral
+     SUBLANG_DEFAULT     = $01; // user default
+     SUBLANG_SYS_DEFAULT = $02; // system default
+
+     SUBLANG_ARABIC_SAUDI_ARABIA        = $01; // Arabic (Saudi Arabia)
+     SUBLANG_ARABIC_IRAQ                = $02; // Arabic (Iraq)
+     SUBLANG_ARABIC_EGYPT               = $03; // Arabic (Egypt)
+     SUBLANG_ARABIC_LIBYA               = $04; // Arabic (Libya)
+     SUBLANG_ARABIC_ALGERIA             = $05; // Arabic (Algeria)
+     SUBLANG_ARABIC_MOROCCO             = $06; // Arabic (Morocco)
+     SUBLANG_ARABIC_TUNISIA             = $07; // Arabic (Tunisia)
+     SUBLANG_ARABIC_OMAN                = $08; // Arabic (Oman)
+     SUBLANG_ARABIC_YEMEN               = $09; // Arabic (Yemen)
+     SUBLANG_ARABIC_SYRIA               = $0a; // Arabic (Syria)
+     SUBLANG_ARABIC_JORDAN              = $0b; // Arabic (Jordan)
+     SUBLANG_ARABIC_LEBANON             = $0c; // Arabic (Lebanon)
+     SUBLANG_ARABIC_KUWAIT              = $0d; // Arabic (Kuwait)
+     SUBLANG_ARABIC_UAE                 = $0e; // Arabic (U.A.E)
+     SUBLANG_ARABIC_BAHRAIN             = $0f; // Arabic (Bahrain)
+     SUBLANG_ARABIC_QATAR               = $10; // Arabic (Qatar)
+     SUBLANG_AZERI_LATIN                = $01; // Azeri (Latin)
+     SUBLANG_AZERI_CYRILLIC             = $02; // Azeri (Cyrillic)
+     SUBLANG_CHINESE_TRADITIONAL        = $01; // Chinese (Taiwan)
+     SUBLANG_CHINESE_SIMPLIFIED         = $02; // Chinese (PR China)
+     SUBLANG_CHINESE_HONGKONG           = $03; // Chinese (Hong Kong S.A.R., P.R.C.)
+     SUBLANG_CHINESE_SINGAPORE          = $04; // Chinese (Singapore)
+     SUBLANG_CHINESE_MACAU              = $05; // Chinese (Macau S.A.R.)
+     SUBLANG_DUTCH                      = $01; // Dutch
+     SUBLANG_DUTCH_BELGIAN              = $02; // Dutch (Belgian)
+     SUBLANG_ENGLISH_US                 = $01; // English (USA)
+     SUBLANG_ENGLISH_UK                 = $02; // English (UK)
+     SUBLANG_ENGLISH_AUS                = $03; // English (Australian)
+     SUBLANG_ENGLISH_CAN                = $04; // English (Canadian)
+     SUBLANG_ENGLISH_NZ                 = $05; // English (New Zealand)
+     SUBLANG_ENGLISH_EIRE               = $06; // English (Irish)
+     SUBLANG_ENGLISH_SOUTH_AFRICA       = $07; // English (South Africa)
+     SUBLANG_ENGLISH_JAMAICA            = $08; // English (Jamaica)
+     SUBLANG_ENGLISH_CARIBBEAN          = $09; // English (Caribbean)
+     SUBLANG_ENGLISH_BELIZE             = $0a; // English (Belize)
+     SUBLANG_ENGLISH_TRINIDAD           = $0b; // English (Trinidad)
+     SUBLANG_ENGLISH_ZIMBABWE           = $0c; // English (Zimbabwe)
+     SUBLANG_ENGLISH_PHILIPPINES        = $0d; // English (Philippines)
+     SUBLANG_FRENCH                     = $01; // French
+     SUBLANG_FRENCH_BELGIAN             = $02; // French (Belgian)
+     SUBLANG_FRENCH_CANADIAN            = $03; // French (Canadian)
+     SUBLANG_FRENCH_SWISS               = $04; // French (Swiss)
+     SUBLANG_FRENCH_LUXEMBOURG          = $05; // French (Luxembourg)
+     SUBLANG_FRENCH_MONACO              = $06; // French (Monaco)
+     SUBLANG_GERMAN                     = $01; // German
+     SUBLANG_GERMAN_SWISS               = $02; // German (Swiss)
+     SUBLANG_GERMAN_AUSTRIAN            = $03; // German (Austrian)
+     SUBLANG_GERMAN_LUXEMBOURG          = $04; // German (Luxembourg)
+     SUBLANG_GERMAN_LIECHTENSTEIN       = $05; // German (Liechtenstein)
+     SUBLANG_ITALIAN                    = $01; // Italian
+     SUBLANG_ITALIAN_SWISS              = $02; // Italian (Swiss)
+     SUBLANG_KASHMIRI_SASIA             = $02; // Kashmiri (South Asia)
+     SUBLANG_KASHMIRI_INDIA             = $02; // For app compatibility only
+     SUBLANG_KOREAN                     = $01; // Korean (Extended Wansung)
+     SUBLANG_LITHUANIAN                 = $01; // Lithuanian
+     SUBLANG_MALAY_MALAYSIA             = $01; // Malay (Malaysia)
+     SUBLANG_MALAY_BRUNEI_DARUSSALAM    = $02; // Malay (Brunei Darussalam)
+     SUBLANG_NEPALI_INDIA               = $02; // Nepali (India)
+     SUBLANG_NORWEGIAN_BOKMAL           = $01; // Norwegian (Bokmal)
+     SUBLANG_NORWEGIAN_NYNORSK          = $02; // Norwegian (Nynorsk)
+     SUBLANG_PORTUGUESE                 = $02; // Portuguese
+     SUBLANG_PORTUGUESE_BRAZILIAN       = $01; // Portuguese (Brazilian)
+     SUBLANG_SERBIAN_LATIN              = $02; // Serbian (Latin)
+     SUBLANG_SERBIAN_CYRILLIC           = $03; // Serbian (Cyrillic)
+     SUBLANG_SPANISH                    = $01; // Spanish (Castilian)
+     SUBLANG_SPANISH_MEXICAN            = $02; // Spanish (Mexican)
+     SUBLANG_SPANISH_MODERN             = $03; // Spanish (Spain)
+     SUBLANG_SPANISH_GUATEMALA          = $04; // Spanish (Guatemala)
+     SUBLANG_SPANISH_COSTA_RICA         = $05; // Spanish (Costa Rica)
+     SUBLANG_SPANISH_PANAMA             = $06; // Spanish (Panama)
+     SUBLANG_SPANISH_DOMINICAN_REPUBLIC = $07; // Spanish (Dominican Republic)
+     SUBLANG_SPANISH_VENEZUELA          = $08; // Spanish (Venezuela)
+     SUBLANG_SPANISH_COLOMBIA           = $09; // Spanish (Colombia)
+     SUBLANG_SPANISH_PERU               = $0a; // Spanish (Peru)
+     SUBLANG_SPANISH_ARGENTINA          = $0b; // Spanish (Argentina)
+     SUBLANG_SPANISH_ECUADOR            = $0c; // Spanish (Ecuador)
+     SUBLANG_SPANISH_CHILE              = $0d; // Spanish (Chile)
+     SUBLANG_SPANISH_URUGUAY            = $0e; // Spanish (Uruguay)
+     SUBLANG_SPANISH_PARAGUAY           = $0f; // Spanish (Paraguay)
+     SUBLANG_SPANISH_BOLIVIA            = $10; // Spanish (Bolivia)
+     SUBLANG_SPANISH_EL_SALVADOR        = $11; // Spanish (El Salvador)
+     SUBLANG_SPANISH_HONDURAS           = $12; // Spanish (Honduras)
+     SUBLANG_SPANISH_NICARAGUA          = $13; // Spanish (Nicaragua)
+     SUBLANG_SPANISH_PUERTO_RICO        = $14; // Spanish (Puerto Rico)
+     SUBLANG_SWEDISH                    = $01; // Swedish
+     SUBLANG_SWEDISH_FINLAND            = $02; // Swedish (Finland)
+     SUBLANG_URDU_PAKISTAN              = $01; // Urdu (Pakistan)
+     SUBLANG_URDU_INDIA                 = $02; // Urdu (India)
+     SUBLANG_UZBEK_LATIN                = $01; // Uzbek (Latin)
+     SUBLANG_UZBEK_CYRILLIC             = $02; // Uzbek (Cyrillic)
+
+   //
+   //  Sorting IDs.
+   //
+
+     SORT_DEFAULT = $0; // sorting default
+
+     SORT_JAPANESE_XJIS    = $0; // Japanese XJIS order
+     SORT_JAPANESE_UNICODE = $1; // Japanese Unicode order
+
+     SORT_CHINESE_BIG5     = $0; // Chinese BIG5 order
+     SORT_CHINESE_PRCP     = $0; // PRC Chinese Phonetic order
+     SORT_CHINESE_UNICODE  = $1; // Chinese Unicode order
+     SORT_CHINESE_PRC      = $2; // PRC Chinese Stroke Count order
+     SORT_CHINESE_BOPOMOFO = $3; // Traditional Chinese Bopomofo order
+
+     SORT_KOREAN_KSC     = $0; // Korean KSC order
+     SORT_KOREAN_UNICODE = $1; // Korean Unicode order
+
+     SORT_GERMAN_PHONE_BOOK = $1; // German Phone Book order
+
+     SORT_HUNGARIAN_DEFAULT   = $0; // Hungarian Default order
+     SORT_HUNGARIAN_TECHNICAL = $1; // Hungarian Technical order
+
+     SORT_GEORGIAN_TRADITIONAL = $0; // Georgian Traditional order
+     SORT_GEORGIAN_MODERN      = $1; // Georgian Modern order
+
+
+  { SYSTEM_INFO structure  }
+     PROCESSOR_INTEL_386 = 386;
+     PROCESSOR_INTEL_486 = 486;
+     PROCESSOR_INTEL_PENTIUM = 586;
+     PROCESSOR_MIPS_R4000 = 4000;
+     PROCESSOR_ALPHA_21064 = 21064;
+  { FSCTL_SET_COMPRESSION  }
+     COMPRESSION_FORMAT_NONE = 0;
+     COMPRESSION_FORMAT_DEFAULT = 1;
+     COMPRESSION_FORMAT_LZNT1 = 2;
+  { TAPE_GET_DRIVE_PARAMETERS structure  }
+     TAPE_DRIVE_COMPRESSION = 131072;
+     TAPE_DRIVE_ECC = 65536;
+     TAPE_DRIVE_ERASE_BOP_ONLY = 64;
+     TAPE_DRIVE_ERASE_LONG = 32;
+     TAPE_DRIVE_ERASE_IMMEDIATE = 128;
+     TAPE_DRIVE_ERASE_SHORT = 16;
+     TAPE_DRIVE_FIXED = 1;
+     TAPE_DRIVE_FIXED_BLOCK = 1024;
+     TAPE_DRIVE_INITIATOR = 4;
+     TAPE_DRIVE_PADDING = 262144;
+     TAPE_DRIVE_GET_ABSOLUTE_BLK = 1048576;
+     TAPE_DRIVE_GET_LOGICAL_BLK = 2097152;
+     TAPE_DRIVE_REPORT_SMKS = 524288;
+     TAPE_DRIVE_SELECT = 2;
+     TAPE_DRIVE_SET_EOT_WZ_SIZE = 4194304;
+     TAPE_DRIVE_TAPE_CAPACITY = 256;
+     TAPE_DRIVE_TAPE_REMAINING = 512;
+     TAPE_DRIVE_VARIABLE_BLOCK = 2048;
+     TAPE_DRIVE_WRITE_PROTECT = 4096;
+     TAPE_DRIVE_ABS_BLK_IMMED = -(2147475456);
+     TAPE_DRIVE_ABSOLUTE_BLK = -(2147479552);
+     TAPE_DRIVE_END_OF_DATA = -(2147418112);
+     TAPE_DRIVE_FILEMARKS = -(2147221504);
+     TAPE_DRIVE_LOAD_UNLOAD = -(2147483647);
+     TAPE_DRIVE_LOAD_UNLD_IMMED = -(2147483616);
+     TAPE_DRIVE_LOCK_UNLOCK = -(2147483644);
+     TAPE_DRIVE_LOCK_UNLK_IMMED = -(2147483520);
+     TAPE_DRIVE_LOG_BLK_IMMED = -(2147450880);
+     TAPE_DRIVE_LOGICAL_BLK = -(2147467264);
+     TAPE_DRIVE_RELATIVE_BLKS = -(2147352576);
+     TAPE_DRIVE_REVERSE_POSITION = -(2143289344);
+     TAPE_DRIVE_REWIND_IMMEDIATE = -(2147483640);
+     TAPE_DRIVE_SEQUENTIAL_FMKS = -(2146959360);
+     TAPE_DRIVE_SEQUENTIAL_SMKS = -(2145386496);
+     TAPE_DRIVE_SET_BLOCK_SIZE = -(2147483632);
+     TAPE_DRIVE_SET_COMPRESSION = -(2147483136);
+     TAPE_DRIVE_SET_ECC = -(2147483392);
+     TAPE_DRIVE_SET_PADDING = -(2147482624);
+     TAPE_DRIVE_SET_REPORT_SMKS = -(2147481600);
+     TAPE_DRIVE_SETMARKS = -(2146435072);
+     TAPE_DRIVE_SPACE_IMMEDIATE = -(2139095040);
+     TAPE_DRIVE_TENSION = -(2147483646);
+     TAPE_DRIVE_TENSION_IMMED = -(2147483584);
+     TAPE_DRIVE_WRITE_FILEMARKS = -(2113929216);
+     TAPE_DRIVE_WRITE_LONG_FMKS = -(2013265920);
+     TAPE_DRIVE_WRITE_MARK_IMMED = -(1879048192);
+     TAPE_DRIVE_WRITE_SETMARKS = -(2130706432);
+     TAPE_DRIVE_WRITE_SHORT_FMKS = -(2080374784);
+  { ACCESS_MASK, ACCESS TYPES  }
+//     DELETE = $00010000;       //+winnt  // The name conflicts with Delete procedure
+     READ_CONTROL = $00020000; //+winnt
+     WRITE_DAC = $00040000;    //winnt
+     WRITE_OWNER = $00080000;  //winnt
+     SYNCHRONIZE = $00100000;  //winnt
+     //
+     // MaximumAllowed access type
+     //
+     MAXIMUM_ALLOWED = $2000000;   //winnt
+     GENERIC_READ = $80000000;     //winnt
+     GENERIC_WRITE = $40000000;    //winnt
+     GENERIC_EXECUTE = $20000000;  //+winnt
+     GENERIC_ALL = $10000000;      //winnt
+  { Standard rights  }
+     STANDARD_RIGHTS_REQUIRED = $f0000;      //winnt
+     STANDARD_RIGHTS_WRITE = READ_CONTROL;   //~winnt
+     STANDARD_RIGHTS_READ = READ_CONTROL;    //~winnt
+     STANDARD_RIGHTS_EXECUTE = READ_CONTROL; //~winnt
+     STANDARD_RIGHTS_ALL = $1f0000;
+     SPECIFIC_RIGHTS_ALL = $ffff;
+     //
+     // AccessSystemAcl access type
+     //
+     ACCESS_SYSTEM_SECURITY = $1000000;
+  { SID  }
+     /////////////////////////////////////////////////////////////////////////////
+     //                                                                         //
+     // Universal well-known SIDs                                               //
+     //                                                                         //
+     //     Null SID                     S-1-0-0                                //
+     //     World                        S-1-1-0                                //
+     //     Local                        S-1-2-0                                //
+     //     Creator Owner ID             S-1-3-0                                //
+     //     Creator Group ID             S-1-3-1                                //
+     //     Creator Owner Server ID      S-1-3-2                                //
+     //     Creator Group Server ID      S-1-3-3                                //
+     //                                                                         //
+     //     (Non-unique IDs)             S-1-4                                  //
+     //                                                                         //
+     /////////////////////////////////////////////////////////////////////////////
+
+     SECURITY_NULL_SID_AUTHORITY : SID_IDENTIFIER_AUTHORITY_REC = ( 0,0,0,0,0,0);  //+winnt
+     SECURITY_WORLD_SID_AUTHORITY : SID_IDENTIFIER_AUTHORITY_REC = (0,0,0,0,0,1);  //+winnt
+     SECURITY_LOCAL_SID_AUTHORITY : SID_IDENTIFIER_AUTHORITY_REC = (0,0,0,0,0,2);  //+winnt
+     SECURITY_CREATOR_SID_AUTHORITY : SID_IDENTIFIER_AUTHORITY_REC = (0,0,0,0,0,3);//+winnt
+     SECURITY_NON_UNIQUE_AUTHORITY : SID_IDENTIFIER_AUTHORITY_REC = (0,0,0,0,0,4); //+winnt
+     SECURITY_NULL_RID = 0;                  //winnt
+     SECURITY_WORLD_RID = 0;                 //winnt
+     SECURITY_LOCAL_RID = 0;                 //winnt
+     SECURITY_CREATOR_OWNER_RID = 0;         //winnt
+     SECURITY_CREATOR_GROUP_RID = $1;        //winnt
+     SECURITY_CREATOR_OWNER_SERVER_RID = $2; //+winnt
+     SECURITY_CREATOR_GROUP_SERVER_RID = $3; //+winnt
+     /////////////////////////////////////////////////////////////////////////////
+     //                                                                         //
+     // NT well-known SIDs                                                      //
+     //                                                                         //
+     //     NT Authority          S-1-5                                         //
+     //     Dialup                S-1-5-1                                       //
+     //                                                                         //
+     //     Network               S-1-5-2                                       //
+     //     Batch                 S-1-5-3                                       //
+     //     Interactive           S-1-5-4                                       //
+     //     Service               S-1-5-6                                       //
+     //     AnonymousLogon        S-1-5-7       (aka null logon session)        //
+     //     Proxy                 S-1-5-8                                       //
+     //     ServerLogon           S-1-5-9       (aka domain controller account) //
+     //     Self                  S-1-5-10      (self RID)                      //
+     //     Authenticated User    S-1-5-11      (Authenticated user somewhere)  //
+     //     Restricted Code       S-1-5-12      (Running restricted code)       //
+     //                                                                         //
+     //     (Logon IDs)           S-1-5-5-X-Y                                   //
+     //                                                                         //
+     //     (NT non-unique IDs)   S-1-5-0x15-...                                //
+     //                                                                         //
+     //     (Built-in domain)     s-1-5-0x20                                    //
+     //                                                                         //
+     /////////////////////////////////////////////////////////////////////////////
+     SECURITY_NT_AUTHORITY : SID_IDENTIFIER_AUTHORITY_REC = (0,0,0,0,0,5); //+winnt
+
+     SECURITY_DIALUP_RID                 = $1;        //winnt
+     SECURITY_NETWORK_RID                = $2;        //winnt
+     SECURITY_BATCH_RID                  = $3;        //winnt
+     SECURITY_INTERACTIVE_RID            = $4;        //winnt
+     SECURITY_LOGON_IDS_RID              = $5;        //winnt
+     SECURITY_LOGON_IDS_RID_COUNT        = $3;        //winnt
+     SECURITY_SERVICE_RID                = $6;        //winnt
+     SECURITY_ANONYMOUS_LOGON_RID        = $00000007; //+winnt
+     SECURITY_PROXY_RID                  = $00000008; //+winnt
+     SECURITY_ENTERPRISE_CONTROLLERS_RID = $00000009; //+winnt
+     SECURITY_SERVER_LOGON_RID           = SECURITY_ENTERPRISE_CONTROLLERS_RID; //+winnt
+     SECURITY_PRINCIPAL_SELF_RID         = $0000000A; //+winnt
+     SECURITY_AUTHENTICATED_USER_RID     = $0000000B; //+winnt
+     SECURITY_RESTRICTED_CODE_RID        = $0000000C; //+winnt
+
+     SECURITY_LOCAL_SYSTEM_RID           = $12;       //winnt
+     SECURITY_NT_NON_UNIQUE              = $00000015; //+winnt
+     SECURITY_BUILTIN_DOMAIN_RID         = $20;       //winnt
+     // Well-known users ...
+     DOMAIN_USER_RID_ADMIN               = $1f4;      //winnt
+     DOMAIN_USER_RID_GUEST               = $1f5;      //winnt
+     DOMAIN_USER_RID_KRBTGT              = $000001F6; //+winnt
+     // well-known groups ...
+     DOMAIN_GROUP_RID_ADMINS             = $200;      //winnt
+     DOMAIN_GROUP_RID_USERS              = $201;      //winnt
+     DOMAIN_GROUP_RID_GUESTS             = $00000202; //+winnt
+     DOMAIN_GROUP_RID_COMPUTERS          = $00000203; //+winnt
+     DOMAIN_GROUP_RID_CONTROLLERS        = $00000204; //+winnt
+     DOMAIN_GROUP_RID_CERT_ADMINS        = $00000205; //+winnt
+     DOMAIN_GROUP_RID_SCHEMA_ADMINS      = $00000206; //+winnt
+     DOMAIN_GROUP_RID_ENTERPRISE_ADMINS  = $00000207; //+winnt
+     // well-known aliases ...
+     DOMAIN_ALIAS_RID_ADMINS = $220;                  //winnt
+     DOMAIN_ALIAS_RID_USERS = $221;                   //winnt
+     DOMAIN_ALIAS_RID_GUESTS = $222;                  //winnt
+     DOMAIN_ALIAS_RID_POWER_USERS = $223;             //winnt
+     DOMAIN_ALIAS_RID_ACCOUNT_OPS = $224;             //winnt
+     DOMAIN_ALIAS_RID_SYSTEM_OPS = $225;              //winnt
+     DOMAIN_ALIAS_RID_PRINT_OPS = $226;               //winnt
+     DOMAIN_ALIAS_RID_BACKUP_OPS = $227;              //winnt
+     DOMAIN_ALIAS_RID_REPLICATOR = $228;              //winnt
+
+     //
+     // Allocate the System Luid.  The first 1000 LUIDs are reserved.
+     // Use #999 here (0x3E7 = 999)
+     //
+     SYSTEM_LUID : LUID = ( LowPart: $3E7; HighPart: $0 );
+     ANONYMOUS_LOGON_LUID : LUID = (LowPart: $3e6; HighPart: $0 );
+
+     //
+     // Group attributes
+     //
+     SE_GROUP_MANDATORY = $1;                         //winnt
+     SE_GROUP_ENABLED_BY_DEFAULT = $2;                //winnt
+     SE_GROUP_ENABLED = $4;                           //winnt
+     SE_GROUP_OWNER = $8;                             //winnt
+     SE_GROUP_USE_FOR_DENY_ONLY = $00000010;          //+winnt
+     SE_GROUP_LOGON_ID = $c0000000;                   //winnt
+
+  { ACL Defines  }
+     ACL_REVISION = 2;
+     ACL_REVISION_DS = 4;             //+winnt
+     // This is the history of ACL revisions.  Add a new one whenever
+     // ACL_REVISION is updated
+     ACL_REVISION1=1;                 //+winnt
+     ACL_REVISION2=2;                 //+winnt
+     ACL_REVISION3=3;                 //+winnt
+     ACL_REVISION4=4;                 //+winnt
+     MIN_ACL_REVISION=ACL_REVISION2;  //+winnt
+     MAX_ACL_REVISION=ACL_REVISION4;  //+winnt
+  { ACE_HEADER structure  }
+     ACCESS_MIN_MS_ACE_TYPE  = $0;          //+winnt
+     ACCESS_ALLOWED_ACE_TYPE = $0;
+     ACCESS_DENIED_ACE_TYPE = $1;
+     SYSTEM_AUDIT_ACE_TYPE = $2;
+     SYSTEM_ALARM_ACE_TYPE = $3;
+     ACCESS_MAX_MS_V2_ACE_TYPE = $3;        //+winnt
+     ACCESS_ALLOWED_COMPOUND_ACE_TYPE = $4; //+winnt
+     ACCESS_MAX_MS_V3_ACE_TYPE = $4;
+
+     ACCESS_MIN_MS_OBJECT_ACE_TYPE = $5;    //+winnt
+     ACCESS_ALLOWED_OBJECT_ACE_TYPE = $5;   //+winnt
+     ACCESS_DENIED_OBJECT_ACE_TYPE = $6;    //+winnt
+     SYSTEM_AUDIT_OBJECT_ACE_TYPE = $7;     //+winnt
+     SYSTEM_ALARM_OBJECT_ACE_TYPE = $8;     //+winnt
+     ACCESS_MAX_MS_OBJECT_ACE_TYPE = $8;    //+winnt
+
+     ACCESS_MAX_MS_V4_ACE_TYPE = $8;        //+winnt
+     ACCESS_MAX_MS_ACE_TYPE = $8;           //+winnt
+
+  { ACE flags in the ACE_HEADER structure  }
+     //
+     //  The following are the inherit flags that go into the AceFlags field
+     //  of an Ace header.
+     //
+     OBJECT_INHERIT_ACE = $1;              //winnt
+     CONTAINER_INHERIT_ACE = $2;           //winnt
+     NO_PROPAGATE_INHERIT_ACE = $4;        //winnt
+     INHERIT_ONLY_ACE = $8;                //winnt
+     INHERITED_ACE = $10;                  //+winnt
+     VALID_INHERIT_FLAGS = $1F;            //+winnt
+     //  The following are the currently defined ACE flags that go into the
+     //  AceFlags field of an ACE header.  Each ACE type has its own set of
+     //  AceFlags.
+     //
+     //  SUCCESSFUL_ACCESS_ACE_FLAG - used only with system audit and alarm ACE
+     //  types to indicate that a message is generated for successful accesses.
+     //
+     //  FAILED_ACCESS_ACE_FLAG - used only with system audit and alarm ACE types
+     //  to indicate that a message is generated for failed accesses.
+     //
+     //
+     //  SYSTEM_AUDIT and SYSTEM_ALARM AceFlags
+     //
+     //  These control the signaling of audit and alarms for success or failure.
+     //
+     SUCCESSFUL_ACCESS_ACE_FLAG = $40;     //winnt
+     FAILED_ACCESS_ACE_FLAG = $80;         //winnt
+  { SECURITY_DESCRIPTOR_CONTROL  }
+     {SECURITY_DESCRIPTOR_REVISION = 1;already defined above }
+     SECURITY_DESCRIPTOR_MIN_LENGTH = 20;
+     SE_OWNER_DEFAULTED = 1;
+     SE_GROUP_DEFAULTED = 2;
+     SE_DACL_PRESENT = 4;
+     SE_DACL_DEFAULTED = 8;
+     SE_SACL_PRESENT = 16;
+     SE_SACL_DEFAULTED = 32;
+     SE_SELF_RELATIVE = 32768;
+  { PRIVILEGE_SET  }
+     SE_PRIVILEGE_ENABLED_BY_DEFAULT = $1;
+     SE_PRIVILEGE_ENABLED = $2;
+     SE_PRIVILEGE_USED_FOR_ACCESS = $80000000;
+     PRIVILEGE_SET_ALL_NECESSARY = $1;
+  { OPENFILENAME structure  }
+     OFN_ALLOWMULTISELECT = $200;
+     OFN_CREATEPROMPT = $2000;
+     OFN_ENABLEHOOK = $20;
+     OFN_ENABLETEMPLATE = $40;
+     OFN_ENABLETEMPLATEHANDLE = $80;
+     OFN_EXPLORER = $80000;
+     OFN_EXTENSIONDIFFERENT = $400;
+     OFN_FILEMUSTEXIST = $1000;
+     OFN_HIDEREADONLY = $4;
+     OFN_LONGNAMES = $200000;
+     OFN_NOCHANGEDIR = $8;
+     OFN_NODEREFERENCELINKS = $100000;
+     OFN_NOLONGNAMES = $40000;
+     OFN_NONETWORKBUTTON = $20000;
+     OFN_NOREADONLYRETURN = $8000;
+     OFN_NOTESTFILECREATE = $10000;
+     OFN_NOVALIDATE = $100;
+     OFN_OVERWRITEPROMPT = $2;
+     OFN_PATHMUSTEXIST = $800;
+     OFN_READONLY = $1;
+     OFN_SHAREAWARE = $4000;
+     OFN_SHOWHELP = $10;
+     OFN_PROJECT  = $00400000;
+     OFN_PROPERTY = $00800000;
+     OFN_SHOW_ALL = $01000000;
+  { SHAREVISTRING message  }
+     OFN_SHAREFALLTHROUGH = $2;
+     OFN_SHARENOWARN = $1;
+     OFN_SHAREWARN = 0;
+  { Open/Save notifications  }
+     CDN_INITDONE = $fffffda7;
+     CDN_SELCHANGE = $fffffda6;
+     CDN_FOLDERCHANGE = $fffffda5;
+     CDN_SHAREVIOLATION = $fffffda4;
+     CDN_HELP = $fffffda3;
+     CDN_FILEOK = $fffffda2;
+     CDN_TYPECHANGE = $fffffda1;
+  { Open/Save messages  }
+     CDM_GETFILEPATH = $465;
+     CDM_GETFOLDERIDLIST = $467;
+     CDM_GETFOLDERPATH = $466;
+     CDM_GETSPEC = $464;
+     CDM_HIDECONTROL = $469;
+     CDM_SETCONTROLTEXT = $468;
+     CDM_SETDEFEXT = $46a;
+  { CHOOSECOLOR structure  }
+     CC_ENABLEHOOK = $10;
+     CC_ENABLETEMPLATE = $20;
+     CC_ENABLETEMPLATEHANDLE = $40;
+     CC_FULLOPEN = $2;
+     CC_PREVENTFULLOPEN = $4;
+     CC_RGBINIT = $1;
+     CC_SHOWHELP = $8;
+     CC_SOLIDCOLOR = $80;
+  { FINDREPLACE structure  }
+     FR_DIALOGTERM = $40;
+     FR_DOWN = $1;
+     FR_ENABLEHOOK = $100;
+     FR_ENABLETEMPLATE = $200;
+     FR_ENABLETEMPLATEHANDLE = $2000;
+     FR_FINDNEXT = $8;
+     FR_HIDEUPDOWN = $4000;
+     FR_HIDEMATCHCASE = $8000;
+     FR_HIDEWHOLEWORD = $10000;
+     FR_MATCHCASE = $4;
+     FR_NOMATCHCASE = $800;
+     FR_NOUPDOWN = $400;
+     FR_NOWHOLEWORD = $1000;
+     FR_REPLACE = $10;
+     FR_REPLACEALL = $20;
+     FR_SHOWHELP = $80;
+     FR_WHOLEWORD = $2;
+  { CHOOSEFONT structure  }
+     CF_APPLY = $200;
+     CF_ANSIONLY = $400;
+     CF_BOTH = $3;
+     CF_TTONLY = $40000;
+     CF_EFFECTS = $100;
+     CF_ENABLEHOOK = $8;
+     CF_ENABLETEMPLATE = $10;
+     CF_ENABLETEMPLATEHANDLE = $20;
+     CF_FIXEDPITCHONLY = $4000;
+     CF_FORCEFONTEXIST = $10000;
+     CF_INITTOLOGFONTSTRUCT = $40;
+     CF_LIMITSIZE = $2000;
+     CF_NOOEMFONTS = $800;
+     CF_NOFACESEL = $80000;
+     CF_NOSCRIPTSEL = $800000;
+     CF_NOSTYLESEL = $100000;
+     CF_NOSIZESEL = $200000;
+     CF_NOSIMULATIONS = $1000;
+     CF_NOVECTORFONTS = $800;
+     CF_NOVERTFONTS = $1000000;
+     CF_PRINTERFONTS = $2;
+     CF_SCALABLEONLY = $20000;
+     CF_SCREENFONTS = $1;
+     CF_SCRIPTSONLY = $400;
+     CF_SELECTSCRIPT = $400000;
+     CF_SHOWHELP = $4;
+     CF_USESTYLE = $80;
+     CF_WYSIWYG = $8000;
+     BOLD_FONTTYPE = $100;
+     ITALIC_FONTTYPE = $200;
+     PRINTER_FONTTYPE = $4000;
+     REGULAR_FONTTYPE = $400;
+     SCREEN_FONTTYPE = $2000;
+     SIMULATED_FONTTYPE = $8000;
+  { Common dialog messages  }
+     COLOROKSTRINGW = 'commdlg_ColorOK';
+     FILEOKSTRINGW = 'commdlg_FileNameOK';
+     FINDMSGSTRINGW = 'commdlg_FindReplace';
+     HELPMSGSTRINGW = 'commdlg_help';
+     LBSELCHSTRINGW = 'commdlg_LBSelChangedNotify';
+     SETRGBSTRINGW = 'commdlg_SetRGBColor';
+     SHAREVISTRINGW = 'commdlg_ShareViolation';
+     COLOROKSTRINGA = 'commdlg_ColorOK';
+     FILEOKSTRINGA = 'commdlg_FileNameOK';
+     FINDMSGSTRINGA = 'commdlg_FindReplace';
+     HELPMSGSTRINGA = 'commdlg_help';
+     LBSELCHSTRINGA = 'commdlg_LBSelChangedNotify';
+     SETRGBSTRINGA = 'commdlg_SetRGBColor';
+     SHAREVISTRINGA = 'commdlg_ShareViolation';
+{$ifdef UNICODE}
+
+  const
+     COLOROKSTRING = COLOROKSTRINGW;
+     FILEOKSTRING = FILEOKSTRINGW;
+     FINDMSGSTRING = FINDMSGSTRINGW;
+     HELPMSGSTRING = HELPMSGSTRINGW;
+     LBSELCHSTRING = LBSELCHSTRINGW;
+     SETRGBSTRING = SETRGBSTRINGW;
+     SHAREVISTRING = SHAREVISTRINGW;
+{$else}
+
+  const
+     COLOROKSTRING = COLOROKSTRINGA;
+     FILEOKSTRING = FILEOKSTRINGA;
+     FINDMSGSTRING = FINDMSGSTRINGA;
+     HELPMSGSTRING = HELPMSGSTRINGA;
+     LBSELCHSTRING = LBSELCHSTRINGA;
+     SETRGBSTRING = SETRGBSTRINGA;
+     SHAREVISTRING = SHAREVISTRINGA;
+{$endif}
+  { LBSELCHSTRING message  }
+
+  const
+     CD_LBSELCHANGE = 0;
+     CD_LBSELADD = 2;
+     CD_LBSELSUB = 1;
+     CD_LBSELNOITEMS = -(1);
+  { DEVNAMES structure  }
+     DN_DEFAULTPRN = 1;
+  { PRINTDLG structure  }
+     PD_ALLPAGES = 0;
+     PD_COLLATE = 16;
+     PD_DISABLEPRINTTOFILE = 524288;
+     PD_ENABLEPRINTHOOK = 4096;
+     PD_ENABLEPRINTTEMPLATE = 16384;
+     PD_ENABLEPRINTTEMPLATEHANDLE = 65536;
+     PD_ENABLESETUPHOOK = 8192;
+     PD_ENABLESETUPTEMPLATE = 32768;
+     PD_ENABLESETUPTEMPLATEHANDLE = 131072;
+     PD_HIDEPRINTTOFILE = 1048576;
+     PD_NOPAGENUMS = 8;
+     PD_NOSELECTION = 4;
+     PD_NOWARNING = 128;
+     PD_PAGENUMS = 2;
+     PD_PRINTSETUP = 64;
+     PD_PRINTTOFILE = 32;
+     PD_RETURNDC = 256;
+     PD_RETURNDEFAULT = 1024;
+     PD_RETURNIC = 512;
+     PD_SELECTION = 1;
+     PD_SHOWHELP = 2048;
+     PD_USEDEVMODECOPIES = 262144;
+     PD_USEDEVMODECOPIESANDCOLLATE = 262144;
+  { PAGESETUPDLG structure  }
+     PSD_DEFAULTMINMARGINS = 0;
+     PSD_DISABLEMARGINS = 16;
+     PSD_DISABLEORIENTATION = 256;
+     PSD_DISABLEPAGEPAINTING = 524288;
+     PSD_DISABLEPAPER = 512;
+     PSD_DISABLEPRINTER = 32;
+     PSD_ENABLEPAGEPAINTHOOK = 262144;
+     PSD_ENABLEPAGESETUPHOOK = 8192;
+     PSD_ENABLEPAGESETUPTEMPLATE = 32768;
+     PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 131072;
+     PSD_INHUNDREDTHSOFMILLIMETERS = 8;
+     PSD_INTHOUSANDTHSOFINCHES = 4;
+     PSD_INWININIINTLMEASURE = 0;
+     PSD_MARGINS = 2;
+     PSD_MINMARGINS = 1;
+     PSD_NOWARNING = 128;
+     PSD_RETURNDEFAULT = 1024;
+     PSD_SHOWHELP = 2048;
+  { WM_SHOWWINDOW message  }
+     SW_OTHERUNZOOM = 4;
+     SW_OTHERZOOM = 2;
+     SW_PARENTCLOSING = 1;
+     SW_PARENTOPENING = 3;
+  { Virtual Key codes  }
+     VK_LBUTTON = 1;
+     VK_RBUTTON = 2;
+     VK_CANCEL = 3;
+     VK_MBUTTON = 4;
+     VK_BACK = 8;
+     VK_TAB = 9;
+     VK_CLEAR = 12;
+     VK_RETURN = 13;
+     VK_SHIFT = 16;
+     VK_CONTROL = 17;
+     VK_MENU = 18;
+     VK_PAUSE = 19;
+     VK_CAPITAL = 20;
+     VK_ESCAPE = 27;
+     VK_SPACE = 32;
+     VK_PRIOR = 33;
+     VK_NEXT = 34;
+     VK_END = 35;
+     VK_HOME = 36;
+     VK_LEFT = 37;
+     VK_UP = 38;
+     VK_RIGHT = 39;
+     VK_DOWN = 40;
+     VK_SELECT = 41;
+     VK_PRINT = 42;
+     VK_EXECUTE = 43;
+     VK_SNAPSHOT = 44;
+     VK_INSERT = 45;
+     VK_DELETE = 46;
+     VK_HELP = 47;
+     VK_0 = 48;
+     VK_1 = 49;
+     VK_2 = 50;
+     VK_3 = 51;
+     VK_4 = 52;
+     VK_5 = 53;
+     VK_6 = 54;
+     VK_7 = 55;
+     VK_8 = 56;
+     VK_9 = 57;
+     VK_A = 65;
+     VK_B = 66;
+     VK_C = 67;
+     VK_D = 68;
+     VK_E = 69;
+     VK_F = 70;
+     VK_G = 71;
+     VK_H = 72;
+     VK_I = 73;
+     VK_J = 74;
+     VK_K = 75;
+     VK_L = 76;
+     VK_M = 77;
+     VK_N = 78;
+     VK_O = 79;
+     VK_P = 80;
+     VK_Q = 81;
+     VK_R = 82;
+     VK_S = 83;
+     VK_T = 84;
+     VK_U = 85;
+     VK_V = 86;
+     VK_W = 87;
+     VK_X = 88;
+     VK_Y = 89;
+     VK_Z = 90;
+     VK_LWIN = 91;
+     VK_RWIN = 92;
+     VK_APPS = 93;
+     VK_NUMPAD0 = 96;
+     VK_NUMPAD1 = 97;
+     VK_NUMPAD2 = 98;
+     VK_NUMPAD3 = 99;
+     VK_NUMPAD4 = 100;
+     VK_NUMPAD5 = 101;
+     VK_NUMPAD6 = 102;
+     VK_NUMPAD7 = 103;
+     VK_NUMPAD8 = 104;
+     VK_NUMPAD9 = 105;
+     VK_MULTIPLY = 106;
+     VK_ADD = 107;
+     VK_SEPARATOR = 108;
+     VK_SUBTRACT = 109;
+     VK_DECIMAL = 110;
+     VK_DIVIDE = 111;
+     VK_F1 = 112;
+     VK_F2 = 113;
+     VK_F3 = 114;
+     VK_F4 = 115;
+     VK_F5 = 116;
+     VK_F6 = 117;
+     VK_F7 = 118;
+     VK_F8 = 119;
+     VK_F9 = 120;
+     VK_F10 = 121;
+     VK_F11 = 122;
+     VK_F12 = 123;
+     VK_F13 = 124;
+     VK_F14 = 125;
+     VK_F15 = 126;
+     VK_F16 = 127;
+     VK_F17 = 128;
+     VK_F18 = 129;
+     VK_F19 = 130;
+     VK_F20 = 131;
+     VK_F21 = 132;
+     VK_F22 = 133;
+     VK_F23 = 134;
+     VK_F24 = 135;
+  { GetAsyncKeyState  }
+     VK_NUMLOCK = 144;
+     VK_SCROLL = 145;
+     VK_LSHIFT = 160;
+     VK_LCONTROL = 162;
+     VK_LMENU = 164;
+     VK_RSHIFT = 161;
+     VK_RCONTROL = 163;
+     VK_RMENU = 165;
+  { ImmGetVirtualKey  }
+     VK_PROCESSKEY = 229;
+
+     // these constants are xda-specific:
+     VK_TOUCHPAD   = $01; // VK_LBUTTON
+     VK_ANSWER     = $72; // VK_F5
+     VK_HANGUP     = $73; // VK_F4
+     VK_VOLUME     = $75; // VK_F6
+
+     VK_TOPBUTTONS = $5b; // VK_LWIN
+     // VK_TOPBUTTONS is sent together with one of these:
+     VK_CALENDER   = $C1;
+     VK_CONTACTS   = $C2;
+
+     // note that when holding the navigator button down continuously,
+     // occasionally the OS will report no keys pressed down.
+
+     VK_NAVIGATOR_MOVE = $84; // VK_F21
+     // VK_NAVIGATOR_MOVE is sent together with one of these:
+     VK_NAVIGATE_LEFT  = $25; // VK_LEFT
+     VK_NAVIGATE_UP    = $26; // VK_UP
+     VK_NAVIGATE_RIGHT = $27; // VK_RIGHT
+     VK_NAVIGATE_DOWN  = $28; // VK_DOWN
+
+     VK_NAVIGATOR_SELECT = $86; // VK_F23
+
+     VK_ONOFF            = $DF; // VK_OFF
+
+  { Keystroke Message Flags  }
+     KF_ALTDOWN = 8192;
+     KF_DLGMODE = 2048;
+     KF_EXTENDED = 256;
+     KF_MENUMODE = 4096;
+     KF_REPEAT = 16384;
+     KF_UP = 32768;
+  { GetKeyboardLayoutName  }
+     KL_NAMELENGTH = 9;
+  { WM_ACTIVATE message  }
+     WA_ACTIVE = 1;
+     WA_CLICKACTIVE = 2;
+     WA_INACTIVE = 0;
+  { WM_ACTIVATE message  }
+     PWR_CRITICALRESUME = 3;
+     PWR_SUSPENDREQUEST = 1;
+     PWR_SUSPENDRESUME = 2;
+     PWR_FAIL = -(1);
+     PWR_OK = 1;
+  { WM_NOTIFYFORMAT message  }
+     NF_QUERY = 3;
+     NF_REQUERY = 4;
+     NFR_ANSI = 1;
+     NFR_UNICODE = 2;
+  { WM_SIZING message  }
+     WMSZ_BOTTOM = 6;
+     WMSZ_BOTTOMLEFT = 7;
+     WMSZ_BOTTOMRIGHT = 8;
+     WMSZ_LEFT = 1;
+     WMSZ_RIGHT = 2;
+     WMSZ_TOP = 3;
+     WMSZ_TOPLEFT = 4;
+     WMSZ_TOPRIGHT = 5;
+  { WM_MOUSEACTIVATE message  }
+     MA_ACTIVATE = 1;
+     MA_ACTIVATEANDEAT = 2;
+     MA_NOACTIVATE = 3;
+     MA_NOACTIVATEANDEAT = 4;
+  { WM_SIZE message  }
+     SIZE_MAXHIDE = 4;
+     SIZE_MAXIMIZED = 2;
+     SIZE_MAXSHOW = 3;
+     SIZE_MINIMIZED = 1;
+     SIZE_RESTORED = 0;
+  { WM_NCCALCSIZE message  }
+     WVR_ALIGNTOP = 16;
+     WVR_ALIGNLEFT = 32;
+     WVR_ALIGNBOTTOM = 64;
+     WVR_ALIGNRIGHT = 128;
+     WVR_HREDRAW = 256;
+     WVR_VREDRAW = 512;
+     WVR_REDRAW = 768;
+     WVR_VALIDRECTS = 1024;
+  { WM_NCHITTEST message  }
+     HTBOTTOM = 15;
+     HTBOTTOMLEFT = 16;
+     HTBOTTOMRIGHT = 17;
+     HTCAPTION = 2;
+     HTCLIENT = 1;
+     HTERROR = -(2);
+     HTGROWBOX = 4;
+     HTHSCROLL = 6;
+     HTLEFT = 10;
+     HTMENU = 5;
+     HTNOWHERE = 0;
+     HTREDUCE = 8;
+     HTRIGHT = 11;
+     HTSIZE = 4;
+     HTSYSMENU = 3;
+     HTTOP = 12;
+     HTTOPLEFT = 13;
+     HTTOPRIGHT = 14;
+     HTTRANSPARENT = -(1);
+     HTVSCROLL = 7;
+     HTZOOM = 9;
+  { Mouse messages  }
+     MK_CONTROL = 8;
+     MK_LBUTTON = 1;
+     MK_MBUTTON = 16;
+     MK_RBUTTON = 2;
+     MK_SHIFT = 4;
+  { WNDCLASS structure  }
+     CS_VREDRAW = 1;
+     CS_HREDRAW = 2;
+     CS_DBLCLKS = 8;
+     CS_PARENTDC = 128;
+     CS_NOCLOSE = 512;
+     CS_SAVEBITS = 2048;
+     CS_GLOBALCLASS = 16384;
+     CS_IME = $10000;
+
+     DLGWINDOWEXTRA = 32;
+  { ACCEL structure  }
+     FALT = 16;
+     FCONTROL = 8;
+     FNOINVERT = 2;
+     FSHIFT = 4;
+     FVIRTKEY = 1;
+  { MENUITEMINFO structure  }
+     MIIM_CHECKMARKS = 8;
+     MIIM_DATA = 32;
+     MIIM_ID = 2;
+     MIIM_STATE = 1;
+     MIIM_SUBMENU = 4;
+     MIIM_TYPE = 16;
+     MFT_BITMAP = $4;
+     MFT_MENUBARBREAK = $20;
+     MFT_MENUBREAK = $40;
+     MFT_OWNERDRAW = $100;
+     MFT_RADIOCHECK = $200;
+     MFT_RIGHTJUSTIFY = $4000;
+     MFT_SEPARATOR = $800;
+     MFT_STRING = 0;
+     MFS_CHECKED = $8;
+     MFS_DEFAULT = $1000;
+     MFS_DISABLED = $3;
+     MFS_ENABLED = 0;
+     MFS_GRAYED = $3;
+     MFS_HILITE = $80;
+     MFS_UNCHECKED = 0;
+     MFS_UNHILITE = 0;
+  { SERIALKEYS structure  }
+     SERKF_AVAILABLE = 2;
+     SERKF_INDICATOR = 4;
+     SERKF_SERIALKEYSON = 1;
+  { FILTERKEYS structure  }
+     FKF_AVAILABLE = 2;
+     FKF_CLICKON = 64;
+     FKF_FILTERKEYSON = 1;
+     FKF_HOTKEYACTIVE = 4;
+     FKF_HOTKEYSOUND = 16;
+     FKF_CONFIRMHOTKEY = 8;
+     FKF_INDICATOR = 32;
+  { HELPINFO structure  }
+     HELPINFO_MENUITEM = 2;
+     HELPINFO_WINDOW = 1;
+  { WM_PRINT message  }
+     PRF_CHECKVISIBLE = $1;
+     PRF_CHILDREN = $10;
+     PRF_CLIENT = $4;
+     PRF_ERASEBKGND = $8;
+     PRF_NONCLIENT = $2;
+     PRF_OWNED = $20;
+  { MapWindowPoints  }
+    { was #define dname def_expr }
+    HWND_DESKTOP = HWND(0);
+
+  { WM_SYSCOMMAND message  }
+
+  const
+     SC_CLOSE = 61536;
+     SC_CONTEXTHELP = 61824;
+     SC_DEFAULT = 61792;
+     SC_HOTKEY = 61776;
+     SC_HSCROLL = 61568;
+     SC_KEYMENU = 61696;
+     SC_MAXIMIZE = 61488;
+     SC_ZOOM = 61488;
+     SC_MINIMIZE = 61472;
+     SC_ICON = 61472;
+     SC_MONITORPOWER = 61808;
+     SC_MOUSEMENU = 61584;
+     SC_MOVE = 61456;
+     SC_NEXTWINDOW = 61504;
+     SC_PREVWINDOW = 61520;
+     SC_RESTORE = 61728;
+     SC_SCREENSAVE = 61760;
+     SC_SIZE = 61440;
+     SC_TASKLIST = 61744;
+     SC_VSCROLL = 61552;
+  { DM_GETDEFID message  }
+     DC_HASDEFID = 21323;
+  { WM_GETDLGCODE message  }
+     DLGC_BUTTON = 8192;
+     DLGC_DEFPUSHBUTTON = 16;
+     DLGC_HASSETSEL = 8;
+     DLGC_RADIOBUTTON = 64;
+     DLGC_STATIC = 256;
+     DLGC_UNDEFPUSHBUTTON = 32;
+     DLGC_WANTALLKEYS = 4;
+     DLGC_WANTARROWS = 1;
+     DLGC_WANTCHARS = 128;
+     DLGC_WANTMESSAGE = 4;
+     DLGC_WANTTAB = 2;
+  { EM_SETMARGINS message  }
+     EC_LEFTMARGIN = 1;
+     EC_RIGHTMARGIN = 2;
+     EC_USEFONTINFO = 65535;
+  { LB_SETCOUNT message  }
+     LB_ERR = -(1);
+     LB_ERRSPACE = -(2);
+     LB_OKAY = 0;
+  { CB_DIR message  }
+     CB_ERR = -(1);
+     CB_ERRSPACE = -(2);
+  { WM_IME_CONTROL message  }
+     IMC_GETCANDIDATEPOS = 7;
+     IMC_GETCOMPOSITIONFONT = 9;
+     IMC_GETCOMPOSITIONWINDOW = 11;
+     IMC_GETSTATUSWINDOWPOS = 15;
+     IMC_CLOSESTATUSWINDOW = 33;
+     IMC_OPENSTATUSWINDOW = 34;
+     IMC_SETCANDIDATEPOS = 8;
+     IMC_SETCOMPOSITIONFONT = 10;
+     IMC_SETCOMPOSITIONWINDOW = 12;
+     IMC_SETSTATUSWINDOWPOS = 16;
+  { WM_IME_CONTROL message  }
+     IMN_CHANGECANDIDATE = 3;
+     IMN_CLOSECANDIDATE = 4;
+     IMN_CLOSESTATUSWINDOW = 1;
+     IMN_GUIDELINE = 13;
+     IMN_OPENCANDIDATE = 5;
+     IMN_OPENSTATUSWINDOW = 2;
+     IMN_SETCANDIDATEPOS = 9;
+     IMN_SETCOMPOSITIONFONT = 10;
+     IMN_SETCOMPOSITIONWINDOW = 11;
+     IMN_SETCONVERSIONMODE = 6;
+     IMN_SETOPENSTATUS = 8;
+     IMN_SETSENTENCEMODE = 7;
+     IMN_SETSTATUSWINDOWPOS = 12;
+     IMN_PRIVATE = 14;
+  { STICKYKEYS structure  }
+     SKF_AUDIBLEFEEDBACK = 64;
+     SKF_AVAILABLE = 2;
+     SKF_CONFIRMHOTKEY = 8;
+     SKF_HOTKEYACTIVE = 4;
+     SKF_HOTKEYSOUND = 16;
+     SKF_INDICATOR = 32;
+     SKF_STICKYKEYSON = 1;
+     SKF_TRISTATE = 128;
+     SKF_TWOKEYSOFF = 256;
+  { MOUSEKEYS structure  }
+     MKF_AVAILABLE = 2;
+     MKF_CONFIRMHOTKEY = 8;
+     MKF_HOTKEYACTIVE = 4;
+     MKF_HOTKEYSOUND = 16;
+     MKF_INDICATOR = 32;
+     MKF_MOUSEKEYSON = 1;
+     MKF_MODIFIERS = 64;
+     MKF_REPLACENUMBERS = 128;
+  { SOUNDSENTRY structure  }
+     SSF_AVAILABLE = 2;
+     SSF_SOUNDSENTRYON = 1;
+     SSTF_BORDER = 2;
+     SSTF_CHARS = 1;
+     SSTF_DISPLAY = 3;
+     SSTF_NONE = 0;
+     SSGF_DISPLAY = 3;
+     SSGF_NONE = 0;
+     SSWF_CUSTOM = 4;
+     SSWF_DISPLAY = 3;
+     SSWF_NONE = 0;
+     SSWF_TITLE = 1;
+     SSWF_WINDOW = 2;
+  { ACCESSTIMEOUT structure  }
+     ATF_ONOFFFEEDBACK = 2;
+     ATF_TIMEOUTON = 1;
+  { HIGHCONTRAST structure  }
+     HCF_AVAILABLE = 2;
+     HCF_CONFIRMHOTKEY = 8;
+     HCF_HIGHCONTRASTON = 1;
+     HCF_HOTKEYACTIVE = 4;
+     HCF_HOTKEYAVAILABLE = 64;
+     HCF_HOTKEYSOUND = 16;
+     HCF_INDICATOR = 32;
+  { TOGGLEKEYS structure  }
+     TKF_AVAILABLE = 2;
+     TKF_CONFIRMHOTKEY = 8;
+     TKF_HOTKEYACTIVE = 4;
+     TKF_HOTKEYSOUND = 16;
+     TKF_TOGGLEKEYSON = 1;
+  { Installable Policy  }
+     PP_DISPLAYERRORS = 1;
+  { SERVICE_INFO structure  }
+     RESOURCEDISPLAYTYPE_DOMAIN = 1;
+     RESOURCEDISPLAYTYPE_FILE = 4;
+     RESOURCEDISPLAYTYPE_GENERIC = 0;
+     RESOURCEDISPLAYTYPE_GROUP = 5;
+     RESOURCEDISPLAYTYPE_SERVER = 2;
+     RESOURCEDISPLAYTYPE_SHARE = 3;
+  { KEY_EVENT_RECORD structure  }
+     CAPSLOCK_ON = 128;
+     ENHANCED_KEY = 256;
+     LEFT_ALT_PRESSED = 2;
+     LEFT_CTRL_PRESSED = 8;
+     NUMLOCK_ON = 32;
+     RIGHT_ALT_PRESSED = 1;
+     RIGHT_CTRL_PRESSED = 4;
+     SCROLLLOCK_ON = 64;
+     SHIFT_PRESSED = 16;
+  { MOUSE_EVENT_RECORD structure  }
+     FROM_LEFT_1ST_BUTTON_PRESSED = 1;
+     RIGHTMOST_BUTTON_PRESSED = 2;
+     FROM_LEFT_2ND_BUTTON_PRESSED = 4;
+     FROM_LEFT_3RD_BUTTON_PRESSED = 8;
+     FROM_LEFT_4TH_BUTTON_PRESSED = 16;
+     DOUBLE_CLICK = 2;
+     MOUSE_MOVED = 1;
+  { INPUT_RECORD structure  }
+     KEY_EVENT = 1;
+     _MOUSE_EVENT = 2; {conflict with function mouse_event}
+     cMOUSE_EVENT = 2;
+     WINDOW_BUFFER_SIZE_EVENT = 4;
+     MENU_EVENT = 8;
+     FOCUS_EVENT = 16;
+  { BITMAPINFOHEADER structure  }
+     BI_RGB = 0;
+     BI_RLE8 = 1;
+     BI_RLE4 = 2;
+     BI_BITFIELDS = 3;
+  { Extensions to OpenGL  }
+  { wglUseFontOutlines  }
+     WGL_FONT_LINES = 0;
+     WGL_FONT_POLYGONS = 1;
+  { LAYERPLANEDESCRIPTOR structure  }
+  { PIXELFORMATDESCRIPTOR structure  }
+     PFD_GENERIC_FORMAT = $40;
+     PFD_NEED_PALETTE = $80;
+     PFD_NEED_SYSTEM_PALETTE = $100;
+     PFD_SWAP_EXCHANGE = $200;
+     PFD_SWAP_COPY = $400;
+     PFD_SWAP_LAYER_BUFFERS = $800;
+     PFD_GENERIC_ACCELERATED = $1000;
+     PFD_SUPPORT_DIRECTDRAW = $2000;
+  { TEXTMETRIC structure  }
+     TMPF_FIXED_PITCH = $1;
+     TMPF_VECTOR = $2;
+     TMPF_TRUETYPE = $4;
+     TMPF_DEVICE = $8;
+     WM_CTLCOLOR = 25;
+
+  { --------------------- old stuff, need to organize! ---------------  }
+  { BEGINNING of windowsx.h stuff from old headers:  }
+  {  Not convertable by H2PAS
+  #define __CRACK_VOID_F(fn,args) (void)(fn args)
+  #define __CRACK_BOOL_F(fn,args) (BOOL)(fn args)
+  #define __CRACK_HMENU_F(fn,args) (HMENU)(fn args)
+  #define __CRACK_HWND_F(fn,args) (HWND)(fn args)
+  #define __CRACK_LONG_F(fn, args) (LRESULT)(fn args)
+  #define __CRACK_ZERO_F(fn, args)  (fn args,0)
+   }
+  { was #define dname(params) def_expr }
+  function GetFirstChild(h:HWND):HWND;
+
+  { was #define dname(params) def_expr }
+  function GetNextSibling(h:HWND):HWND;
+
+  { was #define dname(params) def_expr }
+  function GetWindowID(h:HWND):longint;
+
+  { was #define dname(params) def_expr }
+  function SubclassWindow(h:HWND; p:LONG):LONG;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function GET_WM_COMMAND_CMD(w,l : longint) : longint;
+    { return type might be wrong }
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function GET_WM_COMMAND_ID(w,l : longint) : longint;
+    { return type might be wrong }
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_CTLCOLOR_HDC(w,l,msg : longint) : HDC;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_CTLCOLOR_HWND(w,l,msg : longint) : HWND;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function GET_WM_HSCROLL_CODE(w,l : longint) : longint;
+    { return type might be wrong }
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_HSCROLL_HWND(w,l : longint) : HWND;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function GET_WM_HSCROLL_POS(w,l : longint) : longint;
+    { return type might be wrong }
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function GET_WM_MDIACTIVATE_FACTIVATE(h,a,b : longint) : longint;
+    { return type might be wrong }
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_MDIACTIVATE_HWNDACTIVATE(a,b : longint) : HWND;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_MDIACTIVATE_HWNDDEACT(a,b : longint) : HWND;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function GET_WM_VSCROLL_CODE(w,l : longint) : longint;
+    { return type might be wrong }
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_VSCROLL_HWND(w,l : longint) : HWND;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function GET_WM_VSCROLL_POS(w,l : longint) : longint;
+    { return type might be wrong }
+
+  {  Not convertable by H2PAS
+  #define FORWARD_WM_CLOSE(h, fn)                 __CRACK_VOID_F(fn,(h, WM_CLOSE, 0, 0))
+  #define FORWARD_WM_COMMAND(h, id, c, n, fn)     __CRACK_VOID_F(fn,(h, WM_COMMAND, MAKEWPARAM(id,n), (LPARAM)c))
+  #define FORWARD_WM_CREATE(h, p, fn)             __CRACK_BOOL_F(fn,(h, WM_CREATE, 0, (LPARAM)p))
+  #define FORWARD_WM_DESTROY(h, fn)               __CRACK_VOID_F(fn,(h, WM_DESTROY, 0, 0))
+  #define FORWARD_WM_ENABLE(h, e, fn)             __CRACK_VOID_F(fn,(h, WM_ENABLE, (WPARAM)e, 0))
+  #define FORWARD_WM_INITDIALOG(h, c, l, fn)      __CRACK_BOOL_F(fn,(h, WM_INITDIALOG, (WPARAM)c, l))
+  #define FORWARD_WM_MDICASCADE(h, c, fn)         __CRACK_BOOL_F(fn,(h, WM_MDICASCADE, (WPARAM)c, 0))
+  #define FORWARD_WM_MDIDESTROY(h, d, fn)         __CRACK_VOID_F(fn,(h, WM_MDIDESTROY, (WPARAM)d, 0))
+  #define FORWARD_WM_MDIGETACTIVE(h, fn)          __CRACK_HWND_F(fn,(h, WM_MDIGETACTIVE, 0, 0))
+  #define FORWARD_WM_MDIICONARRANGE(h, fn)        __CRACK_VOID_F(fn,(h, WM_MDIICONARRANGE, 0, 0))
+  #define FORWARD_WM_MDISETMENU(h, fr, hf, hw, fn) __CRACK_HMENU_F(fn,(h, WM_MDISETMENU, (WPARAM)((fr) ? (hf) : 0), (LPARAM)(hw)))
+  #define FORWARD_WM_MDITILE(h, c, fn)            __CRACK_BOOL_F(fn,(h, WM_MDITILE, (WPARAM)(c), 0))
+  #define FORWARD_WM_PAINT(h, fn)                 __CRACK_VOID_F(fn,(h, WM_PAINT, 0, 0))
+  #define FORWARD_WM_QUERYENDSESSION(h, fn)       __CRACK_BOOL_F(fn,(h, WM_QUERYENDSESSION, 0, 0))
+  #define FORWARD_WM_SIZE(h, state, cx, cy, fn)   __CRACK_VOID_F(fn,(h, WM_SIZE, (WPARAM)state, MAKELPARAM(cx, cy)))
+  #define FORWARD_WM_SYSCOMMAND(h, c, x, y, fn)   __CRACK_VOID_F(fn,(h, WM_SYSCOMMAND, (WPARAM)c, MAKELPARAM(x, y)))
+
+  #define HANDLE_WM_CLOSE(h, w, l, fn)            __CRACK_ZERO_F(fn,(h));
+  #define HANDLE_WM_COMMAND(h, w, l, fn)          __CRACK_ZERO_F(fn,(h, SEXT_LOWORD(w), (HWND)l, HIWORD(w)))
+  #define HANDLE_WM_CREATE(h, w, l, fn)           (LRESULT)((fn(h, (CREATESTRUCT  )l)) ? 0 : -1)
+  #define HANDLE_WM_DESTROY(h, w, l, fn)          __CRACK_ZERO_F(fn,(h))
+  #define HANDLE_WM_ENABLE(h, w, l, fn)           __CRACK_ZERO_F(fn,(h, (BOOL)w))
+  #define HANDLE_WM_INITDIALOG(h, w, l, fn)       __CRACK_LONG_F(fn,(h, (HWND)w, l))
+  #define HANDLE_WM_MDICASCADE(h, w, l, fn)       __CRACK_LONG_F(fn, (h, (UINT)w)
+  #define HANDLE_WM_MDIDESTROY(h, w, l, fn)       __CRACK_ZERO_F(fn,(h, (HWND)w))
+  #define HANDLE_WM_MDIGETACTIVE(h, w, l, fn)     __CRACK_LONG_F(fn,(h))
+  #define HANDLE_WM_MDIICONARRANGE(h, w, l, fn)   __CRACK_ZERO_F(fn,(h))
+  #define HANDLE_WM_MDISETMENU(h, w, l, fn)       __CRACK_LONG_F(fn,(h, (BOOL)w, (HMENU)w, (HMENU)l)
+  #define HANDLE_WM_MDITILE(h, w, l, fn)          __CRACK_LONG_F(fn,(h, (UINT)w))
+  #define HANDLE_WM_PAINT(h, w, l, fn)            __CRACK_ZERO_F(fn,(h))
+  #define HANDLE_WM_QUERYENDSESSION(h, w, l, fn)  MAKELRESULT(fn(h), 0)
+  #define HANDLE_WM_SIZE(h, w, l, fn)             __CRACK_ZERO_F(fn,(h, (UINT)w, SEXT_LOWORD(l), SEXT_HIWORD(l)))
+  #define HANDLE_WM_SYSCOMMAND(h, w, l, fn)       __CRACK_ZERO_F(fn,(h, (UINT)w, SEXT_LOWORD(l), SEXT_HIWORD(l)))
+   }
+  { Totally disgusting! get wParam and lParam from the environment !  }
+  {  Not convertable by H2PAS
+  #define HANDLE_MSG(h, message, fn) case message: return HANDLE_##message(h, wParam, lParam, fn)
+   }
+  { END OF windowsx.h stuff from old headers  }
+  { ------------------------------------------------------------------  }
+  { BEGINNING of shellapi.h stuff from old headers  }
+
+  const
+     SE_ERR_SHARE = 26;
+     SE_ERR_ASSOCINCOMPLETE = 27;
+     SE_ERR_DDETIMEOUT = 28;
+     SE_ERR_DDEFAIL = 29;
+     SE_ERR_DDEBUSY = 30;
+     SE_ERR_NOASSOC = 31;
+  { END OF shellapi.h stuff from old headers  }
+  { ------------------------------------------------------------------  }
+  { From ddeml.h in old Cygnus headers  }
+     XCLASS_BOOL = $1000;
+     XCLASS_DATA = $2000;
+     XCLASS_FLAGS = $4000;
+     XCLASS_MASK = $fc00;
+     XCLASS_NOTIFICATION = $8000;
+     XTYPF_NOBLOCK = $0002;
+     XTYP_ADVDATA = $4010;
+     XTYP_ADVREQ = $2022;
+     XTYP_ADVSTART = $1030;
+     XTYP_ADVSTOP = $8040;
+     XTYP_CONNECT = $1062;
+     XTYP_CONNECT_CONFIRM = $8072;
+     XTYP_DISCONNECT = $80c2;
+     XTYP_EXECUTE = $4050;
+     XTYP_POKE = $4090;
+     XTYP_REQUEST = $20b0;
+     XTYP_WILDCONNECT = $20E2;
+     XTYP_REGISTER = $80A2;
+     XTYP_ERROR = $8002;
+     XTYP_XACT_COMPLETE = $8080;
+     XTYP_UNREGISTER = $80D2;
+     DMLERR_DLL_USAGE = $4004;
+     DMLERR_INVALIDPARAMETER = $4006;
+     DMLERR_NOTPROCESSED = $4009;
+     DMLERR_POSTMSG_FAILED = $400c;
+     DMLERR_SERVER_DIED = $400e;
+     DMLERR_SYS_ERROR = $400f;
+     DMLERR_BUSY = $4001;
+     DMLERR_DATAACKTIMEOUT = $4002;
+     DMLERR_ADVACKTIMEOUT = $4000;
+     DMLERR_DLL_NOT_INITIALIZED = $4003;
+     DMLERR_LOW_MEMORY = $4007;
+     DMLERR_MEMORY_ERROR = $4008;
+     DMLERR_POKEACKTIMEOUT = $400b;
+     DMLERR_NO_CONV_ESTABLISHED = $400a;
+     DMLERR_REENTRANCY = $400d;
+     DMLERR_UNFOUND_QUEUE_ID = $4011;
+     DMLERR_UNADVACKTIMEOUT = $4010;
+     DMLERR_EXECACKTIMEOUT = $4005;
+     DDE_FACK = $8000;
+     DDE_FNOTPROCESSED = $0000;
+     DNS_REGISTER = $0001;
+     DNS_UNREGISTER = $0002;
+     CP_WINANSI = 1004;
+     CP_WINUNICODE = 1200;
+  {  Not convertable by H2PAS
+  #define EXPENTRY CALLBACK
+   }
+     APPCLASS_STANDARD = $00000000;
+  { End of stuff from ddeml.h in old Cygnus headers  }
+  { -----------------------------------------------  }
+     BKMODE_LAST = 2;
+     CTLCOLOR_MSGBOX = 0;
+     CTLCOLOR_EDIT = 1;
+     CTLCOLOR_LISTBOX = 2;
+     CTLCOLOR_BTN = 3;
+     CTLCOLOR_DLG = 4;
+     CTLCOLOR_SCROLLBAR = 5;
+     CTLCOLOR_STATIC = 6;
+     CTLCOLOR_MAX = 7;
+     META_SETMAPMODE = $0103;
+     META_SETWINDOWORG = $020B;
+     META_SETWINDOWEXT = $020C;
+     POLYFILL_LAST = 2;
+     STATUS_WAIT_0 = $00000000;
+     STATUS_ABANDONED_WAIT_0 = $00000080;
+     STATUS_USER_APC = $000000C0;
+     STATUS_TIMEOUT = $00000102;
+     STATUS_PENDING = $00000103;
+     STATUS_GUARD_PAGE_VIOLATION = $80000001;
+     STATUS_DATATYPE_MISALIGNMENT = $80000002;
+     STATUS_BREAKPOINT = $80000003;
+     STATUS_SINGLE_STEP = $80000004;
+     STATUS_IN_PAGE_ERROR = $C0000006;
+     STATUS_INVALID_HANDLE = $C0000008;
+     STATUS_ILLEGAL_INSTRUCTION = $C000001D;
+     STATUS_NONCONTINUABLE_EXCEPTION = $C0000025;
+     STATUS_INVALID_DISPOSITION = $C0000026;
+     STATUS_ARRAY_BOUNDS_EXCEEDED = $C000008C;
+     STATUS_FLOAT_DENORMAL_OPERAND = $C000008D;
+     STATUS_FLOAT_DIVIDE_BY_ZERO = $C000008E;
+     STATUS_FLOAT_INEXACT_RESULT = $C000008F;
+     STATUS_FLOAT_INVALID_OPERATION = $C0000090;
+     STATUS_FLOAT_OVERFLOW = $C0000091;
+     STATUS_FLOAT_STACK_CHECK = $C0000092;
+     STATUS_FLOAT_UNDERFLOW = $C0000093;
+     STATUS_INTEGER_DIVIDE_BY_ZERO = $C0000094;
+     STATUS_INTEGER_OVERFLOW = $C0000095;
+     STATUS_PRIVILEGED_INSTRUCTION = $C0000096;
+     STATUS_STACK_OVERFLOW = $C00000FD;
+     STATUS_CONTROL_C_EXIT = $C000013A;
+{$define EXCEPTION_CTRL_C}
+     PROCESSOR_ARCHITECTURE_INTEL = 0;
+     PROCESSOR_ARCHITECTURE_MIPS = 1;
+     PROCESSOR_ARCHITECTURE_ALPHA = 2;
+     PROCESSOR_ARCHITECTURE_PPC = 3;
+  { was #define dname(params) def_expr }
+  function FreeModule(h:HINST):WINBOOL;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function MakeProcInstance(p,i : longint) : longint;
+    { return type might be wrong }
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function FreeProcInstance(p : longint) : longint;
+    { return type might be wrong }
+
+
+  const
+    { _fmemcpy = memcpy; these are functions }
+  { Used by wxwindows.  }
+     SIZEFULLSCREEN = SIZE_MAXIMIZED;
+     SIZENORMAL = SIZE_RESTORED;
+     SIZEICONIC = SIZE_MINIMIZED;
+     { NPLOGPALETTE = PLOGPALETTE; probably a type }
+  { In the old winnt.h  }
+  (*  Not convertable by H2PAS anyhow with if 0
+  #if 0
+  #ifdef __ANAL__
+  #define DECLARE_HANDLE(h) struct h##__ { int dummy; }; typedef struct h##__  h
+  #else
+  #define DECLARE_HANDLE(h)  typedef void  h
+  #endif
+  DECLARE_HANDLE(HANDLE);
+  #endif
+   *)
+
+{$ifdef i386}                              //+winnt
+
+  { x86  }
+  { The doc refered me to winnt.h, so I had to look...  }
+
+  const
+     SIZE_OF_80387_REGISTERS = 80;         //winnt
+     MAXIMUM_SUPPORTED_EXTENSION = 512;    //winnt
+  { Values for contextflags  }
+     CONTEXT_i386 = $10000;
+     CONTEXT_i486 = $10000;                //+winnt
+     CONTEXT_CONTROL = CONTEXT_i386 or 1;
+     CONTEXT_INTEGER = CONTEXT_i386 or 2;
+     CONTEXT_SEGMENTS = CONTEXT_i386 or 4;
+     CONTEXT_FLOATING_POINT = CONTEXT_i386 or 8;
+     CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 or $10;
+     CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 or $20; //+winnt
+     CONTEXT_FULL = (CONTEXT_CONTROL or CONTEXT_INTEGER) or CONTEXT_SEGMENTS;
+  { our own invention  }
+     FLAG_TRACE_BIT = $100;
+     CONTEXT_DEBUGGER = CONTEXT_FULL or CONTEXT_FLOATING_POINT;
+{$endif i386}
+
+{$ifdef _MIPS_} //+winnt all block added
+//
+// Processor Feature Values used in IsProcessorFeaturePresent API
+//
+     PF_MIPS_MIPSII          = $81000001; // MIPSII  instruction set
+     PF_MIPS_MIPSIII         = $81000002; // MIPSIII instruction set
+     PF_MIPS_MIPSIV          = $81000003; // MIPSIV  instruction set
+     PF_MIPS_SMART_ASE       = $81000004; // MIPS smart card arch. specific ext.
+     PF_MIPS_MIPS16          = $81000005; // MIPS16  instruction set
+     PF_MIPS_MIPS32          = $81000006; // MIPS32  instruction set
+     PF_MIPS_MIPS64          = $81000007; // MIPS64  instruction set
+     PF_MIPS_FPU             = $81000008; // FPU support
+     PF_MIPS_CPU_4KEX        = $81000009; // "R4K" exception model
+     PF_MIPS_CPU_4KTLB       = $8100000A; // "R4K" TLB handler
+     PF_MIPS_CPU_32FPR       = $8100000B; // 32 dbl. prec. FP registers
+     PF_MIPS_CPU_COUNTER     = $8100000C; // Cycle count/compare
+     PF_MIPS_CPU_WATCH       = $8100000D; // watchpoint registers
+     PF_MIPS_CPU_DIVEC       = $8100000E; // dedicated interrupt vector
+     PF_MIPS_CPU_VCE         = $8100000F; // virt. coherence conflict possible
+     PF_MIPS_CPU_CACHE_CDEX  = $81000010; // Create_Dirty_Exclusive CACHE op
+     PF_MIPS_CPU_MCHECK      = $81000011; // Machine check exception
+     PF_MIPS_CPU_EJTAG       = $81000012; // EJTAG exception
+     PF_MIPS_PERF_COUNTER    = $81000013; // perf counter
+     PF_MIPS_ARCH_2          = $81000014; // arch. release 2
+
+     CONTEXT_R4000 = $00010000;    // r4000 context
+
+     CONTEXT_CONTROL          = CONTEXT_R4000 or $00000001;
+     CONTEXT_FLOATING_POINT   = CONTEXT_R4000 or $00000002;
+     CONTEXT_INTEGER          = CONTEXT_R4000 or $00000004;
+     CONTEXT_EXTENDED_FLOAT   = CONTEXT_FLOATING_POINT or $00000008;
+     CONTEXT_EXTENDED_INTEGER = CONTEXT_INTEGER or $00000010;
+     CONTEXT_FULL             = CONTEXT_CONTROL or CONTEXT_FLOATING_POINT or
+                            CONTEXT_INTEGER or CONTEXT_EXTENDED_INTEGER;
+{$ifdef _MIPS64} //+winnt
+ CONTEXT32_LENGTH=$1B8;
+{$else}
+ CONTEXT32_LENGTH=$130;  // The original 32-bit Context length (pre NT 4.0)
+{$endif _MIPS64}
+
+{$endif _MIPS_} //+winnt
+
+{$ifdef _PPC_} //~winnt, now _PPC_ instead of __PPC__, moved after mips
+  const
+     CONTEXT_CONTROL = 1;
+     CONTEXT_FLOATING_POINT = 2;
+     CONTEXT_INTEGER = 4;
+     CONTEXT_DEBUG_REGISTERS = 8;
+     CONTEXT_FULL = (CONTEXT_CONTROL or CONTEXT_FLOATING_POINT) or CONTEXT_INTEGER;
+     CONTEXT_DEBUGGER = CONTEXT_FULL;
+{$endif _PPC_} //~winnt
+
+{$ifdef _MPPC_} //+winnt all block
+  const
+     CONTEXT_CONTROL = 1;
+     CONTEXT_FLOATING_POINT = 2;
+     CONTEXT_INTEGER = 4;
+     CONTEXT_DEBUG_REGISTERS = 8;
+     CONTEXT_FULL = (CONTEXT_CONTROL or CONTEXT_FLOATING_POINT) or CONTEXT_INTEGER;
+{$endif _MPPC_} //+winnt
+
+{$ifdef _IA64_} //+winnt all block
+     SIZE_OF_80387_REGISTERS = 80;
+     CONTEXT_IA64 = $00080000;    // IA64 context
+     CONTEXT_CONTROL = CONTEXT_IA64 or $00000001;
+     CONTEXT_LOWER_FLOATING_POINT = CONTEXT_IA64 or $00000002;
+     CONTEXT_HIGHER_FLOATING_POINT = CONTEXT_IA64 or $00000004;
+     CONTEXT_INTEGER = CONTEXT_IA64 or $00000008;
+     CONTEXT_DEBUG = CONTEXT_IA64 or $00000010;
+
+     CONTEXT_FLOATING_POINT = CONTEXT_LOWER_FLOATING_POINT or CONTEXT_HIGHER_FLOATING_POINT;
+     CONTEXT_FULL = CONTEXT_CONTROL or CONTEXT_FLOATING_POINT or CONTEXT_INTEGER;
+
+     CONTEXT_i386 = $00010000;    // this assumes that i386 and
+     CONTEXT_i486 = $00010000;    // i486 have identical context records
+     CONTEXT_X86 = $00010000;    // X86 have identical context records
+
+     CONTEXT86_CONTROL = CONTEXT_i386 or $00000001; // SS:SP, CS:IP, FLAGS, BP
+     CONTEXT86_INTEGER = CONTEXT_i386 or $00000002; // AX, BX, CX, DX, SI, DI
+     CONTEXT86_SEGMENTS = CONTEXT_i386 or $00000004; // DS, ES, FS, GS
+     CONTEXT86_FLOATING_POINT = CONTEXT_i386 or $00000008; // 387 state
+     CONTEXT86_DEBUG_REGISTERS = CONTEXT_i386 or $00000010; // DB 0-3,6,7
+
+     CONTEXT86_FULL = CONTEXT86_CONTROL or CONTEXT86_INTEGER or CONTEXT86_SEGMENTS;    // context corresponding to set flags will be returned.
+{$endif _IA64_} //+winnt
+
+{$ifdef SHx} //+winnt all block added
+//
+// Processor Feature Values used in IsProcessorFeaturePresent API
+//
+     PF_SHX_SH3 = $82000001;
+     PF_SHX_SH4 = $82000002;
+     PF_SHX_SH5 = $82000003;
+     PF_SHX_DSP = $82000004;
+     PF_SHX_FPU = $82000005;
+//
+// The following flags control the contents of the CONTEXT structure.
+//
+     CONTEXT_SH3 = $00000040;
+     CONTEXT_SH4	= $000000c0;	// CONTEXT_SH3 | 0x80 - must contain the SH3 bits
+
+{$ifdef SH3}
+     CONTEXT_CONTROL = CONTEXT_SH3 or $00000001;
+     CONTEXT_INTEGER = CONTEXT_SH3 or $00000002;
+     CONTEXT_DEBUG_REGISTERS = CONTEXT_SH3 or $00000008;
+     CONTEXT_DSP_REGISTERS = CONTEXT_SH3 or $00000010;
+     CONTEXT_FULL = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_DEBUG_REGISTERS or CONTEXT_DSP_REGISTERS;
+{$else}	// SH4
+     CONTEXT_CONTROL = CONTEXT_SH4 or $00000001;
+     CONTEXT_INTEGER = CONTEXT_SH4 or $00000002;
+     CONTEXT_DEBUG_REGISTERS = CONTEXT_SH4 or $00000008;
+     CONTEXT_FLOATING_POINT = CONTEXT_SH4 or $00000004;
+     CONTEXT_FULL = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_DEBUG_REGISTERS or CONTEXT_FLOATING_POINT;
+{$endif SH3}
+
+{$endif SHx} //+winnt
+
+{$ifdef CPUARM} //+winnt all block added
+//
+// Processor Feature Values used in IsProcessorFeaturePresent API
+//
+     PF_ARM_V4                       = $80000001;
+     PF_ARM_V5                       = $80000002;
+     PF_ARM_V6                       = $80000003;
+     PF_ARM_V7                       = $80000004;
+     PF_ARM_THUMB                    = $80000005;
+     PF_ARM_JAZELLE                  = $80000006;
+     PF_ARM_DSP                      = $80000007;
+     PF_ARM_MOVE_CP                  = $80000008;
+     PF_ARM_VFP10                    = $80000009;
+     PF_ARM_MPU                      = $8000000A;
+     PF_ARM_WRITE_BUFFER             = $8000000B;
+     PF_ARM_MBX                      = $8000000C;
+     PF_ARM_L2CACHE                  = $8000000D;
+     PF_ARM_PHYSICALLY_TAGGED_CACHE  = $8000000E;
+     PF_ARM_VFP_SINGLE_PRECISION     = $8000000F;
+     PF_ARM_VFP_DOUBLE_PRECISION     = $80000010;
+     PF_ARM_ITCM                     = $80000011;
+     PF_ARM_DTCM                     = $80000012;
+     PF_ARM_UNIFIED_CACHE            = $80000013;
+     PF_ARM_WRITE_BACK_CACHE         = $80000014;
+     PF_ARM_CACHE_CAN_BE_LOCKED_DOWN = $80000015;
+     PF_ARM_L2CACHE_MEMORY_MAPPED    = $80000016;
+     PF_ARM_L2CACHE_COPROC           = $80000017;
+
+
+// Specific OEM extentions
+     PF_ARM_INTEL_XSCALE				     = $80010001;
+     PF_ARM_INTEL_PMU                = $80010002;
+     PF_ARM_INTEL_WMMX               = $80010003;
+
+     CONTEXT_ARM = $0000040;
+     CONTEXT_CONTROL = CONTEXT_ARM or $00000001;
+     CONTEXT_INTEGER = CONTEXT_ARM or $00000002;
+     CONTEXT_FLOATING_POINT = CONTEXT_ARM or $00000004;
+
+     CONTEXT_FULL = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_FLOATING_POINT;
+
+     NUM_VFP_REGS = 32;
+     NUM_EXTRA_CONTROL_REGS = 8;
+
+{$endif CPUARM} //+winnt
+
+  const
+     { ASCIICHAR = AsciiChar; this is the kind of thing that can
+     make problems for FPC !! }
+  {  ignored in H2PAS
+  #define FAR
+     handled in H2PAS
+  #define PACKED __attribute__((packed))
+   }
+     FILTER_TEMP_DUPLICATE_ACCOUNT = $0001;
+     FILTER_NORMAL_ACCOUNT = $0002;
+     FILTER_INTERDOMAIN_TRUST_ACCOUNT = $0008;
+     FILTER_WORKSTATION_TRUST_ACCOUNT = $0010;
+     FILTER_SERVER_TRUST_ACCOUNT = $0020;
+     LOGON32_LOGON_INTERACTIVE = $02;
+     LOGON32_LOGON_BATCH = $04;
+     LOGON32_LOGON_SERVICE = $05;
+     LOGON32_PROVIDER_DEFAULT = $00;
+     LOGON32_PROVIDER_WINNT35 = $01;
+     QID_SYNC = $FFFFFFFF;
+  { Magic numbers in PE executable header.   }
+  { e_magic field  }
+     IMAGE_DOS_SIGNATURE = $5a4d;
+  { nt_signature field  }
+     IMAGE_NT_SIGNATURE = $4550;
+
+
+  { Severity values }
+    SEVERITY_SUCCESS = 0;
+    SEVERITY_ERROR = 1;
+
+ { Variant type codes (wtypes.h).
+    Some, not all though }
+    VT_EMPTY           = 0;
+    VT_NULL            = 1;
+    VT_I2              = 2;
+    VT_I4              = 3;
+    VT_R4              = 4;
+    VT_R8              = 5;
+    VT_BSTR            = 8;
+    VT_ERROR           = 10;
+    VT_BOOL            = 11;
+    VT_UI1             = 17;
+    VT_BYREF        = $4000;
+    VT_RESERVED     = $8000;
+
+{ Define the facility codes }
+
+const
+  FACILITY_WINDOWS                     = 8;
+  FACILITY_STORAGE                     = 3;
+  FACILITY_RPC                         = 1;
+  FACILITY_SSPI                        = 9;
+  FACILITY_WIN32                       = 7;
+  FACILITY_CONTROL                     = 10;
+  FACILITY_NULL                        = 0;
+  FACILITY_INTERNET                    = 12;
+  FACILITY_ITF                         = 4;
+  FACILITY_DISPATCH                    = 2;
+  FACILITY_CERT                        = 11;
+
+{ Manually added, bug 2672}
+  ICON_SMALL                           = 0;
+  ICON_BIG                             = 1;
+
+// Manually added, bug 3270
+  COLOR_HOTLIGHT                = 26;
+  //COLOR_GRADIENTACTIVECAPTION   = 27; moved to GetSysColor
+  //COLOR_GRADIENTINACTIVECAPTION = 28;
+  COLOR_MENUHILIGHT             = 29;
+  COLOR_MENUBAR                 = 30;
+
+  WM_APP                        = $8000;
+
+  // ShellExecuteEx mask
+  SEE_MASK_NOCLOSEPROCESS =  $00000040;
+  SEE_MASK_FLAG_NO_UI     =  $00000400;
+
+{$endif read_interface}
+
+
+{$ifdef read_implementation}
+
+
+
+
+
+    { was #define dname(params) def_expr }
+    { argument types are unknown }
+    { return type might be wrong }
+    function IS_UNWINDING( Flag : Longint) : boolean;
+    begin
+     IS_UNWINDING:=(Flag and EXCEPTION_UNWIND)<>0;
+    end;
+
+    { was #define dname(params) def_expr }
+    { argument types are unknown }
+    { return type might be wrong }
+    function IS_DISPATCHING( Flag : Longint) : boolean;
+    begin
+     IS_DISPATCHING:=(Flag and EXCEPTION_UNWIND)=0;
+    end;
+
+    { was #define dname(params) def_expr }
+    { argument types are unknown }
+    { return type might be wrong }
+    function IS_TARGET_UNWIND( Flag : Longint) : Longint;
+    begin
+     IS_TARGET_UNWIND:=(Flag and EXCEPTION_TARGET_UNWIND);
+    end;
+
+    { was #define dname(params) def_expr }
+    { argument types are unknown }
+    { return type might be wrong }
+    function MakeProcInstance(p,i : longint) : longint;
+      { return type might be wrong }
+      begin
+         MakeProcInstance:=p;
+      end;
+
+    { was #define dname(params) def_expr }
+    { argument types are unknown }
+    { return type might be wrong }
+    function FreeProcInstance(p : longint) : longint;
+      { return type might be wrong }
+      begin
+         FreeProcInstance:=p;
+      end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function GET_WM_COMMAND_CMD(w,l : longint) : longint;
+    { return type might be wrong }
+    begin
+       GET_WM_COMMAND_CMD:=HIWORD(w);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function GET_WM_COMMAND_ID(w,l : longint) : longint;
+    { return type might be wrong }
+    begin
+       GET_WM_COMMAND_ID:=LOWORD(w);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_CTLCOLOR_HDC(w,l,msg : longint) : HDC;
+    begin
+       GET_WM_CTLCOLOR_HDC:=HDC(w);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_CTLCOLOR_HWND(w,l,msg : longint) : HWND;
+    begin
+       GET_WM_CTLCOLOR_HWND:=HWND(l);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function GET_WM_HSCROLL_CODE(w,l : longint) : longint;
+    { return type might be wrong }
+    begin
+       GET_WM_HSCROLL_CODE:=LOWORD(w);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_HSCROLL_HWND(w,l : longint) : HWND;
+    begin
+       GET_WM_HSCROLL_HWND:=HWND(l);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function GET_WM_HSCROLL_POS(w,l : longint) : longint;
+    { return type might be wrong }
+    begin
+       GET_WM_HSCROLL_POS:=HIWORD(w);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function GET_WM_MDIACTIVATE_FACTIVATE(h,a,b : longint) : longint;
+    { return type might be wrong }
+    begin
+       GET_WM_MDIACTIVATE_FACTIVATE:=longint(b = LONG(h));
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_MDIACTIVATE_HWNDACTIVATE(a,b : longint) : HWND;
+    begin
+       GET_WM_MDIACTIVATE_HWNDACTIVATE:=HWND(b);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_MDIACTIVATE_HWNDDEACT(a,b : longint) : HWND;
+    begin
+       GET_WM_MDIACTIVATE_HWNDDEACT:=HWND(a);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function GET_WM_VSCROLL_CODE(w,l : longint) : longint;
+    { return type might be wrong }
+    begin
+       GET_WM_VSCROLL_CODE:=LOWORD(w);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  function GET_WM_VSCROLL_HWND(w,l : longint) : HWND;
+    begin
+       GET_WM_VSCROLL_HWND:=HWND(l);
+    end;
+
+  { was #define dname(params) def_expr }
+  { argument types are unknown }
+  { return type might be wrong }
+  function GET_WM_VSCROLL_POS(w,l : longint) : longint;
+    { return type might be wrong }
+    begin
+       GET_WM_VSCROLL_POS:=HIWORD(w);
+    end;
+
+  { was #define dname(params) def_expr }
+  function FreeModule(h:HINST):WINBOOL;
+    begin
+       FreeModule:=FreeLibrary(h);
+    end;
+
+  { was #define dname(params) def_expr }
+  function GetNextSibling(h:HWND):HWND;
+    begin
+       GetNextSibling:=GetWindow(h,GW_HWNDNEXT);
+    end;
+  { was #define dname(params) def_expr }
+  function GetWindowID(h:HWND):longint;
+    begin
+       GetWindowID:=GetDlgCtrlID(h);
+    end;
+
+  { was #define dname(params) def_expr }
+  function SubclassWindow(h:HWND; p:LONG):LONG;
+    begin
+       SubclassWindow:=SetWindowLong(h,GWL_WNDPROC,p);
+    end;
+
+  { was #define dname(params) def_expr }
+  function GetFirstChild(h:HWND):HWND;
+    begin
+       //GetFirstChild:=GetTopWindow(h);
+       GetFirstChild:=GetWindow(h,GW_CHILD);
+    end;
+
+{$ifdef WINCE}
+{$endif WINCE}
+
+{$ifdef WIN32}
+{$endif WIN32}
+
+{$endif read_implementation}
+
+

+ 4 - 4
rtl/wince/wininc/errors.inc

@@ -62,7 +62,7 @@
 
   const
      APPLICATION_ERROR_MASK = $20000000; //+winnt
-     LZERROR_UNKNOWNALG = -(8);
+     LZERROR_UNKNOWNALG = -(8);
      LZERROR_BADVALUE = -(7);
      LZERROR_GLOBLOCK = -(6);
      LZERROR_GLOBALLOC = -(5);
@@ -745,9 +745,9 @@
      ERROR_REC_NON_EXISTENT = 4005;
      ERROR_RPL_NOT_ALLOWED = 4006;
      ERROR_SEVERITY_SUCCESS = $00000000;        //+winnt
-     ERROR_SEVERITY_INFORMATIONAL = $40000000;  //+winnt
-     ERROR_SEVERITY_WARNING = $80000000;        //+winnt
-     ERROR_SEVERITY_ERROR = $C0000000;          //+winnt
+     ERROR_SEVERITY_INFORMATIONAL = $40000000;  //+winnt
+     ERROR_SEVERITY_WARNING = $80000000;        //+winnt
+     ERROR_SEVERITY_ERROR = $C0000000;          //+winnt
      {ERROR_NO_BROWSER_SERVERS_FOUND = 6118; already above }
 
      E_UNEXPECTED = DWORD($8000FFFF);

+ 1 - 1
rtl/wince/wininc/makefile.inc

@@ -1 +1 @@
-WINDOWS_FILES=base errors defines struct redef aygshell cemiss ceshell commctrl coredll iphlpapi oleaut32
+WINDOWS_FILES=base errors defines struct redef aygshell cemiss ceshell commctrl coredll iphlpapi oleaut32

+ 1264 - 1331
rtl/wince/wininc/messages.inc

@@ -1,1331 +1,1264 @@
-{
-    This file is part of the Free Pascal run time library.
-    Copyright (c) 1999-2000 by Florian Klaempfl,
-    member of the Free Pascal development team.
-
-    See the file COPYING.FPC, included in this distribution,
-    for details about the copyright.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- **********************************************************************}
-
-{
-  Messages.h    Windows32 API message definitions
-  Copyright (C) 1996 Free Software Foundation, Inc.
-
-  Author: Scott Christley <[email protected]>
-
-  This file is part of the Windows32 API Library.
-
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Library General Public
-  License as published by the Free Software Foundation; either
-  version 2 of the License, or (at your option) any later version.
-
-
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Library General Public License for more details.
-
-
-  If you are interested in a warranty or support for this source code,
-  contact Scott Christley <[email protected]> for more information.
-
-
-  You should have received a copy of the GNU Library General Public
-  License along with this library; see the file COPYING.LIB.
-  If not, write to the Free Software Foundation,
-
-  59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-  Changes :
-
-  08-15-2005 : [email protected],  WCE 4.21 SE, First release
-  09-02-2006 : updated
-}
-
-{$ifdef read_interface}
-
-    const
-       ACM_OPENW = 1127;
-       ACM_OPENA = 1124;
-  {$ifdef UNICODE}
-    const
-       ACM_OPEN = ACM_OPENW;
-  {$else}
-    const
-       ACM_OPEN = ACM_OPENA;
-  {$endif}
-    { UNICODE  }
-
-    const
-    
-       WM_USER = 1024;  //keep it first
-
-       ACM_PLAY = 1125;
-       ACM_STOP = 1126;
-       ACN_START = 1;
-       ACN_STOP = 2;
-    { Buttons  }
-       BM_CLICK = 245;
-       BM_GETCHECK = 240;
-       BM_GETIMAGE = 246;
-       BM_GETSTATE = 242;
-       BM_SETCHECK = 241;
-       BM_SETIMAGE = 247;
-       BM_SETSTATE = 243;
-       BM_SETSTYLE = 244;
-       BN_CLICKED = 0;
-     BN_DBLCLK = 5;
-     BN_DISABLE = 4;
-     BN_DOUBLECLICKED = 5;
-     BN_HILITE = 2;
-     BN_KILLFOCUS = 7;
-     BN_PAINT = 1;
-     BN_PUSHED = 2;
-     BN_SETFOCUS = 6;
-     BN_UNHILITE = 3;
-     BN_UNPUSHED = 3;
-  { Combo Box  }
-     CB_ADDSTRING = 323;
-     CB_DELETESTRING = 324;
-     CB_DIR = 325;
-     CB_FINDSTRING = 332;
-     CB_FINDSTRINGEXACT = 344;
-     CB_GETCOUNT = 326;
-     CB_GETCURSEL = 327;
-     CB_GETDROPPEDCONTROLRECT = 338;
-     CB_GETDROPPEDSTATE = 343;
-     CB_GETDROPPEDWIDTH = 351;
-     CB_GETEDITSEL = 320;
-     CB_GETEXTENDEDUI = 342;
-     CB_GETHORIZONTALEXTENT = 349;
-     CB_GETITEMDATA = 336;
-     CB_GETITEMHEIGHT = 340;
-     CB_GETLBTEXT = 328;
-     CB_GETLBTEXTLEN = 329;
-     CB_GETLOCALE = 346;
-     CB_GETTOPINDEX = 347;
-     CB_INITSTORAGE = 353;
-     CB_INSERTSTRING = 330;
-     CB_LIMITTEXT = 321;
-     CB_RESETCONTENT = 331;
-     CB_SELECTSTRING = 333;
-     CB_SETCURSEL = 334;
-     CB_SETDROPPEDWIDTH = 352;
-     CB_SETEDITSEL = 322;
-     CB_SETEXTENDEDUI = 341;
-     CB_SETHORIZONTALEXTENT = 350;
-     CB_SETITEMDATA = 337;
-     CB_SETITEMHEIGHT = 339;
-     CB_SETLOCALE = 345;
-     CB_SETTOPINDEX = 348;
-     CB_SHOWDROPDOWN = 335;
-  { Combo Box notifications  }
-     CBN_CLOSEUP = 8;
-     CBN_DBLCLK = 2;
-     CBN_DROPDOWN = 7;
-     CBN_EDITCHANGE = 5;
-     CBN_EDITUPDATE = 6;
-     CBN_ERRSPACE = -(1);
-     CBN_KILLFOCUS = 4;
-     CBN_SELCHANGE = 1;
-     CBN_SELENDCANCEL = 10;
-     CBN_SELENDOK = 9;
-     CBN_SETFOCUS = 3;
-  { Control Panel  }
-  { Device messages  }
-  { Drag list box  }
-     DL_BEGINDRAG = 1157;
-     DL_CANCELDRAG = 1160;
-     DL_DRAGGING = 1158;
-     DL_DROPPED = 1159;
-  { Default push button  }
-     DM_GETDEFID = 1024;
-     DM_REPOSITION = 1026;
-     DM_SETDEFID = 1025;
-  { RTF control  }
-     EM_CANPASTE = 1074;
-     EM_CANUNDO = 198;
-     EM_CHARFROMPOS = 215;
-     EM_DISPLAYBAND = 1075;
-     EM_EMPTYUNDOBUFFER = 205;
-     EM_EXGETSEL = 1076;
-     EM_EXLIMITTEXT = 1077;
-     EM_EXLINEFROMCHAR = 1078;
-     EM_EXSETSEL = 1079;
-     EM_FINDTEXT = 1080;
-     EM_FINDTEXTEX = 1103;
-     EM_FINDWORDBREAK = 1100;
-     EM_FMTLINES = 200;
-     EM_FORMATRANGE = 1081;
-     EM_GETCHARFORMAT = 1082;
-     EM_GETEVENTMASK = 1083;
-     EM_GETFIRSTVISIBLELINE = 206;
-     EM_GETHANDLE = 189;
-     EM_GETLIMITTEXT = 213;
-     EM_GETLINE = 196;
-     EM_GETLINECOUNT = 186;
-     EM_GETMARGINS = 212;
-     EM_GETMODIFY = 184;
-     EM_GETIMECOLOR = 1129;
-     EM_GETIMEOPTIONS = 1131;
-     EM_GETOPTIONS = 1102;
-     EM_GETOLEINTERFACE = 1084;
-     EM_GETPARAFORMAT = 1085;
-     EM_GETPASSWORDCHAR = 210;
-     EM_GETPUNCTUATION = 1125;
-     EM_GETRECT = 178;
-     EM_GETSEL = 176;
-     EM_GETSELTEXT = 1086;
-     EM_GETTEXTRANGE = 1099;
-     EM_GETTHUMB = 190;
-     EM_GETWORDBREAKPROC = 209;
-     EM_GETWORDBREAKPROCEX = 1104;
-     EM_GETWORDWRAPMODE = 1127;
-     EM_HIDESELECTION = 1087;
-     EM_LIMITTEXT = 197;
-     EM_LINEFROMCHAR = 201;
-     EM_LINEINDEX = 187;
-     EM_LINELENGTH = 193;
-     EM_LINESCROLL = 182;
-     EM_PASTESPECIAL = 1088;
-     EM_POSFROMCHAR = 214;
-     EM_REPLACESEL = 194;
-     EM_REQUESTRESIZE = 1089;
-     EM_SCROLL = 181;
-     EM_SCROLLCARET = 183;
-     EM_SELECTIONTYPE = 1090;
-     EM_SETBKGNDCOLOR = 1091;
-     EM_SETCHARFORMAT = 1092;
-     EM_SETEVENTMASK = 1093;
-     EM_SETHANDLE = 188;
-     EM_SETIMECOLOR = 1128;
-     EM_SETIMEOPTIONS = 1130;
-     EM_SETLIMITTEXT = 197;
-     EM_SETMARGINS = 211;
-     EM_SETMODIFY = 185;
-     EM_SETOLECALLBACK = 1094;
-     EM_SETOPTIONS = 1101;
-     EM_SETPARAFORMAT = 1095;
-     EM_SETPASSWORDCHAR = 204;
-     EM_SETPUNCTUATION = 1124;
-     EM_SETREADONLY = 207;
-     EM_SETRECT = 179;
-     EM_SETRECTNP = 180;
-     EM_SETSEL = 177;
-     EM_SETTABSTOPS = 203;
-     EM_SETTARGETDEVICE = 1096;
-     EM_SETWORDBREAKPROC = 208;
-     EM_SETWORDBREAKPROCEX = 1105;
-     EM_SETWORDWRAPMODE = 1126;
-     EM_STREAMIN = 1097;
-     EM_STREAMOUT = 1098;
-     EM_UNDO = 199;
-  { Edit control  }
-     EN_SETFOCUS     =$0100;
-     EN_KILLFOCUS    =$0200;
-     EN_CHANGE       =$0300;
-     EN_UPDATE       =$0400;
-     EN_ERRSPACE     =$0500;
-     EN_MAXTEXT      =$0501;
-     EN_HSCROLL      =$0601;
-     EN_VSCROLL      =$0602;
-
-     EN_CORRECTTEXT = 1797;
-     EN_DROPFILES = 1795;
-     EN_IMECHANGE = 1799;
-     EN_MSGFILTER = 1792;
-     EN_OLEOPFAILED = 1801;
-     EN_PROTECTED = 1796;
-     EN_REQUESTRESIZE = 1793;
-     EN_SAVECLIPBOARD = 1800;
-     EN_SELCHANGE = 1794;
-     EN_STOPNOUNDO = 1798;
-  { File Manager extensions  }
-  { File Manager extensions DLL events  }
-  { Header control  }
-     HDM_DELETEITEM = 4610;
-     HDM_GETITEMW = 4619;
-     HDM_INSERTITEMW = 4618;
-     HDM_SETITEMW = 4620;
-     HDM_GETITEMA = 4611;
-     HDM_INSERTITEMA = 4609;
-     HDM_SETITEMA = 4612;
-{$ifdef UNICODE}
-     HDM_GETITEM = HDM_GETITEMW;
-     HDM_INSERTITEM = HDM_INSERTITEMW;
-     HDM_SETITEM = HDM_SETITEMW;
-{$else}
-     HDM_GETITEM = HDM_GETITEMA;
-     HDM_INSERTITEM = HDM_INSERTITEMA;
-     HDM_SETITEM = HDM_SETITEMA;
-{$endif}
-
-  { UNICODE  }
-
-  const
-     HDM_GETITEMCOUNT = 4608;
-     HDM_HITTEST = 4614;
-     HDM_LAYOUT = 4613;
-  { Header control notifications  }
-     HDN_BEGINTRACKW = -(326);
-     HDN_DIVIDERDBLCLICKW = -(325);
-     HDN_ENDTRACKW = -(327);
-     HDN_ITEMCHANGEDW = -(321);
-     HDN_ITEMCHANGINGW = -(320);
-     HDN_ITEMCLICKW = -(322);
-     HDN_ITEMDBLCLICKW = -(323);
-     HDN_TRACKW = -(328);
-     HDN_BEGINTRACKA = -(306);
-     HDN_DIVIDERDBLCLICKA = -(305);
-     HDN_ENDTRACKA = -(307);
-     HDN_ITEMCHANGEDA = -(301);
-     HDN_ITEMCHANGINGA = -(300);
-     HDN_ITEMCLICKA = -(302);
-     HDN_ITEMDBLCLICKA = -(303);
-     HDN_TRACKA = -(308);
-{$ifdef UNICODE}
-
-  const
-     HDN_BEGINTRACK = HDN_BEGINTRACKW;
-     HDN_DIVIDERDBLCLICK = HDN_DIVIDERDBLCLICKW;
-     HDN_ENDTRACK = HDN_ENDTRACKW;
-     HDN_ITEMCHANGED = HDN_ITEMCHANGEDW;
-     HDN_ITEMCHANGING = HDN_ITEMCHANGINGW;
-     HDN_ITEMCLICK = HDN_ITEMCLICKW;
-     HDN_ITEMDBLCLICK = HDN_ITEMDBLCLICKW;
-     HDN_TRACK = HDN_TRACKW;
-{$else}
-
-  const
-     HDN_BEGINTRACK = HDN_BEGINTRACKA;
-     HDN_DIVIDERDBLCLICK = HDN_DIVIDERDBLCLICKA;
-     HDN_ENDTRACK = HDN_ENDTRACKA;
-     HDN_ITEMCHANGED = HDN_ITEMCHANGEDA;
-     HDN_ITEMCHANGING = HDN_ITEMCHANGINGA;
-     HDN_ITEMCLICK = HDN_ITEMCLICKA;
-     HDN_ITEMDBLCLICK = HDN_ITEMDBLCLICKA;
-     HDN_TRACK = HDN_TRACKA;
-{$endif}
-  { UNICODE  }
-  { Hot key control  }
-
-  const
-     HKM_GETHOTKEY = 1026;
-     HKM_SETHOTKEY = 1025;
-     HKM_SETRULES = 1027;
-  { List box  }
-     LB_ADDFILE = 406;
-     LB_ADDSTRING = 384;
-     LB_DELETESTRING = 386;
-     LB_DIR = 397;
-     LB_FINDSTRING = 399;
-     LB_FINDSTRINGEXACT = 418;
-     LB_GETANCHORINDEX = 413;
-     LB_GETCARETINDEX = 415;
-     LB_GETCOUNT = 395;
-     LB_GETCURSEL = 392;
-     LB_GETHORIZONTALEXTENT = 403;
-     LB_GETITEMDATA = 409;
-     LB_GETITEMHEIGHT = 417;
-     LB_GETITEMRECT = 408;
-     LB_GETLOCALE = 422;
-     LB_GETSEL = 391;
-     LB_GETSELCOUNT = 400;
-     LB_GETSELITEMS = 401;
-     LB_GETTEXT = 393;
-     LB_GETTEXTLEN = 394;
-     LB_GETTOPINDEX = 398;
-     LB_INITSTORAGE = 424;
-     LB_INSERTSTRING = 385;
-     LB_ITEMFROMPOINT = 425;
-     LB_RESETCONTENT = 388;
-     LB_SELECTSTRING = 396;
-     LB_SELITEMRANGE = 411;
-     LB_SELITEMRANGEEX = 387;
-     LB_SETANCHORINDEX = 412;
-     LB_SETCARETINDEX = 414;
-     LB_SETCOLUMNWIDTH = 405;
-     LB_SETCOUNT = 423;
-     LB_SETCURSEL = 390;
-     LB_SETHORIZONTALEXTENT = 404;
-     LB_SETITEMDATA = 410;
-     LB_SETITEMHEIGHT = 416;
-     LB_SETLOCALE = 421;
-     LB_SETSEL = 389;
-     LB_SETTABSTOPS = 402;
-     LB_SETTOPINDEX = 407;
-  { List box notifications  }
-     LBN_DBLCLK = 2;
-     LBN_ERRSPACE = -(2);
-     LBN_KILLFOCUS = 5;
-     LBN_SELCANCEL = 3;
-     LBN_SELCHANGE = 1;
-     LBN_SETFOCUS = 4;
-  { List view control  }
-     LVM_ARRANGE = 4118;
-     LVM_CREATEDRAGIMAGE = 4129;
-     LVM_DELETEALLITEMS = 4105;
-     LVM_DELETECOLUMN = 4124;
-     LVM_DELETEITEM = 4104;
-     LVM_ENSUREVISIBLE = 4115;
-     LVM_GETBKCOLOR = 4096;
-     LVM_GETCALLBACKMASK = 4106;
-     LVM_GETCOLUMNWIDTH = 4125;
-     LVM_GETCOUNTPERPAGE = 4136;
-     LVM_GETEDITCONTROL = 4120;
-     LVM_GETIMAGELIST = 4098;
-     LVM_EDITLABELW = 4214;
-     LVM_FINDITEMW = 4179;
-     LVM_GETCOLUMNW = 4191;
-     LVM_GETISEARCHSTRINGW = 4213;
-     LVM_GETITEMW = 4171;
-     LVM_GETITEMTEXTW = 4211;
-     LVM_GETSTRINGWIDTHW = 4183;
-     LVM_INSERTCOLUMNW = 4193;
-     LVM_INSERTITEMW = 4173;
-     LVM_SETCOLUMNW = 4192;
-     LVM_SETITEMW = 4172;
-     LVM_SETITEMTEXTW = 4212;
-     LVM_EDITLABELA = 4119;
-     LVM_FINDITEMA = 4109;
-     LVM_GETCOLUMNA = 4121;
-     LVM_GETISEARCHSTRINGA = 4148;
-     LVM_GETITEMA = 4101;
-     LVM_GETITEMTEXTA = 4141;
-     LVM_GETSTRINGWIDTHA = 4113;
-     LVM_INSERTCOLUMNA = 4123;
-     LVM_INSERTITEMA = 4103;
-     LVM_SETCOLUMNA = 4122;
-     LVM_SETITEMA = 4102;
-     LVM_SETITEMTEXTA = 4142;
-     LVM_GETITEMCOUNT = 4100;
-     LVM_GETITEMPOSITION = 4112;
-     LVM_GETITEMRECT = 4110;
-     LVM_GETITEMSPACING = 4147;
-     LVM_GETITEMSTATE = 4140;
-     LVM_GETNEXTITEM = 4108;
-     LVM_GETORIGIN = 4137;
-     LVM_GETSELECTEDCOUNT = 4146;
-     LVM_GETTEXTBKCOLOR = 4133;
-     LVM_GETTEXTCOLOR = 4131;
-     LVM_GETTOPINDEX = 4135;
-     LVM_GETVIEWRECT = 4130;
-     LVM_HITTEST = 4114;
-     LVM_REDRAWITEMS = 4117;
-     LVM_SCROLL = 4116;
-     LVM_SETBKCOLOR = 4097;
-     LVM_SETCALLBACKMASK = 4107;
-     LVM_SETCOLUMNWIDTH = 4126;
-     LVM_SETIMAGELIST = 4099;
-     LVM_SETITEMCOUNT = 4143;
-     LVM_SETITEMPOSITION = 4111;
-     LVM_SETITEMPOSITION32 = 4145;
-     LVM_SETITEMSTATE = 4139;
-     LVM_SETTEXTBKCOLOR = 4134;
-     LVM_SETTEXTCOLOR = 4132;
-     LVM_SORTITEMS = 4144;
-     LVM_UPDATE = 4138;
-     LVM_SETICONSPACING           = 4149;   //LVM_FIRST + 53
-     LVM_SETEXTENDEDLISTVIEWSTYLE = 4150;   //LVM_FIRST + 54
-     LVM_GETSUBITEMRECT           = 4152;   //LVM_FIRST + 56
-     LVM_SUBITEMHITTEST           = 4153;   //LVM_FIRST + 57
-     LVM_SETCOLUMNORDERARRAY      = 4154;   //LVM_FIRST + 58
-     LVM_GETCOLUMNORDERARRAY      = 4155;   //LVM_FIRST + 59
-     LVM_APPROXIMATEVIEWRECT      = 4160;   //LVM_FIRST + 64
-     LVM_GETSELECTIONMARK         = 4162;   //LVM_FIRST + 66
-     LVM_SETSELECTIONMARK         = 4163;   //LVM_FIRST + 67
-     LVM_GETHEADER                = 4127;   //LVM_FIRST + 31
-
-{$ifdef UNICODE}
-
-  const
-     LVM_EDITLABEL = LVM_EDITLABELW;
-     LVM_FINDITEM = LVM_FINDITEMW;
-     LVM_GETCOLUMN = LVM_GETCOLUMNW;
-     LVM_GETISEARCHSTRING = LVM_GETISEARCHSTRINGW;
-     LVM_GETITEM = LVM_GETITEMW;
-     LVM_GETITEMTEXT = LVM_GETITEMTEXTW;
-     LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHW;
-     LVM_INSERTCOLUMN = LVM_INSERTCOLUMNW;
-     LVM_INSERTITEM = LVM_INSERTITEMW;
-     LVM_SETCOLUMN = LVM_SETCOLUMNW;
-     LVM_SETITEM = LVM_SETITEMW;
-     LVM_SETITEMTEXT = LVM_SETITEMTEXTW;
-{$else}
-
-  const
-     LVM_EDITLABEL = LVM_EDITLABELA;
-     LVM_FINDITEM = LVM_FINDITEMA;
-     LVM_GETCOLUMN = LVM_GETCOLUMNA;
-     LVM_GETISEARCHSTRING = LVM_GETISEARCHSTRINGA;
-     LVM_GETITEM = LVM_GETITEMA;
-     LVM_GETITEMTEXT = LVM_GETITEMTEXTA;
-     LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHA;
-     LVM_INSERTCOLUMN = LVM_INSERTCOLUMNA;
-     LVM_INSERTITEM = LVM_INSERTITEMA;
-     LVM_SETCOLUMN = LVM_SETCOLUMNA;
-     LVM_SETITEM = LVM_SETITEMA;
-     LVM_SETITEMTEXT = LVM_SETITEMTEXTA;
-{$endif}
-  { UNICODE  }
-
-  { List view control notifications  }
-     LVN_ITEMCHANGING     = -(100);
-     LVN_ITEMCHANGED      = -(101);
-     LVN_INSERTITEM       = -(102);
-     LVN_DELETEITEM       = -(103);
-     LVN_DELETEALLITEMS   = -(104);
-     LVN_BEGINLABELEDITA  = -(105);
-     LVN_ENDLABELEDITA    = -(106);
-     LVN_COLUMNCLICK      = -(108);
-     LVN_BEGINDRAG        = -(109);
-     LVN_BEGINRDRAG       = -(111);
-     LVN_ODCACHEHINT      = -(113); //#if (_WIN32_IE >= 0x0300)
-     LVN_ITEMACTIVATE     = -(114);
-     LVN_ODSTATECHANGED   = -(115);
-     LVN_GETDISPINFOA     = -(150);
-     LVN_SETDISPINFOA     = -(151);
-     LVN_ODFINDITEMA      = -(152); //#if (_WIN32_IE >= 0x0300)
-     LVN_KEYDOWN          = -(155);
-     LVN_MARQUEEBEGIN     = -(156); //#if (_WIN32_IE >= 0x0300)
-     LVN_BEGINLABELEDITW  = -(175);
-     LVN_ENDLABELEDITW    = -(176);
-     LVN_GETDISPINFOW     = -(177);
-     LVN_SETDISPINFOW     = -(178);
-     LVN_ODFINDITEMW      = -(179); //#if (_WIN32_IE >= 0x0300)
-
-{$ifdef UNICODE}
-     LVN_BEGINLABELEDIT = LVN_BEGINLABELEDITW;
-     LVN_ENDLABELEDIT = LVN_ENDLABELEDITW;
-     LVN_GETDISPINFO = LVN_GETDISPINFOW;
-     LVN_SETDISPINFO = LVN_SETDISPINFOW;
-     LVN_ODFINDITEM  = LVN_ODFINDITEMW;
-{$else}
-     LVN_BEGINLABELEDIT = LVN_BEGINLABELEDITA;
-     LVN_ENDLABELEDIT = LVN_ENDLABELEDITA;
-     LVN_GETDISPINFO = LVN_GETDISPINFOA;
-     LVN_SETDISPINFO = LVN_SETDISPINFOA;
-     LVN_ODFINDITEM  = LVN_ODFINDITEMA;
-{$endif}
-
-  { UNICODE  }
-
-  { Control notification  }
-     NM_CLICK = -(2);
-     NM_DBLCLK = -(3);
-     NM_KILLFOCUS = -(8);
-     NM_OUTOFMEMORY = -(1);
-     NM_RCLICK = -(5);
-     NM_RDBLCLK = -(6);
-     NM_RETURN = -(4);
-     NM_SETFOCUS = -(7);
-  { Power status  }
-  { Progress bar control  }
-     PBM_DELTAPOS = 1027;
-     PBM_SETPOS = 1026;
-     PBM_GETPOS = WM_USER+8;
-     PBM_SETRANGE = 1025;
-     PBM_SETRANGE32 = WM_USER+6;
-     PBM_GETRANGE = WM_USER+7;
-     PBM_SETSTEP = 1028;
-     PBM_STEPIT = 1029;
-  { Property sheets  } //prsht
-     PSM_SETCURSEL          = (WM_USER + 101);
-     PSM_REMOVEPAGE         = (WM_USER + 102);
-     PSM_ADDPAGE            = (WM_USER + 103);
-     PSM_CHANGED            = (WM_USER + 104);
-     PSM_RESTARTWINDOWS     = (WM_USER + 105);
-     PSM_REBOOTSYSTEM       = (WM_USER + 106);
-     PSM_CANCELTOCLOSE      = (WM_USER + 107);
-     PSM_QUERYSIBLINGS      = (WM_USER + 108);
-     PSM_UNCHANGED          = (WM_USER + 109);
-     PSM_APPLY              = (WM_USER + 110);
-     PSM_SETTITLEA          = (WM_USER + 111);
-     PSM_SETWIZBUTTONS      = (WM_USER + 112);
-     PSM_SETCURSELID        = (WM_USER + 114);
-     PSM_SETFINISHTEXTA     = (WM_USER + 115);
-     PSM_GETTABCONTROL      = (WM_USER + 116);
-     PSM_ISDIALOGMESSAGE    = (WM_USER + 117);
-     PSM_GETCURRENTPAGEHWND = (WM_USER + 118);
-     PSM_SETTITLEW          = (WM_USER + 120);
-     PSM_SETFINISHTEXTW     = (WM_USER + 121);
-     PSM_PRESSBUTTON = 1137;
-{$ifdef UNICODE}
-     PSM_SETFINISHTEXT = PSM_SETFINISHTEXTW;
-     PSM_SETTITLE = PSM_SETTITLEW;
-{$else UNICODE}
-     PSM_SETFINISHTEXT = PSM_SETFINISHTEXTA;
-     PSM_SETTITLE = PSM_SETTITLEA;
-{$endif UNICODE}
-
-  { Property sheet notifications  } //prsht
-     PSN_FIRST       = -(200);
-     PSN_SETACTIVE   = (PSN_FIRST-0);
-     PSN_KILLACTIVE  = (PSN_FIRST-1);
-     PSN_APPLY       = (PSN_FIRST-2);
-     PSN_RESET       = (PSN_FIRST-3);
-     PSN_HELP        = (PSN_FIRST-5);
-     PSN_WIZBACK     = (PSN_FIRST-6);
-     PSN_WIZNEXT     = (PSN_FIRST-7);
-     PSN_WIZFINISH   = (PSN_FIRST-8);
-     PSN_QUERYCANCEL = (PSN_FIRST-9);
-
-  { Status window  }
-     SB_GETBORDERS = 1031;
-     SB_GETPARTS = 1030;
-     SB_GETRECT = 1034;
-     SB_GETTEXTW = 1037;
-     SB_GETTEXTLENGTHW = 1036;
-     SB_SETTEXTW = 1035;
-     SB_GETTEXTA = 1026;
-     SB_GETTEXTLENGTHA = 1027;
-     SB_SETTEXTA = 1025;
-{$ifdef UNICODE}
-
-  const
-     SB_GETTEXT = SB_GETTEXTW;
-     SB_GETTEXTLENGTH = SB_GETTEXTLENGTHW;
-     SB_SETTEXT = SB_SETTEXTW;
-{$else}
-
-  const
-     SB_GETTEXT = SB_GETTEXTA;
-     SB_GETTEXTLENGTH = SB_GETTEXTLENGTHA;
-     SB_SETTEXT = SB_SETTEXTA;
-{$endif}
-  { UNICODE  }
-
-  const
-     SB_SETMINHEIGHT = 1032;
-     SB_SETPARTS = 1028;
-     SB_SIMPLE = 1033;
-  { Scroll bar control  }
-     SBM_ENABLE_ARROWS = 228;
-     SBM_GETPOS = 225;
-     SBM_GETRANGE = 227;
-     SBM_GETSCROLLINFO = 234;
-     SBM_SETPOS = 224;
-     SBM_SETRANGE = 226;
-     SBM_SETRANGEREDRAW = 230;
-     SBM_SETSCROLLINFO = 233;
-  { Static control  }
-     STM_GETICON = 369;
-     STM_GETIMAGE = 371;
-     STM_SETICON = 368;
-     STM_SETIMAGE = 370;
-  { Static control notifications  }
-     STN_CLICKED = 0;
-     STN_DBLCLK = 1;
-     STN_DISABLE = 3;
-     STN_ENABLE = 2;
-  { Toolbar control  }
-     TB_ADDBITMAP = 1043;
-     TB_ADDBUTTONS = 1044;
-     TB_AUTOSIZE = 1057;
-     TB_BUTTONCOUNT = 1048;
-     TB_BUTTONSTRUCTSIZE = 1054;
-     TB_CHANGEBITMAP = 1067;
-     TB_CHECKBUTTON = 1026;
-     TB_COMMANDTOINDEX = 1049;
-     TB_CUSTOMIZE = 1051;
-     TB_DELETEBUTTON = 1046;
-     TB_ENABLEBUTTON = 1025;
-     TB_GETBITMAP = 1068;
-     TB_GETBITMAPFLAGS = 1065;
-     TB_GETBUTTON = 1047;
-     TB_ADDSTRINGW = 1101;
-     TB_GETBUTTONTEXTW = 1099;
-     TB_SAVERESTOREW = 1100;
-     TB_ADDSTRINGA = 1052;
-     TB_GETBUTTONTEXTA = 1069;
-     TB_SAVERESTOREA = 1050;
-     TB_SETINDENT            = WM_USER + 47;
-     TB_SETIMAGELIST         = WM_USER + 48;
-     TB_GETIMAGELIST         = WM_USER + 49;
-     TB_LOADIMAGES           = WM_USER + 50;
-     TB_GETRECT              = WM_USER + 51;
-     TB_SETDISABLEDIMAGELIST = WM_USER + 54;
-     TB_GETDISABLEDIMAGELIST = WM_USER + 55;
-     TB_SETSTYLE             = WM_USER + 56;
-     TB_GETSTYLE             = WM_USER + 57;
-     TB_GETBUTTONSIZE        = WM_USER + 58;
-     TB_SETBUTTONWIDTH       = WM_USER + 59;
-     TB_SETMAXTEXTROWS       = WM_USER + 60;
-     TB_GETTEXTROWS          = WM_USER + 61;
-{$ifdef UNICODE}
-
-  const
-     TB_ADDSTRING = TB_ADDSTRINGW;
-     TB_GETBUTTONTEXT = TB_GETBUTTONTEXTW;
-     TB_SAVERESTORE = TB_SAVERESTOREW;
-{$else}
-
-  const
-     TB_ADDSTRING = TB_ADDSTRINGA;
-     TB_GETBUTTONTEXT = TB_GETBUTTONTEXTA;
-     TB_SAVERESTORE = TB_SAVERESTOREA;
-{$endif}
-  { UNICODE  }
-
-  const
-     TB_GETITEMRECT = 1053;
-     TB_GETROWS = 1064;
-     TB_GETSTATE = 1042;
-     TB_GETTOOLTIPS = 1059;
-     TB_HIDEBUTTON = 1028;
-     TB_INDETERMINATE = 1029;
-     TB_INSERTBUTTON = 1045;
-     TB_ISBUTTONCHECKED = 1034;
-     TB_ISBUTTONENABLED = 1033;
-     TB_ISBUTTONHIDDEN = 1036;
-     TB_ISBUTTONINDETERMINATE = 1037;
-     TB_ISBUTTONPRESSED = 1035;
-     TB_PRESSBUTTON = 1027;
-     TB_SETBITMAPSIZE = 1056;
-     TB_SETBUTTONSIZE = 1055;
-     TB_SETCMDID = 1066;
-     TB_SETPARENT = 1061;
-     TB_SETROWS = 1063;
-     TB_SETSTATE = 1041;
-     TB_SETTOOLTIPS = WM_USER + 81;
-  { Track bar control  }
-     TBM_CLEARSEL = 1043;
-     TBM_CLEARTICS = 1033;
-     TBM_GETCHANNELRECT = 1050;
-     TBM_GETLINESIZE = 1048;
-     TBM_GETNUMTICS = 1040;
-     TBM_GETPAGESIZE = 1046;
-     TBM_GETPOS = 1024;
-     TBM_GETPTICS = 1038;
-     TBM_GETRANGEMAX = 1026;
-     TBM_GETRANGEMIN = 1025;
-     TBM_GETSELEND = 1042;
-     TBM_GETSELSTART = 1041;
-     TBM_GETTHUMBLENGTH = 1052;
-     TBM_GETTHUMBRECT = 1049;
-     TBM_GETTIC = 1027;
-     TBM_GETTICPOS = 1039;
-     TBM_SETLINESIZE = 1047;
-     TBM_SETPAGESIZE = 1045;
-     TBM_SETPOS = 1029;
-     TBM_SETRANGE = 1030;
-     TBM_SETRANGEMAX = 1032;
-     TBM_SETRANGEMIN = 1031;
-     TBM_SETSEL = 1034;
-     TBM_SETSELEND = 1036;
-     TBM_SETSELSTART = 1035;
-     TBM_SETTHUMBLENGTH = 1051;
-     TBM_SETTIC = 1028;
-     TBM_SETTICFREQ = 1044;
-  { Tool bar control notifications  }
-     TBN_BEGINADJUST = -(703);
-     TBN_BEGINDRAG = -(701);
-     TBN_CUSTHELP = -(709);
-     TBN_ENDADJUST = -(704);
-     TBN_ENDDRAG = -(702);
-     TBN_GETBUTTONINFOW = -(720);
-     TBN_GETBUTTONINFOA = -(700);
-
-{$ifdef UNICODE}
-
-  const
-     TBN_GETBUTTONINFO = TBN_GETBUTTONINFOW;
-{$else}
-
-  const
-     TBN_GETBUTTONINFO = TBN_GETBUTTONINFOA;
-{$endif}
-  { UNICODE  }
-
-  const
-     TBN_QUERYDELETE = -(707);
-     TBN_QUERYINSERT = -(706);
-     TBN_RESET = -(705);
-     TBN_TOOLBARCHANGE = -(708);
-  { Tab control  }
-     TCM_ADJUSTRECT = 4904;
-     TCM_DELETEALLITEMS = 4873;
-     TCM_DELETEITEM = 4872;
-     TCM_GETCURFOCUS = 4911;
-     TCM_GETCURSEL = 4875;
-     TCM_GETIMAGELIST = 4866;
-     TCM_GETITEMW = 4924;
-     TCM_INSERTITEMW = 4926;
-     TCM_SETITEMW = 4925;
-     TCM_GETITEMA = 4869;
-     TCM_INSERTITEMA = 4871;
-     TCM_SETITEMA = 4870;
-
-{$ifdef UNICODE}
-  const
-     TCM_GETITEM = TCM_GETITEMW;  //~wint, W was missing
-     TCM_INSERTITEM = TCM_INSERTITEMW;
-     TCM_SETITEM = TCM_SETITEMW;
-{$else}
-
-  const
-     TCM_GETITEM = TCM_GETITEMA;
-     TCM_INSERTITEM = TCM_INSERTITEMA;
-     TCM_SETITEM = TCM_SETITEMA;
-{$endif}
-  { UNICODE  }
-
-  const
-     TCM_GETITEMCOUNT = 4868;
-     TCM_GETITEMRECT = 4874;
-     TCM_GETROWCOUNT = 4908;
-     TCM_GETTOOLTIPS = 4909;
-     TCM_HITTEST = 4877;
-     TCM_REMOVEIMAGE = 4906;
-     TCM_SETCURFOCUS = 4912;
-     TCM_SETCURSEL = 4876;
-     TCM_SETIMAGELIST = 4867;
-     TCM_SETITEMEXTRA = 4878;
-     TCM_SETITEMSIZE = 4905;
-     TCM_SETPADDING = 4907;
-     TCM_SETTOOLTIPS = 4910;
-  { Tab control notifications  }
-     TCN_KEYDOWN = -(550);
-     TCN_SELCHANGE = -(551);
-     TCN_SELCHANGING = -(552);
-  { Tool tip control  }
-     TTM_ACTIVATE = 1025;
-     TTM_ADDTOOLW = 1074;
-     TTM_DELTOOLW = 1075;
-     TTM_ENUMTOOLSW = 1082;
-     TTM_GETCURRENTTOOLW = 1083;
-     TTM_GETTEXTW = 1080;
-     TTM_GETTOOLINFOW = 1077;
-     TTM_HITTESTW = 1079;
-     TTM_NEWTOOLRECTW = 1076;
-     TTM_SETTOOLINFOW = 1078;
-     TTM_UPDATETIPTEXTW = 1081;
-     TTM_ADDTOOLA = 1028;
-     TTM_DELTOOLA = 1029;
-     TTM_ENUMTOOLSA = 1038;
-     TTM_GETCURRENTTOOLA = 1039;
-     TTM_GETTEXTA = 1035;
-     TTM_GETTOOLINFOA = 1032;
-     TTM_HITTESTA = 1034;
-     TTM_NEWTOOLRECTA = 1030;
-     TTM_SETTOOLINFOA = 1033;
-     TTM_UPDATETIPTEXTA = 1036;
-{$ifdef UNICODE}
-
-  const
-     TTM_ADDTOOL = TTM_ADDTOOLW;
-     TTM_DELTOOL = TTM_DELTOOLW;
-     TTM_ENUMTOOLS = TTM_ENUMTOOLSW;
-     TTM_GETCURRENTTOOL = TTM_GETCURRENTTOOLW;
-     TTM_GETTEXT = TTM_GETTEXTW;
-     TTM_GETTOOLINFO = TTM_GETTOOLINFOW;
-     TTM_HITTEST = TTM_HITTESTW;
-     TTM_NEWTOOLRECT = TTM_NEWTOOLRECTW;
-     TTM_SETTOOLINFO = TTM_SETTOOLINFOW;
-     TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTW;
-{$else}
-
-  const
-     TTM_ADDTOOL = TTM_ADDTOOLA;
-     TTM_DELTOOL = TTM_DELTOOLA;
-     TTM_ENUMTOOLS = TTM_ENUMTOOLSA;
-     TTM_GETCURRENTTOOL = TTM_GETCURRENTTOOLA;
-     TTM_GETTEXT = TTM_GETTEXTA;
-     TTM_GETTOOLINFO = TTM_GETTOOLINFOA;
-     TTM_HITTEST = TTM_HITTESTA;
-     TTM_NEWTOOLRECT = TTM_NEWTOOLRECTA;
-     TTM_SETTOOLINFO = TTM_SETTOOLINFOA;
-     TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTA;
-{$endif}
-  { UNICODE  }
-
-  const
-     TTM_GETTOOLCOUNT = 1037;
-     TTM_RELAYEVENT = 1031;
-     TTM_SETDELAYTIME = 1027;
-     TTM_WINDOWFROMPOINT = 1040;
-  { UNICODE  }
-
-  const
-     TTN_POP = -(522);
-     TTN_SHOW = -(521);
-  { Tree view control  }
-     TVM_CREATEDRAGIMAGE = 4370;
-     TVM_DELETEITEM = 4353;
-     TVM_ENDEDITLABELNOW = 4374;
-     TVM_ENSUREVISIBLE = 4372;
-     TVM_EXPAND = 4354;
-     TVM_GETCOUNT = 4357;
-     TVM_GETEDITCONTROL = 4367;
-     TVM_GETIMAGELIST = 4360;
-     TVM_GETINDENT = 4358;
-     TVM_GETITEMRECT = 4356;
-     TVM_GETNEXTITEM = 4362;
-     TVM_GETVISIBLECOUNT = 4368;
-     TVM_HITTEST = 4369;
-     TVM_EDITLABELW = 4417;
-     TVM_GETISEARCHSTRINGW = 4416;
-     TVM_GETITEMW = 4414;
-     TVM_INSERTITEMW = 4402;
-     TVM_SETITEMW = 4415;
-     TVM_EDITLABELA = 4366;
-     TVM_GETISEARCHSTRINGA = 4375;
-     TVM_GETITEMA = 4364;
-     TVM_INSERTITEMA = 4352;
-     TVM_SETITEMA = 4365;
-{$ifdef UNICODE}
-
-  const
-     TVM_EDITLABEL = TVM_EDITLABELW;
-     TVM_GETISEARCHSTRING = TVM_GETISEARCHSTRINGW;
-     TVM_GETITEM = TVM_GETITEMW;
-     TVM_INSERTITEM = TVM_INSERTITEMW;
-     TVM_SETITEM = TVM_SETITEMW;
-{$else}
-
-  const
-     TVM_EDITLABEL = TVM_EDITLABELA;
-     TVM_GETISEARCHSTRING = TVM_GETISEARCHSTRINGA;
-     TVM_GETITEM = TVM_GETITEMA;
-     TVM_INSERTITEM = TVM_INSERTITEMA;
-     TVM_SETITEM = TVM_SETITEMA;
-{$endif}
-  { UNICODE  }
-
-  const
-     TVM_SELECTITEM = 4363;
-     TVM_SETIMAGELIST = 4361;
-     TVM_SETINDENT = 4359;
-     TVM_SORTCHILDREN = 4371;
-     TVM_SORTCHILDRENCB = 4373;
-  { Tree view control notification  }
-     TVN_KEYDOWN = -(412);
-     TVN_BEGINDRAGW = -(456);
-     TVN_BEGINLABELEDITW = -(459);
-     TVN_BEGINRDRAGW = -(457);
-     TVN_DELETEITEMW = -(458);
-     TVN_ENDLABELEDITW = -(460);
-     TVN_GETDISPINFOW = -(452);
-     TVN_ITEMEXPANDEDW = -(455);
-     TVN_ITEMEXPANDINGW = -(454);
-     TVN_SELCHANGEDW = -(451);
-     TVN_SELCHANGINGW = -(450);
-     TVN_SETDISPINFOW = -(453);
-     TVN_BEGINDRAGA = -(407);
-     TVN_BEGINLABELEDITA = -(410);
-     TVN_BEGINRDRAGA = -(408);
-     TVN_DELETEITEMA = -(409);
-     TVN_ENDLABELEDITA = -(411);
-     TVN_GETDISPINFOA = -(403);
-     TVN_ITEMEXPANDEDA = -(406);
-     TVN_ITEMEXPANDINGA = -(405);
-     TVN_SELCHANGEDA = -(402);
-     TVN_SELCHANGINGA = -(401);
-     TVN_SETDISPINFOA = -(404);
-{$ifdef UNICODE}
-
-  const
-     TVN_BEGINDRAG = TVN_BEGINDRAGW;
-     TVN_BEGINLABELEDIT = TVN_BEGINLABELEDITW;
-     TVN_BEGINRDRAG = TVN_BEGINRDRAGW;
-     TVN_DELETEITEM = TVN_DELETEITEMW;
-     TVN_ENDLABELEDIT = TVN_ENDLABELEDITW;
-     TVN_GETDISPINFO = TVN_GETDISPINFOW;
-     TVN_ITEMEXPANDED = TVN_ITEMEXPANDEDW;
-     TVN_ITEMEXPANDING = TVN_ITEMEXPANDINGW;
-     TVN_SELCHANGED = TVN_SELCHANGEDW;
-     TVN_SELCHANGING = TVN_SELCHANGINGW;
-     TVN_SETDISPINFO = TVN_SETDISPINFOW;
-{$else}
-
-  const
-     TVN_BEGINDRAG = TVN_BEGINDRAGA;
-     TVN_BEGINLABELEDIT = TVN_BEGINLABELEDITA;
-     TVN_BEGINRDRAG = TVN_BEGINRDRAGA;
-     TVN_DELETEITEM = TVN_DELETEITEMA;
-     TVN_ENDLABELEDIT = TVN_ENDLABELEDITA;
-     TVN_GETDISPINFO = TVN_GETDISPINFOA;
-     TVN_ITEMEXPANDED = TVN_ITEMEXPANDEDA;
-     TVN_ITEMEXPANDING = TVN_ITEMEXPANDINGA;
-     TVN_SELCHANGED = TVN_SELCHANGEDA;
-     TVN_SELCHANGING = TVN_SELCHANGINGA;
-     TVN_SETDISPINFO = TVN_SETDISPINFOA;
-{$endif}
-  { UNICODE  }
-  { Up/down control  }
-
-  const
-     UDM_GETACCEL = 1132;
-     UDM_GETBASE = 1134;
-     UDM_GETBUDDY = 1130;
-     UDM_GETPOS = 1128;
-     UDM_GETPOS32 = 1138;
-     UDM_GETRANGE = 1126;
-     UDM_GETRANGE32 = 1136;
-     UDM_SETACCEL = 1131;
-     UDM_SETBASE = 1133;
-     UDM_SETBUDDY = 1129;
-     UDM_SETPOS = 1127;
-     UDM_SETPOS32 = 1137;
-     UDM_SETRANGE = 1125;
-     UDM_SETRANGE32 = 1135;
-  { Up/down control notification  }
-     UDN_DELTAPOS = -(722);
-  { Window messages  }
-     WM_ACTIVATE = 6;
-     WM_ACTIVATEAPP = 28;
-     WM_ASKCBFORMATNAME = 780;
-     WM_CANCELJOURNAL = 75;
-     WM_CANCELMODE = 31;
-     WM_CAPTURECHANGED = 533;
-     WM_CHANGECBCHAIN = 781;
-     WM_CHAR = 258;
-     WM_CHARTOITEM = 47;
-     WM_CHILDACTIVATE = 34;
-     WM_CHOOSEFONT_GETLOGFONT = 1025;
-     WM_CHOOSEFONT_SETLOGFONT = 1125;
-     WM_CHOOSEFONT_SETFLAGS = 1126;
-     WM_CLEAR = 771;
-     WM_CLOSE = 16;
-     WM_COMMAND = 273;
-     WM_COMPACTING = 65;
-     WM_COMPAREITEM = 57;
-     WM_CONTEXTMENU = 123;
-     WM_COPY = 769;
-     WM_COPYDATA = 74;
-     WM_CREATE = 1;
-     WM_CTLCOLORBTN = 309;
-     WM_CTLCOLORDLG = 310;
-     WM_CTLCOLOREDIT = 307;
-     WM_CTLCOLORLISTBOX = 308;
-     WM_CTLCOLORMSGBOX = 306;
-     WM_CTLCOLORSCROLLBAR = 311;
-     WM_CTLCOLORSTATIC = 312;
-     WM_CUT = 768;
-     WM_DEADCHAR = 259;
-     WM_DELETEITEM = 45;
-     WM_DESTROY = 2;
-     WM_DESTROYCLIPBOARD = 775;
-     WM_DEVICECHANGE = 537;
-     WM_DEVMODECHANGE = 27;
-     WM_DISPLAYCHANGE = 126;
-     WM_DRAWCLIPBOARD = 776;
-     WM_DRAWITEM = 43;
-     WM_DROPFILES = 563;
-     WM_ENABLE = 10;
-     WM_ENDSESSION = 22;
-     WM_ENTERIDLE = 289;
-     WM_ENTERMENULOOP = 529;
-     WM_ENTERSIZEMOVE = 561;
-     WM_ERASEBKGND = 20;
-     WM_EXITMENULOOP = 530;
-     WM_EXITSIZEMOVE = 562;
-     WM_FONTCHANGE = 29;
-     WM_GETDLGCODE = 135;
-     WM_GETFONT = 49;
-     WM_GETHOTKEY = 51;
-     WM_GETICON = 127;
-     WM_GETMINMAXINFO = 36;
-     WM_GETTEXT = 13;
-     WM_GETTEXTLENGTH = 14;
-     WM_HELP = 83;
-     WM_HOTKEY = 786;
-     WM_HSCROLL = 276;
-     WM_HSCROLLCLIPBOARD = 782;
-     WM_ICONERASEBKGND = 39;
-     WM_IME_CHAR = 646;
-     WM_IME_COMPOSITION = 271;
-     WM_IME_COMPOSITIONFULL = 644;
-     WM_IME_CONTROL = 643;
-     WM_IME_ENDCOMPOSITION = 270;
-     WM_IME_KEYDOWN = 656;
-     WM_IME_KEYUP = 657;
-     WM_IME_NOTIFY = 642;
-     WM_IME_SELECT = 645;
-     WM_IME_SETCONTEXT = 641;
-     WM_IME_STARTCOMPOSITION = 269;
-     WM_INITDIALOG = 272;
-     WM_INITMENU = 278;
-     WM_INITMENUPOPUP = 279;
-     WM_INPUTLANGCHANGE = 81;
-     WM_INPUTLANGCHANGEREQUEST = 80;
-     WM_KEYDOWN = 256;
-     WM_KEYUP = 257;
-     WM_KILLFOCUS = 8;
-     WM_LBUTTONDBLCLK = 515;
-     WM_LBUTTONDOWN = 513;
-     WM_LBUTTONUP = 514;
-     WM_MBUTTONDBLCLK = 521;
-     WM_MBUTTONDOWN = 519;
-     WM_MBUTTONUP = 520;
-     WM_MDIACTIVATE = 546;
-     WM_MDICASCADE = 551;
-     WM_MDICREATE = 544;
-     WM_MDIDESTROY = 545;
-     WM_MDIGETACTIVE = 553;
-     WM_MDIICONARRANGE = 552;
-     WM_MDIMAXIMIZE = 549;
-     WM_MDINEXT = 548;
-     WM_MDIREFRESHMENU = 564;
-     WM_MDIRESTORE = 547;
-     WM_MDISETMENU = 560;
-     WM_MDITILE = 550;
-     WM_MEASUREITEM = 44;
-     WM_MENUCHAR = 288;
-     WM_MENUSELECT = 287;
-     WM_MOUSEACTIVATE = 33;
-     WM_MOUSEMOVE = 512;
-     WM_MOUSEWHEEL = 522;
-     WM_MOUSEHOVER = 673;
-     WM_MOUSELEAVE = 675;
-     WM_MOVE = 3;
-     WM_MOVING = 534;
-     WM_NCACTIVATE = 134;
-     WM_NCCALCSIZE = 131;
-     WM_NCCREATE = 129;
-     WM_NCDESTROY = 130;
-     WM_NCHITTEST = 132;
-     WM_NCLBUTTONDBLCLK = 163;
-     WM_NCLBUTTONDOWN = 161;
-     WM_NCLBUTTONUP = 162;
-     WM_NCMBUTTONDBLCLK = 169;
-     WM_NCMBUTTONDOWN = 167;
-     WM_NCMBUTTONUP = 168;
-     WM_NCMOUSEMOVE = 160;
-     WM_NCPAINT = 133;
-     WM_NCRBUTTONDBLCLK = 166;
-     WM_NCRBUTTONDOWN = 164;
-     WM_NCRBUTTONUP = 165;
-     WM_NEXTDLGCTL = 40;
-     WM_NOTIFY = 78;
-     WM_NOTIFYFORMAT = 85;
-     WM_NULL = 0;
-     WM_PAINT = 15;
-     WM_PAINTCLIPBOARD = 777;
-     WM_PAINTICON = 38;
-     WM_PALETTECHANGED = 785;
-     WM_PALETTEISCHANGING = 784;
-     WM_PARENTNOTIFY = 528;
-     WM_PASTE = 770;
-     WM_PENWINFIRST = 896;
-     WM_PENWINLAST = 911;
-     WM_POWER = 72;
-     WM_POWERBROADCAST = 536;
-     WM_PRINT = 791;
-     WM_PRINTCLIENT = 792;
-     WM_PSD_ENVSTAMPRECT = 1029;
-     WM_PSD_FULLPAGERECT = 1025;
-     WM_PSD_GREEKTEXTRECT = 1028;
-     WM_PSD_MARGINRECT = 1027;
-     WM_PSD_MINMARGINRECT = 1026;
-     WM_PSD_PAGESETUPDLG = 1024;
-     WM_PSD_YAFULLPAGERECT = 1030;
-     WM_QUERYDRAGICON = 55;
-     WM_QUERYENDSESSION = 17;
-     WM_QUERYNEWPALETTE = 783;
-     WM_QUERYOPEN = 19;
-     WM_QUEUESYNC = 35;
-     WM_QUIT = 18;
-     WM_RBUTTONDBLCLK = 518;
-     WM_RBUTTONDOWN = 516;
-     WM_RBUTTONUP = 517;
-     WM_RENDERALLFORMATS = 774;
-     WM_RENDERFORMAT = 773;
-     WM_SETCURSOR = 32;
-     WM_SETFOCUS = 7;
-     WM_SETFONT = 48;
-     WM_SETHOTKEY = 50;
-     WM_SETICON = 128;
-     WM_SETREDRAW = 11;
-     WM_SETTEXT = 12;
-     WM_SETTINGCHANGE = 26;
-     WM_SHOWWINDOW = 24;
-     WM_SIZE = 5;
-     WM_SIZECLIPBOARD = 779;
-     WM_SIZING = 532;
-     WM_SPOOLERSTATUS = 42;
-     WM_STYLECHANGED = 125;
-     WM_STYLECHANGING = 124;
-     WM_SYSCHAR = 262;
-     WM_SYSCOLORCHANGE = 21;
-     WM_SYSCOMMAND = 274;
-     WM_SYSDEADCHAR = 263;
-     WM_SYSKEYDOWN = 260;
-     WM_SYSKEYUP = 261;
-     WM_TCARD = 82;
-     WM_TIMECHANGE = 30;
-     WM_TIMER = 275;
-     WM_UNDO = 772;
-     //WM_USER = 1024; moved at start
-     WM_USERCHANGED = 84;
-     WM_VKEYTOITEM = 46;
-     WM_VSCROLL = 277;
-     WM_VSCROLLCLIPBOARD = 778;
-     WM_WINDOWPOSCHANGED = 71;
-     WM_WINDOWPOSCHANGING = 70;
-     WM_WININICHANGE = 26;
-  { Window message ranges  }
-     WM_KEYFIRST = 256;
-     WM_KEYLAST = 264;
-     WM_MOUSEFIRST = 512;
-     WM_MOUSELAST     = 525;
-     WM_XBUTTONDOWN   = 523;
-     WM_XBUTTONUP     = 524;
-     WM_XBUTTONDBLCLK = 525;
-
-Type
-{$ifdef MESSAGESUNIT}
-
-    MSG                 = Windows.MSG;
-    TMessage            = Windows.TMessage;
-    TWMSize             = Windows.TWMSize;
-    TWMNoParams         = Windows.TWMNoParams;
-    TWMScroll           = Windows.TWMScroll;
-    TWMGetText          = Windows.TWMGetText;
-    TWMKillFocus        = Windows.TWMKillFocus;
-    TWMSetCursor        = Windows.TWMSetCursor;
-    TWMSetFocus         = Windows.TWMSetFocus;
-    TWMSetFont          = Windows.TWMSetFont;
-    TWMShowWindow       = Windows.TWMShowWindow;
-    TWMEraseBkgnd       = Windows.TWMEraseBkgnd;
-    LPMSG               = Windows.MSG;
-    tagMSG              = Windows.tagMSG;
-    TMSG                = Windows.TMSG;
-    PMSG                = Windows.PMSG;
-    PMessage            = Windows.PMessage;
-    TWMGetDlgCode       = TWMNoParams;
-    TWMFontChange       = TWMNoParams;
-    TWMGetFont          = TWMNoParams;
-    TWMHScroll          = TWMScroll;
-    TWMVScroll          = TWMScroll;
-    TWMGetTextLength    = TWMNoParams;
-
-{$else}
-
-     MSG = record
-          hwnd : HWND;
-          message : UINT;
-          wParam : WPARAM;
-          lParam : LPARAM;
-          time : DWORD;
-          pt : POINT;
-       end;
-
-     LPMSG = ^MSG;
-     tagMSG = MSG;
-     TMSG = MSG;
-     PMSG = ^MSG;
-
-
-     PMessage = ^TMessage;
-     TMessage = record       {fields according to ICS}
-        msg      : UINT;
-        case longint of
-          0: (
-              wParam : WPARAM;
-              lParam : LPARAM;
-              Result : LRESULT;
-             );
-          1: (
-              wParamlo,
-              wParamhi : WORD;  // Is there Windows type for half an wparam?
-              lParamlo,
-              lParamhi : WORD;
-              Resultlo,
-              Resulthi : WORD;
-             );
-       end;
-
-    TWMSize = record
-      Msg: Cardinal;
-      SizeType : LongInt;
-      Width : Word;
-      Height : Word;
-      Result : LongInt;
-    End;
-
-    TWMNoParams = record
-      Msg : Cardinal;
-      Unused : array[0..3] of Word;
-      Result : Longint;
-    end;
-
-    TWMGetDlgCode = TWMNoParams;
-    TWMFontChange = TWMNoParams;
-    TWMGetFont = TWMNoParams;
-
-    TWMScroll = record
-      Msg : Cardinal;
-      ScrollCode : SmallInt;
-      Pos : SmallInt;
-      ScrollBar : HWND;
-      Result : LongInt;
-    end;
-
-    TWMHScroll = TWMScroll;
-    TWMVScroll = TWMScroll;
-
-    TWMGetText = record
-      Msg : Cardinal;
-      TextMax : LongInt;
-      Text : PChar;
-      Result : LongInt;
-    end;
-
-    TWMGetTextLength = TWMNoParams;
-
-    TWMKillFocus = record
-       Msg : Cardinal;
-       FocusedWnd : HWND;
-       UnUsed : LongInt;
-       Result : LongInt;
-    End;
-
-    TWMSetCursor = record
-      Msg : Cardinal;
-      CursorWnd : HWND;
-      HitTest : Word;
-      MouseMsg : Word;
-      Result : LongInt;
-    end;
-
-    TWMSetFocus = record
-      Msg : Cardinal;
-      FocusedWnd : HWND;
-      Unused : LongInt;
-      Result : LongInt;
-    end;
-
-    TWMSetFont = record
-      Msg : Cardinal;
-      Font : HFONT;
-      Redraw : WordBool;
-      Unused : Word;
-      Result : LongInt;
-    end;
-
-    TWMShowWindow = record
-      Msg : Cardinal;
-      Show : BOOL;
-      Status : LongInt;
-      Result : LongInt;
-    end;
-
-    TWMEraseBkgnd = record
-      Msg: Cardinal;
-      DC: HDC;
-      Unused: Longint;
-      Result: Longint;
-    end;
-
-{$endif messagesunit}
-
-{$endif read_interface}
-
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 1999-2000 by Florian Klaempfl,
+    member of the Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{
+  Messages.h    Windows32 API message definitions
+  Copyright (C) 1996 Free Software Foundation, Inc.
+
+  Author: Scott Christley <[email protected]>
+
+  This file is part of the Windows32 API Library.
+
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Library General Public
+  License as published by the Free Software Foundation; either
+  version 2 of the License, or (at your option) any later version.
+
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Library General Public License for more details.
+
+
+  If you are interested in a warranty or support for this source code,
+  contact Scott Christley <[email protected]> for more information.
+
+
+  You should have received a copy of the GNU Library General Public
+  License along with this library; see the file COPYING.LIB.
+  If not, write to the Free Software Foundation,
+
+  59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+  Changes :
+
+  08-15-2005 : [email protected],  WCE 4.21 SE, First release
+  09-02-2006 : updated
+}
+
+{$ifdef read_interface}
+
+    const
+       ACM_OPENW = 1127;
+       ACM_OPENA = 1124;
+  {$ifdef UNICODE}
+    const
+       ACM_OPEN = ACM_OPENW;
+  {$else}
+    const
+       ACM_OPEN = ACM_OPENA;
+  {$endif}
+    { UNICODE  }
+
+    const
+    
+       WM_USER = 1024;  //keep it first
+
+       ACM_PLAY = 1125;
+       ACM_STOP = 1126;
+       ACN_START = 1;
+       ACN_STOP = 2;
+    { Buttons  }
+       BM_CLICK = 245;
+       BM_GETCHECK = 240;
+       BM_GETIMAGE = 246;
+       BM_GETSTATE = 242;
+       BM_SETCHECK = 241;
+       BM_SETIMAGE = 247;
+       BM_SETSTATE = 243;
+       BM_SETSTYLE = 244;
+       BN_CLICKED = 0;
+     BN_DBLCLK = 5;
+     BN_DISABLE = 4;
+     BN_DOUBLECLICKED = 5;
+     BN_HILITE = 2;
+     BN_KILLFOCUS = 7;
+     BN_PAINT = 1;
+     BN_PUSHED = 2;
+     BN_SETFOCUS = 6;
+     BN_UNHILITE = 3;
+     BN_UNPUSHED = 3;
+  { Combo Box  }
+     CB_ADDSTRING = 323;
+     CB_DELETESTRING = 324;
+     CB_DIR = 325;
+     CB_FINDSTRING = 332;
+     CB_FINDSTRINGEXACT = 344;
+     CB_GETCOUNT = 326;
+     CB_GETCURSEL = 327;
+     CB_GETDROPPEDCONTROLRECT = 338;
+     CB_GETDROPPEDSTATE = 343;
+     CB_GETDROPPEDWIDTH = 351;
+     CB_GETEDITSEL = 320;
+     CB_GETEXTENDEDUI = 342;
+     CB_GETHORIZONTALEXTENT = 349;
+     CB_GETITEMDATA = 336;
+     CB_GETITEMHEIGHT = 340;
+     CB_GETLBTEXT = 328;
+     CB_GETLBTEXTLEN = 329;
+     CB_GETLOCALE = 346;
+     CB_GETTOPINDEX = 347;
+     CB_INITSTORAGE = 353;
+     CB_INSERTSTRING = 330;
+     CB_LIMITTEXT = 321;
+     CB_RESETCONTENT = 331;
+     CB_SELECTSTRING = 333;
+     CB_SETCURSEL = 334;
+     CB_SETDROPPEDWIDTH = 352;
+     CB_SETEDITSEL = 322;
+     CB_SETEXTENDEDUI = 341;
+     CB_SETHORIZONTALEXTENT = 350;
+     CB_SETITEMDATA = 337;
+     CB_SETITEMHEIGHT = 339;
+     CB_SETLOCALE = 345;
+     CB_SETTOPINDEX = 348;
+     CB_SHOWDROPDOWN = 335;
+  { Combo Box notifications  }
+     CBN_CLOSEUP = 8;
+     CBN_DBLCLK = 2;
+     CBN_DROPDOWN = 7;
+     CBN_EDITCHANGE = 5;
+     CBN_EDITUPDATE = 6;
+     CBN_ERRSPACE = -(1);
+     CBN_KILLFOCUS = 4;
+     CBN_SELCHANGE = 1;
+     CBN_SELENDCANCEL = 10;
+     CBN_SELENDOK = 9;
+     CBN_SETFOCUS = 3;
+  { Control Panel  }
+  { Device messages  }
+  { Drag list box  }
+     DL_BEGINDRAG = 1157;
+     DL_CANCELDRAG = 1160;
+     DL_DRAGGING = 1158;
+     DL_DROPPED = 1159;
+  { Default push button  }
+     DM_GETDEFID = 1024;
+     DM_REPOSITION = 1026;
+     DM_SETDEFID = 1025;
+  { RTF control  }
+     EM_CANPASTE = 1074;
+     EM_CANUNDO = 198;
+     EM_CHARFROMPOS = 215;
+     EM_DISPLAYBAND = 1075;
+     EM_EMPTYUNDOBUFFER = 205;
+     EM_EXGETSEL = 1076;
+     EM_EXLIMITTEXT = 1077;
+     EM_EXLINEFROMCHAR = 1078;
+     EM_EXSETSEL = 1079;
+     EM_FINDTEXT = 1080;
+     EM_FINDTEXTEX = 1103;
+     EM_FINDWORDBREAK = 1100;
+     EM_FMTLINES = 200;
+     EM_FORMATRANGE = 1081;
+     EM_GETCHARFORMAT = 1082;
+     EM_GETEVENTMASK = 1083;
+     EM_GETFIRSTVISIBLELINE = 206;
+     EM_GETHANDLE = 189;
+     EM_GETLIMITTEXT = 213;
+     EM_GETLINE = 196;
+     EM_GETLINECOUNT = 186;
+     EM_GETMARGINS = 212;
+     EM_GETMODIFY = 184;
+     EM_GETIMECOLOR = 1129;
+     EM_GETIMEOPTIONS = 1131;
+     EM_GETOPTIONS = 1102;
+     EM_GETOLEINTERFACE = 1084;
+     EM_GETPARAFORMAT = 1085;
+     EM_GETPASSWORDCHAR = 210;
+     EM_GETPUNCTUATION = 1125;
+     EM_GETRECT = 178;
+     EM_GETSEL = 176;
+     EM_GETSELTEXT = 1086;
+     EM_GETTEXTRANGE = 1099;
+     EM_GETTHUMB = 190;
+     EM_GETWORDBREAKPROC = 209;
+     EM_GETWORDBREAKPROCEX = 1104;
+     EM_GETWORDWRAPMODE = 1127;
+     EM_HIDESELECTION = 1087;
+     EM_LIMITTEXT = 197;
+     EM_LINEFROMCHAR = 201;
+     EM_LINEINDEX = 187;
+     EM_LINELENGTH = 193;
+     EM_LINESCROLL = 182;
+     EM_PASTESPECIAL = 1088;
+     EM_POSFROMCHAR = 214;
+     EM_REPLACESEL = 194;
+     EM_REQUESTRESIZE = 1089;
+     EM_SCROLL = 181;
+     EM_SCROLLCARET = 183;
+     EM_SELECTIONTYPE = 1090;
+     EM_SETBKGNDCOLOR = 1091;
+     EM_SETCHARFORMAT = 1092;
+     EM_SETEVENTMASK = 1093;
+     EM_SETHANDLE = 188;
+     EM_SETIMECOLOR = 1128;
+     EM_SETIMEOPTIONS = 1130;
+     EM_SETLIMITTEXT = 197;
+     EM_SETMARGINS = 211;
+     EM_SETMODIFY = 185;
+     EM_SETOLECALLBACK = 1094;
+     EM_SETOPTIONS = 1101;
+     EM_SETPARAFORMAT = 1095;
+     EM_SETPASSWORDCHAR = 204;
+     EM_SETPUNCTUATION = 1124;
+     EM_SETREADONLY = 207;
+     EM_SETRECT = 179;
+     EM_SETRECTNP = 180;
+     EM_SETSEL = 177;
+     EM_SETTABSTOPS = 203;
+     EM_SETTARGETDEVICE = 1096;
+     EM_SETWORDBREAKPROC = 208;
+     EM_SETWORDBREAKPROCEX = 1105;
+     EM_SETWORDWRAPMODE = 1126;
+     EM_STREAMIN = 1097;
+     EM_STREAMOUT = 1098;
+     EM_UNDO = 199;
+  { Edit control  }
+     EN_SETFOCUS     =$0100;
+     EN_KILLFOCUS    =$0200;
+     EN_CHANGE       =$0300;
+     EN_UPDATE       =$0400;
+     EN_ERRSPACE     =$0500;
+     EN_MAXTEXT      =$0501;
+     EN_HSCROLL      =$0601;
+     EN_VSCROLL      =$0602;
+
+     EN_CORRECTTEXT = 1797;
+     EN_DROPFILES = 1795;
+     EN_IMECHANGE = 1799;
+     EN_MSGFILTER = 1792;
+     EN_OLEOPFAILED = 1801;
+     EN_PROTECTED = 1796;
+     EN_REQUESTRESIZE = 1793;
+     EN_SAVECLIPBOARD = 1800;
+     EN_SELCHANGE = 1794;
+     EN_STOPNOUNDO = 1798;
+
+  { Hot key control  }
+  const
+     HKM_GETHOTKEY = 1026;
+     HKM_SETHOTKEY = 1025;
+     HKM_SETRULES = 1027;
+  { List box  }
+     LB_ADDFILE = 406;
+     LB_ADDSTRING = 384;
+     LB_DELETESTRING = 386;
+     LB_DIR = 397;
+     LB_FINDSTRING = 399;
+     LB_FINDSTRINGEXACT = 418;
+     LB_GETANCHORINDEX = 413;
+     LB_GETCARETINDEX = 415;
+     LB_GETCOUNT = 395;
+     LB_GETCURSEL = 392;
+     LB_GETHORIZONTALEXTENT = 403;
+     LB_GETITEMDATA = 409;
+     LB_GETITEMHEIGHT = 417;
+     LB_GETITEMRECT = 408;
+     LB_GETLOCALE = 422;
+     LB_GETSEL = 391;
+     LB_GETSELCOUNT = 400;
+     LB_GETSELITEMS = 401;
+     LB_GETTEXT = 393;
+     LB_GETTEXTLEN = 394;
+     LB_GETTOPINDEX = 398;
+     LB_INITSTORAGE = 424;
+     LB_INSERTSTRING = 385;
+     LB_ITEMFROMPOINT = 425;
+     LB_RESETCONTENT = 388;
+     LB_SELECTSTRING = 396;
+     LB_SELITEMRANGE = 411;
+     LB_SELITEMRANGEEX = 387;
+     LB_SETANCHORINDEX = 412;
+     LB_SETCARETINDEX = 414;
+     LB_SETCOLUMNWIDTH = 405;
+     LB_SETCOUNT = 423;
+     LB_SETCURSEL = 390;
+     LB_SETHORIZONTALEXTENT = 404;
+     LB_SETITEMDATA = 410;
+     LB_SETITEMHEIGHT = 416;
+     LB_SETLOCALE = 421;
+     LB_SETSEL = 389;
+     LB_SETTABSTOPS = 402;
+     LB_SETTOPINDEX = 407;
+  { List box notifications  }
+     LBN_DBLCLK = 2;
+     LBN_ERRSPACE = -(2);
+     LBN_KILLFOCUS = 5;
+     LBN_SELCANCEL = 3;
+     LBN_SELCHANGE = 1;
+     LBN_SETFOCUS = 4;
+  { List view control  }
+     LVM_ARRANGE = 4118;
+     LVM_CREATEDRAGIMAGE = 4129;
+     LVM_DELETEALLITEMS = 4105;
+     LVM_DELETECOLUMN = 4124;
+     LVM_DELETEITEM = 4104;
+     LVM_ENSUREVISIBLE = 4115;
+     LVM_GETBKCOLOR = 4096;
+     LVM_GETCALLBACKMASK = 4106;
+     LVM_GETCOLUMNWIDTH = 4125;
+     LVM_GETCOUNTPERPAGE = 4136;
+     LVM_GETEDITCONTROL = 4120;
+     LVM_GETIMAGELIST = 4098;
+     LVM_EDITLABELW = 4214;
+     LVM_FINDITEMW = 4179;
+     LVM_GETCOLUMNW = 4191;
+     LVM_GETISEARCHSTRINGW = 4213;
+     LVM_GETITEMW = 4171;
+     LVM_GETITEMTEXTW = 4211;
+     LVM_GETSTRINGWIDTHW = 4183;
+     LVM_INSERTCOLUMNW = 4193;
+     LVM_INSERTITEMW = 4173;
+     LVM_SETCOLUMNW = 4192;
+     LVM_SETITEMW = 4172;
+     LVM_SETITEMTEXTW = 4212;
+     LVM_EDITLABELA = 4119;
+     LVM_FINDITEMA = 4109;
+     LVM_GETCOLUMNA = 4121;
+     LVM_GETISEARCHSTRINGA = 4148;
+     LVM_GETITEMA = 4101;
+     LVM_GETITEMTEXTA = 4141;
+     LVM_GETSTRINGWIDTHA = 4113;
+     LVM_INSERTCOLUMNA = 4123;
+     LVM_INSERTITEMA = 4103;
+     LVM_SETCOLUMNA = 4122;
+     LVM_SETITEMA = 4102;
+     LVM_SETITEMTEXTA = 4142;
+     LVM_GETITEMCOUNT = 4100;
+     LVM_GETITEMPOSITION = 4112;
+     LVM_GETITEMRECT = 4110;
+     LVM_GETITEMSPACING = 4147;
+     LVM_GETITEMSTATE = 4140;
+     LVM_GETNEXTITEM = 4108;
+     LVM_GETORIGIN = 4137;
+     LVM_GETSELECTEDCOUNT = 4146;
+     LVM_GETTEXTBKCOLOR = 4133;
+     LVM_GETTEXTCOLOR = 4131;
+     LVM_GETTOPINDEX = 4135;
+     LVM_GETVIEWRECT = 4130;
+     LVM_HITTEST = 4114;
+     LVM_REDRAWITEMS = 4117;
+     LVM_SCROLL = 4116;
+     LVM_SETBKCOLOR = 4097;
+     LVM_SETCALLBACKMASK = 4107;
+     LVM_SETCOLUMNWIDTH = 4126;
+     LVM_SETIMAGELIST = 4099;
+     LVM_SETITEMCOUNT = 4143;
+     LVM_SETITEMPOSITION = 4111;
+     LVM_SETITEMPOSITION32 = 4145;
+     LVM_SETITEMSTATE = 4139;
+     LVM_SETTEXTBKCOLOR = 4134;
+     LVM_SETTEXTCOLOR = 4132;
+     LVM_SORTITEMS = 4144;
+     LVM_UPDATE = 4138;
+     LVM_SETICONSPACING           = 4149;   //LVM_FIRST + 53
+     LVM_SETEXTENDEDLISTVIEWSTYLE = 4150;   //LVM_FIRST + 54
+     LVM_GETSUBITEMRECT           = 4152;   //LVM_FIRST + 56
+     LVM_SUBITEMHITTEST           = 4153;   //LVM_FIRST + 57
+     LVM_SETCOLUMNORDERARRAY      = 4154;   //LVM_FIRST + 58
+     LVM_GETCOLUMNORDERARRAY      = 4155;   //LVM_FIRST + 59
+     LVM_APPROXIMATEVIEWRECT      = 4160;   //LVM_FIRST + 64
+     LVM_GETSELECTIONMARK         = 4162;   //LVM_FIRST + 66
+     LVM_SETSELECTIONMARK         = 4163;   //LVM_FIRST + 67
+     LVM_GETHEADER                = 4127;   //LVM_FIRST + 31
+
+{$ifdef UNICODE}
+
+  const
+     LVM_EDITLABEL = LVM_EDITLABELW;
+     LVM_FINDITEM = LVM_FINDITEMW;
+     LVM_GETCOLUMN = LVM_GETCOLUMNW;
+     LVM_GETISEARCHSTRING = LVM_GETISEARCHSTRINGW;
+     LVM_GETITEM = LVM_GETITEMW;
+     LVM_GETITEMTEXT = LVM_GETITEMTEXTW;
+     LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHW;
+     LVM_INSERTCOLUMN = LVM_INSERTCOLUMNW;
+     LVM_INSERTITEM = LVM_INSERTITEMW;
+     LVM_SETCOLUMN = LVM_SETCOLUMNW;
+     LVM_SETITEM = LVM_SETITEMW;
+     LVM_SETITEMTEXT = LVM_SETITEMTEXTW;
+{$else}
+
+  const
+     LVM_EDITLABEL = LVM_EDITLABELA;
+     LVM_FINDITEM = LVM_FINDITEMA;
+     LVM_GETCOLUMN = LVM_GETCOLUMNA;
+     LVM_GETISEARCHSTRING = LVM_GETISEARCHSTRINGA;
+     LVM_GETITEM = LVM_GETITEMA;
+     LVM_GETITEMTEXT = LVM_GETITEMTEXTA;
+     LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHA;
+     LVM_INSERTCOLUMN = LVM_INSERTCOLUMNA;
+     LVM_INSERTITEM = LVM_INSERTITEMA;
+     LVM_SETCOLUMN = LVM_SETCOLUMNA;
+     LVM_SETITEM = LVM_SETITEMA;
+     LVM_SETITEMTEXT = LVM_SETITEMTEXTA;
+{$endif}
+  { UNICODE  }
+
+  { List view control notifications  }
+     LVN_ITEMCHANGING     = -(100);
+     LVN_ITEMCHANGED      = -(101);
+     LVN_INSERTITEM       = -(102);
+     LVN_DELETEITEM       = -(103);
+     LVN_DELETEALLITEMS   = -(104);
+     LVN_BEGINLABELEDITA  = -(105);
+     LVN_ENDLABELEDITA    = -(106);
+     LVN_COLUMNCLICK      = -(108);
+     LVN_BEGINDRAG        = -(109);
+     LVN_BEGINRDRAG       = -(111);
+     LVN_ODCACHEHINT      = -(113); //#if (_WIN32_IE >= 0x0300)
+     LVN_ITEMACTIVATE     = -(114);
+     LVN_ODSTATECHANGED   = -(115);
+     LVN_GETDISPINFOA     = -(150);
+     LVN_SETDISPINFOA     = -(151);
+     LVN_ODFINDITEMA      = -(152); //#if (_WIN32_IE >= 0x0300)
+     LVN_KEYDOWN          = -(155);
+     LVN_MARQUEEBEGIN     = -(156); //#if (_WIN32_IE >= 0x0300)
+     LVN_BEGINLABELEDITW  = -(175);
+     LVN_ENDLABELEDITW    = -(176);
+     LVN_GETDISPINFOW     = -(177);
+     LVN_SETDISPINFOW     = -(178);
+     LVN_ODFINDITEMW      = -(179); //#if (_WIN32_IE >= 0x0300)
+
+{$ifdef UNICODE}
+     LVN_BEGINLABELEDIT = LVN_BEGINLABELEDITW;
+     LVN_ENDLABELEDIT = LVN_ENDLABELEDITW;
+     LVN_GETDISPINFO = LVN_GETDISPINFOW;
+     LVN_SETDISPINFO = LVN_SETDISPINFOW;
+     LVN_ODFINDITEM  = LVN_ODFINDITEMW;
+{$else}
+     LVN_BEGINLABELEDIT = LVN_BEGINLABELEDITA;
+     LVN_ENDLABELEDIT = LVN_ENDLABELEDITA;
+     LVN_GETDISPINFO = LVN_GETDISPINFOA;
+     LVN_SETDISPINFO = LVN_SETDISPINFOA;
+     LVN_ODFINDITEM  = LVN_ODFINDITEMA;
+{$endif}
+
+  { UNICODE  }
+
+  { Control notification  }
+     NM_CLICK = -(2);
+     NM_DBLCLK = -(3);
+     NM_KILLFOCUS = -(8);
+     NM_OUTOFMEMORY = -(1);
+     NM_RCLICK = -(5);
+     NM_RDBLCLK = -(6);
+     NM_RETURN = -(4);
+     NM_SETFOCUS = -(7);
+  { Power status  }
+  { Progress bar control  }
+     PBM_DELTAPOS = 1027;
+     PBM_SETPOS = 1026;
+     PBM_GETPOS = WM_USER+8;
+     PBM_SETRANGE = 1025;
+     PBM_SETRANGE32 = WM_USER+6;
+     PBM_GETRANGE = WM_USER+7;
+     PBM_SETSTEP = 1028;
+     PBM_STEPIT = 1029;
+  { Property sheets  } //prsht
+     PSM_SETCURSEL          = (WM_USER + 101);
+     PSM_REMOVEPAGE         = (WM_USER + 102);
+     PSM_ADDPAGE            = (WM_USER + 103);
+     PSM_CHANGED            = (WM_USER + 104);
+     PSM_RESTARTWINDOWS     = (WM_USER + 105);
+     PSM_REBOOTSYSTEM       = (WM_USER + 106);
+     PSM_CANCELTOCLOSE      = (WM_USER + 107);
+     PSM_QUERYSIBLINGS      = (WM_USER + 108);
+     PSM_UNCHANGED          = (WM_USER + 109);
+     PSM_APPLY              = (WM_USER + 110);
+     PSM_SETTITLEA          = (WM_USER + 111);
+     PSM_SETWIZBUTTONS      = (WM_USER + 112);
+     PSM_SETCURSELID        = (WM_USER + 114);
+     PSM_SETFINISHTEXTA     = (WM_USER + 115);
+     PSM_GETTABCONTROL      = (WM_USER + 116);
+     PSM_ISDIALOGMESSAGE    = (WM_USER + 117);
+     PSM_GETCURRENTPAGEHWND = (WM_USER + 118);
+     PSM_SETTITLEW          = (WM_USER + 120);
+     PSM_SETFINISHTEXTW     = (WM_USER + 121);
+     PSM_PRESSBUTTON = 1137;
+{$ifdef UNICODE}
+     PSM_SETFINISHTEXT = PSM_SETFINISHTEXTW;
+     PSM_SETTITLE = PSM_SETTITLEW;
+{$else UNICODE}
+     PSM_SETFINISHTEXT = PSM_SETFINISHTEXTA;
+     PSM_SETTITLE = PSM_SETTITLEA;
+{$endif UNICODE}
+
+  { Property sheet notifications  } //prsht
+     PSN_FIRST       = -(200);
+     PSN_SETACTIVE   = (PSN_FIRST-0);
+     PSN_KILLACTIVE  = (PSN_FIRST-1);
+     PSN_APPLY       = (PSN_FIRST-2);
+     PSN_RESET       = (PSN_FIRST-3);
+     PSN_HELP        = (PSN_FIRST-5);
+     PSN_WIZBACK     = (PSN_FIRST-6);
+     PSN_WIZNEXT     = (PSN_FIRST-7);
+     PSN_WIZFINISH   = (PSN_FIRST-8);
+     PSN_QUERYCANCEL = (PSN_FIRST-9);
+
+  { Status window  }
+     SB_GETBORDERS = 1031;
+     SB_GETPARTS = 1030;
+     SB_GETRECT = 1034;
+     SB_GETTEXTW = 1037;
+     SB_GETTEXTLENGTHW = 1036;
+     SB_SETTEXTW = 1035;
+     SB_GETTEXTA = 1026;
+     SB_GETTEXTLENGTHA = 1027;
+     SB_SETTEXTA = 1025;
+{$ifdef UNICODE}
+
+  const
+     SB_GETTEXT = SB_GETTEXTW;
+     SB_GETTEXTLENGTH = SB_GETTEXTLENGTHW;
+     SB_SETTEXT = SB_SETTEXTW;
+{$else}
+
+  const
+     SB_GETTEXT = SB_GETTEXTA;
+     SB_GETTEXTLENGTH = SB_GETTEXTLENGTHA;
+     SB_SETTEXT = SB_SETTEXTA;
+{$endif}
+  { UNICODE  }
+
+  const
+     SB_SETMINHEIGHT = 1032;
+     SB_SETPARTS = 1028;
+     SB_SIMPLE = 1033;
+  { Scroll bar control  }
+     SBM_ENABLE_ARROWS = 228;
+     SBM_GETPOS = 225;
+     SBM_GETRANGE = 227;
+     SBM_GETSCROLLINFO = 234;
+     SBM_SETPOS = 224;
+     SBM_SETRANGE = 226;
+     SBM_SETRANGEREDRAW = 230;
+     SBM_SETSCROLLINFO = 233;
+  { Static control  }
+     STM_GETICON = 369;
+     STM_GETIMAGE = 371;
+     STM_SETICON = 368;
+     STM_SETIMAGE = 370;
+  { Static control notifications  }
+     STN_CLICKED = 0;
+     STN_DBLCLK = 1;
+     STN_DISABLE = 3;
+     STN_ENABLE = 2;
+  { Toolbar control  }
+     TB_ADDBITMAP = 1043;
+     TB_ADDBUTTONS = 1044;
+     TB_AUTOSIZE = 1057;
+     TB_BUTTONCOUNT = 1048;
+     TB_BUTTONSTRUCTSIZE = 1054;
+     TB_CHANGEBITMAP = 1067;
+     TB_CHECKBUTTON = 1026;
+     TB_COMMANDTOINDEX = 1049;
+     TB_CUSTOMIZE = 1051;
+     TB_DELETEBUTTON = 1046;
+     TB_ENABLEBUTTON = 1025;
+     TB_GETBITMAP = 1068;
+     TB_GETBITMAPFLAGS = 1065;
+     TB_GETBUTTON = 1047;
+     TB_ADDSTRINGW = 1101;
+     TB_GETBUTTONTEXTW = 1099;
+     TB_SAVERESTOREW = 1100;
+     TB_ADDSTRINGA = 1052;
+     TB_GETBUTTONTEXTA = 1069;
+     TB_SAVERESTOREA = 1050;
+     TB_SETINDENT            = WM_USER + 47;
+     TB_SETIMAGELIST         = WM_USER + 48;
+     TB_GETIMAGELIST         = WM_USER + 49;
+     TB_LOADIMAGES           = WM_USER + 50;
+     TB_GETRECT              = WM_USER + 51;
+     TB_SETDISABLEDIMAGELIST = WM_USER + 54;
+     TB_GETDISABLEDIMAGELIST = WM_USER + 55;
+     TB_SETSTYLE             = WM_USER + 56;
+     TB_GETSTYLE             = WM_USER + 57;
+     TB_GETBUTTONSIZE        = WM_USER + 58;
+     TB_SETBUTTONWIDTH       = WM_USER + 59;
+     TB_SETMAXTEXTROWS       = WM_USER + 60;
+     TB_GETTEXTROWS          = WM_USER + 61;
+{$ifdef UNICODE}
+
+  const
+     TB_ADDSTRING = TB_ADDSTRINGW;
+     TB_GETBUTTONTEXT = TB_GETBUTTONTEXTW;
+     TB_SAVERESTORE = TB_SAVERESTOREW;
+{$else}
+
+  const
+     TB_ADDSTRING = TB_ADDSTRINGA;
+     TB_GETBUTTONTEXT = TB_GETBUTTONTEXTA;
+     TB_SAVERESTORE = TB_SAVERESTOREA;
+{$endif}
+  { UNICODE  }
+
+  const
+     TB_GETITEMRECT = 1053;
+     TB_GETROWS = 1064;
+     TB_GETSTATE = 1042;
+     TB_GETTOOLTIPS = 1059;
+     TB_HIDEBUTTON = 1028;
+     TB_INDETERMINATE = 1029;
+     TB_INSERTBUTTON = 1045;
+     TB_ISBUTTONCHECKED = 1034;
+     TB_ISBUTTONENABLED = 1033;
+     TB_ISBUTTONHIDDEN = 1036;
+     TB_ISBUTTONINDETERMINATE = 1037;
+     TB_ISBUTTONPRESSED = 1035;
+     TB_PRESSBUTTON = 1027;
+     TB_SETBITMAPSIZE = 1056;
+     TB_SETBUTTONSIZE = 1055;
+     TB_SETCMDID = 1066;
+     TB_SETPARENT = 1061;
+     TB_SETROWS = 1063;
+     TB_SETSTATE = 1041;
+     TB_SETTOOLTIPS = WM_USER + 81;
+  { Track bar control  }
+     TBM_CLEARSEL = 1043;
+     TBM_CLEARTICS = 1033;
+     TBM_GETCHANNELRECT = 1050;
+     TBM_GETLINESIZE = 1048;
+     TBM_GETNUMTICS = 1040;
+     TBM_GETPAGESIZE = 1046;
+     TBM_GETPOS = 1024;
+     TBM_GETPTICS = 1038;
+     TBM_GETRANGEMAX = 1026;
+     TBM_GETRANGEMIN = 1025;
+     TBM_GETSELEND = 1042;
+     TBM_GETSELSTART = 1041;
+     TBM_GETTHUMBLENGTH = 1052;
+     TBM_GETTHUMBRECT = 1049;
+     TBM_GETTIC = 1027;
+     TBM_GETTICPOS = 1039;
+     TBM_SETLINESIZE = 1047;
+     TBM_SETPAGESIZE = 1045;
+     TBM_SETPOS = 1029;
+     TBM_SETRANGE = 1030;
+     TBM_SETRANGEMAX = 1032;
+     TBM_SETRANGEMIN = 1031;
+     TBM_SETSEL = 1034;
+     TBM_SETSELEND = 1036;
+     TBM_SETSELSTART = 1035;
+     TBM_SETTHUMBLENGTH = 1051;
+     TBM_SETTIC = 1028;
+     TBM_SETTICFREQ = 1044;
+  { Tool bar control notifications  }
+     TBN_BEGINADJUST = -(703);
+     TBN_BEGINDRAG = -(701);
+     TBN_CUSTHELP = -(709);
+     TBN_ENDADJUST = -(704);
+     TBN_ENDDRAG = -(702);
+     TBN_GETBUTTONINFOW = -(720);
+     TBN_GETBUTTONINFOA = -(700);
+
+{$ifdef UNICODE}
+
+  const
+     TBN_GETBUTTONINFO = TBN_GETBUTTONINFOW;
+{$else}
+
+  const
+     TBN_GETBUTTONINFO = TBN_GETBUTTONINFOA;
+{$endif}
+  { UNICODE  }
+
+  const
+     TBN_QUERYDELETE = -(707);
+     TBN_QUERYINSERT = -(706);
+     TBN_RESET = -(705);
+     TBN_TOOLBARCHANGE = -(708);
+  { Tab control  }
+     TCM_ADJUSTRECT = 4904;
+     TCM_DELETEALLITEMS = 4873;
+     TCM_DELETEITEM = 4872;
+     TCM_GETCURFOCUS = 4911;
+     TCM_GETCURSEL = 4875;
+     TCM_GETIMAGELIST = 4866;
+     TCM_GETITEMW = 4924;
+     TCM_INSERTITEMW = 4926;
+     TCM_SETITEMW = 4925;
+     TCM_GETITEMA = 4869;
+     TCM_INSERTITEMA = 4871;
+     TCM_SETITEMA = 4870;
+
+{$ifdef UNICODE}
+  const
+     TCM_GETITEM = TCM_GETITEMW;  //~wint, W was missing
+     TCM_INSERTITEM = TCM_INSERTITEMW;
+     TCM_SETITEM = TCM_SETITEMW;
+{$else}
+
+  const
+     TCM_GETITEM = TCM_GETITEMA;
+     TCM_INSERTITEM = TCM_INSERTITEMA;
+     TCM_SETITEM = TCM_SETITEMA;
+{$endif}
+  { UNICODE  }
+
+  const
+     TCM_GETITEMCOUNT = 4868;
+     TCM_GETITEMRECT = 4874;
+     TCM_GETROWCOUNT = 4908;
+     TCM_GETTOOLTIPS = 4909;
+     TCM_HITTEST = 4877;
+     TCM_REMOVEIMAGE = 4906;
+     TCM_SETCURFOCUS = 4912;
+     TCM_SETCURSEL = 4876;
+     TCM_SETIMAGELIST = 4867;
+     TCM_SETITEMEXTRA = 4878;
+     TCM_SETITEMSIZE = 4905;
+     TCM_SETPADDING = 4907;
+     TCM_SETTOOLTIPS = 4910;
+  { Tab control notifications  }
+     TCN_KEYDOWN = -(550);
+     TCN_SELCHANGE = -(551);
+     TCN_SELCHANGING = -(552);
+  { Tool tip control  }
+     TTM_ACTIVATE = 1025;
+     TTM_ADDTOOLW = 1074;
+     TTM_DELTOOLW = 1075;
+     TTM_ENUMTOOLSW = 1082;
+     TTM_GETCURRENTTOOLW = 1083;
+     TTM_GETTEXTW = 1080;
+     TTM_GETTOOLINFOW = 1077;
+     TTM_HITTESTW = 1079;
+     TTM_NEWTOOLRECTW = 1076;
+     TTM_SETTOOLINFOW = 1078;
+     TTM_UPDATETIPTEXTW = 1081;
+     TTM_ADDTOOLA = 1028;
+     TTM_DELTOOLA = 1029;
+     TTM_ENUMTOOLSA = 1038;
+     TTM_GETCURRENTTOOLA = 1039;
+     TTM_GETTEXTA = 1035;
+     TTM_GETTOOLINFOA = 1032;
+     TTM_HITTESTA = 1034;
+     TTM_NEWTOOLRECTA = 1030;
+     TTM_SETTOOLINFOA = 1033;
+     TTM_UPDATETIPTEXTA = 1036;
+{$ifdef UNICODE}
+
+  const
+     TTM_ADDTOOL = TTM_ADDTOOLW;
+     TTM_DELTOOL = TTM_DELTOOLW;
+     TTM_ENUMTOOLS = TTM_ENUMTOOLSW;
+     TTM_GETCURRENTTOOL = TTM_GETCURRENTTOOLW;
+     TTM_GETTEXT = TTM_GETTEXTW;
+     TTM_GETTOOLINFO = TTM_GETTOOLINFOW;
+     TTM_HITTEST = TTM_HITTESTW;
+     TTM_NEWTOOLRECT = TTM_NEWTOOLRECTW;
+     TTM_SETTOOLINFO = TTM_SETTOOLINFOW;
+     TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTW;
+{$else}
+
+  const
+     TTM_ADDTOOL = TTM_ADDTOOLA;
+     TTM_DELTOOL = TTM_DELTOOLA;
+     TTM_ENUMTOOLS = TTM_ENUMTOOLSA;
+     TTM_GETCURRENTTOOL = TTM_GETCURRENTTOOLA;
+     TTM_GETTEXT = TTM_GETTEXTA;
+     TTM_GETTOOLINFO = TTM_GETTOOLINFOA;
+     TTM_HITTEST = TTM_HITTESTA;
+     TTM_NEWTOOLRECT = TTM_NEWTOOLRECTA;
+     TTM_SETTOOLINFO = TTM_SETTOOLINFOA;
+     TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTA;
+{$endif}
+  { UNICODE  }
+
+  const
+     TTM_GETTOOLCOUNT = 1037;
+     TTM_RELAYEVENT = 1031;
+     TTM_SETDELAYTIME = 1027;
+     TTM_WINDOWFROMPOINT = 1040;
+  { UNICODE  }
+
+  const
+     TTN_POP = -(522);
+     TTN_SHOW = -(521);
+  { Tree view control  }
+     TVM_CREATEDRAGIMAGE = 4370;
+     TVM_DELETEITEM = 4353;
+     TVM_ENDEDITLABELNOW = 4374;
+     TVM_ENSUREVISIBLE = 4372;
+     TVM_EXPAND = 4354;
+     TVM_GETCOUNT = 4357;
+     TVM_GETEDITCONTROL = 4367;
+     TVM_GETIMAGELIST = 4360;
+     TVM_GETINDENT = 4358;
+     TVM_GETITEMRECT = 4356;
+     TVM_GETNEXTITEM = 4362;
+     TVM_GETVISIBLECOUNT = 4368;
+     TVM_HITTEST = 4369;
+     TVM_EDITLABELW = 4417;
+     TVM_GETISEARCHSTRINGW = 4416;
+     TVM_GETITEMW = 4414;
+     TVM_INSERTITEMW = 4402;
+     TVM_SETITEMW = 4415;
+     TVM_EDITLABELA = 4366;
+     TVM_GETISEARCHSTRINGA = 4375;
+     TVM_GETITEMA = 4364;
+     TVM_INSERTITEMA = 4352;
+     TVM_SETITEMA = 4365;
+{$ifdef UNICODE}
+
+  const
+     TVM_EDITLABEL = TVM_EDITLABELW;
+     TVM_GETISEARCHSTRING = TVM_GETISEARCHSTRINGW;
+     TVM_GETITEM = TVM_GETITEMW;
+     TVM_INSERTITEM = TVM_INSERTITEMW;
+     TVM_SETITEM = TVM_SETITEMW;
+{$else}
+
+  const
+     TVM_EDITLABEL = TVM_EDITLABELA;
+     TVM_GETISEARCHSTRING = TVM_GETISEARCHSTRINGA;
+     TVM_GETITEM = TVM_GETITEMA;
+     TVM_INSERTITEM = TVM_INSERTITEMA;
+     TVM_SETITEM = TVM_SETITEMA;
+{$endif}
+  { UNICODE  }
+
+  const
+     TVM_SELECTITEM = 4363;
+     TVM_SETIMAGELIST = 4361;
+     TVM_SETINDENT = 4359;
+     TVM_SORTCHILDREN = 4371;
+     TVM_SORTCHILDRENCB = 4373;
+  { Tree view control notification  }
+     TVN_KEYDOWN = -(412);
+     TVN_BEGINDRAGW = -(456);
+     TVN_BEGINLABELEDITW = -(459);
+     TVN_BEGINRDRAGW = -(457);
+     TVN_DELETEITEMW = -(458);
+     TVN_ENDLABELEDITW = -(460);
+     TVN_GETDISPINFOW = -(452);
+     TVN_ITEMEXPANDEDW = -(455);
+     TVN_ITEMEXPANDINGW = -(454);
+     TVN_SELCHANGEDW = -(451);
+     TVN_SELCHANGINGW = -(450);
+     TVN_SETDISPINFOW = -(453);
+     TVN_BEGINDRAGA = -(407);
+     TVN_BEGINLABELEDITA = -(410);
+     TVN_BEGINRDRAGA = -(408);
+     TVN_DELETEITEMA = -(409);
+     TVN_ENDLABELEDITA = -(411);
+     TVN_GETDISPINFOA = -(403);
+     TVN_ITEMEXPANDEDA = -(406);
+     TVN_ITEMEXPANDINGA = -(405);
+     TVN_SELCHANGEDA = -(402);
+     TVN_SELCHANGINGA = -(401);
+     TVN_SETDISPINFOA = -(404);
+{$ifdef UNICODE}
+
+  const
+     TVN_BEGINDRAG = TVN_BEGINDRAGW;
+     TVN_BEGINLABELEDIT = TVN_BEGINLABELEDITW;
+     TVN_BEGINRDRAG = TVN_BEGINRDRAGW;
+     TVN_DELETEITEM = TVN_DELETEITEMW;
+     TVN_ENDLABELEDIT = TVN_ENDLABELEDITW;
+     TVN_GETDISPINFO = TVN_GETDISPINFOW;
+     TVN_ITEMEXPANDED = TVN_ITEMEXPANDEDW;
+     TVN_ITEMEXPANDING = TVN_ITEMEXPANDINGW;
+     TVN_SELCHANGED = TVN_SELCHANGEDW;
+     TVN_SELCHANGING = TVN_SELCHANGINGW;
+     TVN_SETDISPINFO = TVN_SETDISPINFOW;
+{$else}
+
+  const
+     TVN_BEGINDRAG = TVN_BEGINDRAGA;
+     TVN_BEGINLABELEDIT = TVN_BEGINLABELEDITA;
+     TVN_BEGINRDRAG = TVN_BEGINRDRAGA;
+     TVN_DELETEITEM = TVN_DELETEITEMA;
+     TVN_ENDLABELEDIT = TVN_ENDLABELEDITA;
+     TVN_GETDISPINFO = TVN_GETDISPINFOA;
+     TVN_ITEMEXPANDED = TVN_ITEMEXPANDEDA;
+     TVN_ITEMEXPANDING = TVN_ITEMEXPANDINGA;
+     TVN_SELCHANGED = TVN_SELCHANGEDA;
+     TVN_SELCHANGING = TVN_SELCHANGINGA;
+     TVN_SETDISPINFO = TVN_SETDISPINFOA;
+{$endif}
+  { UNICODE  }
+  { Up/down control  }
+
+  const
+     UDM_GETACCEL = 1132;
+     UDM_GETBASE = 1134;
+     UDM_GETBUDDY = 1130;
+     UDM_GETPOS = 1128;
+     UDM_GETPOS32 = 1138;
+     UDM_GETRANGE = 1126;
+     UDM_GETRANGE32 = 1136;
+     UDM_SETACCEL = 1131;
+     UDM_SETBASE = 1133;
+     UDM_SETBUDDY = 1129;
+     UDM_SETPOS = 1127;
+     UDM_SETPOS32 = 1137;
+     UDM_SETRANGE = 1125;
+     UDM_SETRANGE32 = 1135;
+  { Up/down control notification  }
+     UDN_DELTAPOS = -(722);
+  { Window messages  }
+     WM_ACTIVATE = 6;
+     WM_ACTIVATEAPP = 28;
+     WM_ASKCBFORMATNAME = 780;
+     WM_CANCELJOURNAL = 75;
+     WM_CANCELMODE = 31;
+     WM_CAPTURECHANGED = 533;
+     WM_CHANGECBCHAIN = 781;
+     WM_CHAR = 258;
+     WM_CHARTOITEM = 47;
+     WM_CHILDACTIVATE = 34;
+     WM_CHOOSEFONT_GETLOGFONT = 1025;
+     WM_CHOOSEFONT_SETLOGFONT = 1125;
+     WM_CHOOSEFONT_SETFLAGS = 1126;
+     WM_CLEAR = 771;
+     WM_CLOSE = 16;
+     WM_COMMAND = 273;
+     WM_COMPACTING = 65;
+     WM_COMPAREITEM = 57;
+     WM_CONTEXTMENU = 123;
+     WM_COPY = 769;
+     WM_COPYDATA = 74;
+     WM_CREATE = 1;
+     WM_CTLCOLORBTN = 309;
+     WM_CTLCOLORDLG = 310;
+     WM_CTLCOLOREDIT = 307;
+     WM_CTLCOLORLISTBOX = 308;
+     WM_CTLCOLORMSGBOX = 306;
+     WM_CTLCOLORSCROLLBAR = 311;
+     WM_CTLCOLORSTATIC = 312;
+     WM_CUT = 768;
+     WM_DEADCHAR = 259;
+     WM_DELETEITEM = 45;
+     WM_DESTROY = 2;
+     WM_DESTROYCLIPBOARD = 775;
+     WM_DEVICECHANGE = 537;
+     WM_DEVMODECHANGE = 27;
+     WM_DISPLAYCHANGE = 126;
+     WM_DRAWCLIPBOARD = 776;
+     WM_DRAWITEM = 43;
+     WM_DROPFILES = 563;
+     WM_ENABLE = 10;
+     WM_ENDSESSION = 22;
+     WM_ENTERIDLE = 289;
+     WM_ENTERMENULOOP = 529;
+     WM_ENTERSIZEMOVE = 561;
+     WM_ERASEBKGND = 20;
+     WM_EXITMENULOOP = 530;
+     WM_EXITSIZEMOVE = 562;
+     WM_FONTCHANGE = 29;
+     WM_GETDLGCODE = 135;
+     WM_GETFONT = 49;
+     WM_GETHOTKEY = 51;
+     WM_GETICON = 127;
+     WM_GETMINMAXINFO = 36;
+     WM_GETTEXT = 13;
+     WM_GETTEXTLENGTH = 14;
+     WM_HELP = 83;
+     WM_HOTKEY = 786;
+     WM_HSCROLL = 276;
+     WM_HSCROLLCLIPBOARD = 782;
+     WM_ICONERASEBKGND = 39;
+     WM_IME_CHAR = 646;
+     WM_IME_COMPOSITION = 271;
+     WM_IME_COMPOSITIONFULL = 644;
+     WM_IME_CONTROL = 643;
+     WM_IME_ENDCOMPOSITION = 270;
+     WM_IME_KEYDOWN = 656;
+     WM_IME_KEYUP = 657;
+     WM_IME_NOTIFY = 642;
+     WM_IME_SELECT = 645;
+     WM_IME_SETCONTEXT = 641;
+     WM_IME_STARTCOMPOSITION = 269;
+     WM_INITDIALOG = 272;
+     WM_INITMENU = 278;
+     WM_INITMENUPOPUP = 279;
+     WM_INPUTLANGCHANGE = 81;
+     WM_INPUTLANGCHANGEREQUEST = 80;
+     WM_KEYDOWN = 256;
+     WM_KEYUP = 257;
+     WM_KILLFOCUS = 8;
+     WM_LBUTTONDBLCLK = 515;
+     WM_LBUTTONDOWN = 513;
+     WM_LBUTTONUP = 514;
+     WM_MBUTTONDBLCLK = 521;
+     WM_MBUTTONDOWN = 519;
+     WM_MBUTTONUP = 520;
+     WM_MDIACTIVATE = 546;
+     WM_MDICASCADE = 551;
+     WM_MDICREATE = 544;
+     WM_MDIDESTROY = 545;
+     WM_MDIGETACTIVE = 553;
+     WM_MDIICONARRANGE = 552;
+     WM_MDIMAXIMIZE = 549;
+     WM_MDINEXT = 548;
+     WM_MDIREFRESHMENU = 564;
+     WM_MDIRESTORE = 547;
+     WM_MDISETMENU = 560;
+     WM_MDITILE = 550;
+     WM_MEASUREITEM = 44;
+     WM_MENUCHAR = 288;
+     WM_MENUSELECT = 287;
+     WM_MOUSEACTIVATE = 33;
+     WM_MOUSEMOVE = 512;
+     WM_MOUSEWHEEL = 522;
+     WM_MOUSEHOVER = 673;
+     WM_MOUSELEAVE = 675;
+     WM_MOVE = 3;
+     WM_MOVING = 534;
+     WM_NCACTIVATE = 134;
+     WM_NCCALCSIZE = 131;
+     WM_NCCREATE = 129;
+     WM_NCDESTROY = 130;
+     WM_NCHITTEST = 132;
+     WM_NCLBUTTONDBLCLK = 163;
+     WM_NCLBUTTONDOWN = 161;
+     WM_NCLBUTTONUP = 162;
+     WM_NCMBUTTONDBLCLK = 169;
+     WM_NCMBUTTONDOWN = 167;
+     WM_NCMBUTTONUP = 168;
+     WM_NCMOUSEMOVE = 160;
+     WM_NCPAINT = 133;
+     WM_NCRBUTTONDBLCLK = 166;
+     WM_NCRBUTTONDOWN = 164;
+     WM_NCRBUTTONUP = 165;
+     WM_NEXTDLGCTL = 40;
+     WM_NOTIFY = 78;
+     WM_NOTIFYFORMAT = 85;
+     WM_NULL = 0;
+     WM_PAINT = 15;
+     WM_PAINTCLIPBOARD = 777;
+     WM_PAINTICON = 38;
+     WM_PALETTECHANGED = 785;
+     WM_PALETTEISCHANGING = 784;
+     WM_PARENTNOTIFY = 528;
+     WM_PASTE = 770;
+     WM_PENWINFIRST = 896;
+     WM_PENWINLAST = 911;
+     WM_POWER = 72;
+     WM_POWERBROADCAST = 536;
+     WM_PRINT = 791;
+     WM_PRINTCLIENT = 792;
+     WM_PSD_ENVSTAMPRECT = 1029;
+     WM_PSD_FULLPAGERECT = 1025;
+     WM_PSD_GREEKTEXTRECT = 1028;
+     WM_PSD_MARGINRECT = 1027;
+     WM_PSD_MINMARGINRECT = 1026;
+     WM_PSD_PAGESETUPDLG = 1024;
+     WM_PSD_YAFULLPAGERECT = 1030;
+     WM_QUERYDRAGICON = 55;
+     WM_QUERYENDSESSION = 17;
+     WM_QUERYNEWPALETTE = 783;
+     WM_QUERYOPEN = 19;
+     WM_QUEUESYNC = 35;
+     WM_QUIT = 18;
+     WM_RBUTTONDBLCLK = 518;
+     WM_RBUTTONDOWN = 516;
+     WM_RBUTTONUP = 517;
+     WM_RENDERALLFORMATS = 774;
+     WM_RENDERFORMAT = 773;
+     WM_SETCURSOR = 32;
+     WM_SETFOCUS = 7;
+     WM_SETFONT = 48;
+     WM_SETHOTKEY = 50;
+     WM_SETICON = 128;
+     WM_SETREDRAW = 11;
+     WM_SETTEXT = 12;
+     WM_SETTINGCHANGE = 26;
+     WM_SHOWWINDOW = 24;
+     WM_SIZE = 5;
+     WM_SIZECLIPBOARD = 779;
+     WM_SIZING = 532;
+     WM_SPOOLERSTATUS = 42;
+     WM_STYLECHANGED = 125;
+     WM_STYLECHANGING = 124;
+     WM_SYSCHAR = 262;
+     WM_SYSCOLORCHANGE = 21;
+     WM_SYSCOMMAND = 274;
+     WM_SYSDEADCHAR = 263;
+     WM_SYSKEYDOWN = 260;
+     WM_SYSKEYUP = 261;
+     WM_TCARD = 82;
+     WM_TIMECHANGE = 30;
+     WM_TIMER = 275;
+     WM_UNDO = 772;
+     //WM_USER = 1024; moved at start
+     WM_USERCHANGED = 84;
+     WM_VKEYTOITEM = 46;
+     WM_VSCROLL = 277;
+     WM_VSCROLLCLIPBOARD = 778;
+     WM_WINDOWPOSCHANGED = 71;
+     WM_WINDOWPOSCHANGING = 70;
+     WM_WININICHANGE = 26;
+  { Window message ranges  }
+     WM_KEYFIRST = 256;
+     WM_KEYLAST = 264;
+     WM_MOUSEFIRST = 512;
+     WM_MOUSELAST     = 525;
+     WM_XBUTTONDOWN   = 523;
+     WM_XBUTTONUP     = 524;
+     WM_XBUTTONDBLCLK = 525;
+
+Type
+{$ifdef MESSAGESUNIT}
+
+    MSG                 = Windows.MSG;
+    TMessage            = Windows.TMessage;
+    TWMSize             = Windows.TWMSize;
+    TWMNoParams         = Windows.TWMNoParams;
+    TWMScroll           = Windows.TWMScroll;
+    TWMGetText          = Windows.TWMGetText;
+    TWMKillFocus        = Windows.TWMKillFocus;
+    TWMSetCursor        = Windows.TWMSetCursor;
+    TWMSetFocus         = Windows.TWMSetFocus;
+    TWMSetFont          = Windows.TWMSetFont;
+    TWMShowWindow       = Windows.TWMShowWindow;
+    TWMEraseBkgnd       = Windows.TWMEraseBkgnd;
+    LPMSG               = Windows.MSG;
+    tagMSG              = Windows.tagMSG;
+    TMSG                = Windows.TMSG;
+    PMSG                = Windows.PMSG;
+    PMessage            = Windows.PMessage;
+    TWMGetDlgCode       = TWMNoParams;
+    TWMFontChange       = TWMNoParams;
+    TWMGetFont          = TWMNoParams;
+    TWMHScroll          = TWMScroll;
+    TWMVScroll          = TWMScroll;
+    TWMGetTextLength    = TWMNoParams;
+
+{$else}
+
+     MSG = record
+          hwnd : HWND;
+          message : UINT;
+          wParam : WPARAM;
+          lParam : LPARAM;
+          time : DWORD;
+          pt : POINT;
+       end;
+
+     LPMSG = ^MSG;
+     tagMSG = MSG;
+     TMSG = MSG;
+     PMSG = ^MSG;
+
+
+     PMessage = ^TMessage;
+     TMessage = record       {fields according to ICS}
+        msg      : UINT;
+        case longint of
+          0: (
+              wParam : WPARAM;
+              lParam : LPARAM;
+              Result : LRESULT;
+             );
+          1: (
+              wParamlo,
+              wParamhi : WORD;  // Is there Windows type for half an wparam?
+              lParamlo,
+              lParamhi : WORD;
+              Resultlo,
+              Resulthi : WORD;
+             );
+       end;
+
+    TWMSize = record
+      Msg: Cardinal;
+      SizeType : LongInt;
+      Width : Word;
+      Height : Word;
+      Result : LongInt;
+    End;
+
+    TWMNoParams = record
+      Msg : Cardinal;
+      Unused : array[0..3] of Word;
+      Result : Longint;
+    end;
+
+    TWMGetDlgCode = TWMNoParams;
+    TWMFontChange = TWMNoParams;
+    TWMGetFont = TWMNoParams;
+
+    TWMScroll = record
+      Msg : Cardinal;
+      ScrollCode : SmallInt;
+      Pos : SmallInt;
+      ScrollBar : HWND;
+      Result : LongInt;
+    end;
+
+    TWMHScroll = TWMScroll;
+    TWMVScroll = TWMScroll;
+
+    TWMGetText = record
+      Msg : Cardinal;
+      TextMax : LongInt;
+      Text : PChar;
+      Result : LongInt;
+    end;
+
+    TWMGetTextLength = TWMNoParams;
+
+    TWMKillFocus = record
+       Msg : Cardinal;
+       FocusedWnd : HWND;
+       UnUsed : LongInt;
+       Result : LongInt;
+    End;
+
+    TWMSetCursor = record
+      Msg : Cardinal;
+      CursorWnd : HWND;
+      HitTest : Word;
+      MouseMsg : Word;
+      Result : LongInt;
+    end;
+
+    TWMSetFocus = record
+      Msg : Cardinal;
+      FocusedWnd : HWND;
+      Unused : LongInt;
+      Result : LongInt;
+    end;
+
+    TWMSetFont = record
+      Msg : Cardinal;
+      Font : HFONT;
+      Redraw : WordBool;
+      Unused : Word;
+      Result : LongInt;
+    end;
+
+    TWMShowWindow = record
+      Msg : Cardinal;
+      Show : BOOL;
+      Status : LongInt;
+      Result : LongInt;
+    end;
+
+    TWMEraseBkgnd = record
+      Msg: Cardinal;
+      DC: HDC;
+      Unused: Longint;
+      Result: Longint;
+    end;
+
+{$endif messagesunit}
+
+{$endif read_interface}
+

+ 391 - 391
rtl/wince/wininc/redef.inc

@@ -1,391 +1,391 @@
-{
-    This file is part of the Free Pascal run time library.
-    Copyright (c) 1999-2001 by the Free Pascal development team
-
-    This file defines type names as they are used by Delphi
-
-    See the file COPYING.FPC, included in this distribution,
-    for details about the copyright.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- **********************************************************************
-
-}
-
-{$ifdef read_interface}
-
-type
-  PIID = PGUID;
-  TIID = TGUID;
-  THANDLE = HANDLE;
-
-  PSmallRect = ^TSmallRect;
-  TSmallRect = SMALL_RECT;
-
-  PCharInfo = ^TCharInfo;
-  TCharInfo = _CHAR_INFO;
-
-  TFarProc = FARPROC;
-  TFNDlgProc = FARPROC;
-  TFNThreadStartRoutine = FARPROC;
-  TFNTimerAPCRoutine    = FARPROC;
-  TFNFiberStartRoutine  = FARPROC;
-
-  PObjectTypeList = ^TObjectTypeList;
-  _OBJECT_TYPE_LIST = record
-     Level: WORD;
-     Sbz: WORD;
-     ObjectType: PGUID;
-  end;
-  TObjectTypeList = _OBJECT_TYPE_LIST;
-  OBJECT_TYPE_LIST = _OBJECT_TYPE_LIST;
-
-  AUDIT_EVENT_TYPE = DWORD;
-
-  PBlendFunction = ^TBlendFunction;
-  _BLENDFUNCTION = packed record
-    BlendOp: BYTE;
-    BlendFlags: BYTE;
-    SourceConstantAlpha: BYTE;
-    AlphaFormat: BYTE;
-  end;
-  TBlendFunction = _BLENDFUNCTION;
-  BLENDFUNCTION = _BLENDFUNCTION;
-
-  _WIN_CERTIFICATE =  Packed Record
-                       dwLength         : DWord;
-                       wRevision        : Word;
-                       wCertificateType : Word;
-                       bCertificate     : Array[0..0] of Byte;
-                      End;
-  TWinCertificate = _WIN_CERTIFICATE;
-  PWinCertificate = ^TWinCertificate;
-
-  TMaxLogPalette = Packed Record
-     palVersion    : Word;
-     palNumEntries : Word;
-     palPalEntry   : array[Byte] of TPaletteEntry;
-  end;
-  PMaxLogPalette = ^TMaxLogPalette;
-
-//
-//  A language ID is a 16 bit value which is the combination of a
-//  primary language ID and a secondary language ID.  The bits are
-//  allocated as follows:
-//
-//       +-----------------------+-------------------------+
-//       |     Sublanguage ID    |   Primary Language ID   |
-//       +-----------------------+-------------------------+
-//        15                   10 9                       0   bit
-//
-//
-//  Language ID creation/extraction macros:
-//
-//    MAKELANGID    - construct language id from a primary language id and
-//                    a sublanguage id.
-//    PRIMARYLANGID - extract primary language id from a language id.
-//    SUBLANGID     - extract sublanguage id from a language id.
-//
-
-function MAKELANGID(PrimaryLang, SubLang: USHORT): WORD;
-function PRIMARYLANGID(LangId: WORD): WORD;
-function SUBLANGID(LangId: WORD): WORD;
-
-//
-//  A locale ID is a 32 bit value which is the combination of a
-//  language ID, a sort ID, and a reserved area.  The bits are
-//  allocated as follows:
-//
-//       +-------------+---------+-------------------------+
-//       |   Reserved  | Sort ID |      Language ID        |
-//       +-------------+---------+-------------------------+
-//        31         20 19     16 15                      0   bit
-//
-//
-//  Locale ID creation/extraction macros:
-//
-//    MAKELCID            - construct the locale id from a language id and a sort id.
-//    MAKESORTLCID        - construct the locale id from a language id, sort id, and sort version.
-//    LANGIDFROMLCID      - extract the language id from a locale id.
-//    SORTIDFROMLCID      - extract the sort id from a locale id.
-//    SORTVERSIONFROMLCID - extract the sort version from a locale id.
-//
-
-const
-  NLS_VALID_LOCALE_MASK = $000fffff;                              //winnt
-
-function MAKELCID(LangId, SortId: WORD): DWORD;                   //winnt
-function MAKESORTLCID(LangId, SortId, SortVersion: WORD): DWORD;  //winnt
-function LANGIDFROMLCID(LocaleId: LCID): WORD;                    //winnt
-function SORTIDFROMLCID(LocaleId: LCID): WORD;                    //winnt
-function SORTVERSIONFROMLCID(LocaleId: LCID): WORD;               //winnt
-
-//
-//  Default System and User IDs for language and locale.
-//
-
-function LANG_SYSTEM_DEFAULT: WORD;                               //winnt
-function LANG_USER_DEFAULT: WORD;                                 //winnt
-function LOCALE_SYSTEM_DEFAULT: DWORD;                            //+winnt
-function LOCALE_USER_DEFAULT: DWORD;                            //+winnt
-function LOCALE_NEUTRAL: DWORD;                                   //winnt
-function LOCALE_INVARIANT: DWORD;                                 //winnt
-
-function BeginPaint(hWnd: HWND; var lpPaint: TPaintStruct): HDC; external KernelDLL name 'BeginPaint';
-function ChangeDisplaySettingsEx(lpszDeviceName: PWideChar; var lpDevMode: TDeviceMode; wnd: HWND; dwFlags: DWORD; lParam: Pointer): Longint;external KernelDLL name 'ChangeDisplaySettingsEx';
-function ClearCommError(hFile: THandle; var lpErrors: DWORD; lpStat: PComStat): BOOL; external KernelDLL name 'ClearCommError';
-function ClientToScreen(hWnd: HWND; var lpPoint: TPoint): BOOL; external KernelDLL name 'ClientToScreen';
-function ClipCursor(var lpRect:RECT):WINBOOL; external KernelDLL name 'ClipCursor';
-function CopyRect(var lprcDst: TRect; const lprcSrc: TRect): BOOL; external KernelDLL name 'CopyRect';
-function CreateAcceleratorTable(var Accel; Count: Integer): HACCEL; external KernelDLL name 'CreateAcceleratorTableW';
-function CreateAcceleratorTableW(var Accel; Count: Integer): HACCEL; external KernelDLL name 'CreateAcceleratorTableW';
-function CreateDialogIndirectParam(hInstance: HINST; const lpTemplate: TDlgTemplate; hWndParent: HWND; lpDialogFunc: TFNDlgProc; dwInitParam: LPARAM): HWND;external KernelDLL name 'CreateDialogIndirectParamW';
-function CreateFontIndirect(const p1: TLogFont): HFONT; external KernelDLL name 'CreateFontIndirectW';
-function CreateFontIndirectW(const p1: TLogFontW): HFONT; external KernelDLL name 'CreateFontIndirectW';
-function CreateIconIndirect(var piconinfo: TIconInfo): HICON; external KernelDLL name 'CreateIconIndirect';
-function CreateProcess(lpApplicationName: LPTSTR; lpCommandLine: LPTSTR; lpProcessAttributes, lpThreadAttributes: PSecurityAttributes; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: LPTSTR;
-  const lpStartupInfo: LPStartupInfo; var lpProcessInformation: TProcessInformation): BOOL;external KernelDLL name 'CreateProcessW';
-function CreateProcess(lpApplicationName: LPTSTR; lpCommandLine: LPTSTR; lpProcessAttributes, lpThreadAttributes: PSecurityAttributes; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: LPTSTR;
-  const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): BOOL;external KernelDLL name 'CreateProcessW';
-function CreateProcessW(lpApplicationName: LPWSTR; lpCommandLine: LPWSTR; lpProcessAttributes, lpThreadAttributes: PSecurityAttributes; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: LPWSTR;
-  const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): BOOL; external KernelDLL name 'CreateProcessW';
-procedure DeleteCriticalSection(var CriticalSection : TRTLCriticalSection); external KernelDLL name 'DeleteCriticalSection';
-function DeviceIoControl(hDevice: THandle; dwIoControlCode: DWORD; lpInBuffer: Pointer; nInBufferSize: DWORD; lpOutBuffer: Pointer; nOutBufferSize: DWORD; var lpBytesReturned: DWORD; lpOverlapped: POverlapped): BOOL;
-  external KernelDLL name 'DeviceIoControl';
-function DispatchMessage(const lpMsg: TMsg): Longint; external KernelDLL name 'DispatchMessageW';
-function DispatchMessageW(const lpMsg: TMsg): Longint; external KernelDLL name 'DispatchMessageW';
-function DrawEdge(hdc: HDC; var qrc: TRect; edge: UINT; grfFlags: UINT): BOOL; external KernelDLL name 'DrawEdge';
-function DrawFrameControl(DC: HDC; const Rect: TRect; uType, uState: UINT): BOOL; external KernelDLL name 'DrawFrameControl';
-function DrawText(hDC: HDC; lpString: LPWSTR; nCount: Integer; var lpRect: TRect; uFormat: UINT): Integer; external KernelDLL name 'DrawTextW';
-function DrawTextW(hDC: HDC; lpString: LPWSTR; nCount: Integer; var lpRect: TRect; uFormat: UINT): Integer; external KernelDLL name 'DrawTextW';
-function EndPaint(hWnd: HWND; const lpPaint: TPaintStruct): BOOL; external KernelDLL name 'EndPaint';
-procedure EnterCriticalSection(var CriticalSection : TRTLCriticalSection); external KernelDLL name 'EnterCriticalSection';
-function EnumDisplaySettings(lpszDeviceName: PWideChar; iModeNum: DWORD; var lpDevMode: TDeviceMode): BOOL;external KernelDLL name 'EnumDisplaySettings';
-function EnumDisplaySettingsW(lpszDeviceName: PWideChar; iModeNum: DWORD; var lpDevMode: TDeviceModeW): BOOL;external KernelDLL name 'EnumDisplaySettings';
-function ExtCreateRegion(p1: PXForm; p2: DWORD; const p3: TRgnData): HRGN; external KernelDLL name 'ExtCreateRegion';
-function FileTimeToSystemTime(const lpFileTime: TFileTime; var lpSystemTime: TSystemTime): BOOL; external KernelDLL name 'FileTimeToSystemTime';
-function FileTimeToLocalFileTime(const lpFileTime: TFileTime; var lpLocalFileTime: TFileTime): BOOL; external KernelDLL name 'FileTimeToLocalFileTime';
-function FindFirstFile(lpFileName: LPTSTR; var lpFindFileData: TWIN32FindData): THandle; external KernelDLL name 'FindFirstFileW';
-function FindFirstFileW(lpFileName: LPTSTR; var lpFindFileData: TWIN32FindDataW): THandle; external KernelDLL name 'FindFirstFileW';
-function FindNextFile(hFindFile: THandle; var lpFindFileData: TWIN32FindData): BOOL; external KernelDLL name 'FindNextFileW';
-function FindNextFileW(hFindFile: THandle; var lpFindFileData: TWIN32FindDataW): BOOL; external KernelDLL name 'FindNextFileW';
-function GetCaretPos(var lpPoint: TPoint): BOOL; external KernelDLL name 'GetCaretPos';
-function GetCharABCWidths(DC: HDC; p2, p3: UINT; const ABCStructs): BOOL;external KernelDLL name 'GetCharABCWidths';
-function GetCharABCWidthsW(DC: HDC; p2, p3: UINT; const ABCStructs): BOOL;external KernelDLL name 'GetCharABCWidths';
-function GetCharWidth32(DC: HDC; p2, p3: UINT; const Widths): BOOL;external KernelDLL name 'GetCharWidth32';
-function GetCharWidth32W(DC: HDC; p2, p3: UINT; const Widths): BOOL;external KernelDLL name 'GetCharWidth32';
-function GetClassInfo(hInstance: HINST; lpClassName: LPWSTR; var lpWndClass: TWndClassW): BOOL; external KernelDLL name 'GetClassInfoW';
-function GetClassInfoW(hInstance: HINST; lpClassName: LPWSTR; var lpWndClass: TWndClassW): BOOL; external KernelDLL name 'GetClassInfoW';
-function GetClientRect(hWnd: HWND; var lpRect: TRect): BOOL; external KernelDLL name 'GetClientRect';
-function GetClipBox(DC: HDC; var Rect: TRect): Integer; external KernelDLL name 'GetClipBox';
-function GetClipCursor(var lpRect: TRect): BOOL; external KernelDLL name 'GetClipCursor';
-function GetCommModemStatus(hFile: THandle; var lpModemStat: DWORD): BOOL; external KernelDLL name 'GetCommModemStatus';
-function GetCommProperties(hFile: THandle; var lpCommProp: TCommProp): BOOL; external KernelDLL name 'GetCommProperties';
-function GetCommState(hFile: THandle; var lpDCB: TDCB): BOOL; external KernelDLL name 'GetCommState';
-function GetCommTimeouts(hFile: THandle; var lpCommTimeouts: TCommTimeouts): BOOL; external KernelDLL name 'GetCommTimeouts';
-function GetCursorPos(var lpPoint: TPoint): BOOL; external KernelDLL name 'GetCursorPos';
-function GetCPInfo(CodePage: UINT; var lpCPInfo: TCPInfo): BOOL;external KernelDLL name 'GetCPInfo';
-function GetDIBColorTable(DC: HDC; p2, p3: UINT; var RGBQuadStructs): UINT; external KernelDLL name 'GetDIBColorTable';
-function GetDiskFreeSpaceEx(lpDirectoryName: PWideChar; var lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes: TLargeInteger; lpTotalNumberOfFreeBytes: PLargeInteger): BOOL;external KernelDLL name 'GetDiskFreeSpaceExW';
-function GetDiskFreeSpaceExW(lpDirectoryName: PWideChar; var lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes: TLargeInteger; lpTotalNumberOfFreeBytes: PLargeInteger): BOOL;external KernelDLL name 'GetDiskFreeSpaceExW';
-function GetExitCodeProcess(hProcess: THandle; var lpExitCode: DWORD): BOOL; external KernelDLL name 'GetExitCodeProcess';
-function GetExitCodeThread(hThread: THandle; var lpExitCode: DWORD): BOOL; external KernelDLL name 'GetExitCodeThread';
-function GetFileInformationByHandle(hFile: THandle; var lpFileInformation: TByHandleFileInformation): BOOL; external KernelDLL name 'GetFileInformationByHandle';
-function GetKeyboardLayoutList(nBuff: Integer; var List): UINT; external KernelDLL name 'GetKeyboardLayoutList';
-procedure GetLocalTime(var SystemTime: SYSTEMTIME); external KernelDLL name 'GetLocalTime';
-function GetMenuItemInfo(p1: HMENU; p2: UINT; p3: BOOL; var p4: TMenuItemInfo): BOOL; external KernelDLL name 'GetMenuItemInfoW';
-function GetMenuItemInfoW(p1: HMENU; p2: UINT; p3: BOOL; var p4: TMenuItemInfoW): BOOL; external KernelDLL name 'GetMenuItemInfoW';
-function GetMessage(var lpMsg: TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax: UINT): BOOL;external KernelDLL name 'GetMessageW';
-function GetOpenFileName(var OpenFile:TOPENFILENAMEW):WINBOOL; external KernelDLL name 'GetOpenFileNameW';
-function GetOpenFileNameW(var OpenFile:TOPENFILENAMEW):WINBOOL; external KernelDLL name 'GetOpenFileNameW';
-function GetPaletteEntries(Palette: HPALETTE; StartIndex, NumEntries: UINT; var PaletteEntries): UINT; external KernelDLL name 'GetPaletteEntries';
-function GetRgnBox(RGN: HRGN; var p2: TRect): Integer; external KernelDLL name 'GetRgnBox';
-function GetSaveFileName(var OpenFile:TOPENFILENAMEW):WINBOOL; external KernelDLL name 'GetSaveFileNameW';
-function GetSaveFileNameW(var OpenFile:TOPENFILENAMEW):WINBOOL; external KernelDLL name 'GetSaveFileNameW';
-function GetScrollInfo(hWnd: HWND; BarFlag: Integer; var ScrollInfo: TScrollInfo): BOOL; external KernelDLL name 'GetScrollInfo';
-function GetStringType(dwInfoType: DWORD; const lpSrcStr: PWideChar; cchSrc: BOOL; var lpCharType: Word): BOOL;external KernelDLL name 'GetStringTypeW';
-function GetStringTypeW(dwInfoType: DWORD; const lpSrcStr: PWideChar; cchSrc: BOOL; var lpCharType: Word): BOOL;external KernelDLL name 'GetStringTypeW';
-function GetStringTypeEx(Locale: LCID; dwInfoType: DWORD; lpSrcStr: PWideChar; cchSrc: Integer; var lpCharType): BOOL; external KernelDLL name 'GetStringTypeExW';
-function GetStringTypeExW(Locale: LCID; dwInfoType: DWORD; lpSrcStr: PWideChar; cchSrc: Integer; var lpCharType): BOOL; external KernelDLL name 'GetStringTypeExW';
-procedure GetSystemInfo(var SystemInfo:SYSTEM_INFO); external KernelDLL name 'GetSystemInfo';
-function GetSystemPaletteEntries(DC: HDC; StartIndex, NumEntries: UINT; var PaletteEntries): UINT; external KernelDLL name 'GetSystemPaletteEntries';
-procedure GetSystemTime(var lpSystemTime:SYSTEMTIME); external KernelDLL name 'GetSystemTime';
-function GetTextExtentExPoint(DC: HDC; p2: LPWSTR; p3, p4: Integer; p5, p6: PInteger; var p7: TSize): BOOL; external KernelDLL name 'GetTextExtentExPointW';
-function GetTextExtentExPointW(DC: HDC; p2: LPWSTR; p3, p4: Integer; p5, p6: PInteger; var p7: TSize): BOOL; external KernelDLL name 'GetTextExtentExPointW';
-function GetTextExtentPoint32(DC: HDC; Str: LPWSTR; Count: Integer; var Size: TSize): BOOL;
-function GetTextExtentPoint32W(DC: HDC; Str: LPWSTR; Count: Integer; var Size: TSize): BOOL;
-function GetTextMetrics(DC: HDC; var TM: TTextMetric): BOOL;external KernelDLL name 'GetTextMetricsW';
-function GetThreadContext(hThread: THandle; var lpContext: TContext): BOOL; external KernelDLL name 'GetThreadContext';
-function GetThreadTimes(hThread: THandle; var lpCreationTime, lpExitTime, lpKernelTime, lpUserTime: TFileTime): BOOL; external KernelDLL name 'GetThreadTimes';
-function GetTimeZoneInformation(var lpTimeZoneInformation: TTimeZoneInformation): DWORD; external KernelDLL name 'GetTimeZoneInformation';
-function GetUpdateRect(hWnd: HWND; var lpRect: TRect; bErase: BOOL): BOOL; external KernelDLL name 'GetUpdateRect';
-function GetVersionEx(var lpVersionInformation: TOSVersionInfo): BOOL;external KernelDLL name 'GetVersionExW';
-function GetVersionExW(var lpVersionInformation: TOSVersionInfoW): BOOL; external KernelDLL name 'GetVersionExW';
-function GetWindowRect(hWnd: HWND; var lpRect: TRect): BOOL; external KernelDLL name 'GetWindowRect';
-procedure GlobalMemoryStatus(var Buffer: MEMORYSTATUS); external KernelDLL name 'GlobalMemoryStatus';
-function ImageList_GetDragImage(var ppt:POINT; var pptHotspot:POINT):HIMAGELIST; external KernelDLL name 'ImageList_GetDragImage';
-function InflateRect(var lprc: TRect; dx, dy: Integer): BOOL; external KernelDLL name 'InflateRect';
-procedure InitializeCriticalSection(var CriticalSection : TRTLCriticalSection); external KernelDLL name 'InitializeCriticalSection';
-function IntersectRect(var lprcDst: TRect; const lprcSrc1, lprcSrc2: TRect): BOOL; external KernelDLL name 'IntersectRect';
-function IsDialogMessage(hDlg: HWND; var lpMsg: TMsg): BOOL; external KernelDLL name 'IsDialogMessageW';
-function IsDialogMessageW(hDlg: HWND; var lpMsg: TMsg): BOOL; external KernelDLL name 'IsDialogMessageW';
-procedure LeaveCriticalSection(var CriticalSection : TRTLCriticalSection); external KernelDLL name 'LeaveCriticalSection';
-function LocalFileTimeToFileTime(const lpLocalFileTime: TFileTime; var lpFileTime: TFileTime): BOOL; external KernelDLL name 'LocalFileTimeToFileTime';
-function MapDialogRect(hDlg: HWND; var lpRect: TRect): BOOL; external KernelDLL name 'MapDialogRect';
-function MapWindowPoints(hWndFrom, hWndTo: HWND; var lpPoints; cPoints: UINT): Integer; external KernelDLL name 'MapWindowPoints';
-//redirected to MsgWaitForMultipleObjectsEx
-function MsgWaitForMultipleObjects(nCount: DWORD; var pHandles; fWaitAll: BOOL; dwMilliseconds, dwWakeMask: DWORD): DWORD;
-function OffsetRect(var lprc: TRect; dx, dy: Integer): BOOL; external KernelDLL name 'OffsetRect';
-function PeekMessage(var lpMsg: TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL;external KernelDLL name 'PeekMessageW';
-function PeekMessageW(var lpMsg: TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external KernelDLL name 'PeekMessageW';
-function Polygon(DC: HDC; var Points; Count: Integer): BOOL; external KernelDLL name 'Polygon';
-function Polyline(DC: HDC; var Points; Count: Integer): BOOL; external KernelDLL name 'Polyline';
-function PtInRect(const lprc:TRect; pt:POINT):WINBOOL; external KernelDLL name 'PtInRect';
-function QueryPerformanceCounter(var lpPerformanceCount: TLargeInteger): BOOL; external KernelDLL name 'QueryPerformanceCounter';
-function QueryPerformanceFrequency(var lpFrequency: TLargeInteger): BOOL; external KernelDLL name 'QueryPerformanceFrequency';
-procedure RaiseException(dwExceptionCode:DWORD; dwExceptionFlags:DWORD; nNumberOfArguments:DWORD; var lpArguments:DWORD); external KernelDLL name 'RaiseException';
-function ReadFile(hFile: THandle; var Buffer; nNumberOfBytesToRead: DWORD; var lpNumberOfBytesRead: DWORD; lpOverlapped: POverlapped): BOOL; external KernelDLL name 'ReadFile';
-function ReadProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: DWORD; var lpNumberOfBytesRead: DWORD): BOOL; external KernelDLL name 'ReadProcessMemory';
-function RegCreateKeyEx(hKey: HKEY; lpSubKey: LPWSTR; Reserved: DWORD; lpClass: LPWSTR; dwOptions: DWORD; samDesired: REGSAM; lpSecurityAttributes: PSecurityAttributes; var phkResult: HKEY; lpdwDisposition: PDWORD): Longint; external KERNELDLL name 'RegCreateKeyExW';
-function RegCreateKeyExW(hKey: HKEY; lpSubKey: LPWSTR; Reserved: DWORD; lpClass: LPWSTR; dwOptions: DWORD; samDesired: REGSAM; lpSecurityAttributes: PSecurityAttributes; var phkResult: HKEY; lpdwDisposition: PDWORD): Longint; external KERNELDLL name 'RegCreateKeyExW';
-function RegEnumKeyEx(hKey: HKEY; dwIndex: DWORD; lpName: LPWSTR; var lpcbName: DWORD; lpReserved: Pointer; lpClass: LPWSTR; lpcbClass: PDWORD; lpftLastWriteTime: PFileTime): Longint; external KernelDLL name 'RegEnumKeyExW';
-function RegEnumKeyExW(hKey: HKEY; dwIndex: DWORD; lpName: LPWSTR; var lpcbName: DWORD; lpReserved: Pointer; lpClass: LPWSTR; lpcbClass: PDWORD; lpftLastWriteTime: PFileTime): Longint; external KernelDLL name 'RegEnumKeyExW';
-function RegEnumValue(hKey: HKEY; dwIndex: DWORD; lpValueName: LPWSTR; var lpcbValueName: DWORD; lpReserved: Pointer; lpType: PDWORD; lpData: PByte; lpcbData: PDWORD): Longint; external KernelDLL name 'RegEnumValueW';
-function RegEnumValueW(hKey: HKEY; dwIndex: DWORD; lpValueName: LPWSTR; var lpcbValueName: DWORD; lpReserved: Pointer; lpType: PDWORD; lpData: PByte; lpcbData: PDWORD): Longint; external KernelDLL name 'RegEnumValueW';
-function RegisterClass(const lpWndClass: TWndClass): ATOM;external KernelDLL name 'RegisterClassW';
-function RegisterClassW(const lpWndClass: TWndClassW): ATOM; external KernelDLL name 'RegisterClassW';
-function RegOpenKeyEx(hKey: HKEY; lpSubKey: LPWSTR; ulOptions: DWORD; samDesired: REGSAM; var phkResult: HKEY): Longint; external KernelDLL name 'RegOpenKeyExW';
-function RegOpenKeyExW(hKey: HKEY; lpSubKey: LPWSTR; ulOptions: DWORD; samDesired: REGSAM; var phkResult: HKEY): Longint; external KernelDLL name 'RegOpenKeyExW';
-function ScreenToClient(hWnd: HWND; var lpPoint: TPoint): BOOL; external KernelDLL name 'ScreenToClient';
-function ScrollWindowEx(hWnd:HWND; dx:longint; dy:longint; prcScroll:lpRECT; prcClip:lpRECT;hrgnUpdate:HRGN; prcUpdate:LPRECT; flags:UINT):longint; external KernelDLL name 'ScrollWindowEx';
-function SendMessageTimeout(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM; fuFlags, uTimeout: UINT; var lpdwResult: DWORD): LRESULT;external KernelDLL name 'SendMessageTimeout';
-function SendMessageTimeoutW(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM; fuFlags, uTimeout: UINT; var lpdwResult: DWORD): LRESULT;external KernelDLL name 'SendMessageTimeout';
-function SetCommState(hFile: THandle; const lpDCB: TDCB): BOOL; external KernelDLL name 'SetCommState';
-function SetCommTimeouts(hFile: THandle; const lpCommTimeouts: TCommTimeouts): BOOL; external KernelDLL name 'SetCommTimeouts';
-function SetDIBColorTable(DC: HDC; p2, p3: UINT; var RGBQuadSTructs): UINT; external KernelDLL name 'SetDIBColorTable';
-function SetDIBits(DC: HDC; Bitmap: HBITMAP; StartScan, NumScans: UINT; Bits: Pointer; var BitsInfo: TBitmapInfo; Usage: UINT): Integer; external KernelDLL name 'SetDIBits';
-function SetFileTime(hFile:HANDLE; var lpCreationTime:FILETIME; var lpLastAccessTime:FILETIME; var lpLastWriteTime:FILETIME):WINBOOL; external KernelDLL name 'SetFileTime';
-function SetLocalTime(var lpSystemTime:SYSTEMTIME):WINBOOL; external KernelDLL name 'SetLocalTime';
-function SetMenuItemInfo(p1: HMENU; p2: UINT; p3: BOOL; const p4: TMenuItemInfo): BOOL; external KernelDLL name 'SetMenuItemInfoW';
-function SetMenuItemInfoW(p1: HMENU; p2: UINT; p3: BOOL; const p4: TMenuItemInfoW): BOOL; external KernelDLL name 'SetMenuItemInfoW';
-function SetPaletteEntries(Palette: HPALETTE; StartIndex, NumEntries: UINT; var PaletteEntries): UINT; external KernelDLL name 'SetPaletteEntries';
-function SetRect(var lprc:TRect; xLeft:longint; yTop:longint; xRight:longint; yBottom:longint):WINBOOL; external KernelDLL name 'SetRect';
-function SetRectEmpty(var lprc: TRect): BOOL; external KernelDLL name 'SetRectEmpty';
-function SetScrollInfo(hWnd: HWND; BarFlag: Integer; const ScrollInfo: TScrollInfo; Redraw: BOOL): Integer; external KernelDLL name 'SetScrollInfo';
-function SetSysColors(cElements: Integer; const lpaElements; const lpaRgbValues): BOOL; external KernelDLL name 'SetSysColors';
-function SetSystemTime(var lpSystemTime:SYSTEMTIME):WINBOOL; external KernelDLL name 'SetSystemTime';
-function SetThreadContext(hThread: THandle; const lpContext: TContext): BOOL; external KernelDLL name 'SetThreadContext';
-function SHFileOperation(const lpFileOp:SHFILEOPSTRUCTW): longint; external ShellDLL name 'SHFileOperationW';
-function SHFileOperationW(const lpFileOp:SHFILEOPSTRUCTW): longint; external ShellDLL name 'SHFileOperationW';
-function StartDoc(DC: HDC; const p2: TDocInfo): Integer;external KernelDLL name 'StartDocW';
-function StartDocW(DC: HDC; const p2: TDocInfoW): Integer;external KernelDLL name 'StartDocW';
-function SubtractRect(var lprcDst: TRect; const lprcSrc1, lprcSrc2: TRect): BOOL; external KernelDLL name 'SubtractRect';
-function SystemTimeToFileTime(const lpSystemTime: TSystemTime; var lpFileTime: TFileTime): BOOL; external KernelDLL name 'SystemTimeToFileTime';
-function TranslateAccelerator(hWnd: HWND; hAccTable: HACCEL; var lpMsg: TMsg): Integer; external KernelDLL name 'TranslateAcceleratorW';
-function TranslateAcceleratorW(hWnd: HWND; hAccTable: HACCEL; var lpMsg: TMsg): Integer; external KernelDLL name 'TranslateAcceleratorW';
-function TranslateCharsetInfo(var lpSrc: DWORD; var lpCs: TCharsetInfo; dwFlags: DWORD): BOOL; external KernelDLL name 'TranslateCharsetInfo';
-function TranslateMessage(const lpMsg: TMsg): BOOL; external KernelDLL name 'TranslateMessage';
-function TryEnterCriticalSection(var CriticalSection : TRTLCriticalSection) : BOOL; external KernelDLL name 'TryEnterCriticalSection';
-function UnionRect(var lprcDst: TRect; const lprcSrc1, lprcSrc2: TRect): BOOL; external KernelDLL name 'UnionRect';
-function VirtualProtect(lpAddress:LPVOID; dwSize:DWORD; flNewProtect:DWORD; var lpflOldProtect:DWORD):WINBOOL; external KernelDLL name 'VirtualProtect';
-function VirtualQuery(lpAddress: Pointer; var lpBuffer: TMemoryBasicInformation; dwLength: DWORD): DWORD; external KernelDLL name 'VirtualQuery';
-function WaitCommEvent(hFile: THandle; var lpEvtMask: DWORD; lpOverlapped: POverlapped): BOOL; external KernelDLL name 'WaitCommEvent';
-function WaitForDebugEvent(var lpDebugEvent: TDebugEvent; dwMilliseconds: DWORD): BOOL; external KernelDLL name 'WaitForDebugEvent';
-function WriteFile(hFile: THandle; const Buffer; nNumberOfBytesToWrite: DWORD; var lpNumberOfBytesWritten: DWORD; lpOverlapped: POverlapped): BOOL; external KernelDLL name 'WriteFile';
-function WriteProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: DWORD; var lpNumberOfBytesWritten: DWORD): BOOL; external KernelDLL name 'WriteProcessMemory';
-
-{$endif read_interface}
-
-
-{$ifdef read_implementation}
-
-function MAKELANGID(PrimaryLang, SubLang: USHORT): WORD;
-begin
-  MAKELANGID := (SubLang shl 10) or PrimaryLang;
-end;
-
-function PRIMARYLANGID(LangId: WORD): WORD;
-begin
-  PRIMARYLANGID := LangId and $3FF;
-end;
-
-function SUBLANGID(LangId: WORD): WORD;
-begin
-  SUBLANGID := LangId shr 10;
-end;
-
-function MAKELCID(LangId, SortId: WORD): DWORD;
-begin
-  MAKELCID := (DWORD(SortId) shl 16) or DWORD(LangId);
-end;
-
-function MAKESORTLCID(LangId, SortId, SortVersion: WORD): DWORD;
-begin
-  MAKESORTLCID := MAKELCID(LangId, SortId) or (SortVersion shl 20);
-end;
-
-function LANGIDFROMLCID(LocaleId: LCID): WORD;
-begin
-  LANGIDFROMLCID := WORD(LocaleId);
-end;
-
-function SORTIDFROMLCID(LocaleId: LCID): WORD;
-begin
-  SORTIDFROMLCID := WORD((DWORD(LocaleId) shr 16) and $F);
-end;
-
-function SORTVERSIONFROMLCID(LocaleId: LCID): WORD;
-begin
-  SORTVERSIONFROMLCID := WORD((DWORD(LocaleId) shr 20) and $F);
-end;
-
-function LANG_SYSTEM_DEFAULT: WORD;
-begin
-  LANG_SYSTEM_DEFAULT := MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT);
-end;
-
-function LANG_USER_DEFAULT: WORD;
-begin
-  LANG_USER_DEFAULT := MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT);
-end;
-
-function LOCALE_USER_DEFAULT: DWORD;
-begin
-  LOCALE_USER_DEFAULT:= MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT);
-end;
-
-function LOCALE_SYSTEM_DEFAULT: DWORD;
-begin
-  LOCALE_SYSTEM_DEFAULT:= MAKELCID(LANG_SYSTEM_DEFAULT, SORT_DEFAULT);
-end;
-
-function LOCALE_NEUTRAL: DWORD;
-begin
-  LOCALE_NEUTRAL := MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), SORT_DEFAULT);
-end;
-
-function LOCALE_INVARIANT: DWORD;
-begin
-  LOCALE_INVARIANT := MAKELCID(MAKELANGID(LANG_INVARIANT, SUBLANG_NEUTRAL), SORT_DEFAULT);
-end;
-
-function MsgWaitForMultipleObjects(nCount: DWORD; var pHandles; fWaitAll: BOOL; dwMilliseconds, dwWakeMask: DWORD): DWORD;
-begin
-  MsgWaitForMultipleObjects:=MsgWaitForMultipleObjectsEx(nCount,@pHandles,dwMilliseconds,dwWakeMask,0);
-end;
-
-function GetTextExtentPoint32(DC: HDC; Str: LPWSTR; Count: Integer; var Size: TSize): BOOL;
-begin
-  Result:=GetTextExtentExPoint(DC, Str, Count, 0, nil, nil, @Size);
-end;
-
-function GetTextExtentPoint32W(DC: HDC; Str: LPWSTR; Count: Integer; var Size: TSize): BOOL;
-begin
-  Result:=GetTextExtentExPoint(DC, Str, Count, 0, nil, nil, @Size);
-end;
-
-{$endif read_implementation}
-
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 1999-2001 by the Free Pascal development team
+
+    This file defines type names as they are used by Delphi
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************
+
+}
+
+{$ifdef read_interface}
+
+type
+  PIID = PGUID;
+  TIID = TGUID;
+  THANDLE = HANDLE;
+
+  PSmallRect = ^TSmallRect;
+  TSmallRect = SMALL_RECT;
+
+  PCharInfo = ^TCharInfo;
+  TCharInfo = _CHAR_INFO;
+
+  TFarProc = FARPROC;
+  TFNDlgProc = FARPROC;
+  TFNThreadStartRoutine = FARPROC;
+  TFNTimerAPCRoutine    = FARPROC;
+  TFNFiberStartRoutine  = FARPROC;
+
+  PObjectTypeList = ^TObjectTypeList;
+  _OBJECT_TYPE_LIST = record
+     Level: WORD;
+     Sbz: WORD;
+     ObjectType: PGUID;
+  end;
+  TObjectTypeList = _OBJECT_TYPE_LIST;
+  OBJECT_TYPE_LIST = _OBJECT_TYPE_LIST;
+
+  AUDIT_EVENT_TYPE = DWORD;
+
+  PBlendFunction = ^TBlendFunction;
+  _BLENDFUNCTION = packed record
+    BlendOp: BYTE;
+    BlendFlags: BYTE;
+    SourceConstantAlpha: BYTE;
+    AlphaFormat: BYTE;
+  end;
+  TBlendFunction = _BLENDFUNCTION;
+  BLENDFUNCTION = _BLENDFUNCTION;
+
+  _WIN_CERTIFICATE =  Packed Record
+                       dwLength         : DWord;
+                       wRevision        : Word;
+                       wCertificateType : Word;
+                       bCertificate     : Array[0..0] of Byte;
+                      End;
+  TWinCertificate = _WIN_CERTIFICATE;
+  PWinCertificate = ^TWinCertificate;
+
+  TMaxLogPalette = Packed Record
+     palVersion    : Word;
+     palNumEntries : Word;
+     palPalEntry   : array[Byte] of TPaletteEntry;
+  end;
+  PMaxLogPalette = ^TMaxLogPalette;
+
+//
+//  A language ID is a 16 bit value which is the combination of a
+//  primary language ID and a secondary language ID.  The bits are
+//  allocated as follows:
+//
+//       +-----------------------+-------------------------+
+//       |     Sublanguage ID    |   Primary Language ID   |
+//       +-----------------------+-------------------------+
+//        15                   10 9                       0   bit
+//
+//
+//  Language ID creation/extraction macros:
+//
+//    MAKELANGID    - construct language id from a primary language id and
+//                    a sublanguage id.
+//    PRIMARYLANGID - extract primary language id from a language id.
+//    SUBLANGID     - extract sublanguage id from a language id.
+//
+
+function MAKELANGID(PrimaryLang, SubLang: USHORT): WORD;
+function PRIMARYLANGID(LangId: WORD): WORD;
+function SUBLANGID(LangId: WORD): WORD;
+
+//
+//  A locale ID is a 32 bit value which is the combination of a
+//  language ID, a sort ID, and a reserved area.  The bits are
+//  allocated as follows:
+//
+//       +-------------+---------+-------------------------+
+//       |   Reserved  | Sort ID |      Language ID        |
+//       +-------------+---------+-------------------------+
+//        31         20 19     16 15                      0   bit
+//
+//
+//  Locale ID creation/extraction macros:
+//
+//    MAKELCID            - construct the locale id from a language id and a sort id.
+//    MAKESORTLCID        - construct the locale id from a language id, sort id, and sort version.
+//    LANGIDFROMLCID      - extract the language id from a locale id.
+//    SORTIDFROMLCID      - extract the sort id from a locale id.
+//    SORTVERSIONFROMLCID - extract the sort version from a locale id.
+//
+
+const
+  NLS_VALID_LOCALE_MASK = $000fffff;                              //winnt
+
+function MAKELCID(LangId, SortId: WORD): DWORD;                   //winnt
+function MAKESORTLCID(LangId, SortId, SortVersion: WORD): DWORD;  //winnt
+function LANGIDFROMLCID(LocaleId: LCID): WORD;                    //winnt
+function SORTIDFROMLCID(LocaleId: LCID): WORD;                    //winnt
+function SORTVERSIONFROMLCID(LocaleId: LCID): WORD;               //winnt
+
+//
+//  Default System and User IDs for language and locale.
+//
+
+function LANG_SYSTEM_DEFAULT: WORD;                               //winnt
+function LANG_USER_DEFAULT: WORD;                                 //winnt
+function LOCALE_SYSTEM_DEFAULT: DWORD;                            //+winnt
+function LOCALE_USER_DEFAULT: DWORD;                            //+winnt
+function LOCALE_NEUTRAL: DWORD;                                   //winnt
+function LOCALE_INVARIANT: DWORD;                                 //winnt
+
+function BeginPaint(hWnd: HWND; var lpPaint: TPaintStruct): HDC; external KernelDLL name 'BeginPaint';
+function ChangeDisplaySettingsEx(lpszDeviceName: PWideChar; var lpDevMode: TDeviceMode; wnd: HWND; dwFlags: DWORD; lParam: Pointer): Longint;external KernelDLL name 'ChangeDisplaySettingsEx';
+function ClearCommError(hFile: THandle; var lpErrors: DWORD; lpStat: PComStat): BOOL; external KernelDLL name 'ClearCommError';
+function ClientToScreen(hWnd: HWND; var lpPoint: TPoint): BOOL; external KernelDLL name 'ClientToScreen';
+function ClipCursor(var lpRect:RECT):WINBOOL; external KernelDLL name 'ClipCursor';
+function CopyRect(var lprcDst: TRect; const lprcSrc: TRect): BOOL; external KernelDLL name 'CopyRect';
+function CreateAcceleratorTable(var Accel; Count: Integer): HACCEL; external KernelDLL name 'CreateAcceleratorTableW';
+function CreateAcceleratorTableW(var Accel; Count: Integer): HACCEL; external KernelDLL name 'CreateAcceleratorTableW';
+function CreateDialogIndirectParam(hInstance: HINST; const lpTemplate: TDlgTemplate; hWndParent: HWND; lpDialogFunc: TFNDlgProc; dwInitParam: LPARAM): HWND;external KernelDLL name 'CreateDialogIndirectParamW';
+function CreateFontIndirect(const p1: TLogFont): HFONT; external KernelDLL name 'CreateFontIndirectW';
+function CreateFontIndirectW(const p1: TLogFontW): HFONT; external KernelDLL name 'CreateFontIndirectW';
+function CreateIconIndirect(var piconinfo: TIconInfo): HICON; external KernelDLL name 'CreateIconIndirect';
+function CreateProcess(lpApplicationName: LPTSTR; lpCommandLine: LPTSTR; lpProcessAttributes, lpThreadAttributes: PSecurityAttributes; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: LPTSTR;
+  const lpStartupInfo: LPStartupInfo; var lpProcessInformation: TProcessInformation): BOOL;external KernelDLL name 'CreateProcessW';
+function CreateProcess(lpApplicationName: LPTSTR; lpCommandLine: LPTSTR; lpProcessAttributes, lpThreadAttributes: PSecurityAttributes; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: LPTSTR;
+  const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): BOOL;external KernelDLL name 'CreateProcessW';
+function CreateProcessW(lpApplicationName: LPWSTR; lpCommandLine: LPWSTR; lpProcessAttributes, lpThreadAttributes: PSecurityAttributes; bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer; lpCurrentDirectory: LPWSTR;
+  const lpStartupInfo: TStartupInfo; var lpProcessInformation: TProcessInformation): BOOL; external KernelDLL name 'CreateProcessW';
+procedure DeleteCriticalSection(var CriticalSection : TRTLCriticalSection); external KernelDLL name 'DeleteCriticalSection';
+function DeviceIoControl(hDevice: THandle; dwIoControlCode: DWORD; lpInBuffer: Pointer; nInBufferSize: DWORD; lpOutBuffer: Pointer; nOutBufferSize: DWORD; var lpBytesReturned: DWORD; lpOverlapped: POverlapped): BOOL;
+  external KernelDLL name 'DeviceIoControl';
+function DispatchMessage(const lpMsg: TMsg): Longint; external KernelDLL name 'DispatchMessageW';
+function DispatchMessageW(const lpMsg: TMsg): Longint; external KernelDLL name 'DispatchMessageW';
+function DrawEdge(hdc: HDC; var qrc: TRect; edge: UINT; grfFlags: UINT): BOOL; external KernelDLL name 'DrawEdge';
+function DrawFrameControl(DC: HDC; const Rect: TRect; uType, uState: UINT): BOOL; external KernelDLL name 'DrawFrameControl';
+function DrawText(hDC: HDC; lpString: LPWSTR; nCount: Integer; var lpRect: TRect; uFormat: UINT): Integer; external KernelDLL name 'DrawTextW';
+function DrawTextW(hDC: HDC; lpString: LPWSTR; nCount: Integer; var lpRect: TRect; uFormat: UINT): Integer; external KernelDLL name 'DrawTextW';
+function EndPaint(hWnd: HWND; const lpPaint: TPaintStruct): BOOL; external KernelDLL name 'EndPaint';
+procedure EnterCriticalSection(var CriticalSection : TRTLCriticalSection); external KernelDLL name 'EnterCriticalSection';
+function EnumDisplaySettings(lpszDeviceName: PWideChar; iModeNum: DWORD; var lpDevMode: TDeviceMode): BOOL;external KernelDLL name 'EnumDisplaySettings';
+function EnumDisplaySettingsW(lpszDeviceName: PWideChar; iModeNum: DWORD; var lpDevMode: TDeviceModeW): BOOL;external KernelDLL name 'EnumDisplaySettings';
+function ExtCreateRegion(p1: PXForm; p2: DWORD; const p3: TRgnData): HRGN; external KernelDLL name 'ExtCreateRegion';
+function FileTimeToSystemTime(const lpFileTime: TFileTime; var lpSystemTime: TSystemTime): BOOL; external KernelDLL name 'FileTimeToSystemTime';
+function FileTimeToLocalFileTime(const lpFileTime: TFileTime; var lpLocalFileTime: TFileTime): BOOL; external KernelDLL name 'FileTimeToLocalFileTime';
+function FindFirstFile(lpFileName: LPTSTR; var lpFindFileData: TWIN32FindData): THandle; external KernelDLL name 'FindFirstFileW';
+function FindFirstFileW(lpFileName: LPTSTR; var lpFindFileData: TWIN32FindDataW): THandle; external KernelDLL name 'FindFirstFileW';
+function FindNextFile(hFindFile: THandle; var lpFindFileData: TWIN32FindData): BOOL; external KernelDLL name 'FindNextFileW';
+function FindNextFileW(hFindFile: THandle; var lpFindFileData: TWIN32FindDataW): BOOL; external KernelDLL name 'FindNextFileW';
+function GetCaretPos(var lpPoint: TPoint): BOOL; external KernelDLL name 'GetCaretPos';
+function GetCharABCWidths(DC: HDC; p2, p3: UINT; const ABCStructs): BOOL;external KernelDLL name 'GetCharABCWidths';
+function GetCharABCWidthsW(DC: HDC; p2, p3: UINT; const ABCStructs): BOOL;external KernelDLL name 'GetCharABCWidths';
+function GetCharWidth32(DC: HDC; p2, p3: UINT; const Widths): BOOL;external KernelDLL name 'GetCharWidth32';
+function GetCharWidth32W(DC: HDC; p2, p3: UINT; const Widths): BOOL;external KernelDLL name 'GetCharWidth32';
+function GetClassInfo(hInstance: HINST; lpClassName: LPWSTR; var lpWndClass: TWndClassW): BOOL; external KernelDLL name 'GetClassInfoW';
+function GetClassInfoW(hInstance: HINST; lpClassName: LPWSTR; var lpWndClass: TWndClassW): BOOL; external KernelDLL name 'GetClassInfoW';
+function GetClientRect(hWnd: HWND; var lpRect: TRect): BOOL; external KernelDLL name 'GetClientRect';
+function GetClipBox(DC: HDC; var Rect: TRect): Integer; external KernelDLL name 'GetClipBox';
+function GetClipCursor(var lpRect: TRect): BOOL; external KernelDLL name 'GetClipCursor';
+function GetCommModemStatus(hFile: THandle; var lpModemStat: DWORD): BOOL; external KernelDLL name 'GetCommModemStatus';
+function GetCommProperties(hFile: THandle; var lpCommProp: TCommProp): BOOL; external KernelDLL name 'GetCommProperties';
+function GetCommState(hFile: THandle; var lpDCB: TDCB): BOOL; external KernelDLL name 'GetCommState';
+function GetCommTimeouts(hFile: THandle; var lpCommTimeouts: TCommTimeouts): BOOL; external KernelDLL name 'GetCommTimeouts';
+function GetCursorPos(var lpPoint: TPoint): BOOL; external KernelDLL name 'GetCursorPos';
+function GetCPInfo(CodePage: UINT; var lpCPInfo: TCPInfo): BOOL;external KernelDLL name 'GetCPInfo';
+function GetDIBColorTable(DC: HDC; p2, p3: UINT; var RGBQuadStructs): UINT; external KernelDLL name 'GetDIBColorTable';
+function GetDiskFreeSpaceEx(lpDirectoryName: PWideChar; var lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes: TLargeInteger; lpTotalNumberOfFreeBytes: PLargeInteger): BOOL;external KernelDLL name 'GetDiskFreeSpaceExW';
+function GetDiskFreeSpaceExW(lpDirectoryName: PWideChar; var lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes: TLargeInteger; lpTotalNumberOfFreeBytes: PLargeInteger): BOOL;external KernelDLL name 'GetDiskFreeSpaceExW';
+function GetExitCodeProcess(hProcess: THandle; var lpExitCode: DWORD): BOOL; external KernelDLL name 'GetExitCodeProcess';
+function GetExitCodeThread(hThread: THandle; var lpExitCode: DWORD): BOOL; external KernelDLL name 'GetExitCodeThread';
+function GetFileInformationByHandle(hFile: THandle; var lpFileInformation: TByHandleFileInformation): BOOL; external KernelDLL name 'GetFileInformationByHandle';
+function GetKeyboardLayoutList(nBuff: Integer; var List): UINT; external KernelDLL name 'GetKeyboardLayoutList';
+procedure GetLocalTime(var SystemTime: SYSTEMTIME); external KernelDLL name 'GetLocalTime';
+function GetMenuItemInfo(p1: HMENU; p2: UINT; p3: BOOL; var p4: TMenuItemInfo): BOOL; external KernelDLL name 'GetMenuItemInfoW';
+function GetMenuItemInfoW(p1: HMENU; p2: UINT; p3: BOOL; var p4: TMenuItemInfoW): BOOL; external KernelDLL name 'GetMenuItemInfoW';
+function GetMessage(var lpMsg: TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax: UINT): BOOL;external KernelDLL name 'GetMessageW';
+function GetOpenFileName(var OpenFile:TOPENFILENAMEW):WINBOOL; external KernelDLL name 'GetOpenFileNameW';
+function GetOpenFileNameW(var OpenFile:TOPENFILENAMEW):WINBOOL; external KernelDLL name 'GetOpenFileNameW';
+function GetPaletteEntries(Palette: HPALETTE; StartIndex, NumEntries: UINT; var PaletteEntries): UINT; external KernelDLL name 'GetPaletteEntries';
+function GetRgnBox(RGN: HRGN; var p2: TRect): Integer; external KernelDLL name 'GetRgnBox';
+function GetSaveFileName(var OpenFile:TOPENFILENAMEW):WINBOOL; external KernelDLL name 'GetSaveFileNameW';
+function GetSaveFileNameW(var OpenFile:TOPENFILENAMEW):WINBOOL; external KernelDLL name 'GetSaveFileNameW';
+function GetScrollInfo(hWnd: HWND; BarFlag: Integer; var ScrollInfo: TScrollInfo): BOOL; external KernelDLL name 'GetScrollInfo';
+function GetStringType(dwInfoType: DWORD; const lpSrcStr: PWideChar; cchSrc: BOOL; var lpCharType: Word): BOOL;external KernelDLL name 'GetStringTypeW';
+function GetStringTypeW(dwInfoType: DWORD; const lpSrcStr: PWideChar; cchSrc: BOOL; var lpCharType: Word): BOOL;external KernelDLL name 'GetStringTypeW';
+function GetStringTypeEx(Locale: LCID; dwInfoType: DWORD; lpSrcStr: PWideChar; cchSrc: Integer; var lpCharType): BOOL; external KernelDLL name 'GetStringTypeExW';
+function GetStringTypeExW(Locale: LCID; dwInfoType: DWORD; lpSrcStr: PWideChar; cchSrc: Integer; var lpCharType): BOOL; external KernelDLL name 'GetStringTypeExW';
+procedure GetSystemInfo(var SystemInfo:SYSTEM_INFO); external KernelDLL name 'GetSystemInfo';
+function GetSystemPaletteEntries(DC: HDC; StartIndex, NumEntries: UINT; var PaletteEntries): UINT; external KernelDLL name 'GetSystemPaletteEntries';
+procedure GetSystemTime(var lpSystemTime:SYSTEMTIME); external KernelDLL name 'GetSystemTime';
+function GetTextExtentExPoint(DC: HDC; p2: LPWSTR; p3, p4: Integer; p5, p6: PInteger; var p7: TSize): BOOL; external KernelDLL name 'GetTextExtentExPointW';
+function GetTextExtentExPointW(DC: HDC; p2: LPWSTR; p3, p4: Integer; p5, p6: PInteger; var p7: TSize): BOOL; external KernelDLL name 'GetTextExtentExPointW';
+function GetTextExtentPoint32(DC: HDC; Str: LPWSTR; Count: Integer; var Size: TSize): BOOL;
+function GetTextExtentPoint32W(DC: HDC; Str: LPWSTR; Count: Integer; var Size: TSize): BOOL;
+function GetTextMetrics(DC: HDC; var TM: TTextMetric): BOOL;external KernelDLL name 'GetTextMetricsW';
+function GetThreadContext(hThread: THandle; var lpContext: TContext): BOOL; external KernelDLL name 'GetThreadContext';
+function GetThreadTimes(hThread: THandle; var lpCreationTime, lpExitTime, lpKernelTime, lpUserTime: TFileTime): BOOL; external KernelDLL name 'GetThreadTimes';
+function GetTimeZoneInformation(var lpTimeZoneInformation: TTimeZoneInformation): DWORD; external KernelDLL name 'GetTimeZoneInformation';
+function GetUpdateRect(hWnd: HWND; var lpRect: TRect; bErase: BOOL): BOOL; external KernelDLL name 'GetUpdateRect';
+function GetVersionEx(var lpVersionInformation: TOSVersionInfo): BOOL;external KernelDLL name 'GetVersionExW';
+function GetVersionExW(var lpVersionInformation: TOSVersionInfoW): BOOL; external KernelDLL name 'GetVersionExW';
+function GetWindowRect(hWnd: HWND; var lpRect: TRect): BOOL; external KernelDLL name 'GetWindowRect';
+procedure GlobalMemoryStatus(var Buffer: MEMORYSTATUS); external KernelDLL name 'GlobalMemoryStatus';
+function ImageList_GetDragImage(var ppt:POINT; var pptHotspot:POINT):HIMAGELIST; external KernelDLL name 'ImageList_GetDragImage';
+function InflateRect(var lprc: TRect; dx, dy: Integer): BOOL; external KernelDLL name 'InflateRect';
+procedure InitializeCriticalSection(var CriticalSection : TRTLCriticalSection); external KernelDLL name 'InitializeCriticalSection';
+function IntersectRect(var lprcDst: TRect; const lprcSrc1, lprcSrc2: TRect): BOOL; external KernelDLL name 'IntersectRect';
+function IsDialogMessage(hDlg: HWND; var lpMsg: TMsg): BOOL; external KernelDLL name 'IsDialogMessageW';
+function IsDialogMessageW(hDlg: HWND; var lpMsg: TMsg): BOOL; external KernelDLL name 'IsDialogMessageW';
+procedure LeaveCriticalSection(var CriticalSection : TRTLCriticalSection); external KernelDLL name 'LeaveCriticalSection';
+function LocalFileTimeToFileTime(const lpLocalFileTime: TFileTime; var lpFileTime: TFileTime): BOOL; external KernelDLL name 'LocalFileTimeToFileTime';
+function MapDialogRect(hDlg: HWND; var lpRect: TRect): BOOL; external KernelDLL name 'MapDialogRect';
+function MapWindowPoints(hWndFrom, hWndTo: HWND; var lpPoints; cPoints: UINT): Integer; external KernelDLL name 'MapWindowPoints';
+//redirected to MsgWaitForMultipleObjectsEx
+function MsgWaitForMultipleObjects(nCount: DWORD; var pHandles; fWaitAll: BOOL; dwMilliseconds, dwWakeMask: DWORD): DWORD;
+function OffsetRect(var lprc: TRect; dx, dy: Integer): BOOL; external KernelDLL name 'OffsetRect';
+function PeekMessage(var lpMsg: TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL;external KernelDLL name 'PeekMessageW';
+function PeekMessageW(var lpMsg: TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external KernelDLL name 'PeekMessageW';
+function Polygon(DC: HDC; var Points; Count: Integer): BOOL; external KernelDLL name 'Polygon';
+function Polyline(DC: HDC; var Points; Count: Integer): BOOL; external KernelDLL name 'Polyline';
+function PtInRect(const lprc:TRect; pt:POINT):WINBOOL; external KernelDLL name 'PtInRect';
+function QueryPerformanceCounter(var lpPerformanceCount: TLargeInteger): BOOL; external KernelDLL name 'QueryPerformanceCounter';
+function QueryPerformanceFrequency(var lpFrequency: TLargeInteger): BOOL; external KernelDLL name 'QueryPerformanceFrequency';
+procedure RaiseException(dwExceptionCode:DWORD; dwExceptionFlags:DWORD; nNumberOfArguments:DWORD; var lpArguments:DWORD); external KernelDLL name 'RaiseException';
+function ReadFile(hFile: THandle; var Buffer; nNumberOfBytesToRead: DWORD; var lpNumberOfBytesRead: DWORD; lpOverlapped: POverlapped): BOOL; external KernelDLL name 'ReadFile';
+function ReadProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: DWORD; var lpNumberOfBytesRead: DWORD): BOOL; external KernelDLL name 'ReadProcessMemory';
+function RegCreateKeyEx(hKey: HKEY; lpSubKey: LPWSTR; Reserved: DWORD; lpClass: LPWSTR; dwOptions: DWORD; samDesired: REGSAM; lpSecurityAttributes: PSecurityAttributes; var phkResult: HKEY; lpdwDisposition: PDWORD): Longint; external KERNELDLL name 'RegCreateKeyExW';
+function RegCreateKeyExW(hKey: HKEY; lpSubKey: LPWSTR; Reserved: DWORD; lpClass: LPWSTR; dwOptions: DWORD; samDesired: REGSAM; lpSecurityAttributes: PSecurityAttributes; var phkResult: HKEY; lpdwDisposition: PDWORD): Longint; external KERNELDLL name 'RegCreateKeyExW';
+function RegEnumKeyEx(hKey: HKEY; dwIndex: DWORD; lpName: LPWSTR; var lpcbName: DWORD; lpReserved: Pointer; lpClass: LPWSTR; lpcbClass: PDWORD; lpftLastWriteTime: PFileTime): Longint; external KernelDLL name 'RegEnumKeyExW';
+function RegEnumKeyExW(hKey: HKEY; dwIndex: DWORD; lpName: LPWSTR; var lpcbName: DWORD; lpReserved: Pointer; lpClass: LPWSTR; lpcbClass: PDWORD; lpftLastWriteTime: PFileTime): Longint; external KernelDLL name 'RegEnumKeyExW';
+function RegEnumValue(hKey: HKEY; dwIndex: DWORD; lpValueName: LPWSTR; var lpcbValueName: DWORD; lpReserved: Pointer; lpType: PDWORD; lpData: PByte; lpcbData: PDWORD): Longint; external KernelDLL name 'RegEnumValueW';
+function RegEnumValueW(hKey: HKEY; dwIndex: DWORD; lpValueName: LPWSTR; var lpcbValueName: DWORD; lpReserved: Pointer; lpType: PDWORD; lpData: PByte; lpcbData: PDWORD): Longint; external KernelDLL name 'RegEnumValueW';
+function RegisterClass(const lpWndClass: TWndClass): ATOM;external KernelDLL name 'RegisterClassW';
+function RegisterClassW(const lpWndClass: TWndClassW): ATOM; external KernelDLL name 'RegisterClassW';
+function RegOpenKeyEx(hKey: HKEY; lpSubKey: LPWSTR; ulOptions: DWORD; samDesired: REGSAM; var phkResult: HKEY): Longint; external KernelDLL name 'RegOpenKeyExW';
+function RegOpenKeyExW(hKey: HKEY; lpSubKey: LPWSTR; ulOptions: DWORD; samDesired: REGSAM; var phkResult: HKEY): Longint; external KernelDLL name 'RegOpenKeyExW';
+function ScreenToClient(hWnd: HWND; var lpPoint: TPoint): BOOL; external KernelDLL name 'ScreenToClient';
+function ScrollWindowEx(hWnd:HWND; dx:longint; dy:longint; prcScroll:lpRECT; prcClip:lpRECT;hrgnUpdate:HRGN; prcUpdate:LPRECT; flags:UINT):longint; external KernelDLL name 'ScrollWindowEx';
+function SendMessageTimeout(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM; fuFlags, uTimeout: UINT; var lpdwResult: DWORD): LRESULT;external KernelDLL name 'SendMessageTimeout';
+function SendMessageTimeoutW(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM; fuFlags, uTimeout: UINT; var lpdwResult: DWORD): LRESULT;external KernelDLL name 'SendMessageTimeout';
+function SetCommState(hFile: THandle; const lpDCB: TDCB): BOOL; external KernelDLL name 'SetCommState';
+function SetCommTimeouts(hFile: THandle; const lpCommTimeouts: TCommTimeouts): BOOL; external KernelDLL name 'SetCommTimeouts';
+function SetDIBColorTable(DC: HDC; p2, p3: UINT; var RGBQuadSTructs): UINT; external KernelDLL name 'SetDIBColorTable';
+function SetDIBits(DC: HDC; Bitmap: HBITMAP; StartScan, NumScans: UINT; Bits: Pointer; var BitsInfo: TBitmapInfo; Usage: UINT): Integer; external KernelDLL name 'SetDIBits';
+function SetFileTime(hFile:HANDLE; var lpCreationTime:FILETIME; var lpLastAccessTime:FILETIME; var lpLastWriteTime:FILETIME):WINBOOL; external KernelDLL name 'SetFileTime';
+function SetLocalTime(var lpSystemTime:SYSTEMTIME):WINBOOL; external KernelDLL name 'SetLocalTime';
+function SetMenuItemInfo(p1: HMENU; p2: UINT; p3: BOOL; const p4: TMenuItemInfo): BOOL; external KernelDLL name 'SetMenuItemInfoW';
+function SetMenuItemInfoW(p1: HMENU; p2: UINT; p3: BOOL; const p4: TMenuItemInfoW): BOOL; external KernelDLL name 'SetMenuItemInfoW';
+function SetPaletteEntries(Palette: HPALETTE; StartIndex, NumEntries: UINT; var PaletteEntries): UINT; external KernelDLL name 'SetPaletteEntries';
+function SetRect(var lprc:TRect; xLeft:longint; yTop:longint; xRight:longint; yBottom:longint):WINBOOL; external KernelDLL name 'SetRect';
+function SetRectEmpty(var lprc: TRect): BOOL; external KernelDLL name 'SetRectEmpty';
+function SetScrollInfo(hWnd: HWND; BarFlag: Integer; const ScrollInfo: TScrollInfo; Redraw: BOOL): Integer; external KernelDLL name 'SetScrollInfo';
+function SetSysColors(cElements: Integer; const lpaElements; const lpaRgbValues): BOOL; external KernelDLL name 'SetSysColors';
+function SetSystemTime(var lpSystemTime:SYSTEMTIME):WINBOOL; external KernelDLL name 'SetSystemTime';
+function SetThreadContext(hThread: THandle; const lpContext: TContext): BOOL; external KernelDLL name 'SetThreadContext';
+function SHFileOperation(const lpFileOp:SHFILEOPSTRUCTW): longint; external ShellDLL name 'SHFileOperationW';
+function SHFileOperationW(const lpFileOp:SHFILEOPSTRUCTW): longint; external ShellDLL name 'SHFileOperationW';
+function StartDoc(DC: HDC; const p2: TDocInfo): Integer;external KernelDLL name 'StartDocW';
+function StartDocW(DC: HDC; const p2: TDocInfoW): Integer;external KernelDLL name 'StartDocW';
+function SubtractRect(var lprcDst: TRect; const lprcSrc1, lprcSrc2: TRect): BOOL; external KernelDLL name 'SubtractRect';
+function SystemTimeToFileTime(const lpSystemTime: TSystemTime; var lpFileTime: TFileTime): BOOL; external KernelDLL name 'SystemTimeToFileTime';
+function TranslateAccelerator(hWnd: HWND; hAccTable: HACCEL; var lpMsg: TMsg): Integer; external KernelDLL name 'TranslateAcceleratorW';
+function TranslateAcceleratorW(hWnd: HWND; hAccTable: HACCEL; var lpMsg: TMsg): Integer; external KernelDLL name 'TranslateAcceleratorW';
+function TranslateCharsetInfo(var lpSrc: DWORD; var lpCs: TCharsetInfo; dwFlags: DWORD): BOOL; external KernelDLL name 'TranslateCharsetInfo';
+function TranslateMessage(const lpMsg: TMsg): BOOL; external KernelDLL name 'TranslateMessage';
+function TryEnterCriticalSection(var CriticalSection : TRTLCriticalSection) : BOOL; external KernelDLL name 'TryEnterCriticalSection';
+function UnionRect(var lprcDst: TRect; const lprcSrc1, lprcSrc2: TRect): BOOL; external KernelDLL name 'UnionRect';
+function VirtualProtect(lpAddress:LPVOID; dwSize:DWORD; flNewProtect:DWORD; var lpflOldProtect:DWORD):WINBOOL; external KernelDLL name 'VirtualProtect';
+function VirtualQuery(lpAddress: Pointer; var lpBuffer: TMemoryBasicInformation; dwLength: DWORD): DWORD; external KernelDLL name 'VirtualQuery';
+function WaitCommEvent(hFile: THandle; var lpEvtMask: DWORD; lpOverlapped: POverlapped): BOOL; external KernelDLL name 'WaitCommEvent';
+function WaitForDebugEvent(var lpDebugEvent: TDebugEvent; dwMilliseconds: DWORD): BOOL; external KernelDLL name 'WaitForDebugEvent';
+function WriteFile(hFile: THandle; const Buffer; nNumberOfBytesToWrite: DWORD; var lpNumberOfBytesWritten: DWORD; lpOverlapped: POverlapped): BOOL; external KernelDLL name 'WriteFile';
+function WriteProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: DWORD; var lpNumberOfBytesWritten: DWORD): BOOL; external KernelDLL name 'WriteProcessMemory';
+
+{$endif read_interface}
+
+
+{$ifdef read_implementation}
+
+function MAKELANGID(PrimaryLang, SubLang: USHORT): WORD;
+begin
+  MAKELANGID := (SubLang shl 10) or PrimaryLang;
+end;
+
+function PRIMARYLANGID(LangId: WORD): WORD;
+begin
+  PRIMARYLANGID := LangId and $3FF;
+end;
+
+function SUBLANGID(LangId: WORD): WORD;
+begin
+  SUBLANGID := LangId shr 10;
+end;
+
+function MAKELCID(LangId, SortId: WORD): DWORD;
+begin
+  MAKELCID := (DWORD(SortId) shl 16) or DWORD(LangId);
+end;
+
+function MAKESORTLCID(LangId, SortId, SortVersion: WORD): DWORD;
+begin
+  MAKESORTLCID := MAKELCID(LangId, SortId) or (SortVersion shl 20);
+end;
+
+function LANGIDFROMLCID(LocaleId: LCID): WORD;
+begin
+  LANGIDFROMLCID := WORD(LocaleId);
+end;
+
+function SORTIDFROMLCID(LocaleId: LCID): WORD;
+begin
+  SORTIDFROMLCID := WORD((DWORD(LocaleId) shr 16) and $F);
+end;
+
+function SORTVERSIONFROMLCID(LocaleId: LCID): WORD;
+begin
+  SORTVERSIONFROMLCID := WORD((DWORD(LocaleId) shr 20) and $F);
+end;
+
+function LANG_SYSTEM_DEFAULT: WORD;
+begin
+  LANG_SYSTEM_DEFAULT := MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT);
+end;
+
+function LANG_USER_DEFAULT: WORD;
+begin
+  LANG_USER_DEFAULT := MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT);
+end;
+
+function LOCALE_USER_DEFAULT: DWORD;
+begin
+  LOCALE_USER_DEFAULT:= MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT);
+end;
+
+function LOCALE_SYSTEM_DEFAULT: DWORD;
+begin
+  LOCALE_SYSTEM_DEFAULT:= MAKELCID(LANG_SYSTEM_DEFAULT, SORT_DEFAULT);
+end;
+
+function LOCALE_NEUTRAL: DWORD;
+begin
+  LOCALE_NEUTRAL := MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), SORT_DEFAULT);
+end;
+
+function LOCALE_INVARIANT: DWORD;
+begin
+  LOCALE_INVARIANT := MAKELCID(MAKELANGID(LANG_INVARIANT, SUBLANG_NEUTRAL), SORT_DEFAULT);
+end;
+
+function MsgWaitForMultipleObjects(nCount: DWORD; var pHandles; fWaitAll: BOOL; dwMilliseconds, dwWakeMask: DWORD): DWORD;
+begin
+  MsgWaitForMultipleObjects:=MsgWaitForMultipleObjectsEx(nCount,@pHandles,dwMilliseconds,dwWakeMask,0);
+end;
+
+function GetTextExtentPoint32(DC: HDC; Str: LPWSTR; Count: Integer; var Size: TSize): BOOL;
+begin
+  Result:=GetTextExtentExPoint(DC, Str, Count, 0, nil, nil, @Size);
+end;
+
+function GetTextExtentPoint32W(DC: HDC; Str: LPWSTR; Count: Integer; var Size: TSize): BOOL;
+begin
+  Result:=GetTextExtentExPoint(DC, Str, Count, 0, nil, nil, @Size);
+end;
+
+{$endif read_implementation}
+

+ 540 - 0
rtl/wince/wininc/simmgr.inc

@@ -0,0 +1,540 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2007 Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{ Declarations for tapi WinCE API, note than on WinCE simmgr functions originally
+  based in coredll.dll
+
+  SIM Manager is an API set that allows access to information stored on the SIM Card
+
+ This port based on Windows Mobile 5 Smartphone Edition SDK
+  contact S0vNark0m for more information [email protected] (en, ru)
+}
+
+{$ifdef read_interface}
+
+//*****************************************************************************
+// consts
+//*****************************************************************************
+
+const
+  SIM_ERRORCLASS_SIM      = $02; // Problem with the SIM
+  SIM_ERRORCLASS_PASSWORD = $01; // Unspecified phone failure
+  SIM_ERRORCLASS_STORAGE  = $03; // Error relating to storage
+  SIM_ERRORCLASS_NONE     = $00; // Misc error
+
+  FACILITY_SIM = $800;
+
+  ERROR_BASE = Longword(SEVERITY_ERROR) shl 31 or Longword(FACILITY_SIM) shl 16; // C Macros conversion, internal def
+
+  // Internal def = errclass shl 8
+  MSE_ERRORCLASS_SIM = ERROR_BASE or Word(SIM_ERRORCLASS_SIM) shl 8;
+  MSE_ERRORCLASS_PASSWORD = ERROR_BASE or Word(SIM_ERRORCLASS_PASSWORD) shl 8;
+  MSE_ERRORCLASS_STORAGE = ERROR_BASE or Word(SIM_ERRORCLASS_STORAGE) shl 8;
+  MSE_ERRERRORCLASS_NONE = ERROR_BASE or Word(SIM_ERRORCLASS_NONE) shl 8;
+
+  // Error | Various errors
+  SIM_E_SIMFAILURE       = MSE_ERRORCLASS_SIM or $01; // SIM failure was detected
+  SIM_E_SIMBUSY          = MSE_ERRORCLASS_SIM or $02; // SIM is busy
+  SIM_E_SIMWRONG         = MSE_ERRORCLASS_SIM or $03; // Inorrect SIM was inserted
+  SIM_E_NOSIMMSGSTORAGE  = MSE_ERRORCLASS_SIM or $04; // SIM isn't capable of storing messages
+  SIM_E_SIMTOOLKITBUSY   = MSE_ERRORCLASS_SIM or $05; // SIM Application Toolkit is busy
+  SIM_E_SIMDOWNLOADERROR = MSE_ERRORCLASS_SIM or $06; // SIM data download error
+  SIM_E_SIMNOTINSERTED   = MSE_ERRORCLASS_SIM or $07; // SIM isn't inserted into the phone
+
+  SIM_E_PHSIMPINREQUIRED  = MSE_ERRORCLASS_PASSWORD or $20; // PH-SIM PIN is required to perform this operation
+  SIM_E_PHFSIMPINREQUIRED = MSE_ERRORCLASS_PASSWORD or $21; // PH-FSIM PIN is required to perform this operation
+  SIM_E_PHFSIMPUKREQUIRED = MSE_ERRORCLASS_PASSWORD or $22; // PH-FSIM PUK is required to perform this operation
+  SIM_E_SIMPINREQUIRED    = MSE_ERRORCLASS_PASSWORD or $23; // SIM PIN is required to perform this operation
+  SIM_E_SIMPUKREQUIRED    = MSE_ERRORCLASS_PASSWORD or $24; // SIM PUK is required to perform this operation
+  SIM_E_INCORRECTPASSWORD = MSE_ERRORCLASS_PASSWORD or $25; // Incorrect password was supplied
+  SIM_E_SIMPIN2REQUIRED   = MSE_ERRORCLASS_PASSWORD or $26; // SIM PIN2 is required to perform this operation
+  SIM_E_SIMPUK2REQUIRED   = MSE_ERRORCLASS_PASSWORD or $27; // SIM PUK2 is required to perform this operation
+  SIM_E_NETWKPINREQUIRED  = MSE_ERRORCLASS_PASSWORD or $28; // Network Personalization PIN is required to perform this operation
+  SIM_E_NETWKPUKREQUIRED  = MSE_ERRORCLASS_PASSWORD or $29; // Network Personalization PUK is required to perform this operation
+  SIM_E_SUBSETPINREQUIRED = MSE_ERRORCLASS_PASSWORD or $2A; // Network Subset Personalization PIN is required to perform this operation
+  SIM_E_SUBSETPUKREQUIRED = MSE_ERRORCLASS_PASSWORD or $2B; // Network Subset Personalization PUK is required to perform this operation
+  SIM_E_SVCPINREQUIRED    = MSE_ERRORCLASS_PASSWORD or $2C; // Service Provider Personalization PIN is required to perform this operation
+  SIM_E_SVCPUKREQUIRED    = MSE_ERRORCLASS_PASSWORD or $2D; // Service Provider Personalization PUK is required to perform this operation
+  SIM_E_CORPPINREQUIRED   = MSE_ERRORCLASS_PASSWORD or $2E; // Corporate Personalization PIN is required to perform this operation
+  SIM_E_CORPPUKREQUIRED   = MSE_ERRORCLASS_PASSWORD or $2F; // Corporate Personalization PUK is required to perform this operation
+
+  SIM_E_MEMORYFULL        = MSE_ERRORCLASS_STORAGE or $40; // Storage memory is full
+  SIM_E_INVALIDINDEX      = MSE_ERRORCLASS_STORAGE or $41; // Invalid storage index was supplied
+  SIM_E_NOTFOUND          = MSE_ERRORCLASS_STORAGE or $42; // A requested storage entry was not found
+  SIM_E_MEMORYFAILURE     = MSE_ERRORCLASS_STORAGE or $43; // Storage memory failure
+  SIM_E_SIMMSGSTORAGEFULL = MSE_ERRORCLASS_STORAGE or $44; // Message storage on the SIM is full
+  SIM_E_EMPTYINDEX        = MSE_ERRORCLASS_STORAGE or $45; // Storage location is empty
+
+  SIM_E_NOTREADY          = MSE_ERRERRORCLASS_NONE or $60; // SIM isn't yet ready to perform the requested operation
+  SIM_E_SECURITYFAILURE   = MSE_ERRERRORCLASS_NONE or $61; // SIM isn't yet ready to perform the requested operation
+  SIM_E_BUFFERTOOSMALL    = MSE_ERRERRORCLASS_NONE or $62; // Buffer too small
+  SIM_E_NOTTEXTMESSAGE    = MSE_ERRERRORCLASS_NONE or $63; // Requested SMS message is not a text message
+  SIM_E_NOSIM             = MSE_ERRERRORCLASS_NONE or $64; // Device doesn't have a SIM
+  SIM_E_NETWORKERROR      = MSE_ERRERRORCLASS_NONE or $65; // There was a network error
+  SIM_E_MOBILEERROR       = MSE_ERRERRORCLASS_NONE or $66; // Mobile error
+  SIM_E_UNSUPPORTED       = MSE_ERRERRORCLASS_NONE or $67; // The command is unsupported
+  SIM_E_BADPARAM          = MSE_ERRERRORCLASS_NONE or $68; // Bad parameter
+  SIM_E_UNDETERMINED      = MSE_ERRERRORCLASS_NONE or $69; // Undetermined error
+  SIM_E_RADIONOTPRESENT   = MSE_ERRERRORCLASS_NONE or $6A; // The Radio is not present
+  SIM_E_RADIOOFF          = MSE_ERRERRORCLASS_NONE or $6B; // The Radio is off
+
+  // Callback | Various notifications that are passed to the callback
+  
+  SIM_NOTIFY_CARD_REMOVED = $100; // SIM card was removed; lpData is NULL
+  SIM_NOTIFY_FILE_REFRESH = $101; // Files on the SIM were refreshed; lpData points to a SIMFILEREFRESH structure
+  SIM_NOTIFY_MSG_STORED   = $102; // A message was stored to the SIM; lpData points to a SIMMESSAGECHANGE structure
+  SIM_NOTIFY_MSG_DELETED  = $103; // A message was removed from the SIM; lpData points to a SIMMESSAGECHANGE structure
+  SIM_NOTIFY_PBE_STORED   = $104; // A phone book entry was stored to the SIM; lpData points to a SIMPBECHANGE structure
+  SIM_NOTIFY_PBE_DELETED  = $105; // A phone book entry was removed from the SIM; lpData points to a SIMPBECHANGE structure
+  SIM_NOTIFY_MSG_RECEIVED = $106; // Class 2 SMS was sent directly to the SIM; lpData points to a SIMMESSAGECHANGE structure
+  SIM_NOTIFY_RADIOOFF     = $107; // The Radio has been turned off but AT interpreter is still on; lpData is NULL
+  SIM_NOTIFY_RADIOON      = $108; // The Radio is present and is now on; lpData is NULL
+  SIM_NOTIFY_RADIOPRESENT = $109; // A Radio Module/Driver has been installed; lpData is points to a DWORD which is 0 if the radio is OFF and 1 if the radio is ON
+  SIM_NOTIFY_RADIOREMOVED = $10A; // A Radio Module/Driver has been removed; lpData is NULL }
+
+  // Parameter flags for SimInitialize
+  SIM_INIT_NONE = $00000000;                  // Do not send any notifications
+  SIM_INIT_SIMCARD_NOTIFICATIONS = $00000001; // Send SIM card related notifications
+
+  // SIMPHONEBOOKENTRY
+
+  SIM_PARAM_PBE_ADDRESS      = $00000001; // lpszAddress field is valid
+  SIM_PARAM_PBE_ADDRESS_TYPE = $00000002; // dwAddressType field is valid
+  SIM_PARAM_PBE_NUMPLAN      = $00000004; // dwNumPlan field is valid
+  SIM_PARAM_PBE_TEXT         = $00000008; // lpszText field is valid
+  SIM_PARAM_PBE_ALL          = $0000000f; // All fields are valid
+
+  // SIMMESSAGE
+
+  SIM_PARAM_MSG_ADDRESS       = $00000001; // lpszAddress field is valid
+  SIM_PARAM_MSG_ADDRESS_TYPE  = $00000002; // dwAddressType field is valid
+  SIM_PARAM_MSG_NUMPLAN       = $00000004; // dwNumPlan field is valid
+  SIM_PARAM_MSG_RECEIVE_TIME  = $00000008; // stReceiveTime field is valid
+  SIM_PARAM_MSG_HEADER        = $00000010; // rgbHeader field is valid
+  SIM_PARAM_MSG_HEADER_LENGTH = $00000020; // cbHdrLength field is valid
+  SIM_PARAM_MSG_MESSAGE       = $00000040; // lpszMessage field is valid
+  SIM_PARAM_MSG_ALL           = $0000007f; // All fields are valid
+
+  // SIMCAPS }
+
+  SIM_PARAM_CAPS_PBSTORAGES          = $00000001; // dwPBStorages field is valid
+  SIM_PARAM_CAPS_PBEMAXADDRESSLENGTH = $00000002; // dwPBEMaxAddressLength field is valid
+  SIM_PARAM_CAPS_PBEMAXTEXTLENGTH    = $00000004; // dwPBEMaxTextLength field is valid
+  SIM_PARAM_CAPS_PBEMININDEX         = $00000008; // dwMinPBIndex field is valid
+  SIM_PARAM_CAPS_PBEMAXINDEX         = $00000010; // dwMaxPBIndex field is valid
+  SIM_PARAM_CAPS_LOCKFACILITIES      = $00000020; // dwLockFacilities field is valid
+  SIM_PARAM_CAPS_LOCKINGPWDLENGTH    = $00000040; // dwNumLockingPwdLengths and rgLockingPwdLengths fields are valid
+  SIM_PARAM_CAPS_READMSGSTORAGES     = $00000080; // dwReadMsgStorages field is valid
+  SIM_PARAM_CAPS_WRITEMSGSTORAGES    = $00000100; // dwWriteMsgStorages field is valid
+  SIM_PARAM_CAPS_ALL                 = $000001ff; // All fields are valid
+
+  // SIMRECORDINFO
+
+  SIM_PARAM_RECORDINFO_RECORDTYPE = $00000001; // dwRecordType field is valid
+  SIM_PARAM_RECORDINFO_ITEMCOUNT  = $00000002; // dwItemCount field is valid
+  SIM_PARAM_RECORDINFO_SIZE       = $00000004; // dwSize field is valid
+  SIM_PARAM_RECORDINFO_ALL        = $00000007; // All fields are valid
+
+  // SIMFILEREFRESH }
+
+  SIM_PARAM_FILEREFRESH_FLAGS     = $00000001; // dwFlags field is valid
+  SIM_PARAM_FILEREFRESH_FILECOUNT = $00000002; // dwFileCount field is valid
+  SIM_PARAM_FILEREFRESH_FILEARRAY = $00000004; // rgdwAddress field is valid
+  SIM_PARAM_FILEREFRESH_ALL       = $00000007; // All fields are valid
+
+  // Phonebook Storage | Phone book storage locations }
+
+  SIM_PBSTORAGE_EMERGENCY    = $00000001; // Emergency dial list
+  SIM_PBSTORAGE_FIXEDDIALING = $00000002; // SIM fixed dialing list
+  SIM_PBSTORAGE_LASTDIALING  = $00000004; // SIM last dialing list
+  SIM_PBSTORAGE_OWNNUMBERS   = $00000008; // SIM ownnumbers lists
+  SIM_PBSTORAGE_SIM          = $00000010; // General SIM Storage
+  SIM_NUMPBSTORAGES          = 5;         // Number of phonebook storages
+
+  // SIM DevCaps | Device Capabilities }
+
+  SIM_CAPSTYPE_PBENTRYLENGTH      = $00000001; // Phonebook entry lengths
+  SIM_CAPSTYPE_PBSTORELOCATIONS   = $00000002; // Phonebook storage locations
+  SIM_CAPSTYPE_LOCKFACILITIES     = $00000004; // Lock facilities
+  SIM_CAPSTYPE_PBINDEXRANGE       = $00000008; // Valid phonebook entry indexes
+  SIM_CAPSTYPE_LOCKINGPWDLENGTHS  = $00000010; // Locking password lengths
+  SIM_CAPSTYPE_MSGMEMORYLOCATIONS = $00000020; // Message memory locations
+  SIM_CAPSTYPE_ALL                = $0000003F; // All of the above
+
+  // SMS Storage | SMS storage locations }
+
+  SIM_SMSSTORAGE_BROADCAST = $00000001; // Broadcast message storage location
+  SIM_SMSSTORAGE_SIM       = $00000002; // SIM storage location
+  SIM_NUMSMSSTORAGES       = 2;         // Number of message storage locations
+
+  // Address Type | Defines different address types }
+
+  SIM_ADDRTYPE_UNKNOWN       = $00000000; // Unknown
+  SIM_ADDRTYPE_INTERNATIONAL = $00000001; // International number
+  SIM_ADDRTYPE_NATIONAL      = $00000002; // National number
+  SIM_ADDRTYPE_NETWKSPECIFIC = $00000003; // Network specific number
+  SIM_ADDRTYPE_SUBSCRIBER    = $00000004; // Subscriber number (protocol-specific)
+  SIM_ADDRTYPE_ALPHANUM      = $00000005; // Alphanumeric address
+  SIM_ADDRTYPE_ABBREV        = $00000006; // Abbreviated number
+
+  // Numbering Plan | Defines different numbering plans for SIM_ADDRTYPE_UNKNOWN,
+  // SIM_ADDRTYPE_INTERNATIONAL, and SIM_ADDRTYPE_NATIONAL
+
+  SIM_NUMPLAN_UNKNOWN   = $00000000; // Unknown
+  SIM_NUMPLAN_TELEPHONE = $00000001; // ISDN/telephone numbering plan (E.164/E.163)
+  SIM_NUMPLAN_DATA      = $00000002; // Data numbering plan (X.121)
+  SIM_NUMPLAN_TELEX     = $00000003; // Telex numbering plan
+  SIM_NUMPLAN_NATIONAL  = $00000004; // National numbering plan
+  SIM_NUMPLAN_PRIVATE   = $00000005; // Private numbering plan
+  SIM_NUMPLAN_ERMES     = $00000006; // ERMES numbering plan (ETSI DE/PS 3 01-3)
+
+  // Phone Locked | Indicates if the phone is currently locked (i.e.
+  // awaiting password) and what password to enter
+
+  SIM_LOCKEDSTATE_UNKNOWN       = $00000000; // Locking state is unknown
+  SIM_LOCKEDSTATE_READY         = $00000001; // Not awaiting a password (unlocked)
+  SIM_LOCKEDSTATE_SIM_PIN       = $00000002; // Awaiting the SIM PIN
+  SIM_LOCKEDSTATE_SIM_PUK       = $00000003; // Awaiting the SIM PUK
+  SIM_LOCKEDSTATE_PH_SIM_PIN    = $00000004; // Awaiting the Phone to SIM Personalization PIN
+  SIM_LOCKEDSTATE_PH_FSIM_PIN   = $00000005; // Awaiting the Phone to first SIM Personalization PIN
+  SIM_LOCKEDSTATE_PH_FSIM_PUK   = $00000006; // Awaiting the Phone to first SIM Personalization PUK
+  SIM_LOCKEDSTATE_SIM_PIN2      = $00000007; // Awaiting the SIM PIN2
+  SIM_LOCKEDSTATE_SIM_PUK2      = $00000008; // Awaiting the SIM PUK2
+  SIM_LOCKEDSTATE_PH_NET_PIN    = $00000009; // Awaiting the Network Personalization PIN
+  SIM_LOCKEDSTATE_PH_NET_PUK    = $0000000a; // Awaiting the Network Personalization PUK
+  SIM_LOCKEDSTATE_PH_NETSUB_PIN = $0000000b; // Awaiting the Network Subset Personalization PIN
+  SIM_LOCKEDSTATE_PH_NETSUB_PUK = $0000000c; // Awaiting the Network Subset Personalization PUK
+  SIM_LOCKEDSTATE_PH_SP_PIN     = $0000000d; // Awaiting the Service Provider Personalization PIN
+  SIM_LOCKEDSTATE_PH_SP_PUK     = $0000000e; // Awaiting the Service Provider Personalization PUK
+  SIM_LOCKEDSTATE_PH_CORP_PIN   = $0000000f; // Awaiting the Corporate Personalization PIN
+  SIM_LOCKEDSTATE_PH_CORP_PUK   = $00000010; // Awaiting the Corporate Personalization PUK
+
+  // Phonebook Misc | Special phonebook constants }
+  
+  SIM_PBINDEX_FIRSTAVAILABLE = $ffffffff; //  Use first phonebook storage entry available
+
+  // Phone Locking | Indicates the phone's locking behavior }
+
+  SIM_LOCKFACILITY_CNTRL           = $00000001; // Lock control curface
+  SIM_LOCKFACILITY_PH_SIM          = $00000002; // Lock phone to SIM card
+  SIM_LOCKFACILITY_PH_FSIM         = $00000004; // Lock phone to first SIM card
+  SIM_LOCKFACILITY_SIM             = $00000008; // Lock SIM card
+  SIM_LOCKFACILITY_SIM_PIN2        = $00000010; // Lock SIM card
+  SIM_LOCKFACILITY_SIM_FIXEDIALING = $00000020; // SIM fixed dialing memory
+  SIM_LOCKFACILITY_NETWORKPERS     = $00000040; // Network personalization
+  SIM_LOCKFACILITY_NETWORKSUBPERS  = $00000080; // Network subset personalization
+  SIM_LOCKFACILITY_SERVICEPROVPERS = $00000100; // Service provider personalization
+  SIM_LOCKFACILITY_CORPPERS        = $00000200; // Corporate personalization
+  SIM_NUMLOCKFACILITIES            = 10;        // Number of locking facilities
+
+  // SIM Record | Different SIM file types
+  SIM_RECORDTYPE_UNKNOWN     = $00000000; // An unknown file type
+  SIM_RECORDTYPE_TRANSPARENT = $00000001; // A single veriable lengthed record
+  SIM_RECORDTYPE_CYCLIC      = $00000002; // A cyclic set of records, each of the same length
+  SIM_RECORDTYPE_LINEAR      = $00000003; // A linear set of records, each of the same length
+  SIM_RECORDTYPE_MASTER      = $00000004; // Every SIM has a single master record, effectively the head node
+  SIM_RECORDTYPE_DEDICATED   = $00000005; // Effectively a "directory" file which is a parent of other records
+
+  // SIM Record Refresh | Different ways of being notified that SIM
+  // have been updated
+  SIMFILE_FULLFILECHANGE = $00000001; //  All files have been changed
+  SIMFILE_FILECHANGE     = $00000002; // Only a few files have been changed
+  SIMFILE_SIMINIT        = $00000004; // SIM Initiailization
+  SIMFILE_SIMRESET       = $00000008; // Reset the SIM
+
+  // Max_Length | Maximum length constants }
+  MAX_LENGTH_ADDRESS            = 256; // Maximum length of an address
+  MAX_LENGTH_PHONEBOOKENTRYTEXT = 256; // Maximum length of text in a phonebook entry
+  MAX_LENGTH_HEADER             = 256; // Maximum length of a SMS header
+  MAX_LENGTH_MESSAGE            = 256; // Maximum length of a SMS message
+  MAX_FILES                     = 32;  // Maximum number of files in a file change list
+
+//*****************************************************************************
+// types
+//*****************************************************************************
+
+type
+
+  // HSIM | Handle to a SIM }
+
+  HSIM = HANDLE;
+  LPHSIM = ^HSIM;
+
+  // SIMPHONEBOOKENTRY | A SIM phonebook entry
+
+  simphonebookentry_tag = record
+       cbSize : DWORD;   // Size of the structure in bytes
+       dwParams : DWORD; // Indicates valid parameter values
+       lpszAddress : array[0..(MAX_LENGTH_ADDRESS)-1] of TCHAR; // The actual phone number
+       dwAddressType : DWORD; // A SIM_ADDRTYPE_* constant
+       dwNumPlan : DWORD;     // A SIM_NUMPLAN_* constant
+       lpszText : array[0..(MAX_LENGTH_PHONEBOOKENTRYTEXT)-1] of TCHAR; // Text assocaited with the entry
+    end;
+  TSIMPHONEBOOKENTRY = simphonebookentry_tag;
+  LPSIMPHONEBOOKENTRY = ^simphonebookentry_tag;
+  
+  // SIMMESSAGE | A SIM message entry
+
+  simmessage_tag = record
+       cbSize : DWORD;   // Size of the structure in bytes
+       dwParams : DWORD; // Indicates valid parameter values
+       lpszAddress : array[0..(MAX_LENGTH_ADDRESS)-1] of TCHAR; // The actual phone number
+       dwAddressType : DWORD; // A SIM_ADDRTYPE_* constant
+       dwNumPlan : DWORD;     // A SIM_NUMPLAN_* constant
+       stReceiveTime : SYSTEMTIME; // Timestamp for the incoming message
+       cbHdrLength : DWORD;        // Header length in bytes
+       rgbHeader : array[0..(MAX_LENGTH_HEADER)-1] of BYTE;     // The actual header data
+       lpszMessage : array[0..(MAX_LENGTH_MESSAGE)-1] of TCHAR; // The actual message data
+    end;
+  TSIMMESSAGE = simmessage_tag;
+  LPSIMMESSAGE = ^simmessage_tag;
+
+  // SIMLOCKINGPWDLENGTH | Minimum password length }
+
+  simlockingpwdlength = record
+       dwFacility : DWORD;       // The locking facility
+       dwPasswordLength : DWORD; // The minimum password length
+    end;
+  LPSIMLOCKINGPWDLENGTH = ^simlockingpwdlength;
+
+  // SIMCAPS | Capabilities of the SIM
+  simcaps_tag = record
+       cbSize : DWORD;                 // Size of the structure in bytes
+       dwParams : DWORD;               // Indicates valid parameter values
+       dwPBStorages : DWORD;           // Supported phonebook storages
+       dwMinPBIndex : DWORD;           // Minimum phonebook storages
+       dwMaxPBIndex : DWORD;           // Maximum phonebook storages
+       dwMaxPBEAddressLength : DWORD;  // Maximum address length of phonebook entries
+       dwMaxPBETextLength : DWORD;     // Maximum text length of phonebook entries
+       dwLockFacilities : DWORD;       // Supported locking facilities
+       dwReadMsgStorages : DWORD;      // Supported read message stores
+       dwWriteMsgStorages : DWORD;     // Supported write message stores
+       dwNumLockingPwdLengths : DWORD; // Number of entries in rgLockingPwdLengths
+       rgLockingPwdLengths : array[0..(SIM_NUMLOCKFACILITIES)-1] of SIMLOCKINGPWDLENGTH; // Password lengths for each facility
+    end;
+  TSIMCAPS = simcaps_tag;
+  LPSIMCAPS = ^simcaps_tag;
+
+ // SIMRECORDINFO | Information about a particular SIM file
+
+  simrecordinfo_tag = record
+       cbSize : DWORD;       // Size of the structure in bytes
+       dwParams : DWORD;     // Indicates valid parameter values
+       dwRecordType : DWORD; // SIM_RECORDTYPE_* Constant
+       dwItemCount : DWORD;  // Number of items in the record
+       dwSize : DWORD;       // Size in bytes of each item
+    end;
+  TSIMRECORDINFO = simrecordinfo_tag;
+  LPSIMRECORDINFO = ^simrecordinfo_tag;
+
+ // SIMFILEREFRESH | Information about which file(s) have been updated
+
+  simfilerefresh_tag = record
+       cbSize : DWORD;       // Size of the structure in bytes
+       dwParams : DWORD;     // Indicates valid parameter values
+       dwFlags : DWORD;      // Combination of SIMFILE_* constants
+       dwFileCount : DWORD;  // Number of files in the update list
+       rgdwAddress : array[0..(MAX_FILES)-1] of DWORD; // Array of files
+    end;
+  TSIMFILEREFRESH = simfilerefresh_tag;
+  LPSIMFILEREFRESH = ^simfilerefresh_tag;
+
+ // SIMPBECHANGE | Information about which SIM Phonebook entries have changed
+
+  simpbechange_tag = record
+       dwEntry : DWORD;   // The index of the entry that has changed
+       dwStorage : DWORD; // SIM_PBSTORAGE_* constant detailing which phonebook this entry is in
+    end;
+  TSIMPBECHANGE = simpbechange_tag;
+  LPSIMPBECHANGE = ^simpbechange_tag;
+
+ // SIMMESSAGECHANGE | Information about which SMS messages on the SIM have changed }
+
+  simmessagechange_tag = record
+       dwEntry : DWORD;   // The index of the entry that has changed
+       dwStorage : DWORD; // SIM_SMSSTORAGE_* constant details which storage location this entry is in
+    end;
+  TSIMMESSAGECHANGE = simmessagechange_tag;
+  LPSIMMESSAGECHANGE = ^simmessagechange_tag;
+
+  // This is the callback function prototype used by SIM Manager when
+  // sending notifications.
+  // -
+  // Indicates type of notification received
+  // Points to data structure specific to the notification
+  // Size of data structure in bytes
+  // Parameter passed to simInititialize
+  TSIMCALLBACK = procedure (dwNotifyCode:DWORD; const pData:pointer; dwDataSize:DWORD; dwParam:DWORD);
+  
+//*****************************************************************************
+// functions
+//*****************************************************************************
+
+// This function must be called by applications in order to use any of the
+// functions in this API.
+// Passing in a function callback is required only for applications that
+// wish to obtain notifications.
+// -
+// Indicates which notifications to receive
+// Function callback for notifications, may be NULL if notifications are not desired
+// Parameter to pass on each notification function call, may be NULL
+// Points to a HSIM handle to use on subsequent function calls
+function SimInitialize(dwFlags:DWORD; lpfnCallBack:TSIMCALLBACK; dwParam:DWORD; lphSim:LPHSIM):HRESULT;external KernelDLL name 'SimInitialize';
+
+// This function deinitializes an HSIM handle.
+// -
+// A valid HSIM handle to deinitialize
+function SimDeinitialize(hSim:HSIM):HRESULT;external KernelDLL name 'SimDeinitialize';
+
+// Gets the device capabilities of the SIM.
+// -
+// Points to a valid HSIM handle
+// Which device capabilities are we interested in?
+// Capabilities structure
+function SimGetDevCaps(hSim:HSIM; dwCapsType:DWORD; lpSimCaps:LPSIMCAPS):HRESULT;external KernelDLL name 'SimGetDevCaps';
+
+// Reads a phonebook entry off the SIM card.
+// -
+// Points to a valid HSIM handle
+// A SIMPBSTORAGE_* Constant
+// Index of the entry to retrieve
+// Points to a phonebook entry structure
+function SimReadPhonebookEntry(hSim:HSIM; dwLocation:DWORD; dwIndex:DWORD; lpPhonebookEntry:LPSIMPHONEBOOKENTRY):HRESULT;external KernelDLL name 'SimReadPhonebookEntry';
+
+// Gets the status of a phonebook location.
+// -
+// Points to a valid HSIM handle
+// A SIMPBSTORAGE_* Constant
+// Nubmer of used locations
+// Total number of locations
+function SimGetPhonebookStatus(hSim:HSIM; dwLocation:DWORD; lpdwUsed:LPDWORD; lpdwTotal:LPDWORD):HRESULT;external KernelDLL name 'SimGetPhonebookStatus';
+
+// Writes a phonebook entry to the SIM card.
+// -
+// Points to a valid HSIM handle
+// A SIMPBSTORAGE_* Constant
+// Index of the entry to retrieve (may be SIM_PBINDEX_FIRSTAVAILABLE)
+// Points to a phonebook entry structure
+function SimWritePhonebookEntry(hSim:HSIM; dwLocation:DWORD; dwIndex:DWORD; lpPhonebookEntry:LPSIMPHONEBOOKENTRY):HRESULT;external KernelDLL name 'SimWritePhonebookEntry';
+
+// Deletes a phonebook entry from the SIM card.
+// -
+// Points to a valid HSIM handle
+// A SIMPBSTORAGE_* Constant
+// Index of the entry to retrieve
+function SimDeletePhonebookEntry(hSim:HSIM; dwLocation:DWORD; dwIndex:DWORD):HRESULT;external KernelDLL name 'SimDeletePhonebookEntry';
+
+// Checks if the SIM is currently awaiting a password.
+// This is called when powering on the phone.
+// -
+// Points to a valid HSIM handle
+// Points to a SIM_LOCKEDSTATE_* constant
+function SimGetPhoneLockedState(hSim:HSIM; lpdwLockedState:LPDWORD):HRESULT;external KernelDLL name 'SimGetPhoneLockedState';
+
+// Sends a password to unlock the phone.
+// -
+// Points to a valid HSIM handle
+// Points to password string
+// Some locked states require a second password (e.g. PUK requires a new PIN to replace the old, presumably forgotten PIN)
+function SimUnlockPhone(hSim:HSIM; lpszPassword:LPTSTR; lpszNewPin:LPTSTR):HRESULT;external KernelDLL name 'SimUnlockPhone';
+
+// Gets the locking status of the phone.
+// -
+// Points to a valid HSIM handle
+// A SIMLOCKFACILITY_* constant
+// Some facilities require a password
+// Enabled or diabled
+function SimGetLockingStatus(hSim:HSIM; dwLockingFacility:DWORD; lpszPassword:LPTSTR; var pfEnabled:BOOL):HRESULT;external KernelDLL name 'SimGetLockingStatus';
+
+// Sets the locking status of the phone.
+// -
+// Points to a valid HSIM handle
+// A SIMLOCKFACILITY_* constant
+// Some facilities require a password
+// Enable or diable
+function SimSetLockingStatus(hSim:HSIM; dwLockingFacility:DWORD; lpszPassword:LPTSTR; fEnabled:BOOL):HRESULT;external KernelDLL name 'SimSetLockingStatus';
+
+// Changes a locking password.
+// -
+// Points to a valid HSIM handle
+// A SIMLOCKFACILITY_* constant
+// The old password
+// The new password
+function SimChangeLockingPassword(hSim:HSIM; dwLockingFacility:DWORD; lpszOldPassword:LPTSTR; lpszNewPassword:LPTSTR):HRESULT;external KernelDLL name 'SimChangeLockingPassword';
+
+// Gets the status of a SMS storage location.
+// -
+// Points to a valid HSIM handle
+// A SIM_SMSSTORAGE_* constant
+// Nubmer of used locations
+// Total number of locations
+function SimGetSmsStorageStatus(hSim:HSIM; dwStorage:DWORD; lpdwUsed:LPDWORD; lpdwTotal:LPDWORD):HRESULT;external KernelDLL name 'SimGetSmsStorageStatus';
+
+// Reads an SMS from a particular storage location.
+// -
+// Points to a valid HSIM handle
+// A SIM_SMSSTORAGE_* constant
+// Index of the entry to retrieve
+// Points to an SMS message structure
+function SimReadMessage(hSim:HSIM; dwStorage:DWORD; dwIndex:DWORD; lpSimMessage:LPSIMMESSAGE):HRESULT;external KernelDLL name 'SimReadMessage';
+
+// Writes an SMS to a particular storage location.
+// Note that SMS messages are always written to the first available storage location
+// -
+// lpdwIndex will be set to the index to which the message was written
+// Points to a valid HSIM handle
+// A SIM_SMSSTORAGE_* constant
+// Set to the index where the message was written
+// Points to an SMS message structure
+function SimWriteMessage(hSim:HSIM; dwStorage:DWORD; lpdwIndex:LPDWORD; lpSimMessage:LPSIMMESSAGE):HRESULT;external KernelDLL name 'SimWriteMessage';
+
+// Deletes an SMS from a particular storage location.
+// -
+// Points to a valid HSIM handle
+// A SIM_SMSSTORAGE_* constant
+// Index of the entry to retrieve
+function SimDeleteMessage(hSim:HSIM; dwStorage:DWORD; dwIndex:DWORD):HRESULT;external KernelDLL name 'SimDeleteMessage';
+
+// Reads a file form the SIM.
+// -
+// Points to a valid HSIM handle
+// SIM address
+// A SIM_RECORDTYPE_* constant
+// Applies only to SIM_RECORDTYPE_CYCLIC and SIM_RECORDTYPE_LINEAR, otherwise ignored
+// Data buffer
+// Size of data buffer
+// Number of bytes read
+function SimReadRecord(hSim:HSIM; dwAddress:DWORD; dwRecordType:DWORD; dwIndex:DWORD;
+ lpData: LPBYTE; dwBufferSize: DWORD; lpdwBytesRead: LPDWORD):HRESULT;external KernelDLL name 'SimReadRecord';
+
+// Writes a file to the SIM.
+// -
+// Points to a valid HSIM handle
+// SIM address
+// A SIM_RECORDTYPE_* constant
+// Applies only to SIM_RECORDTYPE_CYCLIC and SIM_RECORDTYPE_LINEAR, otherwise ignored
+function SimWriteRecord(hSim:HSIM; dwAddress:DWORD; dwRecordType:DWORD; dwIndex:DWORD;
+ lpData: LPBYTE; dwByteCount: DWORD):HRESULT;external KernelDLL name 'SimWriteRecord';
+
+// Gets information about a particular record.
+// -
+// Points to a valid HSIM handle
+// SIM address
+// Points to a SIM record information structure
+function SimGetRecordInfo(hSim:HSIM; dwAddress:DWORD; lpSimRecordInfo:LPSIMRECORDINFO):HRESULT;external KernelDLL name 'SimGetRecordInfo';
+
+{$endif read_interface}
+
+{$ifdef read_implementation}
+
+{$endif read_implementation}

+ 8092 - 8092
rtl/wince/wininc/struct.inc

@@ -1,8092 +1,8092 @@
-{
-    This file is part of the Free Pascal run time library.
-    This unit contains the record definition for the Win32 API
-    Copyright (c) 1999-2000 by Florian KLaempfl,
-    member of the Free Pascal development team.
-
-    See the file COPYING.FPC, included in this distribution,
-    for details about the copyright.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- **********************************************************************}
-
-{
-  Structures.h
-
-  Declarations for all the Windows32 API Structures
-
-  Copyright (C) 1996 Free Software Foundation, Inc.
-
-  Author:  Scott Christley <[email protected]>
-  Date: 1996
-
-  This file is part of the Windows32 API Library.
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Library General Public
-  License as published by the Free Software Foundation; either
-  version 2 of the License, or (at your option) any later version.
-
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Library General Public License for more details.
-
-  If you are interested in a warranty or support for this source code,
-  contact Scott Christley <[email protected]> for more information.
-
-  You should have received a copy of the GNU Library General Public
-  License along with this library; see the file COPYING.LIB.
-  If not, write to the Free Software Foundation,
-  59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-
-  Changes :
-
-  22/15/2005 update for wince4.2 port, [email protected]
-
-}
-
-{$ifdef read_interface}
-
-  type
-
-    { WARNING
-      the variable argument list
-      is not implemented for FPC
-      va_list is just a dummy record
-      MvdV: Nevertheless it should be a pointer type, not a record}
-
-     va_list = pchar;
-
-     ABC = record
-          abcA : longint;
-          abcB : UINT;
-          abcC : longint;
-       end;
-     LPABC = ^ABC;
-     _ABC = ABC;
-     TABC = ABC;
-     PABC = ^ABC;
-
-     ABCFLOAT = record
-          abcfA : Single;
-          abcfB : Single;
-          abcfC : Single;
-       end;
-     LPABCFLOAT = ^ABCFLOAT;
-     _ABCFLOAT = ABCFLOAT;
-     TABCFLOAT = ABCFLOAT;
-     PABCFLOAT = ^ABCFLOAT;
-
-     ACCEL = record
-          fVirt : BYTE;
-          key : WORD;
-          cmd : WORD;
-       end;
-     LPACCEL = ^ACCEL;
-     _ACCEL = ACCEL;
-     TACCEL = ACCEL;
-     PACCEL = ^ACCEL;
-
-     //
-     //  The structure of an ACE is a common ace header followed by ace type
-     //  specific data.  Pictorally the structure of the common ace header is
-     //  as follows:
-     //
-     //       3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
-     //       1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
-     //      +---------------+-------+-------+---------------+---------------+
-     //      |            AceSize            |    AceFlags   |     AceType   |
-     //      +---------------+-------+-------+---------------+---------------+
-     //
-     //  AceType denotes the type of the ace, there are some predefined ace
-     //  types
-     //
-     //  AceSize is the size, in bytes, of ace.
-     //
-     //  AceFlags are the Ace flags for audit and inheritance, defined shortly.
-
-     ACE_HEADER = record           //winnt
-          AceType : BYTE;
-          AceFlags : BYTE;
-          AceSize : WORD;
-       end;
-     _ACE_HEADER = ACE_HEADER;
-     TACE_HEADER = ACE_HEADER;
-     PACE_HEADER = ^ACE_HEADER;
-
-     ACCESS_MASK = DWORD;          //winnt
-     PACCESS_MASK = ^ACCESS_MASK;  //+winnt
-
-     REGSAM = ACCESS_MASK;
-
-     ACCESS_ALLOWED_ACE = record
-          Header : ACE_HEADER;
-          Mask : ACCESS_MASK;
-          SidStart : DWORD;
-       end;
-     _ACCESS_ALLOWED_ACE = ACCESS_ALLOWED_ACE;
-     TACCESS_ALLOWED_ACE = ACCESS_ALLOWED_ACE;
-     PACCESS_ALLOWED_ACE = ^ACCESS_ALLOWED_ACE;
-
-     ACCESS_DENIED_ACE = record
-          Header : ACE_HEADER;
-          Mask : ACCESS_MASK;
-          SidStart : DWORD;
-       end;
-     _ACCESS_DENIED_ACE = ACCESS_DENIED_ACE;
-     TACCESS_DENIED_ACE = ACCESS_DENIED_ACE;
-
-     ACCESSTIMEOUT = record
-          cbSize : UINT;
-          dwFlags : DWORD;
-          iTimeOutMSec : DWORD;
-       end;
-     _ACCESSTIMEOUT = ACCESSTIMEOUT;
-     TACCESSTIMEOUT = ACCESSTIMEOUT;
-     PACCESSTIMEOUT = ^ACCESSTIMEOUT;
-
-     PACCESS_TOKEN  = PVOID; //+winnt
-
-     ////////////////////////////////////////////////////////////////////////
-     //                                                                    //
-     //                         ACL  and  ACE                              //
-     //                                                                    //
-     ////////////////////////////////////////////////////////////////////////
-
-     //
-     //  Define an ACL and the ACE format.  The structure of an ACL header
-     //  followed by one or more ACEs.  Pictorally the structure of an ACL header
-     //  is as follows:
-     //
-     //       3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
-     //       1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
-     //      +-------------------------------+---------------+---------------+
-     //      |            AclSize            |      Sbz1     |  AclRevision  |
-     //      +-------------------------------+---------------+---------------+
-     //      |              Sbz2             |           AceCount            |
-     //      +-------------------------------+-------------------------------+
-     //
-     //  The current AclRevision is defined to be ACL_REVISION.
-     //
-     //  AclSize is the size, in bytes, allocated for the ACL.  This includes
-     //  the ACL header, ACES, and remaining free space in the buffer.
-     //
-     //  AceCount is the number of ACES in the ACL.
-     //
-
-     ACL = record           //winnt
-          AclRevision : BYTE;
-          Sbz1 : BYTE;
-          AclSize : WORD;
-          AceCount : WORD;
-          Sbz2 : WORD;
-       end;
-     PACL = ^ACL;
-     _ACL = ACL;
-     TACL = ACL;
-
-     ACL_REVISION_INFORMATION = record
-          AclRevision : DWORD;
-       end;
-     _ACL_REVISION_INFORMATION = ACL_REVISION_INFORMATION;
-     TACLREVISIONINFORMATION = ACL_REVISION_INFORMATION;
-     PACLREVISIONINFORMATION = ^ACL_REVISION_INFORMATION;
-
-     ACL_SIZE_INFORMATION = record
-          AceCount : DWORD;
-          AclBytesInUse : DWORD;
-          AclBytesFree : DWORD;
-       end;
-     _ACL_SIZE_INFORMATION = ACL_SIZE_INFORMATION;
-     TACLSIZEINFORMATION = ACL_SIZE_INFORMATION;
-     PACLSIZEINFORMATION = ^ACL_SIZE_INFORMATION;
-
-     ACTION_HEADER = record
-          transport_id : ULONG;
-          action_code : USHORT;
-          reserved : USHORT;
-       end;
-     _ACTION_HEADER = ACTION_HEADER;
-     TACTIONHEADER = ACTION_HEADER;
-     PACTIONHEADER = ^ACTION_HEADER;
-
-     ADAPTER_STATUS = record
-          adapter_address : array[0..5] of UCHAR;
-          rev_major : UCHAR;
-          reserved0 : UCHAR;
-          adapter_type : UCHAR;
-          rev_minor : UCHAR;
-          duration : WORD;
-          frmr_recv : WORD;
-          frmr_xmit : WORD;
-          iframe_recv_err : WORD;
-          xmit_aborts : WORD;
-          xmit_success : DWORD;
-          recv_success : DWORD;
-          iframe_xmit_err : WORD;
-          recv_buff_unavail : WORD;
-          t1_timeouts : WORD;
-          ti_timeouts : WORD;
-          reserved1 : DWORD;
-          free_ncbs : WORD;
-          max_cfg_ncbs : WORD;
-          max_ncbs : WORD;
-          xmit_buf_unavail : WORD;
-          max_dgram_size : WORD;
-          pending_sess : WORD;
-          max_cfg_sess : WORD;
-          max_sess : WORD;
-          max_sess_pkt_size : WORD;
-          name_count : WORD;
-       end;
-     _ADAPTER_STATUS = ADAPTER_STATUS;
-     TADAPTERSTATUS = ADAPTER_STATUS;
-     PADAPTERSTATUS = ^ADAPTER_STATUS;
-
-     ADDJOB_INFO_1 = record
-          Path : LPTSTR;
-          JobId : DWORD;
-       end;
-     _ADDJOB_INFO_1 = ADDJOB_INFO_1;
-     TADDJOB_INFO_1 = ADDJOB_INFO_1;
-     PADDJOB_INFO_1 = ^ADDJOB_INFO_1;
-
-     ANIMATIONINFO = record
-          cbSize : UINT;
-          iMinAnimate : longint;
-       end;
-     LPANIMATIONINFO = ^ANIMATIONINFO;
-     _ANIMATIONINFO = ANIMATIONINFO;
-     TANIMATIONINFO = ANIMATIONINFO;
-     PANIMATIONINFO = ^ANIMATIONINFO;
-
-     POINT = record
-          x : LONG;
-          y : LONG;
-       end;
-     LPPOINT = ^POINT;
-     tagPOINT = POINT;
-     TPOINT = POINT;
-     PPOINT = ^POINT;
-
-     RECT = record
-          case Integer of
-             0: (Left,Top,Right,Bottom : Longint);
-             1: (TopLeft,BottomRight : TPoint);
-       end;
-     LPRECT = ^RECT;
-     _RECT = RECT;
-     TRECT = RECT;
-     PRECT = ^RECT;
-     tagRECT = RECT; //+windef
-
-     RECTL = record
-          left : LONG;
-          top : LONG;
-          right : LONG;
-          bottom : LONG;
-       end;
-     _RECTL = RECTL;
-     TRECTL = RECTL;
-     PRECTL = ^RECTL;
-
-     APPBARDATA = record
-          cbSize : DWORD;
-          hWnd : HWND;
-          uCallbackMessage : UINT;
-          uEdge : UINT;
-          rc : RECT;
-          lParam : LPARAM;
-       end;
-     _AppBarData = APPBARDATA;
-     TAppBarData = APPBARDATA;
-     PAppBarData = ^APPBARDATA;
-
-     BITMAP = record
-          bmType : LONG;
-          bmWidth : LONG;
-          bmHeight : LONG;
-          bmWidthBytes : LONG;
-          bmPlanes : WORD;
-          bmBitsPixel : WORD;
-          bmBits : LPVOID;
-       end;
-     PBITMAP = ^BITMAP;
-     NPBITMAP = ^BITMAP;
-     LPBITMAP = ^BITMAP;
-     tagBITMAP = BITMAP;
-     TBITMAP = BITMAP;
-
-     BITMAPCOREHEADER = record
-          bcSize : DWORD;
-          bcWidth : WORD;
-          bcHeight : WORD;
-          bcPlanes : WORD;
-          bcBitCount : WORD;
-       end;
-     tagBITMAPCOREHEADER = BITMAPCOREHEADER;
-     TBITMAPCOREHEADER = BITMAPCOREHEADER;
-     PBITMAPCOREHEADER = ^BITMAPCOREHEADER;
-
-     RGBTRIPLE = record
-          rgbtBlue : BYTE;
-          rgbtGreen : BYTE;
-          rgbtRed : BYTE;
-       end;
-     tagRGBTRIPLE = RGBTRIPLE;
-     TRGBTRIPLE = RGBTRIPLE;
-     PRGBTRIPLE = ^RGBTRIPLE;
-
-     BITMAPCOREINFO = record
-          bmciHeader : BITMAPCOREHEADER;
-          bmciColors : array[0..0] of RGBTRIPLE;
-       end;
-     PBITMAPCOREINFO = ^BITMAPCOREINFO;
-     LPBITMAPCOREINFO = ^BITMAPCOREINFO;
-     _BITMAPCOREINFO = BITMAPCOREINFO;
-     TBITMAPCOREINFO = BITMAPCOREINFO;
-
-(* error
-  WORD    bfReserved1;
-  WORD    bfReserved2;
- in declarator_list *)
-
-     BITMAPINFOHEADER = record
-          biSize : DWORD;
-          biWidth : LONG;
-          biHeight : LONG;
-          biPlanes : WORD;
-          biBitCount : WORD;
-          biCompression : DWORD;
-          biSizeImage : DWORD;
-          biXPelsPerMeter : LONG;
-          biYPelsPerMeter : LONG;
-          biClrUsed : DWORD;
-          biClrImportant : DWORD;
-       end;
-     LPBITMAPINFOHEADER = ^BITMAPINFOHEADER;
-     TBITMAPINFOHEADER = BITMAPINFOHEADER;
-     PBITMAPINFOHEADER = ^BITMAPINFOHEADER;
-
-     RGBQUAD = record
-          rgbBlue : BYTE;
-          rgbGreen : BYTE;
-          rgbRed : BYTE;
-          rgbReserved : BYTE;
-       end;
-     tagRGBQUAD = RGBQUAD;
-     TRGBQUAD = RGBQUAD;
-     PRGBQUAD = ^RGBQUAD;
-
-     BITMAPINFO = record
-          bmiHeader : BITMAPINFOHEADER;
-          bmiColors : array[0..0] of RGBQUAD;
-       end;
-     LPBITMAPINFO = ^BITMAPINFO;
-     PBITMAPINFO = ^BITMAPINFO;
-     TBITMAPINFO = BITMAPINFO;
-
-     FXPT2DOT30 = longint;
-     LPFXPT2DOT30 = ^FXPT2DOT30;
-     TPFXPT2DOT30 = FXPT2DOT30;
-     PPFXPT2DOT30 = ^FXPT2DOT30;
-
-     CIEXYZ = record
-          ciexyzX : FXPT2DOT30;
-          ciexyzY : FXPT2DOT30;
-          ciexyzZ : FXPT2DOT30;
-       end;
-     tagCIEXYZ = CIEXYZ;
-     LPCIEXYZ = ^CIEXYZ;
-     TPCIEXYZ = CIEXYZ;
-     PCIEXYZ = ^CIEXYZ;
-
-     CIEXYZTRIPLE = record
-          ciexyzRed : CIEXYZ;
-          ciexyzGreen : CIEXYZ;
-          ciexyzBlue : CIEXYZ;
-       end;
-     tagCIEXYZTRIPLE = CIEXYZTRIPLE;
-     LPCIEXYZTRIPLE = ^CIEXYZTRIPLE;
-     TCIEXYZTRIPLE = CIEXYZTRIPLE;
-     PCIEXYZTRIPLE = ^CIEXYZTRIPLE;
-
-     BITMAPV4HEADER = record
-          bV4Size : DWORD;
-          bV4Width : LONG;
-          bV4Height : LONG;
-          bV4Planes : WORD;
-          bV4BitCount : WORD;
-          bV4V4Compression : DWORD;
-          bV4SizeImage : DWORD;
-          bV4XPelsPerMeter : LONG;
-          bV4YPelsPerMeter : LONG;
-          bV4ClrUsed : DWORD;
-          bV4ClrImportant : DWORD;
-          bV4RedMask : DWORD;
-          bV4GreenMask : DWORD;
-          bV4BlueMask : DWORD;
-          bV4AlphaMask : DWORD;
-          bV4CSType : DWORD;
-          bV4Endpoints : CIEXYZTRIPLE;
-          bV4GammaRed : DWORD;
-          bV4GammaGreen : DWORD;
-          bV4GammaBlue : DWORD;
-       end;
-     LPBITMAPV4HEADER = ^BITMAPV4HEADER;
-     TBITMAPV4HEADER = BITMAPV4HEADER;
-     PBITMAPV4HEADER = ^BITMAPV4HEADER;
-
-     BITMAPFILEHEADER = packed record
-       bfType : Word;
-       bfSize : DWord;
-       bfReserved1 : Word;
-       bfReserved2 : Word;
-       bfOffBits : DWord;
-     end;
-     TBitmapFileHeader = BITMAPFILEHEADER;
-
-     BLOB = record
-          cbSize : ULONG;
-          pBlobData : ^BYTE;
-       end;
-     _BLOB = BLOB;
-     TBLOB = BLOB;
-     PBLOB = ^BLOB;
-
-     SHITEMID = record
-          cb : USHORT;
-          abID : array[0..0] of BYTE;
-       end;
-     LPSHITEMID = ^SHITEMID;
-     LPCSHITEMID = ^SHITEMID;
-     _SHITEMID = SHITEMID;
-     TSHITEMID = SHITEMID;
-     PSHITEMID = ^SHITEMID;
-
-     ITEMIDLIST = record
-          mkid : SHITEMID;
-       end;
-     LPITEMIDLIST = ^ITEMIDLIST;
-     LPCITEMIDLIST = ^ITEMIDLIST;
-     _ITEMIDLIST = ITEMIDLIST;
-     TITEMIDLIST = ITEMIDLIST;
-     PITEMIDLIST = ^ITEMIDLIST;
-
-     FILETIME = record
-          dwLowDateTime : DWORD;
-          dwHighDateTime : DWORD;
-       end;
-     LPFILETIME = ^FILETIME;
-     _FILETIME = FILETIME;
-     TFILETIME = FILETIME;
-     PFILETIME = ^FILETIME;
-
-     _GET_FILEEX_INFO_LEVELS=(GetFileExInfoStandard,GetFileExMaxInfoLevel); //+winbase
-     GET_FILEEX_INFO_LEVELS=_GET_FILEEX_INFO_LEVELS;                        //+winbase
-
-     _FINDEX_INFO_LEVELS = (FindExInfoStandard,FindExInfoMaxInfoLevel); //+winbase
-     FINDEX_INFO_LEVELS = _FINDEX_INFO_LEVELS;                          //+winbase
-
-     _FINDEX_SEARCH_OPS = ( FindExSearchNameMatch, FindExSearchLimitToDirectories,
-                            FindExSearchLimitToDevices, FindExSearchMaxSearchOp);
-     FINDEX_SEARCH_OPS=_FINDEX_SEARCH_OPS;
-
-     BY_HANDLE_FILE_INFORMATION = record
-          dwFileAttributes : DWORD;
-          ftCreationTime : FILETIME;
-          ftLastAccessTime : FILETIME;
-          ftLastWriteTime : FILETIME;
-          dwVolumeSerialNumber : DWORD;
-          nFileSizeHigh : DWORD;
-          nFileSizeLow : DWORD;
-          nNumberOfLinks : DWORD;
-          nFileIndexHigh : DWORD;
-          nFileIndexLow : DWORD;
-       end;
-     LPBY_HANDLE_FILE_INFORMATION = ^BY_HANDLE_FILE_INFORMATION;
-     _BY_HANDLE_FILE_INFORMATION = BY_HANDLE_FILE_INFORMATION;
-     TBYHANDLEFILEINFORMATION = BY_HANDLE_FILE_INFORMATION;
-     PBYHANDLEFILEINFORMATION = ^BY_HANDLE_FILE_INFORMATION;
-
-     FIXED = record
-          fract : WORD;
-          value : integer;
-       end;
-     _FIXED = FIXED;
-     TFIXED = FIXED;
-     PFIXED = ^FIXED;
-
-     POINTFX = record
-          x : FIXED;
-          y : FIXED;
-       end;
-     tagPOINTFX = POINTFX;
-     TPOINTFX = POINTFX;
-     PPOINTFX = ^POINTFX;
-
-     POINTL = record
-          x : LONG;
-          y : LONG;
-       end;
-     _POINTL = POINTL;
-     TPOINTL = POINTL;
-     PPOINTL = ^POINTL;
-
-     TSmallPoint = record
-       X,
-       Y : SmallInt;
-       end;
-
-
-     POINTS = record
-          x : SHORT;
-          y : SHORT;
-       end;
-     tagPOINTS = POINTS;  //windef
-     TPOINTS = POINTS;
-     PPOINTS = ^POINTS;
-
-     CANDIDATEFORM = record
-          dwIndex : DWORD;
-          dwStyle : DWORD;
-          ptCurrentPos : POINT;
-          rcArea : RECT;
-       end;
-     LPCANDIDATEFORM = ^CANDIDATEFORM;
-     _tagCANDIDATEFORM = CANDIDATEFORM;
-     TCANDIDATEFORM = CANDIDATEFORM;
-     PCANDIDATEFORM = ^CANDIDATEFORM;
-
-     CANDIDATELIST = record
-          dwSize : DWORD;
-          dwStyle : DWORD;
-          dwCount : DWORD;
-          dwSelection : DWORD;
-          dwPageStart : DWORD;
-          dwPageSize : DWORD;
-          dwOffset : array[0..0] of DWORD;
-       end;
-     LPCANDIDATELIST = ^CANDIDATELIST;
-     _tagCANDIDATELIST = CANDIDATELIST;
-     TCANDIDATELIST = CANDIDATELIST;
-     PCANDIDATELIST = ^CANDIDATELIST;
-
-     CREATESTRUCT = record
-          lpCreateParams : LPVOID;
-          hInstance : HINST;
-          hMenu : HMENU;
-          hwndParent : HWND;
-          cy : longint;
-          cx : longint;
-          y : longint;
-          x : longint;
-          style : LONG;
-          lpszName : LPCTSTR;
-          lpszClass : LPCTSTR;
-          dwExStyle : DWORD;
-       end;
-     LPCREATESTRUCT = ^CREATESTRUCT;
-     tagCREATESTRUCT = CREATESTRUCT;
-     TCREATESTRUCT = CREATESTRUCT;
-     PCREATESTRUCT = ^CREATESTRUCT;
-
-     CBT_CREATEWND = record
-          lpcs : LPCREATESTRUCT;
-          hwndInsertAfter : HWND;
-       end;
-     tagCBT_CREATEWND = CBT_CREATEWND;
-     TCBT_CREATEWND = CBT_CREATEWND;
-     PCBT_CREATEWND = ^CBT_CREATEWND;
-
-     CBTACTIVATESTRUCT = record
-          fMouse : WINBOOL;
-          hWndActive : HWND;
-       end;
-     tagCBTACTIVATESTRUCT = CBTACTIVATESTRUCT;
-     TCBTACTIVATESTRUCT = CBTACTIVATESTRUCT;
-     PCBTACTIVATESTRUCT = ^CBTACTIVATESTRUCT;
-
-
-     CHAR_INFO = record
-              case longint of
-                 0 : ( UnicodeChar : WCHAR;
-                       Attributes  : Word);
-                 1 : ( AsciiChar : CHAR );
-              end;
-     _CHAR_INFO = CHAR_INFO;
-     TCHAR_INFO = CHAR_INFO;
-     PCHAR_INFO = ^CHAR_INFO;
-
-     CHARFORMAT = record
-          cbSize : UINT;
-          dwMask : DWORD;
-          dwEffects : DWORD;
-          yHeight : LONG;
-          yOffset : LONG;
-          crTextColor : COLORREF;
-          bCharSet : BYTE;
-          bPitchAndFamily : BYTE;
-          szFaceName : array[0..(LF_FACESIZE)-1] of TCHAR;
-       end;
-     _charformat = CHARFORMAT;
-     Tcharformat = CHARFORMAT;
-     Pcharformat = ^CHARFORMAT;
-
-     CHARRANGE = record
-          cpMin : LONG;
-          cpMax : LONG;
-       end;
-     _charrange = CHARRANGE;
-     Tcharrange = CHARRANGE;
-     Pcharrange = ^CHARRANGE;
-
-     CHARSET = record
-          aflBlock : array[0..2] of DWORD;
-          flLang : DWORD;
-       end;
-     tagCHARSET = CHARSET;
-     TCHARSET = CHARSET;
-     PCHARSET = ^CHARSET;
-
-     FONTSIGNATURE = record
-          fsUsb : array[0..3] of DWORD;
-          fsCsb : array[0..1] of DWORD;
-       end;
-     LPFONTSIGNATURE = ^FONTSIGNATURE;
-     tagFONTSIGNATURE = FONTSIGNATURE;
-     TFONTSIGNATURE = FONTSIGNATURE;
-     PFONTSIGNATURE = ^FONTSIGNATURE;
-
-     FLOAT128 = record        //+winnt
-          LowPart  : int64;
-          HighPart : int64;
-       end;
-     PFLOAT128 = ^FLOAT128;
-
-     CHARSETINFO = record
-          ciCharset : UINT;
-          ciACP : UINT;
-          fs : FONTSIGNATURE;
-       end;
-     LPCHARSETINFO = ^CHARSETINFO;
-     TCHARSETINFO = CHARSETINFO;
-     PCHARSETINFO = ^CHARSETINFO;
-
-     {CHOOSECOLOR = record confilcts with function ChooseColor }
-     TCHOOSECOLOR = record
-          lStructSize : DWORD;
-          hwndOwner : HWND;
-          hInstance : HWND;
-          rgbResult : COLORREF;
-          lpCustColors : ^COLORREF;
-          Flags : DWORD;
-          lCustData : LPARAM;
-          lpfnHook : LPCCHOOKPROC;
-          lpTemplateName : LPCTSTR;
-       end;
-     LPCHOOSECOLOR = ^TCHOOSECOLOR;
-     PCHOOSECOLOR = ^TCHOOSECOLOR;
-
-     LOGFONTA = record
-          lfHeight : LONG;
-          lfWidth : LONG;
-          lfEscapement : LONG;
-          lfOrientation : LONG;
-          lfWeight : LONG;
-          lfItalic : BYTE;
-          lfUnderline : BYTE;
-          lfStrikeOut : BYTE;
-          lfCharSet : BYTE;
-          lfOutPrecision : BYTE;
-          lfClipPrecision : BYTE;
-          lfQuality : BYTE;
-          lfPitchAndFamily : BYTE;
-          lfFaceName : array[0..(LF_FACESIZE)-1] of TCHAR;
-       end;
-     TLOGFONTA = LOGFONTA;
-     tagLOGFONTA = LOGFONTA;
-     NPLOGFONTA = ^LOGFONTA;
-     PLOGFONTA = ^LOGFONTA;
-
-     LOGFONTW = record
-         lfHeight: LONG;
-         lfWidth: LONG;
-         lfEscapement: LONG;
-         lfOrientation: LONG;
-         lfWeight: LONG;
-         lfItalic: BYTE;
-         lfUnderline: BYTE;
-         lfStrikeOut: BYTE;
-         lfCharSet: BYTE;
-         lfOutPrecision: BYTE;
-         lfClipPrecision: BYTE;
-         lfQuality: BYTE;
-         lfPitchAndFamily: BYTE;
-         lfFaceName: array [0..LF_FACESIZE - 1] of WCHAR;
-       end;
-     LPLOGFONTW = ^LOGFONTW;
-     NPLOGFONTW = ^LOGFONTW;
-     tagLOGFONTW = LOGFONTW;
-     TLogFontW = LOGFONTW;
-     PLogFontW = ^TLogFontW;
-
-     TLOGFONT = LOGFONTW;
-     LOGFONT = LOGFONTW;
-     tagLOGFONT = LOGFONTW;
-     LPLOGFONT = ^LOGFONTW;
-     PLOGFONT = ^LOGFONTW;
-     NPLOGFONT = ^LOGFONTW;
-
-     TCHOOSEFONTW = record //+commdlg
-          lStructSize : DWORD;
-          hwndOwner : HWND;
-          hDC : HDC;
-          lpLogFont : LPLOGFONTW;
-          iPointSize : Integer;
-          Flags : DWORD;
-          rgbColors : DWORD;
-          lCustData : LPARAM;
-          lpfnHook : LPCFHOOKPROC;
-          lpTemplateName : LPCWSTR;
-          hInstance : HINST;
-          lpszStyle : LPTSTR;
-          nFontType : WORD;
-          ___MISSING_ALIGNMENT__ : WORD;
-          nSizeMin : Integer;
-          nSizeMax : Integer;
-       end;
-     tagCHOOSEFONTW = TCHOOSEFONTW; //+commdlg
-     LPCHOOSEFONTW = ^TCHOOSEFONTW; //+commdlg
-     PCHOOSEFONTW = ^TCHOOSEFONTW; //+commdlg
-
-     {CHOOSEFONT = record conflicts with ChooseFont function }
-     TCHOOSEFONT = record
-          lStructSize : DWORD;
-          hwndOwner : HWND;
-          hDC : HDC;
-          lpLogFont : LPLOGFONT;
-          iPointSize : WINT;
-          Flags : DWORD;
-          rgbColors : DWORD;
-          lCustData : LPARAM;
-          lpfnHook : LPCFHOOKPROC;
-          lpTemplateName : LPCTSTR;
-          hInstance : HINST;
-          lpszStyle : LPTSTR;
-          nFontType : WORD;
-          ___MISSING_ALIGNMENT__ : WORD;
-          nSizeMin : WINT;
-          nSizeMax : WINT;
-       end;
-     LPCHOOSEFONT = ^TCHOOSEFONT;
-     PCHOOSEFONT = ^TCHOOSEFONT;
-
-     CIDA = record
-          cidl : UINT;
-          aoffset : array[0..0] of UINT;
-       end;
-     LPIDA = ^CIDA;
-     _IDA = CIDA;
-     TIDA = CIDA;
-     PIDA = ^CIDA;
-
-     CLIENTCREATESTRUCT = record
-          hWindowMenu : HANDLE;
-          idFirstChild : UINT;
-       end;
-     LPCLIENTCREATESTRUCT = ^CLIENTCREATESTRUCT;
-     tagCLIENTCREATESTRUCT = CLIENTCREATESTRUCT;
-     TCLIENTCREATESTRUCT = CLIENTCREATESTRUCT;
-     PCLIENTCREATESTRUCT = ^CLIENTCREATESTRUCT;
-
-     CMINVOKECOMMANDINFO = record
-          cbSize : DWORD;
-          fMask : DWORD;
-          hwnd : HWND;
-          lpVerb : LPCSTR;
-          lpParameters : LPCSTR;
-          lpDirectory : LPCSTR;
-          nShow : longint;
-          dwHotKey : DWORD;
-          hIcon : HANDLE;
-       end;
-     LPCMINVOKECOMMANDINFO = ^CMINVOKECOMMANDINFO;
-     _CMInvokeCommandInfo = CMINVOKECOMMANDINFO;
-     TCMInvokeCommandInfo = CMINVOKECOMMANDINFO;
-     PCMInvokeCommandInfo = ^CMINVOKECOMMANDINFO;
-
-     COLORADJUSTMENT = record
-          caSize : WORD;
-          caFlags : WORD;
-          caIlluminantIndex : WORD;
-          caRedGamma : WORD;
-          caGreenGamma : WORD;
-          caBlueGamma : WORD;
-          caReferenceBlack : WORD;
-          caReferenceWhite : WORD;
-          caContrast : SHORT;
-          caBrightness : SHORT;
-          caColorfulness : SHORT;
-          caRedGreenTint : SHORT;
-       end;
-     LPCOLORADJUSTMENT = ^COLORADJUSTMENT;
-     tagCOLORADJUSTMENT = COLORADJUSTMENT;
-     TCOLORADJUSTMENT = COLORADJUSTMENT;
-     PCOLORADJUSTMENT = ^COLORADJUSTMENT;
-
-     COLORMAP = record
-          from : COLORREF;
-          _to : COLORREF;
-       end;
-     LPCOLORMAP = ^COLORMAP;
-     _COLORMAP = COLORMAP;
-     TCOLORMAP = COLORMAP;
-     PCOLORMAP = ^COLORMAP;
-
-     DCB = record
-          DCBlength : DWORD;
-          BaudRate : DWORD;
-          flags : DWORD;
-          wReserved : WORD;
-          XonLim : WORD;
-          XoffLim : WORD;
-          ByteSize : BYTE;
-          Parity : BYTE;
-          StopBits : BYTE;
-          XonChar : char;
-          XoffChar : char;
-          ErrorChar : char;
-          EofChar : char;
-          EvtChar : char;
-          wReserved1 : WORD;
-       end;
-     LPDCB = ^DCB;
-     _DCB = DCB;
-     TDCB = DCB;
-     PDCB = ^DCB;
-
-  const
-     bm_DCB_fBinary = $1;
-     bp_DCB_fBinary = 0;
-     bm_DCB_fParity = $2;
-     bp_DCB_fParity = 1;
-     bm_DCB_fOutxCtsFlow = $4;
-     bp_DCB_fOutxCtsFlow = 2;
-     bm_DCB_fOutxDsrFlow = $8;
-     bp_DCB_fOutxDsrFlow = 3;
-     bm_DCB_fDtrControl = $30;
-     bp_DCB_fDtrControl = 4;
-     bm_DCB_fDsrSensitivity = $40;
-     bp_DCB_fDsrSensitivity = 6;
-     bm_DCB_fTXContinueOnXoff = $80;
-     bp_DCB_fTXContinueOnXoff = 7;
-     bm_DCB_fOutX = $100;
-     bp_DCB_fOutX = 8;
-     bm_DCB_fInX = $200;
-     bp_DCB_fInX = 9;
-     bm_DCB_fErrorChar = $400;
-     bp_DCB_fErrorChar = 10;
-     bm_DCB_fNull = $800;
-     bp_DCB_fNull = 11;
-     bm_DCB_fRtsControl = $3000;
-     bp_DCB_fRtsControl = 12;
-     bm_DCB_fAbortOnError = $4000;
-     bp_DCB_fAbortOnError = 14;
-     bm_DCB_fDummy2 = $FFFF8000;
-     bp_DCB_fDummy2 = 15;
-  function fBinary(var a : DCB) : DWORD;
-  procedure set_fBinary(var a : DCB; __fBinary : DWORD);
-  function fParity(var a : DCB) : DWORD;
-  procedure set_fParity(var a : DCB; __fParity : DWORD);
-  function fOutxCtsFlow(var a : DCB) : DWORD;
-  procedure set_fOutxCtsFlow(var a : DCB; __fOutxCtsFlow : DWORD);
-  function fOutxDsrFlow(var a : DCB) : DWORD;
-  procedure set_fOutxDsrFlow(var a : DCB; __fOutxDsrFlow : DWORD);
-  function fDtrControl(var a : DCB) : DWORD;
-  procedure set_fDtrControl(var a : DCB; __fDtrControl : DWORD);
-  function fDsrSensitivity(var a : DCB) : DWORD;
-  procedure set_fDsrSensitivity(var a : DCB; __fDsrSensitivity : DWORD);
-  function fTXContinueOnXoff(var a : DCB) : DWORD;
-  procedure set_fTXContinueOnXoff(var a : DCB; __fTXContinueOnXoff : DWORD);
-  function fOutX(var a : DCB) : DWORD;
-  procedure set_fOutX(var a : DCB; __fOutX : DWORD);
-  function fInX(var a : DCB) : DWORD;
-  procedure set_fInX(var a : DCB; __fInX : DWORD);
-  function fErrorChar(var a : DCB) : DWORD;
-  procedure set_fErrorChar(var a : DCB; __fErrorChar : DWORD);
-  function fNull(var a : DCB) : DWORD;
-  procedure set_fNull(var a : DCB; __fNull : DWORD);
-  function fRtsControl(var a : DCB) : DWORD;
-  procedure set_fRtsControl(var a : DCB; __fRtsControl : DWORD);
-  function fAbortOnError(var a : DCB) : DWORD;
-  procedure set_fAbortOnError(var a : DCB; __fAbortOnError : DWORD);
-  function fDummy2(var a : DCB) : DWORD;
-  procedure set_fDummy2(var a : DCB; __fDummy2 : DWORD);
-
-  type
-
-     tagINITCOMMONCONTROLSEX = record
-          dwSize:DWORD;             // size of this structure
-          dwICC:DWORD;              // flags indicating which classes to be initialized
-        end;  
-     TINITCOMMONCONTROLSEX=tagINITCOMMONCONTROLSEX;
-     LPINITCOMMONCONTROLSEX=^tagINITCOMMONCONTROLSEX;
-
-     COMMCONFIG = record
-          dwSize : DWORD;
-          wVersion : WORD;
-          wReserved : WORD;
-          dcb : DCB;
-          dwProviderSubType : DWORD;
-          dwProviderOffset : DWORD;
-          dwProviderSize : DWORD;
-          wcProviderData : array[0..0] of WCHAR;
-       end;
-     LPCOMMCONFIG = ^COMMCONFIG;
-     _COMM_CONFIG = COMMCONFIG;
-     TCOMMCONFIG = COMMCONFIG;
-     PCOMMCONFIG = ^COMMCONFIG;
-
-     COMMPROP = record
-          wPacketLength : WORD;
-          wPacketVersion : WORD;
-          dwServiceMask : DWORD;
-          dwReserved1 : DWORD;
-          dwMaxTxQueue : DWORD;
-          dwMaxRxQueue : DWORD;
-          dwMaxBaud : DWORD;
-          dwProvSubType : DWORD;
-          dwProvCapabilities : DWORD;
-          dwSettableParams : DWORD;
-          dwSettableBaud : DWORD;
-          wSettableData : WORD;
-          wSettableStopParity : WORD;
-          dwCurrentTxQueue : DWORD;
-          dwCurrentRxQueue : DWORD;
-          dwProvSpec1 : DWORD;
-          dwProvSpec2 : DWORD;
-          wcProvChar : array[0..0] of WCHAR;
-       end;
-     LPCOMMPROP = ^COMMPROP;
-     _COMMPROP = COMMPROP;
-     TCOMMPROP = COMMPROP;
-     PCOMMPROP = ^COMMPROP;
-
-     COMMTIMEOUTS = record
-          ReadIntervalTimeout : DWORD;
-          ReadTotalTimeoutMultiplier : DWORD;
-          ReadTotalTimeoutConstant : DWORD;
-          WriteTotalTimeoutMultiplier : DWORD;
-          WriteTotalTimeoutConstant : DWORD;
-       end;
-     LPCOMMTIMEOUTS = ^COMMTIMEOUTS;
-     _COMMTIMEOUTS = COMMTIMEOUTS;
-     TCOMMTIMEOUTS = COMMTIMEOUTS;
-     PCOMMTIMEOUTS = ^COMMTIMEOUTS;
-
-     COMPAREITEMSTRUCT = record
-          CtlType : UINT;
-          CtlID : UINT;
-          hwndItem : HWND;
-          itemID1 : UINT;
-          itemData1 : DWORD;
-          itemID2 : UINT;
-          itemData2 : DWORD;
-       end;
-     tagCOMPAREITEMSTRUCT = COMPAREITEMSTRUCT;
-     TCOMPAREITEMSTRUCT = COMPAREITEMSTRUCT;
-     PCOMPAREITEMSTRUCT = ^COMPAREITEMSTRUCT;
-
-     COMPCOLOR = record
-          crText : COLORREF;
-          crBackground : COLORREF;
-          dwEffects : DWORD;
-       end;
-     TCOMPCOLOR = COMPCOLOR;
-     PCOMPCOLOR = ^COMPCOLOR;
-
-     COMPOSITIONFORM = record
-          dwStyle : DWORD;
-          ptCurrentPos : POINT;
-          rcArea : RECT;
-       end;
-     LPCOMPOSITIONFORM = ^COMPOSITIONFORM;
-     _tagCOMPOSITIONFORM = COMPOSITIONFORM;
-     TCOMPOSITIONFORM = COMPOSITIONFORM;
-     PCOMPOSITIONFORM = ^COMPOSITIONFORM;
-
-//     TComStatFlags = set of (fCtsHold, fDsrHold, fRlsdHold , fXoffHold ,
-//                    fXoffSent , fEof ,  fTxim  , fReserved);
-
-     COMSTAT = record
-          flag0 : DWORD;   // can't use tcomstatflags, set packing issues
-                           // and conflicts with macro's
-          cbInQue : DWORD;
-          cbOutQue : DWORD;
-       end;
-     LPCOMSTAT = ^COMSTAT;
-     _COMSTAT = COMSTAT;
-     TCOMSTAT = COMSTAT;
-     PCOMSTAT = ^COMSTAT;
-  const
-     bm_COMSTAT_fCtsHold = $1;
-     bp_COMSTAT_fCtsHold = 0;
-     bm_COMSTAT_fDsrHold = $2;
-     bp_COMSTAT_fDsrHold = 1;
-     bm_COMSTAT_fRlsdHold = $4;
-     bp_COMSTAT_fRlsdHold = 2;
-     bm_COMSTAT_fXoffHold = $8;
-     bp_COMSTAT_fXoffHold = 3;
-     bm_COMSTAT_fXoffSent = $10;
-     bp_COMSTAT_fXoffSent = 4;
-     bm_COMSTAT_fEof = $20;
-     bp_COMSTAT_fEof = 5;
-     bm_COMSTAT_fTxim = $40;
-     bp_COMSTAT_fTxim = 6;
-     bm_COMSTAT_fReserved = $FFFFFF80;
-     bp_COMSTAT_fReserved = 7;
-  function fCtsHold(var a : COMSTAT) : DWORD;  // should be renamed to get_<x>?
-  procedure set_fCtsHold(var a : COMSTAT; __fCtsHold : DWORD);
-  function fDsrHold(var a : COMSTAT) : DWORD;
-  procedure set_fDsrHold(var a : COMSTAT; __fDsrHold : DWORD);
-  function fRlsdHold(var a : COMSTAT) : DWORD;
-  procedure set_fRlsdHold(var a : COMSTAT; __fRlsdHold : DWORD);
-  function fXoffHold(var a : COMSTAT) : DWORD;
-  procedure set_fXoffHold(var a : COMSTAT; __fXoffHold : DWORD);
-  function fXoffSent(var a : COMSTAT) : DWORD;
-  procedure set_fXoffSent(var a : COMSTAT; __fXoffSent : DWORD);
-  function fEof(var a : COMSTAT) : DWORD;
-  procedure set_fEof(var a : COMSTAT; __fEof : DWORD);
-  function fTxim(var a : COMSTAT) : DWORD;
-  procedure set_fTxim(var a : COMSTAT; __fTxim : DWORD);
-  function fReserved(var a : COMSTAT) : DWORD;
-  procedure set_fReserved(var a : COMSTAT; __fReserved : DWORD);
-
-  type
-
-     CONSOLE_CURSOR_INFO = record
-          dwSize : DWORD;
-          bVisible : WINBOOL;
-       end;
-     PCONSOLE_CURSOR_INFO = ^CONSOLE_CURSOR_INFO;
-     _CONSOLE_CURSOR_INFO = CONSOLE_CURSOR_INFO;
-     TCONSOLECURSORINFO = CONSOLE_CURSOR_INFO;
-     PCONSOLECURSORINFO = ^CONSOLE_CURSOR_INFO;
-     TCURSORINFO = CONSOLE_CURSOR_INFO;
-
-     COORD = record
-          X : SHORT;
-          Y : SHORT;
-       end;
-     _COORD = COORD;
-     TCOORD = COORD;
-     PCOORD = ^COORD;
-
-     SMALL_RECT = record
-          Left : SHORT;
-          Top : SHORT;
-          Right : SHORT;
-          Bottom : SHORT;
-       end;
-     _SMALL_RECT = SMALL_RECT;
-     TSMALL_RECT = SMALL_RECT;
-     PSMALL_RECT = ^SMALL_RECT;
-
-     CONSOLE_SCREEN_BUFFER_INFO = packed record
-          dwSize : COORD;
-          dwCursorPosition : COORD;
-          wAttributes : WORD;
-          srWindow : SMALL_RECT;
-          dwMaximumWindowSize : COORD;
-       end;
-     PCONSOLE_SCREEN_BUFFER_INFO = ^CONSOLE_SCREEN_BUFFER_INFO;
-     _CONSOLE_SCREEN_BUFFER_INFO = CONSOLE_SCREEN_BUFFER_INFO;
-     TCONSOLESCREENBUFFERINFO = CONSOLE_SCREEN_BUFFER_INFO;
-     PCONSOLESCREENBUFFERINFO = ^CONSOLE_SCREEN_BUFFER_INFO;
-
-{$ifdef i386}                              //+winnt
-  type
-     FLOATING_SAVE_AREA = record //~winnt
-          ControlWord : DWORD;
-          StatusWord : DWORD;
-          TagWord : DWORD;
-          ErrorOffset : DWORD;
-          ErrorSelector : DWORD;
-          DataOffset : DWORD;
-          DataSelector : DWORD;
-          RegisterArea : array[0..SIZE_OF_80387_REGISTERS-1] of BYTE; //~winnt
-          Cr0NpxState : DWORD;
-       end;
-     _FLOATING_SAVE_AREA = FLOATING_SAVE_AREA; //winnt
-     TFLOATINGSAVEAREA = FLOATING_SAVE_AREA;   //winnt
-     PFLOATING_SAVE_AREA = ^FLOATING_SAVE_AREA;  //~winnt
-
-//
-// Context Frame
-//
-//  This frame has a several purposes: 1) it is used as an argument to
-//  NtContinue, 2) is is used to constuct a call frame for APC delivery,
-//  and 3) it is used in the user level thread creation routines.
-//
-//  The layout of the record conforms to a standard call frame.
-//
-
-     CONTEXT = record                       //winnt
-          ContextFlags : DWORD;
-          Dr0 : DWORD;
-          Dr1 : DWORD;
-          Dr2 : DWORD;
-          Dr3 : DWORD;
-          Dr6 : DWORD;
-          Dr7 : DWORD;
-          FloatSave : FLOATING_SAVE_AREA;
-          SegGs : DWORD;
-          SegFs : DWORD;
-          SegEs : DWORD;
-          SegDs : DWORD;
-          Edi : DWORD;
-          Esi : DWORD;
-          Ebx : DWORD;
-          Edx : DWORD;
-          Ecx : DWORD;
-          Eax : DWORD;
-          Ebp : DWORD;
-          Eip : DWORD;
-          SegCs : DWORD;
-          EFlags : DWORD;
-          Esp : DWORD;
-          SegSs : DWORD;
-       end;
-
-     LDT_ENTRY = record  //~winnt, moved into _X86_
-          LimitLow : WORD;
-          BaseLow : WORD;
-          HighWord : record
-              case longint of
-                 0 : ( Bytes : record
-                      BaseMid : BYTE;
-                      Flags1 : BYTE;
-                      Flags2 : BYTE;
-                      BaseHi : BYTE;
-                   end );
-                 1 : ( Bits : record
-                      flag0 : longint;
-                   end );
-              end;
-       end;
-     LPLDT_ENTRY = ^LDT_ENTRY;
-     PLDT_ENTRY = ^LDT_ENTRY;
-     _LDT_ENTRY = LDT_ENTRY;
-     TLDTENTRY = LDT_ENTRY;
-     PLDTENTRY = ^LDT_ENTRY;
-
-{$endif i386}                              //+winnt
-
-{$ifdef _MIPS_}                             //+winnt all block added
-//
-// Context Frame
-//
-//  N.B. This frame must be exactly a multiple of 16 bytes in length.
-//
-//  This frame has a several purposes: 1) it is used as an argument to
-//  NtContinue, 2) it is used to constuct a call frame for APC delivery,
-//  3) it is used to construct a call frame for exception dispatching
-//  in user mode, and 4) it is used in the user level thread creation
-//  routines.
-//
-//  The layout of the record conforms to a standard call frame.
-//
-  type
-    {$ifdef  _MIPS64} //+winnt
-     FREG_TYPE =  ULONGLONG;
-     REG_TYPE  =  ULONGLONG;
-    {$else}
-     FREG_TYPE =  DWORD;
-     REG_TYPE  =  ULONG;
-    {$endif _MIPS64}
-     CONTEXT = record                       //+winnt
-          Argument : Array[0..3] of REG_TYPE;
-          FltF0    : FREG_TYPE;
-          FltF1    : FREG_TYPE;
-          FltF2    : FREG_TYPE;
-          FltF3    : FREG_TYPE;
-          FltF4    : FREG_TYPE;
-          FltF5    : FREG_TYPE;
-          FltF6    : FREG_TYPE;
-          FltF7    : FREG_TYPE;
-          FltF8    : FREG_TYPE;
-          FltF9    : FREG_TYPE;
-          FltF10   : FREG_TYPE;
-          FltF11   : FREG_TYPE;
-          FltF12   : FREG_TYPE;
-          FltF13   : FREG_TYPE;
-          FltF14   : FREG_TYPE;
-          FltF15   : FREG_TYPE;
-          FltF16   : FREG_TYPE;
-          FltF17   : FREG_TYPE;
-          FltF18   : FREG_TYPE;
-          FltF19   : FREG_TYPE;
-          FltF20   : FREG_TYPE;
-          FltF21   : FREG_TYPE;
-          FltF22   : FREG_TYPE;
-          FltF23   : FREG_TYPE;
-          FltF24   : FREG_TYPE;
-          FltF25   : FREG_TYPE;
-          FltF26   : FREG_TYPE;
-          FltF27   : FREG_TYPE;
-          FltF28   : FREG_TYPE;
-          FltF29   : FREG_TYPE;
-          FltF30   : FREG_TYPE;
-          FltF31   : FREG_TYPE;
-
-          IntZero : REG_TYPE;
-          IntAt   : REG_TYPE;
-          IntV0   : REG_TYPE;
-          IntV1   : REG_TYPE;
-          IntA0   : REG_TYPE;
-          IntA1   : REG_TYPE;
-          IntA2   : REG_TYPE;
-          IntA3   : REG_TYPE;
-          IntT0   : REG_TYPE;
-          IntT1   : REG_TYPE;
-          IntT2   : REG_TYPE;
-          IntT3   : REG_TYPE;
-          IntT4   : REG_TYPE;
-          IntT5   : REG_TYPE;
-          IntT6   : REG_TYPE;
-          IntT7   : REG_TYPE;
-          IntS0   : REG_TYPE;
-          IntS1   : REG_TYPE;
-          IntS2   : REG_TYPE;
-          IntS3   : REG_TYPE;
-          IntS4   : REG_TYPE;
-          IntS5   : REG_TYPE;
-          IntS6   : REG_TYPE;
-          IntS7   : REG_TYPE;
-          IntT8   : REG_TYPE;
-          IntT9   : REG_TYPE;
-          IntK0   : REG_TYPE;
-          IntK1   : REG_TYPE;
-          IntGp   : REG_TYPE;
-          IntSp   : REG_TYPE;
-          IntS8   : REG_TYPE;
-          IntRa   : REG_TYPE;
-          IntLo   : REG_TYPE;
-          IntHi   : REG_TYPE;
-
-          Fsr     : DWORD;
-          Fir     : DWORD;
-          Psr     : DWORD;
-          ContextFlags : DWORD;
-          Fill    : Array[0..1] of DWORD;
-      end;
-
-{$endif _MIPS_}                             //+winnt
-
-{$ifdef _PPC_}                             //+winnt
-  { Floating point registers returned when CONTEXT_FLOATING_POINT is set  }
-  { Integer registers returned when CONTEXT_INTEGER is set.   }
-  { Condition register  }
-  { Fixed point exception register  }
-  { The following are set when CONTEXT_CONTROL is set.   }
-  { Machine status register  }
-  { Instruction address register  }
-  { Link register  }
-  { Control register  }
-  { Control which context values are returned  }
-  { Registers returned if CONTEXT_DEBUG_REGISTERS is set.   }
-  { Breakpoint Register 1  }
-  { Breakpoint Register 2  }
-  { Breakpoint Register 3  }
-  { Breakpoint Register 4  }
-  { Breakpoint Register 5  }
-  { Breakpoint Register 6  }
-  { Debug Status Register  }
-  { Debug Control Register  }
-
-  type
-
-     CONTEXT = record
-          Fpr0 : double;
-          Fpr1 : double;
-          Fpr2 : double;
-          Fpr3 : double;
-          Fpr4 : double;
-          Fpr5 : double;
-          Fpr6 : double;
-          Fpr7 : double;
-          Fpr8 : double;
-          Fpr9 : double;
-          Fpr10 : double;
-          Fpr11 : double;
-          Fpr12 : double;
-          Fpr13 : double;
-          Fpr14 : double;
-          Fpr15 : double;
-          Fpr16 : double;
-          Fpr17 : double;
-          Fpr18 : double;
-          Fpr19 : double;
-          Fpr20 : double;
-          Fpr21 : double;
-          Fpr22 : double;
-          Fpr23 : double;
-          Fpr24 : double;
-          Fpr25 : double;
-          Fpr26 : double;
-          Fpr27 : double;
-          Fpr28 : double;
-          Fpr29 : double;
-          Fpr30 : double;
-          Fpr31 : double;
-          Fpscr : double;
-          Gpr0 : DWORD;
-          Gpr1 : DWORD;
-          Gpr2 : DWORD;
-          Gpr3 : DWORD;
-          Gpr4 : DWORD;
-          Gpr5 : DWORD;
-          Gpr6 : DWORD;
-          Gpr7 : DWORD;
-          Gpr8 : DWORD;
-          Gpr9 : DWORD;
-          Gpr10 : DWORD;
-          Gpr11 : DWORD;
-          Gpr12 : DWORD;
-          Gpr13 : DWORD;
-          Gpr14 : DWORD;
-          Gpr15 : DWORD;
-          Gpr16 : DWORD;
-          Gpr17 : DWORD;
-          Gpr18 : DWORD;
-          Gpr19 : DWORD;
-          Gpr20 : DWORD;
-          Gpr21 : DWORD;
-          Gpr22 : DWORD;
-          Gpr23 : DWORD;
-          Gpr24 : DWORD;
-          Gpr25 : DWORD;
-          Gpr26 : DWORD;
-          Gpr27 : DWORD;
-          Gpr28 : DWORD;
-          Gpr29 : DWORD;
-          Gpr30 : DWORD;
-          Gpr31 : DWORD;
-          Cr : DWORD;
-          Xer : DWORD;
-          Msr : DWORD;
-          Iar : DWORD;
-          Lr : DWORD;
-          Ctr : DWORD;
-          ContextFlags : DWORD;
-          Fill : array[0..2] of DWORD;
-          Dr0 : DWORD;
-          Dr1 : DWORD;
-          Dr2 : DWORD;
-          Dr3 : DWORD;
-          Dr4 : DWORD;
-          Dr5 : DWORD;
-          Dr6 : DWORD;
-          Dr7 : DWORD;
-       end;
-     _STACK_FRAME_HEADER = record  // GPR 1 points here
-          BackChain : DWORD;       // Addr of previous frame
-          Reserved1 : DWORD;       // Reserved
-
-          Parameter0 : DWORD;     // First 8 parameter words are
-          Parameter1 : DWORD;     //   always present
-          Parameter2 : DWORD;
-          Parameter3 : DWORD;
-          Parameter4 : DWORD;
-          Parameter5 : DWORD;
-          Parameter6 : DWORD;
-          Parameter7 : DWORD;
-       end;
-
-     PSTACK_FRAME_HEADER=^STACK_FRAME_HEADER;
- {$endif _PPC_}                    //~winnt
-
- {$ifdef _MPPC_} //+winnt all block
-  type
-     CONTEXT = record
-          Fpr0 : double;
-          Fpr1 : double;
-          Fpr2 : double;
-          Fpr3 : double;
-          Fpr4 : double;
-          Fpr5 : double;
-          Fpr6 : double;
-          Fpr7 : double;
-          Fpr8 : double;
-          Fpr9 : double;
-          Fpr10 : double;
-          Fpr11 : double;
-          Fpr12 : double;
-          Fpr13 : double;
-          Fpr14 : double;
-          Fpr15 : double;
-          Fpr16 : double;
-          Fpr17 : double;
-          Fpr18 : double;
-          Fpr19 : double;
-          Fpr20 : double;
-          Fpr21 : double;
-          Fpr22 : double;
-          Fpr23 : double;
-          Fpr24 : double;
-          Fpr25 : double;
-          Fpr26 : double;
-          Fpr27 : double;
-          Fpr28 : double;
-          Fpr29 : double;
-          Fpr30 : double;
-          Fpr31 : double;
-          Fpscr : double;
-          Gpr0 : DWORD;
-          Gpr1 : DWORD;
-          Gpr2 : DWORD;
-          Gpr3 : DWORD;
-          Gpr4 : DWORD;
-          Gpr5 : DWORD;
-          Gpr6 : DWORD;
-          Gpr7 : DWORD;
-          Gpr8 : DWORD;
-          Gpr9 : DWORD;
-          Gpr10 : DWORD;
-          Gpr11 : DWORD;
-          Gpr12 : DWORD;
-          Gpr13 : DWORD;
-          Gpr14 : DWORD;
-          Gpr15 : DWORD;
-          Gpr16 : DWORD;
-          Gpr17 : DWORD;
-          Gpr18 : DWORD;
-          Gpr19 : DWORD;
-          Gpr20 : DWORD;
-          Gpr21 : DWORD;
-          Gpr22 : DWORD;
-          Gpr23 : DWORD;
-          Gpr24 : DWORD;
-          Gpr25 : DWORD;
-          Gpr26 : DWORD;
-          Gpr27 : DWORD;
-          Gpr28 : DWORD;
-          Gpr29 : DWORD;
-          Gpr30 : DWORD;
-          Gpr31 : DWORD;
-          Cr : DWORD;
-          Xer : DWORD;
-          Msr : DWORD;
-          Iar : DWORD;
-          Lr : DWORD;
-          Ctr : DWORD;
-          ContextFlags : DWORD;
-          Fill : array[0..2] of DWORD;
-          Dr0 : DWORD;
-          Dr1 : DWORD;
-          Dr2 : DWORD;
-          Dr3 : DWORD;
-          Dr4 : DWORD;
-          Dr5 : DWORD;
-          Dr6 : DWORD;
-          Dr7 : DWORD;
-       end;
-     _STACK_FRAME_HEADER = record  // GPR 1 points here
-          BackChain  : DWORD;      // Addr of previous frame
-          GlueSaved1 : DWORD;      // Used by glue code
-          GlueSaved2 : DWORD;
-          Reserved1  : DWORD;
-          Spare1     : DWORD;
-          Spare2     : DWORD;
-
-          Parameter0 : DWORD;     // First 8 parameter words are
-          Parameter1 : DWORD;     //   always present
-          Parameter2 : DWORD;
-          Parameter3 : DWORD;
-          Parameter4 : DWORD;
-          Parameter5 : DWORD;
-          Parameter6 : DWORD;
-          Parameter7 : DWORD;
-       end;
-
-     PSTACK_FRAME_HEADER=^STACK_FRAME_HEADER;
-
- {$endif _MPPC_} //+winnt
-
- {$ifdef _IA64_} //+winnt all block
-  type
-     CONTEXT = record
-
-          ContextFlags : DWORD;
-          Fill1 : array[0..2] of DWORD;
-          DbI0 : ULONGLONG;              // Instruction debug registers
-          DbI1 : ULONGLONG;
-          DbI2 : ULONGLONG;
-          DbI3 : ULONGLONG;
-          DbI4 : ULONGLONG;
-          DbI5 : ULONGLONG;
-          DbI6 : ULONGLONG;
-          DbI7 : ULONGLONG;
-
-          DbD0 : ULONGLONG;              // Data debug registers
-          DbD1 : ULONGLONG;
-          DbD2 : ULONGLONG;
-          DbD3 : ULONGLONG;
-          DbD4 : ULONGLONG;
-          DbD5 : ULONGLONG;
-          DbD6 : ULONGLONG;
-          DbD7 : ULONGLONG;
-
-          FltS0 : FLOAT128;             // Lower floating point (f2-f5) - saved (preserved)
-          FltS1 : FLOAT128;
-          FltS2 : FLOAT128;
-          FltS3 : FLOAT128;
-          FltT0 : FLOAT128;             // Lower floating point (f6-f15) - temporary (volatile)
-          FltT1 : FLOAT128;
-          FltT2 : FLOAT128;
-          FltT3 : FLOAT128;
-          FltT4 : FLOAT128;
-          FltT5 : FLOAT128;
-          FltT6 : FLOAT128;
-          FltT7 : FLOAT128;
-          FltT8 : FLOAT128;
-          FltT9 : FLOAT128;
-          FltS4 : FLOAT128;             // Higher floating point (f16-f31) - saved (preserved)
-          FltS5 : FLOAT128;
-          FltS6 : FLOAT128;
-          FltS7 : FLOAT128;
-          FltS8 : FLOAT128;
-          FltS9 : FLOAT128;
-          FltS10 : FLOAT128;
-          FltS11 : FLOAT128;
-          FltS12 : FLOAT128;
-          FltS13 : FLOAT128;
-          FltS14 : FLOAT128;
-          FltS15 : FLOAT128;
-          FltS16 : FLOAT128;
-          FltS17 : FLOAT128;
-          FltS18 : FLOAT128;
-          FltS19 : FLOAT128;
-
-          FltF32 : FLOAT128;           // Higher floating point (f32-f127) - temporary (volatile)
-          FltF33 : FLOAT128;
-          FltF34 : FLOAT128;
-          FltF35 : FLOAT128;
-          FltF36 : FLOAT128;
-          FltF37 : FLOAT128;
-          FltF38 : FLOAT128;
-          FltF39 : FLOAT128;
-
-          FltF40 : FLOAT128;
-          FltF41 : FLOAT128;
-          FltF42 : FLOAT128;
-          FltF43 : FLOAT128;
-          FltF44 : FLOAT128;
-          FltF45 : FLOAT128;
-          FltF46 : FLOAT128;
-          FltF47 : FLOAT128;
-          FltF48 : FLOAT128;
-          FltF49 : FLOAT128;
-
-          FltF50 : FLOAT128;
-          FltF51 : FLOAT128;
-          FltF52 : FLOAT128;
-          FltF53 : FLOAT128;
-          FltF54 : FLOAT128;
-          FltF55 : FLOAT128;
-          FltF56 : FLOAT128;
-          FltF57 : FLOAT128;
-          FltF58 : FLOAT128;
-          FltF59 : FLOAT128;
-
-          FltF60 : FLOAT128;
-          FltF61 : FLOAT128;
-          FltF62 : FLOAT128;
-          FltF63 : FLOAT128;
-          FltF64 : FLOAT128;
-          FltF65 : FLOAT128;
-          FltF66 : FLOAT128;
-          FltF67 : FLOAT128;
-          FltF68 : FLOAT128;
-          FltF69 : FLOAT128;
-
-          FltF70 : FLOAT128;
-          FltF71 : FLOAT128;
-          FltF72 : FLOAT128;
-          FltF73 : FLOAT128;
-          FltF74 : FLOAT128;
-          FltF75 : FLOAT128;
-          FltF76 : FLOAT128;
-          FltF77 : FLOAT128;
-          FltF78 : FLOAT128;
-          FltF79 : FLOAT128;
-
-          FltF80 : FLOAT128;
-          FltF81 : FLOAT128;
-          FltF82 : FLOAT128;
-          FltF83 : FLOAT128;
-          FltF84 : FLOAT128;
-          FltF85 : FLOAT128;
-          FltF86 : FLOAT128;
-          FltF87 : FLOAT128;
-          FltF88 : FLOAT128;
-          FltF89 : FLOAT128;
-
-          FltF90 : FLOAT128;
-          FltF91 : FLOAT128;
-          FltF92 : FLOAT128;
-          FltF93 : FLOAT128;
-          FltF94 : FLOAT128;
-          FltF95 : FLOAT128;
-          FltF96 : FLOAT128;
-          FltF97 : FLOAT128;
-          FltF98 : FLOAT128;
-          FltF99 : FLOAT128;
-
-          FltF100 : FLOAT128;
-          FltF101 : FLOAT128;
-          FltF102 : FLOAT128;
-          FltF103 : FLOAT128;
-          FltF104 : FLOAT128;
-          FltF105 : FLOAT128;
-          FltF106 : FLOAT128;
-          FltF107 : FLOAT128;
-          FltF108 : FLOAT128;
-          FltF109 : FLOAT128;
-
-          FltF110 : FLOAT128;
-          FltF111 : FLOAT128;
-          FltF112 : FLOAT128;
-          FltF113 : FLOAT128;
-          FltF114 : FLOAT128;
-          FltF115 : FLOAT128;
-          FltF116 : FLOAT128;
-          FltF117 : FLOAT128;
-          FltF118 : FLOAT128;
-          FltF119 : FLOAT128;
-
-          FltF120 : FLOAT128;
-          FltF121 : FLOAT128;
-          FltF122 : FLOAT128;
-          FltF123 : FLOAT128;
-          FltF124 : FLOAT128;
-          FltF125 : FLOAT128;
-          FltF126 : FLOAT128;
-          FltF127 : FLOAT128;
-
-          StFPSR : ULONGLONG;          // FP status
-          StFSR  : ULONGLONG;          // x86 FP status (a copy of AR28)
-          StFIR  : ULONGLONG;          // x86 FP status (a copy of AR29)
-          StFDR  : ULONGLONG;          // x86 FP status (a copy of AR30)
-
-          IntGp  : ULONGLONG;          // global pointer (r1) - temporary (volatile)
-          IntT0  : ULONGLONG;          // integer registers (r2-r3) - temporary (volatile)
-          IntT1  : ULONGLONG;
-          IntS0  : ULONGLONG;          // integer registers (r4-r7) - saved (preserved)
-          IntS1  : ULONGLONG;
-          IntS2  : ULONGLONG;
-          IntS3  : ULONGLONG;
-          IntV0  : ULONGLONG;          // return value (r8) - temporary (volatile)
-          IntT2  : ULONGLONG;          // integer registers (r9-r11) - temporary (volatile)
-          IntT3  : ULONGLONG;
-          IntT4  : ULONGLONG;
-          IntSP  : ULONGLONG;          // stack pointer (r12) - special
-          IntTeb : ULONGLONG;          // teb (r13) - special
-          IntT5  : ULONGLONG;          // integer registers (r14-r31) - temporary (volatile)
-          IntT6  : ULONGLONG;
-          IntT7  : ULONGLONG;
-          IntT8  : ULONGLONG;
-          IntT9  : ULONGLONG;
-          IntT10 : ULONGLONG;
-          IntT11 : ULONGLONG;
-          IntT12 : ULONGLONG;
-          IntT13 : ULONGLONG;
-          IntT14 : ULONGLONG;
-          IntT15 : ULONGLONG;
-          IntT16 : ULONGLONG;
-          IntT17 : ULONGLONG;
-          IntT18 : ULONGLONG;
-          IntT19 : ULONGLONG;
-          IntT20 : ULONGLONG;
-          IntT21 : ULONGLONG;
-          IntT22 : ULONGLONG;
-
-          IntNats : ULONGLONG;         // Nat bits for general registers
-                                       // r1-r31 in bit positions 1 to 31.
-          Preds   : ULONGLONG;         // predicates - saved (preserved)
-          BrRp    : ULONGLONG;         // return pointer (b0) - saved (preserved)
-          BrS0    : ULONGLONG;         // branch registers (b1-b5) - saved (preserved)
-          BrS1    : ULONGLONG;
-          BrS2    : ULONGLONG;
-          BrS3    : ULONGLONG;
-          BrS4    : ULONGLONG;
-
-          BrT0    : ULONGLONG;         // branch registers (b6-b7) - temporary (volatile)
-          BrT1    : ULONGLONG;
-          // iA32 related Interger registers
-          SegCSD  : ULONGLONG;         // iA32 CSDescriptor (Ar25)
-          SegSSD  : ULONGLONG;         // iA32 SSDescriptor (Ar26)
-
-          // Other application registers
-          ApUNAT  : ULONGLONG;         // User Nat collection register - saved (preserved)
-          ApLC    : ULONGLONG;         // Loop counter register - saved (preserved)
-          ApEC    : ULONGLONG;         // Epilog counter register - saved (preserved)
-          ApCCV   : ULONGLONG;         // CMPXCHG value register - temporary (volatile)
-          ApDCR   : ULONGLONG;         // Default control register (TBD)
-
-          // Register stack info
-          RsPFS   : ULONGLONG;         // Previous function state - saved (preserved)
-          RsBSP   : ULONGLONG;         // Backing store pointer - saved (preserved)
-          RsBSPSTORE : ULONGLONG;      // BSP Store - saved (preserved)
-          RsRSC   : ULONGLONG;         // RSE configuration - temporary (volatile)
-          RsRNAT  : ULONGLONG;         // RSE Nat collection register - saved (preserved)
-          // iA32 related control registers
-          Eflag   : ULONGLONG;         // Eflag  copy of Ar24
-          Cflag   : ULONGLONG;         // Cr0+Cr4 copy of Ar27
-
-          // Trap Status Information
-          StIPSR  : ULONGLONG;         // Interruption Processor Status
-          StIIP   : ULONGLONG;         // Interruption IP
-          StIFS   : ULONGLONG;         // Interruption Function State
-
-       end;
-
-     FLOATING_SAVE_AREA = record
-          ControlWord : DWORD;
-          StatusWord : DWORD;
-          TagWord : DWORD;
-          ErrorOffset : DWORD;
-          ErrorSelector : DWORD;
-          DataOffset : DWORD;
-          DataSelector : DWORD;
-          RegisterArea : array[0..SIZE_OF_80387_REGISTERS-1] of BYTE;
-          Cr0NpxState : DWORD;
-       end;
-     _FLOATING_SAVE_AREA = FLOATING_SAVE_AREA;
-     TFLOATINGSAVEAREA = FLOATING_SAVE_AREA;
-     PFLOATING_SAVE_AREA = ^FLOATING_SAVE_AREA;
-
-     CONTEXT86 = record
-          ContextFlags : DWORD;
-          Dr0 : DWORD;
-          Dr1 : DWORD;
-          Dr2 : DWORD;
-          Dr3 : DWORD;
-          Dr6 : DWORD;
-          Dr7 : DWORD;
-          FloatSave : FLOATING_SAVE_AREA;
-          SegGs : DWORD;
-          SegFs : DWORD;
-          SegEs : DWORD;
-          SegDs : DWORD;
-          Edi : DWORD;
-          Esi : DWORD;
-          Ebx : DWORD;
-          Edx : DWORD;
-          Ecx : DWORD;
-          Eax : DWORD;
-          Ebp : DWORD;
-          Eip : DWORD;
-          SegCs : DWORD;
-          EFlags : DWORD;
-          Esp : DWORD;
-          SegSs : DWORD;
-       end;
-
-     LDT_ENTRY = record
-          LimitLow : WORD;
-          BaseLow : WORD;
-          HighWord : record
-              case longint of
-                 0 : ( Bytes : record
-                      BaseMid : BYTE;
-                      Flags1 : BYTE;
-                      Flags2 : BYTE;
-                      BaseHi : BYTE;
-                   end );
-                 1 : ( Bits : record
-                      flag0 : longint;
-                   end );
-              end;
-       end;
-     LPLDT_ENTRY = ^LDT_ENTRY;
-     PLDT_ENTRY = ^LDT_ENTRY;
-     _LDT_ENTRY = LDT_ENTRY;
-     TLDTENTRY = LDT_ENTRY;
-     PLDTENTRY = ^LDT_ENTRY;
-
-     PLABEL_DESCRIPTOR = record
-          EntryPoint : ULONGLONG;
-          GlobalPointer : ULONGLONG;
-       end;
-     _PLABEL_DESCRIPTOR = PLABEL_DESCRIPTOR;
-     PPLABEL_DESCRIPTOR = ^PLABEL_DESCRIPTOR;
-
-
- {$endif _IA64_} //+winnt
-
- {$ifdef SHx} //+winnt all block added
-     //These are the debug or break registers on the SH3
-     DEBUG_REGISTERS = RECORD
-          BarA  : ULONG;
-          BasrA : UCHAR;
-          BamrA : UCHAR;
-          BbrA  : USHORT;
-          BarB  : ULONG;
-          BasrB : UCHAR;
-          BamrB : UCHAR;
-          BbrB  : USHORT;
-          BdrB  : ULONG;
-          BdmrB : ULONG;
-          Brcr  : USHORT;
-          Align : USHORT;
-       end;
-     _DEBUG_REGISTERS=DEBUG_REZGISTERS;
-     PDEBUG_REGISTERS=^DEBUG_REZGISTERS;
-
-     CONTEXT = record
-          ContextFlags : ULONG;
-          PR   : ULONG;
-          MACH : ULONG;
-          MACL : ULONG;
-          GBR  : ULONG;
-          R0   : ULONG;
-          R1   : ULONG;
-          R2   : ULONG;
-          R3   : ULONG;
-          R4   : ULONG;
-          R5   : ULONG;
-          R6   : ULONG;
-          R7   : ULONG;
-          R8   : ULONG;
-          R9   : ULONG;
-          R10  : ULONG;
-          R11  : ULONG;
-          R12  : ULONG;
-          R13  : ULONG;
-          R14  : ULONG;
-          R15  : ULONG;
-
-    // N.B. The registers r15 and ra are defined in the integer section,
-    //   but are considered part of the control context rather than part of
-    //   the integer context.
-    //
-
-          Fir  : ULONG;
-          Psr  : ULONG;
-
-          {$ifndef SH3e}
-          {$ifndef SH4}
-          OldStuff : Array[0..1] of ULONG;
-          DebugRegisters : DEBUG_REGISTERS;
-          DSR  : ULONG;
-          MOD_ : ULONG; // MOD replaced by MOD_
-          RS   : ULONG;
-          RE   : ULONG;
-          A0   : ULONG;
-          A1   : ULONG;
-          M0   : ULONG;
-          M1   : ULONG;
-          X0   : ULONG;
-          X1   : ULONG;
-          Y0   : ULONG;
-          Y1   : ULONG;
-         //  The guard bit registers are 8 bits long, but can only be saved and
-         //  restored using 16 or 32 bit moves.  Note, the contents of the guard
-         //  bit register are in the upper 8 bits.
-          A0G : USHORT;
-          A1G : USHORT;
-          {$else}
-          Fpscr  : ULONG;
-          Fpul   : ULONG;
-          FRegs  : Array[0..15] of ULONG;
-          xFRegs : Array[0..15] of ULONG;
-          {$endif SH4}
-          {$else}
-          Fpscr  : ULONG;
-          Fpul   : ULONG;
-          FRegs  : Array[0..15] of ULONG;
-          {$endif SH3e}
-       end;
-
- {$endif SHx} //+winnt
-
- {$ifdef CPUARM} //+winnt all block added
-     CONTEXT = record
-          ContextFlags : ULONG;
-          R0  : ULONG;
-          R1  : ULONG;
-          R2  : ULONG;
-          R3  : ULONG;
-          R4  : ULONG;
-          R5  : ULONG;
-          R6  : ULONG;
-          R7  : ULONG;
-          R8  : ULONG;
-          R9  : ULONG;
-          R10 : ULONG;
-          R11 : ULONG;
-          R12 : ULONG;
-
-          SP  : ULONG;
-          Lr  : ULONG;
-          Pc  : ULONG;
-          Psr : ULONG;
-          Fpscr : ULONG;
-          FpExc : ULONG;
-          S       : Array [0..NUM_VFP_REGS] of ULONG;
-          FpExtra : Array [0..NUM_EXTRA_CONTROL_REGS-1] of ULONG;
-       end;
- {$endif CPUARM} //+winnt
-
-     LPCONTEXT = ^CONTEXT;
-     _CONTEXT = CONTEXT;
-     TCONTEXT = CONTEXT;
-     PCONTEXT = ^CONTEXT;         //winnt
-
-  type
-
-     LIST_ENTRY = record          //winnt
-          Flink : ^_LIST_ENTRY;
-          Blink : ^_LIST_ENTRY;
-       end;
-     _LIST_ENTRY = LIST_ENTRY;
-     TLISTENTRY = LIST_ENTRY;
-     PLISTENTRY = ^LIST_ENTRY;
-
-     CRITICAL_SECTION_DEBUG = record
-          _Type : WORD;
-          CreatorBackTraceIndex : WORD;
-          CriticalSection : ^_CRITICAL_SECTION;
-          ProcessLocksList : LIST_ENTRY;
-          EntryCount : DWORD;
-          ContentionCount : DWORD;
-          Depth : DWORD;
-          OwnerBackTrace : array[0..4] of PVOID;
-       end;
-     LPCRITICAL_SECTION_DEBUG = ^CRITICAL_SECTION_DEBUG;
-     PCRITICAL_SECTION_DEBUG = ^CRITICAL_SECTION_DEBUG;
-     _CRITICAL_SECTION_DEBUG = CRITICAL_SECTION_DEBUG;
-     TCRITICALSECTIONDEBUG = CRITICAL_SECTION_DEBUG;
-     PCRITICALSECTIONDEBUG = ^CRITICAL_SECTION_DEBUG;
-
-     CRITICAL_SECTION = TRTLCriticalSection;
-     _CRITICAL_SECTION = TRTLCriticalSection;
-     TCRITICAL_SECTION = TRTLCriticalSection;
-     PCRITICAL_SECTION = PRTLCriticalSection;
-     LPCRITICAL_SECTION = PRTLCriticalSection;
-     TCRITICALSECTION = TRTLCriticalSection;
-     PCRITICALSECTION = PRTLCriticalSection;
-
-  { SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;  }
-
-     SECURITY_QUALITY_OF_SERVICE = record
-          Length : DWORD;
-          ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL;
-          ContextTrackingMode : WINBOOL;
-          EffectiveOnly : BOOLEAN;
-       end;
-     PSECURITY_QUALITY_OF_SERVICE = ^SECURITY_QUALITY_OF_SERVICE;
-     _SECURITY_QUALITY_OF_SERVICE = SECURITY_QUALITY_OF_SERVICE;
-     TSECURITYQUALITYOFSERVICE = SECURITY_QUALITY_OF_SERVICE;
-     PSECURITYQUALITYOFSERVICE = ^SECURITY_QUALITY_OF_SERVICE;
-
-     CONVCONTEXT = record
-          cb : UINT;
-          wFlags : UINT;
-          wCountryID : UINT;
-          iCodePage : longint;
-          dwLangID : DWORD;
-          dwSecurity : DWORD;
-          qos : SECURITY_QUALITY_OF_SERVICE;
-       end;
-     tagCONVCONTEXT = CONVCONTEXT;
-     TCONVCONTEXT = CONVCONTEXT;
-     PCONVCONTEXT = ^CONVCONTEXT;
-
-     CONVINFO = record
-          cb : DWORD;
-          hUser : DWORD;
-          hConvPartner : HCONV;
-          hszSvcPartner : HSZ;
-          hszServiceReq : HSZ;
-          hszTopic : HSZ;
-          hszItem : HSZ;
-          wFmt : UINT;
-          wType : UINT;
-          wStatus : UINT;
-          wConvst : UINT;
-          wLastError : UINT;
-          hConvList : HCONVLIST;
-          ConvCtxt : CONVCONTEXT;
-          _hwnd : HWND;
-          hwndPartner : HWND;
-       end;
-     tagCONVINFO = CONVINFO;
-     TCONVINFO = CONVINFO;
-     PCONVINFO = ^CONVINFO;
-
-     COPYDATASTRUCT = record
-          dwData : DWORD;
-          cbData : DWORD;
-          lpData : PVOID;
-       end;
-     tagCOPYDATASTRUCT = COPYDATASTRUCT;
-     TCOPYDATASTRUCT = COPYDATASTRUCT;
-     PCOPYDATASTRUCT = ^COPYDATASTRUCT;
-
-     CPINFO = record
-          MaxCharSize : UINT;
-          DefaultChar : array[0..(MAX_DEFAULTCHAR)-1] of BYTE;
-          LeadByte : array[0..(MAX_LEADBYTES)-1] of BYTE;
-       end;
-     LPCPINFO = ^CPINFO;
-     _cpinfo = CPINFO;
-     Tcpinfo = CPINFO;
-     Pcpinfo = ^CPINFO;
-
-     CPLINFO = record
-          idIcon : longint;
-          idName : longint;
-          idInfo : longint;
-          lData : LONG;
-       end;
-     tagCPLINFO = CPLINFO;
-     TCPLINFO = CPLINFO;
-     PCPLINFO = ^CPLINFO;
-
-     CREATE_PROCESS_DEBUG_INFO = record
-          hFile : HANDLE;
-          hProcess : HANDLE;
-          hThread : HANDLE;
-          lpBaseOfImage : LPVOID;
-          dwDebugInfoFileOffset : DWORD;
-          nDebugInfoSize : DWORD;
-          lpThreadLocalBase : LPVOID;
-          lpStartAddress : LPTHREAD_START_ROUTINE;
-          lpImageName : LPVOID;
-          fUnicode : WORD;
-       end;
-     _CREATE_PROCESS_DEBUG_INFO = CREATE_PROCESS_DEBUG_INFO;
-     TCREATEPROCESSDEBUGINFO = CREATE_PROCESS_DEBUG_INFO;
-     PCREATEPROCESSDEBUGINFO = ^CREATE_PROCESS_DEBUG_INFO;
-
-     CREATE_THREAD_DEBUG_INFO = record
-          hThread : HANDLE;
-          lpThreadLocalBase : LPVOID;
-          lpStartAddress : LPTHREAD_START_ROUTINE;
-       end;
-     _CREATE_THREAD_DEBUG_INFO = CREATE_THREAD_DEBUG_INFO;
-     TCREATETHREADDEBUGINFO = CREATE_THREAD_DEBUG_INFO;
-     PCREATETHREADDEBUGINFO = ^CREATE_THREAD_DEBUG_INFO;
-  (*
-   TODO: sockets
-  typedef struct _SOCKET_ADDRESS {
-    LPSOCKADDR lpSockaddr ;
-    INT iSockaddrLength ;
-  } SOCKET_ADDRESS,  PSOCKET_ADDRESS,  LPSOCKET_ADDRESS;
-   }
-  {
-  typedef struct _CSADDR_INFO {
-    SOCKET_ADDRESS  LocalAddr;
-    SOCKET_ADDRESS  RemoteAddr;
-    INT             iSocketType;
-    INT             iProtocol;
-  } CSADDR_INFO;
-    *)
-
-     CURRENCYFMT = record
-          NumDigits : UINT;
-          LeadingZero : UINT;
-          Grouping : UINT;
-          lpDecimalSep : LPTSTR;
-          lpThousandSep : LPTSTR;
-          NegativeOrder : UINT;
-          PositiveOrder : UINT;
-          lpCurrencySymbol : LPTSTR;
-       end;
-     _currencyfmt = CURRENCYFMT;
-     Tcurrencyfmt = CURRENCYFMT;
-     Pcurrencyfmt = ^CURRENCYFMT;
-
-     CURSORSHAPE = record
-          xHotSpot : longint;
-          yHotSpot : longint;
-          cx : longint;
-          cy : longint;
-          cbWidth : longint;
-          Planes : BYTE;
-          BitsPixel : BYTE;
-       end;
-     LPCURSORSHAPE = ^CURSORSHAPE;
-     tagCURSORSHAPE = CURSORSHAPE;
-     TCURSORSHAPE = CURSORSHAPE;
-     PCURSORSHAPE = ^CURSORSHAPE;
-
-     CWPRETSTRUCT = record
-          lResult : LRESULT;
-          lParam : LPARAM;
-          wParam : WPARAM;
-          message : DWORD;
-          hwnd : HWND;
-       end;
-     tagCWPRETSTRUCT = CWPRETSTRUCT;
-     TCWPRETSTRUCT = CWPRETSTRUCT;
-     PCWPRETSTRUCT = ^CWPRETSTRUCT;
-
-     CWPSTRUCT = record
-          lParam : LPARAM;
-          wParam : WPARAM;
-          message : UINT;
-          hwnd : HWND;
-       end;
-     tagCWPSTRUCT = CWPSTRUCT;
-     TCWPSTRUCT = CWPSTRUCT;
-     PCWPSTRUCT = ^CWPSTRUCT;
-
-     DATATYPES_INFO_1 = record
-          pName : LPTSTR;
-       end;
-     _DATATYPES_INFO_1 = DATATYPES_INFO_1;
-     TDATATYPESINFO1 = DATATYPES_INFO_1;
-     PDATATYPESINFO1 = ^DATATYPES_INFO_1;
-
-     DDEACK = record
-          flag0 : word;
-       end;
-     TDDEACK = DDEACK;
-     PDDEACK = ^DDEACK;
-  const
-     bm_DDEACK_bAppReturnCode = $FF;
-     bp_DDEACK_bAppReturnCode = 0;
-     bm_DDEACK_reserved = $3F00;
-     bp_DDEACK_reserved = 8;
-     bm_DDEACK_fBusy = $4000;
-     bp_DDEACK_fBusy = 14;
-     bm_DDEACK_fAck = $8000;
-     bp_DDEACK_fAck = 15;
-  function bAppReturnCode(var a : DDEACK) : word;
-  procedure set_bAppReturnCode(var a : DDEACK; __bAppReturnCode : word);
-  function reserved(var a : DDEACK) : word;
-  procedure set_reserved(var a : DDEACK; __reserved : word);
-  function fBusy(var a : DDEACK) : word;
-  procedure set_fBusy(var a : DDEACK; __fBusy : word);
-  function fAck(var a : DDEACK) : word;
-  procedure set_fAck(var a : DDEACK; __fAck : word);
-
-  type
-
-     DDEADVISE = record
-          flag0 : word;
-          cfFormat : integer;
-       end;
-     TDDEADVISE = DDEADVISE;
-     PDDEADVISE = ^DDEADVISE;
-  const
-     bm_DDEADVISE_reserved = $3FFF;
-     bp_DDEADVISE_reserved = 0;
-     bm_DDEADVISE_fDeferUpd = $4000;
-     bp_DDEADVISE_fDeferUpd = 14;
-     bm_DDEADVISE_fAckReq = $8000;
-     bp_DDEADVISE_fAckReq = 15;
-  function reserved(var a : DDEADVISE) : word;
-  procedure set_reserved(var a : DDEADVISE; __reserved : word);
-  function fDeferUpd(var a : DDEADVISE) : word;
-  procedure set_fDeferUpd(var a : DDEADVISE; __fDeferUpd : word);
-  function fAckReq(var a : DDEADVISE) : word;
-  procedure set_fAckReq(var a : DDEADVISE; __fAckReq : word);
-
-  type
-
-     DDEDATA = record
-          flag0 : word;
-          cfFormat : integer;
-          Value : array[0..0] of BYTE;
-       end;
-     PDDEDATA = ^DDEDATA;
-  const
-     bm_DDEDATA_unused = $FFF;
-     bp_DDEDATA_unused = 0;
-     bm_DDEDATA_fResponse = $1000;
-     bp_DDEDATA_fResponse = 12;
-     bm_DDEDATA_fRelease = $2000;
-     bp_DDEDATA_fRelease = 13;
-     bm_DDEDATA_reserved = $4000;
-     bp_DDEDATA_reserved = 14;
-     bm_DDEDATA_fAckReq = $8000;
-     bp_DDEDATA_fAckReq = 15;
-  function unused(var a : DDEDATA) : word;
-  procedure set_unused(var a : DDEDATA; __unused : word);
-  function fResponse(var a : DDEDATA) : word;
-  procedure set_fResponse(var a : DDEDATA; __fResponse : word);
-  function fRelease(var a : DDEDATA) : word;
-  procedure set_fRelease(var a : DDEDATA; __fRelease : word);
-  function reserved(var a : DDEDATA) : word;
-  procedure set_reserved(var a : DDEDATA; __reserved : word);
-  function fAckReq(var a : DDEDATA) : word;
-  procedure set_fAckReq(var a : DDEDATA; __fAckReq : word);
-
-  type
-
-     DDELN = record
-          flag0 : word;
-          cfFormat : integer;
-       end;
-     TDDELN = DDELN;
-     PDDELN = ^DDELN;
-  const
-     bm_DDELN_unused = $1FFF;
-     bp_DDELN_unused = 0;
-     bm_DDELN_fRelease = $2000;
-     bp_DDELN_fRelease = 13;
-     bm_DDELN_fDeferUpd = $4000;
-     bp_DDELN_fDeferUpd = 14;
-     bm_DDELN_fAckReq = $8000;
-     bp_DDELN_fAckReq = 15;
-  function unused(var a : DDELN) : word;
-  procedure set_unused(var a : DDELN; __unused : word);
-  function fRelease(var a : DDELN) : word;
-  procedure set_fRelease(var a : DDELN; __fRelease : word);
-  function fDeferUpd(var a : DDELN) : word;
-  procedure set_fDeferUpd(var a : DDELN; __fDeferUpd : word);
-  function fAckReq(var a : DDELN) : word;
-  procedure set_fAckReq(var a : DDELN; __fAckReq : word);
-
-  type
-
-     DDEML_MSG_HOOK_DATA = record
-          uiLo : UINT;
-          uiHi : UINT;
-          cbData : DWORD;
-          Data : array[0..7] of DWORD;
-       end;
-     tagDDEML_MSG_HOOK_DATA = DDEML_MSG_HOOK_DATA;
-     TDDEMLMSGHOOKDATA = DDEML_MSG_HOOK_DATA;
-     PDDEMLMSGHOOKDATA = ^DDEML_MSG_HOOK_DATA;
-
-     DDEPOKE = record
-          flag0 : word;
-          cfFormat : integer;
-          Value : array[0..0] of BYTE;
-       end;
-     TDDEPOKE = DDEPOKE;
-     PDDEPOKE = ^DDEPOKE;
-  const
-     bm_DDEPOKE_unused = $1FFF;
-     bp_DDEPOKE_unused = 0;
-     bm_DDEPOKE_fRelease = $2000;
-     bp_DDEPOKE_fRelease = 13;
-     bm_DDEPOKE_fReserved = $C000;
-     bp_DDEPOKE_fReserved = 14;
-  function unused(var a : DDEPOKE) : word;
-  procedure set_unused(var a : DDEPOKE; __unused : word);
-  function fRelease(var a : DDEPOKE) : word;
-  procedure set_fRelease(var a : DDEPOKE; __fRelease : word);
-  function fReserved(var a : DDEPOKE) : word;
-  procedure set_fReserved(var a : DDEPOKE; __fReserved : word);
-
-  type
-
-     DDEUP = record
-          flag0 : word;
-          cfFormat : integer;
-          rgb : array[0..0] of BYTE;
-       end;
-     TDDEUP = DDEUP;
-     PDDEUP = ^DDEUP;
-  const
-     bm_DDEUP_unused = $FFF;
-     bp_DDEUP_unused = 0;
-     bm_DDEUP_fAck = $1000;
-     bp_DDEUP_fAck = 12;
-     bm_DDEUP_fRelease = $2000;
-     bp_DDEUP_fRelease = 13;
-     bm_DDEUP_fReserved = $4000;
-     bp_DDEUP_fReserved = 14;
-     bm_DDEUP_fAckReq = $8000;
-     bp_DDEUP_fAckReq = 15;
-  function unused(var a : DDEUP) : word;
-  procedure set_unused(var a : DDEUP; __unused : word);
-  function fAck(var a : DDEUP) : word;
-  procedure set_fAck(var a : DDEUP; __fAck : word);
-  function fRelease(var a : DDEUP) : word;
-  procedure set_fRelease(var a : DDEUP; __fRelease : word);
-  function fReserved(var a : DDEUP) : word;
-  procedure set_fReserved(var a : DDEUP; __fReserved : word);
-  function fAckReq(var a : DDEUP) : word;
-  procedure set_fAckReq(var a : DDEUP; __fAckReq : word);
-
-  type
-
-     // definition of _exception struct - this struct is passed to the matherr
-     // routine when a floating point exception is detected
-     _EXCEPTION = record  //+stdlib
-       type_  : Integer;  //identifier type replaced by Type_ for compilation
-       Name   : PChar;    // name of function where error occured
-       arg1   : double;   // first argument to function
-       arg2   : double;   // second argument (if any) to function
-       retval : double;   // value to be returned by function
-      end;
-
-     EXCEPTION_RECORD = record        //winnt
-          ExceptionCode : DWORD;
-          ExceptionFlags : DWORD;
-          ExceptionRecord : ^_EXCEPTION_RECORD;
-          ExceptionAddress : PVOID;
-          NumberParameters : DWORD;
-          ExceptionInformation : array[0..(EXCEPTION_MAXIMUM_PARAMETERS)-1] of Pointer; //~winnt, was DWORD, SDK:ULONG_PTR
-       end;
-     PEXCEPTION_RECORD = ^EXCEPTION_RECORD;
-     _EXCEPTION_RECORD = EXCEPTION_RECORD;
-     TEXCEPTIONRECORD = EXCEPTION_RECORD;
-     PEXCEPTIONRECORD = ^EXCEPTION_RECORD;
-
-     EXCEPTION_DEBUG_INFO = record
-          ExceptionRecord : EXCEPTION_RECORD;
-          dwFirstChance : DWORD;
-       end;
-     PEXCEPTION_DEBUG_INFO = ^EXCEPTION_DEBUG_INFO;
-     _EXCEPTION_DEBUG_INFO = EXCEPTION_DEBUG_INFO;
-     TEXCEPTIONDEBUGINFO = EXCEPTION_DEBUG_INFO;
-     PEXCEPTIONDEBUGINFO = ^EXCEPTION_DEBUG_INFO;
-
-     EXIT_PROCESS_DEBUG_INFO = record
-          dwExitCode : DWORD;
-       end;
-     _EXIT_PROCESS_DEBUG_INFO = EXIT_PROCESS_DEBUG_INFO;
-     TEXITPROCESSDEBUGINFO = EXIT_PROCESS_DEBUG_INFO;
-     PEXITPROCESSDEBUGINFO = ^EXIT_PROCESS_DEBUG_INFO;
-
-
-     EXIT_THREAD_DEBUG_INFO = record
-          dwExitCode : DWORD;
-       end;
-     _EXIT_THREAD_DEBUG_INFO = EXIT_THREAD_DEBUG_INFO;
-     TEXITTHREADDEBUGINFO = EXIT_THREAD_DEBUG_INFO;
-     PEXITTHREADDEBUGINFO = ^EXIT_THREAD_DEBUG_INFO;
-
-     LOAD_DLL_DEBUG_INFO = record
-          hFile : HANDLE;
-          lpBaseOfDll : LPVOID;
-          dwDebugInfoFileOffset : DWORD;
-          nDebugInfoSize : DWORD;
-          lpImageName : LPVOID;
-          fUnicode : WORD;
-       end;
-     _LOAD_DLL_DEBUG_INFO = LOAD_DLL_DEBUG_INFO;
-     TLOADDLLDEBUGINFO = LOAD_DLL_DEBUG_INFO;
-     PLOADDLLDEBUGINFO = ^LOAD_DLL_DEBUG_INFO;
-
-     UNLOAD_DLL_DEBUG_INFO = record
-          lpBaseOfDll : LPVOID;
-       end;
-     _UNLOAD_DLL_DEBUG_INFO = UNLOAD_DLL_DEBUG_INFO;
-     TUNLOADDLLDEBUGINFO = UNLOAD_DLL_DEBUG_INFO;
-     PUNLOADDLLDEBUGINFO = ^UNLOAD_DLL_DEBUG_INFO;
-
-     OUTPUT_DEBUG_STRING_INFO = record
-          lpDebugStringData : LPSTR;
-          fUnicode : WORD;
-          nDebugStringLength : WORD;
-       end;
-     _OUTPUT_DEBUG_STRING_INFO = OUTPUT_DEBUG_STRING_INFO;
-     TOUTPUTDEBUGSTRINGINFO = OUTPUT_DEBUG_STRING_INFO;
-     POUTPUTDEBUGSTRINGINFO = ^OUTPUT_DEBUG_STRING_INFO;
-
-     RIP_INFO = record
-          dwError : DWORD;
-          dwType : DWORD;
-       end;
-     _RIP_INFO = RIP_INFO;
-     TRIPINFO = RIP_INFO;
-     PRIPINFO = ^RIP_INFO;
-
-     DEBUG_EVENT = record
-          dwDebugEventCode : DWORD;
-          dwProcessId : DWORD;
-          dwThreadId : DWORD;
-          u : record
-              case longint of
-                 0 : ( Exception : EXCEPTION_DEBUG_INFO );
-                 1 : ( CreateThread : CREATE_THREAD_DEBUG_INFO );
-                 2 : ( CreateProcessInfo : CREATE_PROCESS_DEBUG_INFO );
-                 3 : ( ExitThread : EXIT_THREAD_DEBUG_INFO );
-                 4 : ( ExitProcess : EXIT_PROCESS_DEBUG_INFO );
-                 5 : ( LoadDll : LOAD_DLL_DEBUG_INFO );
-                 6 : ( UnloadDll : UNLOAD_DLL_DEBUG_INFO );
-                 7 : ( DebugString : OUTPUT_DEBUG_STRING_INFO );
-                 8 : ( RipInfo : RIP_INFO );
-              end;
-       end;
-     LPDEBUG_EVENT = ^DEBUG_EVENT;
-     _DEBUG_EVENT = DEBUG_EVENT;
-     TDEBUGEVENT = DEBUG_EVENT;
-     PDEBUGEVENT = ^DEBUG_EVENT;
-
-     DEBUGHOOKINFO = record
-          idThread : DWORD;
-          idThreadInstaller : DWORD;
-          lParam : LPARAM;
-          wParam : WPARAM;
-          code : longint;
-       end;
-     tagDEBUGHOOKINFO = DEBUGHOOKINFO;
-     TDEBUGHOOKINFO = DEBUGHOOKINFO;
-     PDEBUGHOOKINFO = ^DEBUGHOOKINFO;
-
-     DELETEITEMSTRUCT = record
-          CtlType : UINT;
-          CtlID : UINT;
-          itemID : UINT;
-          hwndItem : HWND;
-          itemData : UINT;
-       end;
-     tagDELETEITEMSTRUCT = DELETEITEMSTRUCT;
-     TDELETEITEMSTRUCT = DELETEITEMSTRUCT;
-     PDELETEITEMSTRUCT = ^DELETEITEMSTRUCT;
-
-     DEV_BROADCAST_HDR = record
-          dbch_size : ULONG;
-          dbch_devicetype : ULONG;
-          dbch_reserved : ULONG;
-       end;
-     PDEV_BROADCAST_HDR = ^DEV_BROADCAST_HDR;
-     _DEV_BROADCAST_HDR = DEV_BROADCAST_HDR;
-     TDEVBROADCASTHDR = DEV_BROADCAST_HDR;
-     PDEVBROADCASTHDR = ^DEV_BROADCAST_HDR;
-
-     DEV_BROADCAST_OEM = record
-          dbco_size : ULONG;
-          dbco_devicetype : ULONG;
-          dbco_reserved : ULONG;
-          dbco_identifier : ULONG;
-          dbco_suppfunc : ULONG;
-       end;
-     PDEV_BROADCAST_OEM = ^DEV_BROADCAST_OEM;
-     _DEV_BROADCAST_OEM = DEV_BROADCAST_OEM;
-     TDEVBROADCASTOEM = DEV_BROADCAST_OEM;
-     PDEVBROADCASTOEM = ^DEV_BROADCAST_OEM;
-
-     DEV_BROADCAST_PORT = record
-          dbcp_size : ULONG;
-          dbcp_devicetype : ULONG;
-          dbcp_reserved : ULONG;
-          dbcp_name : array[0..0] of char;
-       end;
-     PDEV_BROADCAST_PORT = ^DEV_BROADCAST_PORT;
-     _DEV_BROADCAST_PORT = DEV_BROADCAST_PORT;
-     TDEVBROADCASTPORT = DEV_BROADCAST_PORT;
-     PDEVBROADCASTPORT = ^DEV_BROADCAST_PORT;
-
-     _DEV_BROADCAST_USERDEFINED = record
-          dbud_dbh : _DEV_BROADCAST_HDR;
-          dbud_szName : array[0..0] of char;
-          dbud_rgbUserDefined : array[0..0] of BYTE;
-       end;
-     TDEVBROADCASTUSERDEFINED = _DEV_BROADCAST_USERDEFINED;
-     PDEVBROADCASTUSERDEFINED = ^_DEV_BROADCAST_USERDEFINED;
-
-     DEV_BROADCAST_VOLUME = record
-          dbcv_size : ULONG;
-          dbcv_devicetype : ULONG;
-          dbcv_reserved : ULONG;
-          dbcv_unitmask : ULONG;
-          dbcv_flags : USHORT;
-       end;
-     PDEV_BROADCAST_VOLUME = ^DEV_BROADCAST_VOLUME;
-     _DEV_BROADCAST_VOLUME = DEV_BROADCAST_VOLUME;
-     TDEVBROADCASTVOLUME = DEV_BROADCAST_VOLUME;
-     PDEVBROADCASTVOLUME = ^DEV_BROADCAST_VOLUME;
-
-     DEVMODEA   = record
-                     dmDeviceName   : array[0.. CCHDEVICENAME-1] of BCHAR;
-                     dmSpecVersion  : WORD;
-                     dmDriverVersion: WORD;
-                     dmSize        : WORD;
-                     dmDriverExtra  : WORD;
-                     dmFields       : DWORD;
-                     dmOrientation  : short;
-                     dmPaperSize    : short;
-                     dmPaperLength  : short;
-                     dmPaperWidth   : short;
-                     dmScale       : short;
-                     dmCopies      : short;
-                     dmDefaultSource: short;
-                     dmPrintQuality : short;
-                     dmColor       : short;
-                     dmDuplex      : short;
-                     dmYResolution  : short;
-                     dmTTOption    : short;
-                     dmCollate     : short;
-                     dmFormName     : array [0..CCHFORMNAME-1] of BCHAR;
-                     dmLogPixels    : WORD;
-                     dmBitsPerPel   : DWORD;
-                     dmPelsWidth    : DWORD;
-                     dmPelsHeight   : DWORD;
-                     dmDisplayFlags : DWORD;
-                     dmDisplayFrequency     : DWORD;
-                     dmICMMethod    : DWORD;
-                     dmICMIntent    : DWORD;
-                     dmMediaType    : DWORD;
-                     dmDitherType   : DWORD;
-                     dmReserved1    : DWORD;
-                     dmReserved2    : DWORD;
-                     dmPanningWidth : DWORD;
-                     dmPanningHeight: DWORD;
-                     dmDisplayOrientation : DWORD;
-                   end;
-     _DEVICEMODE1=DEVMODEA;
-     PDEVMODEA=^DEVMODEA;
-     NPDEVMODEA=^DEVMODEA;
-     LPDEVMODEA=^DEVMODEA;
-
-     DEVMODEW   = record
-                     dmDeviceName   : array[0.. CCHDEVICENAME-1] of WCHAR;
-                     dmSpecVersion  : WORD;
-                     dmDriverVersion: WORD;
-                     dmSize        : WORD;
-                     dmDriverExtra  : WORD;
-                     dmFields       : DWORD;
-                     dmOrientation  : short;
-                     dmPaperSize    : short;
-                     dmPaperLength  : short;
-                     dmPaperWidth   : short;
-                     dmScale       : short;
-                     dmCopies      : short;
-                     dmDefaultSource: short;
-                     dmPrintQuality : short;
-                     dmColor       : short;
-                     dmDuplex      : short;
-                     dmYResolution  : short;
-                     dmTTOption    : short;
-                     dmCollate     : short;
-                     dmFormName     : array [0..CCHFORMNAME-1] of wchar;
-                     dmLogPixels    : WORD;
-                     dmBitsPerPel   : DWORD;
-                     dmPelsWidth    : DWORD;
-                     dmPelsHeight   : DWORD;
-                     dmDisplayFlags : DWORD;
-                     dmDisplayFrequency   : DWORD;
-                     dmDisplayOrientation : DWORD;
-                   end;
-
-     LPDEVMODEW   = ^DEVMODEW;
-     _devicemodeW = DEVMODEW;
-     devicemodeW  = DEVMODEW;
-     TDeviceModeW = DEVMODEW;
-     PDeviceModeW = LPDEVMODEW;
-     TDEVMODEW    = DEVMODEW;
-     PDEVMODEW    = LPDEVMODEW;
-
-{$IFDEF UNICODE}
-     DEVMODE=DEVMODEW;
-     LPDEVMODE = ^DEVMODEW;
-     _devicemode = DEVMODEW;
-     devicemode = DEVMODEW;
-     tdevicemode = DEVMODEW;
-     tdevicemodeA = DEVMODEW;
-     PDeviceModeA = LPDEVMODEW;
-     PDeviceMode = LPDEVMODEW;
-     TDEVMODE = DEVMODEW;
-     PDEVMODE = LPDEVMODEW;
-{$ELSE UNICODE}
-     DEVMODE=DEVMODEA;
-     LPDEVMODE = ^DEVMODEA;
-     _devicemode = DEVMODEA;
-     devicemode = DEVMODEA;
-     tdevicemode = DEVMODEA;
-     tdevicemodeA = DEVMODEA;
-     PDeviceModeA = LPDEVMODEA;
-     PDeviceMode = LPDEVMODEA;
-     TDEVMODE = DEVMODEA;
-     PDEVMODE = LPDEVMODEA;
-{$ENDIF UNICODE}
-
-     DEVNAMES = record
-          wDriverOffset : WORD;
-          wDeviceOffset : WORD;
-          wOutputOffset : WORD;
-          wDefault : WORD;
-       end;
-     LPDEVNAMES = ^DEVNAMES;
-     tagDEVNAMES = DEVNAMES;
-     TDEVNAMES = DEVNAMES;
-     PDEVNAMES = ^DEVNAMES;
-
-     DIBSECTION = record
-          dsBm : BITMAP;
-          dsBmih : BITMAPINFOHEADER;
-          dsBitfields : array[0..2] of DWORD;
-          dshSection : HANDLE;
-          dsOffset : DWORD;
-       end;
-     tagDIBSECTION = DIBSECTION;
-     TDIBSECTION = DIBSECTION;
-     PDIBSECTION = ^DIBSECTION;
-
-     LARGE_INTEGER = record    //winnt
-        case byte of
-          0: (LowPart : DWORD;
-              HighPart : LONG);
-          1: (QuadPart : LONGLONG);
-       end;
-     PLARGE_INTEGER = ^LARGE_INTEGER; //winnt
-     _LARGE_INTEGER = LARGE_INTEGER;  //winnt
-
-     TLargeInteger = Int64;
-     PLargeInteger = ^TLargeInteger;
-
-     ULARGE_INTEGER = record
-        case byte of
-          0: (LowPart : DWORD;
-              HighPart : DWORD);
-          1: (QuadPart : LONGLONG);
-       end;
-     PULARGE_INTEGER = ^ULARGE_INTEGER;
-     _ULARGE_INTEGER = ULARGE_INTEGER;
-
-     TULargeInteger = QWord;
-     PULargeInteger = ^TULargeInteger;
-
-     DISK_GEOMETRY = record
-          Cylinders : LARGE_INTEGER;
-          MediaType : MEDIA_TYPE;
-          TracksPerCylinder : DWORD;
-          SectorsPerTrack : DWORD;
-          BytesPerSector : DWORD;
-       end;
-     _DISK_GEOMETRY = DISK_GEOMETRY;
-     TDISKGEOMETRY = DISK_GEOMETRY;
-     PDISKGEOMETRY = ^DISK_GEOMETRY;
-
-     DISK_PERFORMANCE = record
-          BytesRead : LARGE_INTEGER;
-          BytesWritten : LARGE_INTEGER;
-          ReadTime : LARGE_INTEGER;
-          WriteTime : LARGE_INTEGER;
-          ReadCount : DWORD;
-          WriteCount : DWORD;
-          QueueDepth : DWORD;
-       end;
-     _DISK_PERFORMANCE = DISK_PERFORMANCE;
-     TDISKPERFORMANCE = DISK_PERFORMANCE;
-     PDISKPERFORMANCE = ^DISK_PERFORMANCE;
-
-     DLGITEMTEMPLATE = packed record
-          style : DWORD;
-          dwExtendedStyle : DWORD;
-          x : integer;
-          y : integer;
-          cx : integer;
-          cy : integer;
-          id : WORD;
-       end;
-     LPDLGITEMTEMPLATE = ^DLGITEMTEMPLATE;
-     TDLGITEMTEMPLATE = DLGITEMTEMPLATE;
-     PDLGITEMTEMPLATE = ^DLGITEMTEMPLATE;
-
-     DLGTEMPLATE = packed record
-          style : DWORD;
-          dwExtendedStyle : DWORD;
-          cdit : WORD;
-          x : integer;
-          y : integer;
-          cx : integer;
-          cy : integer;
-       end;
-     LPDLGTEMPLATE = ^DLGTEMPLATE;
-     LPCDLGTEMPLATE = ^DLGTEMPLATE;
-     LPCDLGTEMPLATEW = ^DLGTEMPLATE; //+winuser
-     TDLGTEMPLATE = DLGTEMPLATE;
-     PDLGTEMPLATE = ^DLGTEMPLATE;
-
-     DOC_INFO_1 = record
-          pDocName : LPTSTR;
-          pOutputFile : LPTSTR;
-          pDatatype : LPTSTR;
-       end;
-     _DOC_INFO_1 = DOC_INFO_1;
-     TDOCINFO1 = DOC_INFO_1;
-     PDOCINFO1 = ^DOC_INFO_1;
-
-     DOC_INFO_2 = record
-          pDocName : LPTSTR;
-          pOutputFile : LPTSTR;
-          pDatatype : LPTSTR;
-          dwMode : DWORD;
-          JobId : DWORD;
-       end;
-     _DOC_INFO_2 = DOC_INFO_2;
-     TDOCINFO2 = DOC_INFO_2;
-     PDOCINFO2 = ^DOC_INFO_2;
-
-     DOCINFO = record //+wingdi
-          cbSize : Integer;
-          lpszDocName : LPCWSTR;
-          lpszOutput : LPCWSTR;
-          lpszDatatype : LPCWSTR;
-          fwType : DWORD;
-       end;
-     TDOCINFO = DOCINFO;
-     PDOCINFO = ^DOCINFO;
-     DOCINFOW = DOCINFO;
-     TDOCINFOW = DOCINFOW;
-     _DOCINFOW=DOCINFOW; //+wingdi
-     LPDOCINFOW=^PDOCINFO; //+wingdi
-     PDOCINFOW=^PDOCINFO; //+wingdi
-
-     DRAGLISTINFO = record
-          uNotification : UINT;
-          hWnd : HWND;
-          ptCursor : POINT;
-       end;
-     LPDRAGLISTINFO = ^DRAGLISTINFO;
-     TDRAGLISTINFO = DRAGLISTINFO;
-     PDRAGLISTINFO = ^DRAGLISTINFO;
-
-     DRAWITEMSTRUCT = record
-          CtlType : UINT;
-          CtlID : UINT;
-          itemID : UINT;
-          itemAction : UINT;
-          itemState : UINT;
-          hwndItem : HWND;
-          hDC : HDC;
-          rcItem : RECT;
-          itemData : DWORD;
-       end;
-     LPDRAWITEMSTRUCT = ^DRAWITEMSTRUCT;
-     tagDRAWITEMSTRUCT = DRAWITEMSTRUCT;
-     TDRAWITEMSTRUCT = DRAWITEMSTRUCT;
-     PDRAWITEMSTRUCT = ^DRAWITEMSTRUCT;
-
-     DRAWTEXTPARAMS = record
-          cbSize : UINT;
-          iTabLength : longint;
-          iLeftMargin : longint;
-          iRightMargin : longint;
-          uiLengthDrawn : UINT;
-       end;
-     LPDRAWTEXTPARAMS = ^DRAWTEXTPARAMS;
-     TDRAWTEXTPARAMS = DRAWTEXTPARAMS;
-     PDRAWTEXTPARAMS = ^DRAWTEXTPARAMS;
-
-     PARTITION_INFORMATION = record
-          PartitionType : BYTE;
-          BootIndicator : BOOLEAN;
-          RecognizedPartition : BOOLEAN;
-          RewritePartition : BOOLEAN;
-          StartingOffset : LARGE_INTEGER;
-          PartitionLength : LARGE_INTEGER;
-          HiddenSectors : LARGE_INTEGER;
-       end;
-     _PARTITION_INFORMATION = PARTITION_INFORMATION;
-     TPARTITIONINFORMATION = PARTITION_INFORMATION;
-     PPARTITIONINFORMATION = ^PARTITION_INFORMATION;
-
-     DRIVE_LAYOUT_INFORMATION = record
-          PartitionCount : DWORD;
-          Signature : DWORD;
-          PartitionEntry : array[0..0] of PARTITION_INFORMATION;
-       end;
-     _DRIVE_LAYOUT_INFORMATION = DRIVE_LAYOUT_INFORMATION;
-     TDRIVELAYOUTINFORMATION = DRIVE_LAYOUT_INFORMATION;
-     PDRIVELAYOUTINFORMATION = ^DRIVE_LAYOUT_INFORMATION;
-
-     DRIVER_INFO_1 = record
-          pName : LPTSTR;
-       end;
-     _DRIVER_INFO_1 = DRIVER_INFO_1;
-     TDRIVERINFO1 = DRIVER_INFO_1;
-     PDRIVERINFO1 = ^DRIVER_INFO_1;
-
-     DRIVER_INFO_2 = record
-          cVersion : DWORD;
-          pName : LPTSTR;
-          pEnvironment : LPTSTR;
-          pDriverPath : LPTSTR;
-          pDataFile : LPTSTR;
-          pConfigFile : LPTSTR;
-       end;
-     _DRIVER_INFO_2 = DRIVER_INFO_2;
-     TDRIVERINFO2 = DRIVER_INFO_2;
-     PDRIVERINFO2 = ^DRIVER_INFO_2;
-
-     DRIVER_INFO_3 = record
-          cVersion : DWORD;
-          pName : LPTSTR;
-          pEnvironment : LPTSTR;
-          pDriverPath : LPTSTR;
-          pDataFile : LPTSTR;
-          pConfigFile : LPTSTR;
-          pHelpFile : LPTSTR;
-          pDependentFiles : LPTSTR;
-          pMonitorName : LPTSTR;
-          pDefaultDataType : LPTSTR;
-       end;
-     _DRIVER_INFO_3 = DRIVER_INFO_3;
-     TDRIVERINFO3 = DRIVER_INFO_3;
-     PDRIVERINFO3 = ^DRIVER_INFO_3;
-
-     EDITSTREAM = record
-          dwCookie : DWORD;
-          dwError : DWORD;
-          pfnCallback : EDITSTREAMCALLBACK;
-       end;
-     _editstream = EDITSTREAM;
-     Teditstream = EDITSTREAM;
-     Peditstream = ^EDITSTREAM;
-
-     EMR = record
-          iType : DWORD;
-          nSize : DWORD;
-       end;
-     tagEMR = EMR;
-     TEMR = EMR;
-     PEMR = ^EMR;
-
-     EMRANGLEARC = record
-          emr : EMR;
-          ptlCenter : POINTL;
-          nRadius : DWORD;
-          eStartAngle : Single;
-          eSweepAngle : Single;
-       end;
-     tagEMRANGLEARC = EMRANGLEARC;
-     TEMRANGLEARC = EMRANGLEARC;
-     PEMRANGLEARC = ^EMRANGLEARC;
-
-     EMRARC = record
-          emr : EMR;
-          rclBox : RECTL;
-          ptlStart : POINTL;
-          ptlEnd : POINTL;
-       end;
-     tagEMRARC = EMRARC;
-     TEMRARC = EMRARC;
-     PEMRARC = ^EMRARC;
-
-     EMRARCTO = EMRARC;
-     TEMRARCTO = EMRARC;
-     PEMRARCTO = ^EMRARC;
-
-     EMRCHORD = EMRARC;
-     TEMRCHORD = EMRARC;
-     PEMRCHORD = ^EMRARC;
-
-     EMRPIE = EMRARC;
-     TEMRPIE = EMRARC;
-     PEMRPIE = ^EMRARC;
-
-     XFORM = record
-          eM11 : Single;
-          eM12 : Single;
-          eM21 : Single;
-          eM22 : Single;
-          eDx : Single;
-          eDy : Single;
-       end;
-     LPXFORM = ^XFORM;
-     _XFORM = XFORM;
-     TXFORM = XFORM;
-     PXFORM = ^XFORM;
-
-     EMRBITBLT = record
-          emr : EMR;
-          rclBounds : RECTL;
-          xDest : LONG;
-          yDest : LONG;
-          cxDest : LONG;
-          cyDest : LONG;
-          dwRop : DWORD;
-          xSrc : LONG;
-          ySrc : LONG;
-          xformSrc : XFORM;
-          crBkColorSrc : COLORREF;
-          iUsageSrc : DWORD;
-          offBmiSrc : DWORD;
-          offBitsSrc : DWORD;
-          cbBitsSrc : DWORD;
-       end;
-     tagEMRBITBLT = EMRBITBLT;
-     TEMRBITBLT = EMRBITBLT;
-     PEMRBITBLT = ^EMRBITBLT;
-
-     LOGBRUSH = record
-          lbStyle : UINT;
-          lbColor : COLORREF;
-          lbHatch : LONG;
-       end;
-     tagLOGBRUSH = LOGBRUSH;
-     TLOGBRUSH = LOGBRUSH;
-     PLOGBRUSH = ^LOGBRUSH;
-
-     EMRCREATEBRUSHINDIRECT = record
-          emr : EMR;
-          ihBrush : DWORD;
-          lb : LOGBRUSH;
-       end;
-     tagEMRCREATEBRUSHINDIRECT = EMRCREATEBRUSHINDIRECT;
-     TEMRCREATEBRUSHINDIRECT = EMRCREATEBRUSHINDIRECT;
-     PEMRCREATEBRUSHINDIRECT = ^EMRCREATEBRUSHINDIRECT;
-
-     LCSCSTYPE = LONG;
-
-     LCSGAMUTMATCH = LONG;
-
-     LOGCOLORSPACE = record
-          lcsSignature : DWORD;
-          lcsVersion : DWORD;
-          lcsSize : DWORD;
-          lcsCSType : LCSCSTYPE;
-          lcsIntent : LCSGAMUTMATCH;
-          lcsEndpoints : CIEXYZTRIPLE;
-          lcsGammaRed : DWORD;
-          lcsGammaGreen : DWORD;
-          lcsGammaBlue : DWORD;
-          lcsFilename : array[0..(MAX_PATH)-1] of TCHAR;
-       end;
-     LPLOGCOLORSPACE = ^LOGCOLORSPACE;
-     tagLOGCOLORSPACE = LOGCOLORSPACE;
-     TLOGCOLORSPACE = LOGCOLORSPACE;
-     TLOGCOLORSPACEA = LOGCOLORSPACE;
-     PLOGCOLORSPACE = ^LOGCOLORSPACE;
-
-     EMRCREATECOLORSPACE = record
-          emr : EMR;
-          ihCS : DWORD;
-          lcs : LOGCOLORSPACE;
-       end;
-     tagEMRCREATECOLORSPACE = EMRCREATECOLORSPACE;
-     TEMRCREATECOLORSPACE = EMRCREATECOLORSPACE;
-     PEMRCREATECOLORSPACE = ^EMRCREATECOLORSPACE;
-
-     EMRCREATEDIBPATTERNBRUSHPT = record
-          emr : EMR;
-          ihBrush : DWORD;
-          iUsage : DWORD;
-          offBmi : DWORD;
-          cbBmi : DWORD;
-          offBits : DWORD;
-          cbBits : DWORD;
-       end;
-     tagEMRCREATEDIBPATTERNBRUSHPT = EMRCREATEDIBPATTERNBRUSHPT;
-     TEMRCREATEDIBPATTERNBRUSHPT = EMRCREATEDIBPATTERNBRUSHPT;
-     PEMRCREATEDIBPATTERNBRUSHPT = EMRCREATEDIBPATTERNBRUSHPT;
-
-     EMRCREATEMONOBRUSH = record
-          emr : EMR;
-          ihBrush : DWORD;
-          iUsage : DWORD;
-          offBmi : DWORD;
-          cbBmi : DWORD;
-          offBits : DWORD;
-          cbBits : DWORD;
-       end;
-     tagEMRCREATEMONOBRUSH = EMRCREATEMONOBRUSH;
-     TEMRCREATEMONOBRUSH = EMRCREATEMONOBRUSH;
-     PEMRCREATEMONOBRUSH = ^EMRCREATEMONOBRUSH;
-
-     PALETTEENTRY = record
-          peRed : BYTE;
-          peGreen : BYTE;
-          peBlue : BYTE;
-          peFlags : BYTE;
-       end;
-     LPPALETTEENTRY = ^PALETTEENTRY;
-     tagPALETTEENTRY = PALETTEENTRY;
-     TPALETTEENTRY = PALETTEENTRY;
-     PPALETTEENTRY = ^PALETTEENTRY;
-
-     LOGPALETTE = record
-          palVersion : WORD;
-          palNumEntries : WORD;
-          palPalEntry : array[0..0] of PALETTEENTRY;
-       end;
-     LPLOGPALETTE = ^LOGPALETTE;
-     tagLOGPALETTE = LOGPALETTE;
-     TLOGPALETTE = LOGPALETTE;
-     PLOGPALETTE = ^LOGPALETTE;
-
-     EMRCREATEPALETTE = record
-          emr : EMR;
-          ihPal : DWORD;
-          lgpl : LOGPALETTE;
-       end;
-     tagEMRCREATEPALETTE = EMRCREATEPALETTE;
-     TEMRCREATEPALETTE = EMRCREATEPALETTE;
-     PEMRCREATEPALETTE = ^EMRCREATEPALETTE;
-
-     LOGPEN = record
-          lopnStyle : UINT;
-          lopnWidth : POINT;
-          lopnColor : COLORREF;
-       end;
-     tagLOGPEN = LOGPEN;
-     TLOGPEN = LOGPEN;
-     PLOGPEN = ^LOGPEN;
-
-     EMRCREATEPEN = record
-          emr : EMR;
-          ihPen : DWORD;
-          lopn : LOGPEN;
-       end;
-     tagEMRCREATEPEN = EMRCREATEPEN;
-     TEMRCREATEPEN = EMRCREATEPEN;
-     PEMRCREATEPEN = ^EMRCREATEPEN;
-
-     EMRELLIPSE = record
-          emr : EMR;
-          rclBox : RECTL;
-       end;
-     tagEMRELLIPSE = EMRELLIPSE;
-     TEMRELLIPSE = EMRELLIPSE;
-     PEMRELLIPSE = ^EMRELLIPSE;
-
-     EMRRECTANGLE = EMRELLIPSE;
-     TEMRRECTANGLE = EMRELLIPSE;
-     PEMRRECTANGLE = ^EMRELLIPSE;
-
-     EMREOF = record
-          emr : EMR;
-          nPalEntries : DWORD;
-          offPalEntries : DWORD;
-          nSizeLast : DWORD;
-       end;
-     tagEMREOF = EMREOF;
-     TEMREOF = EMREOF;
-     PEMREOF = ^EMREOF;
-
-     EMREXCLUDECLIPRECT = record
-          emr : EMR;
-          rclClip : RECTL;
-       end;
-     tagEMREXCLUDECLIPRECT = EMREXCLUDECLIPRECT;
-     TEMREXCLUDECLIPRECT = EMREXCLUDECLIPRECT;
-     PEMREXCLUDECLIPRECT = ^EMREXCLUDECLIPRECT;
-
-     EMRINTERSECTCLIPRECT = EMREXCLUDECLIPRECT;
-     TEMRINTERSECTCLIPRECT = EMREXCLUDECLIPRECT;
-     PEMRINTERSECTCLIPRECT = ^EMREXCLUDECLIPRECT;
-
-     PANOSE = record
-          bFamilyType : BYTE;
-          bSerifStyle : BYTE;
-          bWeight : BYTE;
-          bProportion : BYTE;
-          bContrast : BYTE;
-          bStrokeVariation : BYTE;
-          bArmStyle : BYTE;
-          bLetterform : BYTE;
-          bMidline : BYTE;
-          bXHeight : BYTE;
-       end;
-     tagPANOSE = PANOSE;
-     TPANOSE = PANOSE;
-     PPANOSE = ^PANOSE;
-
-     EXTLOGFONT = record
-          elfLogFont : LOGFONT;
-          elfFullName : array[0..(LF_FULLFACESIZE)-1] of BCHAR;
-          elfStyle : array[0..(LF_FACESIZE)-1] of BCHAR;
-          elfVersion : DWORD;
-          elfStyleSize : DWORD;
-          elfMatch : DWORD;
-          elfReserved : DWORD;
-          elfVendorId : array[0..(ELF_VENDOR_SIZE)-1] of BYTE;
-          elfCulture : DWORD;
-          elfPanose : PANOSE;
-       end;
-     tagEXTLOGFONT = EXTLOGFONT;
-     TEXTLOGFONT = EXTLOGFONT;
-     PEXTLOGFONT = ^EXTLOGFONT;
-
-     EMREXTCREATEFONTINDIRECTW = record
-          emr : EMR;
-          ihFont : DWORD;
-          elfw : EXTLOGFONT;
-       end;
-     tagEMREXTCREATEFONTINDIRECTW = EMREXTCREATEFONTINDIRECTW;
-     TEMREXTCREATEFONTINDIRECTW = EMREXTCREATEFONTINDIRECTW;
-     PEMREXTCREATEFONTINDIRECTW = ^EMREXTCREATEFONTINDIRECTW;
-
-
-     EXTLOGPEN = record
-          elpPenStyle : UINT;
-          elpWidth : UINT;
-          elpBrushStyle : UINT;
-          elpColor : COLORREF;
-          elpHatch : LONG;
-          elpNumEntries : DWORD;
-          elpStyleEntry : array[0..0] of DWORD;
-       end;
-     tagEXTLOGPEN = EXTLOGPEN;
-     TEXTLOGPEN = EXTLOGPEN;
-     PEXTLOGPEN = ^EXTLOGPEN;
-
-     EMREXTCREATEPEN = record
-          emr : EMR;
-          ihPen : DWORD;
-          offBmi : DWORD;
-          cbBmi : DWORD;
-          offBits : DWORD;
-          cbBits : DWORD;
-          elp : EXTLOGPEN;
-       end;
-     tagEMREXTCREATEPEN = EMREXTCREATEPEN;
-     TEMREXTCREATEPEN = EMREXTCREATEPEN;
-     PEMREXTCREATEPEN = ^EMREXTCREATEPEN;
-
-     EMREXTFLOODFILL = record
-          emr : EMR;
-          ptlStart : POINTL;
-          crColor : COLORREF;
-          iMode : DWORD;
-       end;
-     tagEMREXTFLOODFILL = EMREXTFLOODFILL;
-     TEMREXTFLOODFILL = EMREXTFLOODFILL;
-     PEMREXTFLOODFILL = ^EMREXTFLOODFILL;
-
-     EMREXTSELECTCLIPRGN = record
-          emr : EMR;
-          cbRgnData : DWORD;
-          iMode : DWORD;
-          RgnData : array[0..0] of BYTE;
-       end;
-     tagEMREXTSELECTCLIPRGN = EMREXTSELECTCLIPRGN;
-     TEMREXTSELECTCLIPRGN = EMREXTSELECTCLIPRGN;
-     PEMREXTSELECTCLIPRGN = ^EMREXTSELECTCLIPRGN;
-
-     EMRTEXT = record
-          ptlReference : POINTL;
-          nChars : DWORD;
-          offString : DWORD;
-          fOptions : DWORD;
-          rcl : RECTL;
-          offDx : DWORD;
-       end;
-     tagEMRTEXT = EMRTEXT;
-     TEMRTEXT = EMRTEXT;
-     PEMRTEXT = ^EMRTEXT;
-
-     EMREXTTEXTOUTA = record
-          emr : EMR;
-          rclBounds : RECTL;
-          iGraphicsMode : DWORD;
-          exScale : Single;
-          eyScale : Single;
-          emrtext : EMRTEXT;
-       end;
-     tagEMREXTTEXTOUTA = EMREXTTEXTOUTA;
-     TEMREXTTEXTOUTA = EMREXTTEXTOUTA;
-     PEMREXTTEXTOUTA = ^EMREXTTEXTOUTA;
-
-     EMREXTTEXTOUTW = EMREXTTEXTOUTA;
-     TEMREXTTEXTOUTW = EMREXTTEXTOUTA;
-     PEMREXTTEXTOUTW = ^EMREXTTEXTOUTA;
-
-     EMRFILLPATH = record
-          emr : EMR;
-          rclBounds : RECTL;
-       end;
-     tagEMRFILLPATH = EMRFILLPATH;
-     TEMRFILLPATH = EMRFILLPATH;
-     PEMRFILLPATH = ^EMRFILLPATH;
-
-     EMRSTROKEANDFILLPATH = EMRFILLPATH;
-     TEMRSTROKEANDFILLPATH = EMRFILLPATH;
-     PEMRSTROKEANDFILLPATH = ^EMRFILLPATH;
-
-     EMRSTROKEPATH = EMRFILLPATH;
-     TEMRSTROKEPATH = EMRFILLPATH;
-     PEMRSTROKEPATH = ^EMRFILLPATH;
-
-     EMRFILLRGN = record
-          emr : EMR;
-          rclBounds : RECTL;
-          cbRgnData : DWORD;
-          ihBrush : DWORD;
-          RgnData : array[0..0] of BYTE;
-       end;
-     tagEMRFILLRGN = EMRFILLRGN;
-     TEMRFILLRGN = EMRFILLRGN;
-     PEMRFILLRGN = ^EMRFILLRGN;
-
-     EMRFORMAT = record
-          dSignature : DWORD;
-          nVersion : DWORD;
-          cbData : DWORD;
-          offData : DWORD;
-       end;
-     tagEMRFORMAT = EMRFORMAT;
-     TEMRFORMAT = EMRFORMAT;
-     PEMRFORMAT = ^EMRFORMAT;
-
-     SIZE = record
-          cx : LONG;
-          cy : LONG;
-       end;
-     LPSIZE = ^SIZE;
-     tagSIZE = SIZE;
-     TSIZE = SIZE;
-     PSIZE = ^SIZE;
-
-     SIZEL = SIZE;        //windef
-     TSIZEL = SIZE;       //windef
-     PSIZEL = ^SIZE;
-     LPSIZEL = ^SIZE;
-
-     EMRFRAMERGN = record
-          emr : EMR;
-          rclBounds : RECTL;
-          cbRgnData : DWORD;
-          ihBrush : DWORD;
-          szlStroke : SIZEL;
-          RgnData : array[0..0] of BYTE;
-       end;
-     tagEMRFRAMERGN = EMRFRAMERGN;
-     TEMRFRAMERGN = EMRFRAMERGN;
-     PEMRFRAMERGN = ^EMRFRAMERGN;
-
-     EMRGDICOMMENT = record
-          emr : EMR;
-          cbData : DWORD;
-          Data : array[0..0] of BYTE;
-       end;
-     tagEMRGDICOMMENT = EMRGDICOMMENT;
-     TEMRGDICOMMENT = EMRGDICOMMENT;
-     PEMRGDICOMMENT = ^EMRGDICOMMENT;
-
-     EMRINVERTRGN = record
-          emr : EMR;
-          rclBounds : RECTL;
-          cbRgnData : DWORD;
-          RgnData : array[0..0] of BYTE;
-       end;
-     tagEMRINVERTRGN = EMRINVERTRGN;
-     TEMRINVERTRGN = EMRINVERTRGN;
-     PEMRINVERTRGN = ^EMRINVERTRGN;
-
-     EMRPAINTRGN = EMRINVERTRGN;
-     TEMRPAINTRGN = EMRINVERTRGN;
-     PEMRPAINTRGN = ^EMRINVERTRGN;
-
-     EMRLINETO = record
-          emr : EMR;
-          ptl : POINTL;
-       end;
-     tagEMRLINETO = EMRLINETO;
-     TEMRLINETO = EMRLINETO;
-     PEMRLINETO = ^EMRLINETO;
-
-     EMRMOVETOEX = EMRLINETO;
-     TEMRMOVETOEX = EMRLINETO;
-     PEMRMOVETOEX = ^EMRLINETO;
-
-     EMRMASKBLT = record
-          emr : EMR;
-          rclBounds : RECTL;
-          xDest : LONG;
-          yDest : LONG;
-          cxDest : LONG;
-          cyDest : LONG;
-          dwRop : DWORD;
-          xSrc : LONG;
-          ySrc : LONG;
-          xformSrc : XFORM;
-          crBkColorSrc : COLORREF;
-          iUsageSrc : DWORD;
-          offBmiSrc : DWORD;
-          cbBmiSrc : DWORD;
-          offBitsSrc : DWORD;
-          cbBitsSrc : DWORD;
-          xMask : LONG;
-          yMask : LONG;
-          iUsageMask : DWORD;
-          offBmiMask : DWORD;
-          cbBmiMask : DWORD;
-          offBitsMask : DWORD;
-          cbBitsMask : DWORD;
-       end;
-     tagEMRMASKBLT = EMRMASKBLT;
-     TEMRMASKBLT = EMRMASKBLT;
-     PEMRMASKBLT = ^EMRMASKBLT;
-
-     EMRMODIFYWORLDTRANSFORM = record
-          emr : EMR;
-          xform : XFORM;
-          iMode : DWORD;
-       end;
-     tagEMRMODIFYWORLDTRANSFORM = EMRMODIFYWORLDTRANSFORM;
-     TEMRMODIFYWORLDTRANSFORM = EMRMODIFYWORLDTRANSFORM;
-     PEMRMODIFYWORLDTRANSFORM = EMRMODIFYWORLDTRANSFORM;
-
-     EMROFFSETCLIPRGN = record
-          emr : EMR;
-          ptlOffset : POINTL;
-       end;
-     tagEMROFFSETCLIPRGN = EMROFFSETCLIPRGN;
-     TEMROFFSETCLIPRGN = EMROFFSETCLIPRGN;
-     PEMROFFSETCLIPRGN = ^EMROFFSETCLIPRGN;
-
-     EMRPLGBLT = record
-          emr : EMR;
-          rclBounds : RECTL;
-          aptlDest : array[0..2] of POINTL;
-          xSrc : LONG;
-          ySrc : LONG;
-          cxSrc : LONG;
-          cySrc : LONG;
-          xformSrc : XFORM;
-          crBkColorSrc : COLORREF;
-          iUsageSrc : DWORD;
-          offBmiSrc : DWORD;
-          cbBmiSrc : DWORD;
-          offBitsSrc : DWORD;
-          cbBitsSrc : DWORD;
-          xMask : LONG;
-          yMask : LONG;
-          iUsageMask : DWORD;
-          offBmiMask : DWORD;
-          cbBmiMask : DWORD;
-          offBitsMask : DWORD;
-          cbBitsMask : DWORD;
-       end;
-     tagEMRPLGBLT = EMRPLGBLT;
-     TEMRPLGBLT = EMRPLGBLT;
-     PEMRPLGBLT = ^EMRPLGBLT;
-
-     EMRPOLYDRAW = record
-          emr : EMR;
-          rclBounds : RECTL;
-          cptl : DWORD;
-          aptl : array[0..0] of POINTL;
-          abTypes : array[0..0] of BYTE;
-       end;
-     tagEMRPOLYDRAW = EMRPOLYDRAW;
-     TEMRPOLYDRAW = EMRPOLYDRAW;
-     PEMRPOLYDRAW = ^EMRPOLYDRAW;
-
-     EMRPOLYDRAW16 = record
-          emr : EMR;
-          rclBounds : RECTL;
-          cpts : DWORD;
-          apts : array[0..0] of POINTS;
-          abTypes : array[0..0] of BYTE;
-       end;
-     tagEMRPOLYDRAW16 = EMRPOLYDRAW16;
-     TEMRPOLYDRAW16 = EMRPOLYDRAW16;
-     PEMRPOLYDRAW16 = ^EMRPOLYDRAW16;
-
-     EMRPOLYLINE = record
-          emr : EMR;
-          rclBounds : RECTL;
-          cptl : DWORD;
-          aptl : array[0..0] of POINTL;
-       end;
-     tagEMRPOLYLINE = EMRPOLYLINE;
-     TEMRPOLYLINE = EMRPOLYLINE;
-     PEMRPOLYLINE = ^EMRPOLYLINE;
-
-     EMRPOLYBEZIER = EMRPOLYLINE;
-     TEMRPOLYBEZIER = EMRPOLYLINE;
-     PEMRPOLYBEZIER = ^EMRPOLYLINE;
-
-     EMRPOLYGON = EMRPOLYLINE;
-     TEMRPOLYGON = EMRPOLYLINE;
-     PEMRPOLYGON = ^EMRPOLYLINE;
-
-     EMRPOLYBEZIERTO = EMRPOLYLINE;
-     TEMRPOLYBEZIERTO = EMRPOLYLINE;
-     PEMRPOLYBEZIERTO = ^EMRPOLYLINE;
-
-     EMRPOLYLINETO = EMRPOLYLINE;
-     TEMRPOLYLINETO = EMRPOLYLINE;
-     PEMRPOLYLINETO = ^EMRPOLYLINE;
-
-     EMRPOLYLINE16 = record
-          emr : EMR;
-          rclBounds : RECTL;
-          cpts : DWORD;
-          apts : array[0..0] of POINTL;
-       end;
-     tagEMRPOLYLINE16 = EMRPOLYLINE16;
-     TEMRPOLYLINE16 = EMRPOLYLINE16;
-     PEMRPOLYLINE16 = ^EMRPOLYLINE16;
-
-     EMRPOLYBEZIER16 = EMRPOLYLINE16;
-     TEMRPOLYBEZIER16 = EMRPOLYLINE16;
-     PEMRPOLYBEZIER16 = ^EMRPOLYLINE16;
-
-     EMRPOLYGON16 = EMRPOLYLINE16;
-     TEMRPOLYGON16 = EMRPOLYLINE16;
-     PEMRPOLYGON16 = ^EMRPOLYLINE16;
-
-     EMRPOLYBEZIERTO16 = EMRPOLYLINE16;
-     TEMRPOLYBEZIERTO16 = EMRPOLYLINE16;
-     PEMRPOLYBEZIERTO16 = ^EMRPOLYLINE16;
-
-     EMRPOLYLINETO16 = EMRPOLYLINE16;
-     TEMRPOLYLINETO16 = EMRPOLYLINE16;
-     PEMRPOLYLINETO16 = ^EMRPOLYLINE16;
-
-     EMRPOLYPOLYLINE = record
-          emr : EMR;
-          rclBounds : RECTL;
-          nPolys : DWORD;
-          cptl : DWORD;
-          aPolyCounts : array[0..0] of DWORD;
-          aptl : array[0..0] of POINTL;
-       end;
-     tagEMRPOLYPOLYLINE = EMRPOLYPOLYLINE;
-     TEMRPOLYPOLYLINE = EMRPOLYPOLYLINE;
-     PEMRPOLYPOLYLINE = ^EMRPOLYPOLYLINE;
-
-     EMRPOLYPOLYGON = EMRPOLYPOLYLINE;
-     TEMRPOLYPOLYGON = EMRPOLYPOLYLINE;
-     PEMRPOLYPOLYGON = ^EMRPOLYPOLYLINE;
-
-     EMRPOLYPOLYLINE16 = record
-          emr : EMR;
-          rclBounds : RECTL;
-          nPolys : DWORD;
-          cpts : DWORD;
-          aPolyCounts : array[0..0] of DWORD;
-          apts : array[0..0] of POINTS;
-       end;
-     tagEMRPOLYPOLYLINE16 = EMRPOLYPOLYLINE16;
-     TEMRPOLYPOLYLINE16 = EMRPOLYPOLYLINE16;
-     PEMRPOLYPOLYLINE16 = ^EMRPOLYPOLYLINE16;
-
-     EMRPOLYPOLYGON16 = EMRPOLYPOLYLINE16;
-     TEMRPOLYPOLYGON16 = EMRPOLYPOLYLINE16;
-     PEMRPOLYPOLYGON16 = ^EMRPOLYPOLYLINE16;
-
-     EMRPOLYTEXTOUTA = record
-          emr : EMR;
-          rclBounds : RECTL;
-          iGraphicsMode : DWORD;
-          exScale : Single;
-          eyScale : Single;
-          cStrings : LONG;
-          aemrtext : array[0..0] of EMRTEXT;
-       end;
-     tagEMRPOLYTEXTOUTA = EMRPOLYTEXTOUTA;
-     TEMRPOLYTEXTOUTA = EMRPOLYTEXTOUTA;
-     PEMRPOLYTEXTOUTA = ^EMRPOLYTEXTOUTA;
-
-     EMRPOLYTEXTOUTW = EMRPOLYTEXTOUTA;
-     TEMRPOLYTEXTOUTW = EMRPOLYTEXTOUTA;
-     PEMRPOLYTEXTOUTW = ^EMRPOLYTEXTOUTA;
-
-     EMRRESIZEPALETTE = record
-          emr : EMR;
-          ihPal : DWORD;
-          cEntries : DWORD;
-       end;
-     tagEMRRESIZEPALETTE = EMRRESIZEPALETTE;
-     TEMRRESIZEPALETTE = EMRRESIZEPALETTE;
-     PEMRRESIZEPALETTE = ^EMRRESIZEPALETTE;
-
-     EMRRESTOREDC = record
-          emr : EMR;
-          iRelative : LONG;
-       end;
-     tagEMRRESTOREDC = EMRRESTOREDC;
-     TEMRRESTOREDC = EMRRESTOREDC;
-     PEMRRESTOREDC = ^EMRRESTOREDC;
-
-     EMRROUNDRECT = record
-          emr : EMR;
-          rclBox : RECTL;
-          szlCorner : SIZEL;
-       end;
-     tagEMRROUNDRECT = EMRROUNDRECT;
-     TEMRROUNDRECT = EMRROUNDRECT;
-     PEMRROUNDRECT = ^EMRROUNDRECT;
-
-     EMRSCALEVIEWPORTEXTEX = record
-          emr : EMR;
-          xNum : LONG;
-          xDenom : LONG;
-          yNum : LONG;
-          yDenom : LONG;
-       end;
-     tagEMRSCALEVIEWPORTEXTEX = EMRSCALEVIEWPORTEXTEX;
-     TEMRSCALEVIEWPORTEXTEX = EMRSCALEVIEWPORTEXTEX;
-     PEMRSCALEVIEWPORTEXTEX = ^EMRSCALEVIEWPORTEXTEX;
-
-     EMRSCALEWINDOWEXTEX = EMRSCALEVIEWPORTEXTEX;
-     TEMRSCALEWINDOWEXTEX = EMRSCALEVIEWPORTEXTEX;
-     PEMRSCALEWINDOWEXTEX = ^EMRSCALEVIEWPORTEXTEX;
-
-     EMRSELECTCOLORSPACE = record
-          emr : EMR;
-          ihCS : DWORD;
-       end;
-     tagEMRSELECTCOLORSPACE = EMRSELECTCOLORSPACE;
-     TEMRSELECTCOLORSPACE = EMRSELECTCOLORSPACE;
-     PEMRSELECTCOLORSPACE = ^EMRSELECTCOLORSPACE;
-
-     EMRDELETECOLORSPACE = EMRSELECTCOLORSPACE;
-     TEMRDELETECOLORSPACE = EMRSELECTCOLORSPACE;
-     PEMRDELETECOLORSPACE = ^EMRSELECTCOLORSPACE;
-
-     EMRSELECTOBJECT = record
-          emr : EMR;
-          ihObject : DWORD;
-       end;
-     tagEMRSELECTOBJECT = EMRSELECTOBJECT;
-     TEMRSELECTOBJECT = EMRSELECTOBJECT;
-     PEMRSELECTOBJECT = ^EMRSELECTOBJECT;
-
-     EMRDELETEOBJECT = EMRSELECTOBJECT;
-     TEMRDELETEOBJECT = EMRSELECTOBJECT;
-     PEMRDELETEOBJECT = ^EMRSELECTOBJECT;
-
-     EMRSELECTPALETTE = record
-          emr : EMR;
-          ihPal : DWORD;
-       end;
-     tagEMRSELECTPALETTE = EMRSELECTPALETTE;
-     TEMRSELECTPALETTE = EMRSELECTPALETTE;
-     PEMRSELECTPALETTE = ^EMRSELECTPALETTE;
-
-     EMRSETARCDIRECTION = record
-          emr : EMR;
-          iArcDirection : DWORD;
-       end;
-     tagEMRSETARCDIRECTION = EMRSETARCDIRECTION;
-     TEMRSETARCDIRECTION = EMRSETARCDIRECTION;
-     PEMRSETARCDIRECTION = ^EMRSETARCDIRECTION;
-
-     EMRSETBKCOLOR = record
-          emr : EMR;
-          crColor : COLORREF;
-       end;
-     tagEMRSETTEXTCOLOR = EMRSETBKCOLOR;
-     TEMRSETBKCOLOR = EMRSETBKCOLOR;
-     PEMRSETBKCOLOR = ^EMRSETBKCOLOR;
-
-     EMRSETTEXTCOLOR = EMRSETBKCOLOR;
-     TEMRSETTEXTCOLOR = EMRSETBKCOLOR;
-     PEMRSETTEXTCOLOR = ^EMRSETBKCOLOR;
-
-     EMRSETCOLORADJUSTMENT = record
-          emr : EMR;
-          ColorAdjustment : COLORADJUSTMENT;
-       end;
-     tagEMRSETCOLORADJUSTMENT = EMRSETCOLORADJUSTMENT;
-     TEMRSETCOLORADJUSTMENT = EMRSETCOLORADJUSTMENT;
-     PEMRSETCOLORADJUSTMENT = ^EMRSETCOLORADJUSTMENT;
-
-     EMRSETDIBITSTODEVICE = record
-          emr : EMR;
-          rclBounds : RECTL;
-          xDest : LONG;
-          yDest : LONG;
-          xSrc : LONG;
-          ySrc : LONG;
-          cxSrc : LONG;
-          cySrc : LONG;
-          offBmiSrc : DWORD;
-          cbBmiSrc : DWORD;
-          offBitsSrc : DWORD;
-          cbBitsSrc : DWORD;
-          iUsageSrc : DWORD;
-          iStartScan : DWORD;
-          cScans : DWORD;
-       end;
-     tagEMRSETDIBITSTODEVICE = EMRSETDIBITSTODEVICE;
-     TEMRSETDIBITSTODEVICE = EMRSETDIBITSTODEVICE;
-     PEMRSETDIBITSTODEVICE = ^EMRSETDIBITSTODEVICE;
-
-     EMRSETMAPPERFLAGS = record
-          emr : EMR;
-          dwFlags : DWORD;
-       end;
-     tagEMRSETMAPPERFLAGS = EMRSETMAPPERFLAGS;
-     TEMRSETMAPPERFLAGS = EMRSETMAPPERFLAGS;
-     PEMRSETMAPPERFLAGS = ^EMRSETMAPPERFLAGS;
-
-     EMRSETMITERLIMIT = record
-          emr : EMR;
-          eMiterLimit : Single;
-       end;
-     tagEMRSETMITERLIMIT = EMRSETMITERLIMIT;
-     TEMRSETMITERLIMIT = EMRSETMITERLIMIT;
-     PEMRSETMITERLIMIT = ^EMRSETMITERLIMIT;
-
-     EMRSETPALETTEENTRIES = record
-          emr : EMR;
-          ihPal : DWORD;
-          iStart : DWORD;
-          cEntries : DWORD;
-          aPalEntries : array[0..0] of PALETTEENTRY;
-       end;
-     tagEMRSETPALETTEENTRIES = EMRSETPALETTEENTRIES;
-     TEMRSETPALETTEENTRIES = EMRSETPALETTEENTRIES;
-     PEMRSETPALETTEENTRIES = ^EMRSETPALETTEENTRIES;
-
-     EMRSETPIXELV = record
-          emr : EMR;
-          ptlPixel : POINTL;
-          crColor : COLORREF;
-       end;
-     tagEMRSETPIXELV = EMRSETPIXELV;
-     TEMRSETPIXELV = EMRSETPIXELV;
-     PEMRSETPIXELV = ^EMRSETPIXELV;
-
-     EMRSETVIEWPORTEXTEX = record
-          emr : EMR;
-          szlExtent : SIZEL;
-       end;
-     tagEMRSETVIEWPORTEXTEX = EMRSETVIEWPORTEXTEX;
-     TEMRSETVIEWPORTEXTEX = EMRSETVIEWPORTEXTEX;
-     PEMRSETVIEWPORTEXTEX = ^EMRSETVIEWPORTEXTEX;
-
-     EMRSETWINDOWEXTEX = EMRSETVIEWPORTEXTEX;
-     TEMRSETWINDOWEXTEX = EMRSETVIEWPORTEXTEX;
-     PEMRSETWINDOWEXTEX = ^EMRSETVIEWPORTEXTEX;
-
-     EMRSETVIEWPORTORGEX = record
-          emr : EMR;
-          ptlOrigin : POINTL;
-       end;
-     tagEMRSETVIEWPORTORGEX = EMRSETVIEWPORTORGEX;
-     TEMRSETVIEWPORTORGEX = EMRSETVIEWPORTORGEX;
-     PEMRSETVIEWPORTORGEX = ^EMRSETVIEWPORTORGEX;
-
-     EMRSETWINDOWORGEX = EMRSETVIEWPORTORGEX;
-     TEMRSETWINDOWORGEX = EMRSETVIEWPORTORGEX;
-     PEMRSETWINDOWORGEX = ^EMRSETVIEWPORTORGEX;
-
-     EMRSETBRUSHORGEX = EMRSETVIEWPORTORGEX;
-     TEMRSETBRUSHORGEX = EMRSETVIEWPORTORGEX;
-     PEMRSETBRUSHORGEX = ^EMRSETVIEWPORTORGEX;
-
-     EMRSETWORLDTRANSFORM = record
-          emr : EMR;
-          xform : XFORM;
-       end;
-     tagEMRSETWORLDTRANSFORM = EMRSETWORLDTRANSFORM;
-     TEMRSETWORLDTRANSFORM = EMRSETWORLDTRANSFORM;
-     PEMRSETWORLDTRANSFORM = ^EMRSETWORLDTRANSFORM;
-
-     EMRSTRETCHBLT = record
-          emr : EMR;
-          rclBounds : RECTL;
-          xDest : LONG;
-          yDest : LONG;
-          cxDest : LONG;
-          cyDest : LONG;
-          dwRop : DWORD;
-          xSrc : LONG;
-          ySrc : LONG;
-          xformSrc : XFORM;
-          crBkColorSrc : COLORREF;
-          iUsageSrc : DWORD;
-          offBmiSrc : DWORD;
-          cbBmiSrc : DWORD;
-          offBitsSrc : DWORD;
-          cbBitsSrc : DWORD;
-          cxSrc : LONG;
-          cySrc : LONG;
-       end;
-     tagEMRSTRETCHBLT = EMRSTRETCHBLT;
-     TEMRSTRETCHBLT = EMRSTRETCHBLT;
-     PEMRSTRETCHBLT = ^EMRSTRETCHBLT;
-
-     EMRSTRETCHDIBITS = record
-          emr : EMR;
-          rclBounds : RECTL;
-          xDest : LONG;
-          yDest : LONG;
-          xSrc : LONG;
-          ySrc : LONG;
-          cxSrc : LONG;
-          cySrc : LONG;
-          offBmiSrc : DWORD;
-          cbBmiSrc : DWORD;
-          offBitsSrc : DWORD;
-          cbBitsSrc : DWORD;
-          iUsageSrc : DWORD;
-          dwRop : DWORD;
-          cxDest : LONG;
-          cyDest : LONG;
-       end;
-     tagEMRSTRETCHDIBITS = EMRSTRETCHDIBITS;
-     TEMRSTRETCHDIBITS = EMRSTRETCHDIBITS;
-     PEMRSTRETCHDIBITS = ^EMRSTRETCHDIBITS;
-
-     EMRABORTPATH = record
-          emr : EMR;
-       end;
-     TEMRABORTPATH = EMRABORTPATH;
-     PEMRABORTPATH = ^EMRABORTPATH;
-
-     tagABORTPATH = EMRABORTPATH;
-     TABORTPATH = EMRABORTPATH;
-
-     EMRBEGINPATH = EMRABORTPATH;
-     TEMRBEGINPATH = EMRABORTPATH;
-     PEMRBEGINPATH = ^EMRABORTPATH;
-
-     EMRENDPATH = EMRABORTPATH;
-     TEMRENDPATH = EMRABORTPATH;
-     PEMRENDPATH = ^EMRABORTPATH;
-
-     EMRCLOSEFIGURE = EMRABORTPATH;
-     TEMRCLOSEFIGURE = EMRABORTPATH;
-     PEMRCLOSEFIGURE = ^EMRABORTPATH;
-
-     EMRFLATTENPATH = EMRABORTPATH;
-     TEMRFLATTENPATH = EMRABORTPATH;
-     PEMRFLATTENPATH = ^EMRABORTPATH;
-
-     EMRWIDENPATH = EMRABORTPATH;
-     TEMRWIDENPATH = EMRABORTPATH;
-     PEMRWIDENPATH = ^EMRABORTPATH;
-
-     EMRSETMETARGN = EMRABORTPATH;
-     TEMRSETMETARGN = EMRABORTPATH;
-     PEMRSETMETARGN = ^EMRABORTPATH;
-
-     EMRSAVEDC = EMRABORTPATH;
-     TEMRSAVEDC = EMRABORTPATH;
-     PEMRSAVEDC = ^EMRABORTPATH;
-
-     EMRREALIZEPALETTE = EMRABORTPATH;
-     TEMRREALIZEPALETTE = EMRABORTPATH;
-     PEMRREALIZEPALETTE = ^EMRABORTPATH;
-
-     EMRSELECTCLIPPATH = record
-          emr : EMR;
-          iMode : DWORD;
-       end;
-     tagEMRSELECTCLIPPATH = EMRSELECTCLIPPATH;
-     TEMRSELECTCLIPPATH = EMRSELECTCLIPPATH;
-     PEMRSELECTCLIPPATH = ^EMRSELECTCLIPPATH;
-
-     EMRSETBKMODE = EMRSELECTCLIPPATH;
-     TEMRSETBKMODE = EMRSELECTCLIPPATH;
-     PEMRSETBKMODE = ^EMRSELECTCLIPPATH;
-
-     EMRSETMAPMODE = EMRSELECTCLIPPATH;
-     TEMRSETMAPMODE = EMRSELECTCLIPPATH;
-     PEMRSETMAPMODE = ^EMRSELECTCLIPPATH;
-
-     EMRSETPOLYFILLMODE = EMRSELECTCLIPPATH;
-     TEMRSETPOLYFILLMODE = EMRSELECTCLIPPATH;
-     PEMRSETPOLYFILLMODE = ^EMRSELECTCLIPPATH;
-
-     EMRSETROP2 = EMRSELECTCLIPPATH;
-     TEMRSETROP2 = EMRSELECTCLIPPATH;
-     PEMRSETROP2 = ^EMRSELECTCLIPPATH;
-
-     EMRSETSTRETCHBLTMODE = EMRSELECTCLIPPATH;
-     TEMRSETSTRETCHBLTMODE = EMRSELECTCLIPPATH;
-     PEMRSETSTRETCHBLTMODE = ^EMRSELECTCLIPPATH;
-
-     EMRSETTEXTALIGN = EMRSELECTCLIPPATH;
-     TEMRSETTEXTALIGN = EMRSELECTCLIPPATH;
-     PEMRSETTEXTALIGN = ^EMRSELECTCLIPPATH;
-
-     EMRENABLEICM = EMRSELECTCLIPPATH;
-     TEMRENABLEICM = EMRSELECTCLIPPATH;
-     PEMRENABLEICM = ^EMRSELECTCLIPPATH;
-
-     NMHDR = record
-          hwndFrom : HWND;
-          idFrom : UINT;
-          code : UINT;
-       end;
-     tagNMHDR = NMHDR;
-     TNMHDR = NMHDR;
-     PNMHDR = ^NMHDR;
-
-     ENCORRECTTEXT = record
-          nmhdr : NMHDR;
-          chrg : CHARRANGE;
-          seltyp : WORD;
-       end;
-     _encorrecttext = ENCORRECTTEXT;
-     Tencorrecttext = ENCORRECTTEXT;
-     Pencorrecttext = ^ENCORRECTTEXT;
-
-     ENDROPFILES = record
-          nmhdr : NMHDR;
-          hDrop : HANDLE;
-          cp : LONG;
-          fProtected : WINBOOL;
-       end;
-     _endropfiles = ENDROPFILES;
-     Tendropfiles = ENDROPFILES;
-     Pendropfiles = ^ENDROPFILES;
-
-     ENSAVECLIPBOARD = record
-          nmhdr : NMHDR;
-          cObjectCount : LONG;
-          cch : LONG;
-       end;
-     TENSAVECLIPBOARD = ENSAVECLIPBOARD;
-     PENSAVECLIPBOARD = ^ENSAVECLIPBOARD;
-
-     ENOLEOPFAILED = record
-          nmhdr : NMHDR;
-          iob : LONG;
-          lOper : LONG;
-          hr : HRESULT;
-       end;
-     TENOLEOPFAILED = ENOLEOPFAILED;
-     PENOLEOPFAILED = ^ENOLEOPFAILED;
-
-     ENHMETAHEADER = record
-          iType : DWORD;
-          nSize : DWORD;
-          rclBounds : RECTL;
-          rclFrame : RECTL;
-          dSignature : DWORD;
-          nVersion : DWORD;
-          nBytes : DWORD;
-          nRecords : DWORD;
-          nHandles : WORD;
-          sReserved : WORD;
-          nDescription : DWORD;
-          offDescription : DWORD;
-          nPalEntries : DWORD;
-          szlDevice : SIZEL;
-          szlMillimeters : SIZEL;
-       end;
-     LPENHMETAHEADER = ^ENHMETAHEADER;
-     tagENHMETAHEADER = ENHMETAHEADER;
-     TENHMETAHEADER = ENHMETAHEADER;
-     PENHMETAHEADER = ^ENHMETAHEADER;
-
-     ENHMETARECORD = record
-          iType : DWORD;
-          nSize : DWORD;
-          dParm : array[0..0] of DWORD;
-       end;
-     LPENHMETARECORD = ^ENHMETARECORD;
-     tagENHMETARECORD = ENHMETARECORD;
-     TENHMETARECORD = ENHMETARECORD;
-     PENHMETARECORD = ^ENHMETARECORD;
-
-     ENPROTECTED = record
-          nmhdr : NMHDR;
-          msg : UINT;
-          wParam : WPARAM;
-          lParam : LPARAM;
-          chrg : CHARRANGE;
-       end;
-     _enprotected = ENPROTECTED;
-     Tenprotected = ENPROTECTED;
-     Penprotected = ^ENPROTECTED;
-
-     SERVICE_STATUS = record
-          dwServiceType : DWORD;
-          dwCurrentState : DWORD;
-          dwControlsAccepted : DWORD;
-          dwWin32ExitCode : DWORD;
-          dwServiceSpecificExitCode : DWORD;
-          dwCheckPoint : DWORD;
-          dwWaitHint : DWORD;
-       end;
-     LPSERVICE_STATUS = ^SERVICE_STATUS;
-     _SERVICE_STATUS = SERVICE_STATUS;
-     TSERVICESTATUS = SERVICE_STATUS;
-     PSERVICESTATUS = ^SERVICE_STATUS;
-
-     ENUM_SERVICE_STATUS = record
-          lpServiceName : LPTSTR;
-          lpDisplayName : LPTSTR;
-          ServiceStatus : SERVICE_STATUS;
-       end;
-     LPENUM_SERVICE_STATUS = ^ENUM_SERVICE_STATUS;
-     _ENUM_SERVICE_STATUS = ENUM_SERVICE_STATUS;
-     TENUMSERVICESTATUS = ENUM_SERVICE_STATUS;
-     PENUMSERVICESTATUS = ^ENUM_SERVICE_STATUS;
-
-     ENUMLOGFONT = record
-          elfLogFont : LOGFONT;
-          elfFullName : array[0..(LF_FULLFACESIZE)-1] of BCHAR;
-          elfStyle : array[0..(LF_FACESIZE)-1] of BCHAR;
-       end;
-     tagENUMLOGFONT = ENUMLOGFONT;
-     TENUMLOGFONT = ENUMLOGFONT;
-     PENUMLOGFONT = ^ENUMLOGFONT;
-
-     ENUMLOGFONTEX = record
-          elfLogFont : LOGFONT;
-          elfFullName : array[0..(LF_FULLFACESIZE)-1] of BCHAR;
-          elfStyle : array[0..(LF_FACESIZE)-1] of BCHAR;
-          elfScript : array[0..(LF_FACESIZE)-1] of BCHAR;
-       end;
-     tagENUMLOGFONTEX = ENUMLOGFONTEX;
-     TENUMLOGFONTEX = ENUMLOGFONTEX;
-     PENUMLOGFONTEX = ^ENUMLOGFONTEX;
-  {
-    Then follow:
-
-    TCHAR SourceName[]
-    TCHAR Computername[]
-    SID   UserSid
-    TCHAR Strings[]
-    BYTE  Data[]
-    CHAR  Pad[]
-    DWORD Length;
-   }
-
-     EVENTLOGRECORD = record
-          Length : DWORD;
-          Reserved : DWORD;
-          RecordNumber : DWORD;
-          TimeGenerated : DWORD;
-          TimeWritten : DWORD;
-          EventID : DWORD;
-          EventType : WORD;
-          NumStrings : WORD;
-          EventCategory : WORD;
-          ReservedFlags : WORD;
-          ClosingRecordNumber : DWORD;
-          StringOffset : DWORD;
-          UserSidLength : DWORD;
-          UserSidOffset : DWORD;
-          DataLength : DWORD;
-          DataOffset : DWORD;
-       end;
-     _EVENTLOGRECORD = EVENTLOGRECORD;
-     TEVENTLOGRECORD = EVENTLOGRECORD;
-     PEVENTLOGRECORD = ^EVENTLOGRECORD;
-
-     EVENTMSG = record
-          message : UINT;
-          paramL : UINT;
-          paramH : UINT;
-          time : DWORD;
-          hwnd : HWND;
-       end;
-     tagEVENTMSG = EVENTMSG;
-     TEVENTMSG = EVENTMSG;
-     PEVENTMSG = ^EVENTMSG;
-
-     EXCEPTION_POINTERS = record                //winnt
-          ExceptionRecord : PEXCEPTION_RECORD;
-          ContextRecord : PCONTEXT;
-       end;
-     LPEXCEPTION_POINTERS = ^EXCEPTION_POINTERS;
-     PEXCEPTION_POINTERS = ^EXCEPTION_POINTERS;
-     _EXCEPTION_POINTERS = EXCEPTION_POINTERS;
-     TEXCEPTIONPOINTERS = EXCEPTION_POINTERS;
-     PEXCEPTIONPOINTERS = ^EXCEPTION_POINTERS;
-
-     EXT_BUTTON = record
-          idCommand : WORD;
-          idsHelp : WORD;
-          fsStyle : WORD;
-       end;
-     LPEXT_BUTTON = ^EXT_BUTTON;
-     _EXT_BUTTON = EXT_BUTTON;
-     TEXTBUTTON = EXT_BUTTON;
-     PEXTBUTTON = ^EXT_BUTTON;
-
-     FILTERKEYS = record
-          cbSize : UINT;
-          dwFlags : DWORD;
-          iWaitMSec : DWORD;
-          iDelayMSec : DWORD;
-          iRepeatMSec : DWORD;
-          iBounceMSec : DWORD;
-       end;
-     tagFILTERKEYS = FILTERKEYS;
-     TFILTERKEYS = FILTERKEYS;
-     PFILTERKEYS = ^FILTERKEYS;
-
-     FIND_NAME_BUFFER = record
-          length : UCHAR;
-          access_control : UCHAR;
-          frame_control : UCHAR;
-          destination_addr : array[0..5] of UCHAR;
-          source_addr : array[0..5] of UCHAR;
-          routing_info : array[0..17] of UCHAR;
-       end;
-     _FIND_NAME_BUFFER = FIND_NAME_BUFFER;
-     TFINDNAMEBUFFER = FIND_NAME_BUFFER;
-     PFINDNAMEBUFFER = ^FIND_NAME_BUFFER;
-
-     FIND_NAME_HEADER = record
-          node_count : WORD;
-          reserved : UCHAR;
-          unique_group : UCHAR;
-       end;
-     _FIND_NAME_HEADER = FIND_NAME_HEADER;
-     TFINDNAMEHEADER = FIND_NAME_HEADER;
-     PFINDNAMEHEADER = ^FIND_NAME_HEADER;
-
-     FINDREPLACE = record
-          lStructSize : DWORD;
-          hwndOwner : HWND;
-          hInstance : HINST;
-          Flags : DWORD;
-          lpstrFindWhat : LPTSTR;
-          lpstrReplaceWith : LPTSTR;
-          wFindWhatLen : WORD;
-          wReplaceWithLen : WORD;
-          lCustData : LPARAM;
-          lpfnHook : LPFRHOOKPROC;
-          lpTemplateName : LPCTSTR;
-       end;
-     LPFINDREPLACE = ^FINDREPLACE;
-     TFINDREPLACE = FINDREPLACE;
-     PFINDREPLACE = ^FINDREPLACE;
-
-     {FINDTEXT = record conflicts with FindText function }
-     TFINDTEXT = record
-          chrg : CHARRANGE;
-          lpstrText : LPSTR;
-       end;
-     _findtext = TFINDTEXT;
-     Pfindtext = ^TFINDTEXT;
-
-     FINDTEXTEX = record
-          chrg : CHARRANGE;
-          lpstrText : LPSTR;
-          chrgText : CHARRANGE;
-       end;
-     _findtextex = FINDTEXTEX;
-     Tfindtextex = FINDTEXTEX;
-     Pfindtextex = ^FINDTEXTEX;
-
-     FMS_GETDRIVEINFO = record
-          dwTotalSpace : DWORD;
-          dwFreeSpace : DWORD;
-          szPath : array[0..259] of TCHAR;
-          szVolume : array[0..13] of TCHAR;
-          szShare : array[0..127] of TCHAR;
-       end;
-     _FMS_GETDRIVEINFO = FMS_GETDRIVEINFO;
-     TFMSGETDRIVEINFO = FMS_GETDRIVEINFO;
-     PFMSGETDRIVEINFO = ^FMS_GETDRIVEINFO;
-
-     FMS_GETFILESEL = record
-          ftTime : FILETIME;
-          dwSize : DWORD;
-          bAttr : BYTE;
-          szName : array[0..259] of TCHAR;
-       end;
-     _FMS_GETFILESEL = FMS_GETFILESEL;
-     TFMSGETFILESEL = FMS_GETFILESEL;
-     PFMSGETFILESEL = ^FMS_GETFILESEL;
-
-     FMS_LOAD = record
-          dwSize : DWORD;
-          szMenuName : array[0..(MENU_TEXT_LEN)-1] of TCHAR;
-          hMenu : HMENU;
-          wMenuDelta : UINT;
-       end;
-     _FMS_LOAD = FMS_LOAD;
-     TFMSLOAD = FMS_LOAD;
-     PFMSLOAD = ^FMS_LOAD;
-
-     FMS_TOOLBARLOAD = record
-          dwSize : DWORD;
-          lpButtons : LPEXT_BUTTON;
-          cButtons : WORD;
-          cBitmaps : WORD;
-          idBitmap : WORD;
-          hBitmap : HBITMAP;
-       end;
-     _FMS_TOOLBARLOAD = FMS_TOOLBARLOAD;
-     TFMSTOOLBARLOAD = FMS_TOOLBARLOAD;
-     PFMSTOOLBARLOAD = ^FMS_TOOLBARLOAD;
-
-     FOCUS_EVENT_RECORD = record
-          bSetFocus : WINBOOL;
-       end;
-     _FOCUS_EVENT_RECORD = FOCUS_EVENT_RECORD;
-     TFOCUSEVENTRECORD = FOCUS_EVENT_RECORD;
-     PFOCUSEVENTRECORD = ^FOCUS_EVENT_RECORD;
-
-     FORM_INFO_1 = record
-          Flags : DWORD;
-          pName : LPTSTR;
-          Size : SIZEL;
-          ImageableArea : RECTL;
-       end;
-     _FORM_INFO_1 = FORM_INFO_1;
-     TFORMINFO1 = FORM_INFO_1;
-     PFORMINFO1 = ^FORM_INFO_1;
-
-     FORMAT_PARAMETERS = record
-          MediaType : MEDIA_TYPE;
-          StartCylinderNumber : DWORD;
-          EndCylinderNumber : DWORD;
-          StartHeadNumber : DWORD;
-          EndHeadNumber : DWORD;
-       end;
-     _FORMAT_PARAMETERS = FORMAT_PARAMETERS;
-     TFORMATPARAMETERS = FORMAT_PARAMETERS;
-     PFORMATPARAMETERS = ^FORMAT_PARAMETERS;
-
-     FORMATRANGE = record
-          _hdc : HDC;
-          hdcTarget : HDC;
-          rc : RECT;
-          rcPage : RECT;
-          chrg : CHARRANGE;
-       end;
-     _formatrange = FORMATRANGE;
-     Tformatrange = FORMATRANGE;
-     Pformatrange = ^FORMATRANGE;
-
-     GCP_RESULTS = record
-          lStructSize : DWORD;
-          lpOutString : LPTSTR;
-          lpOrder : ^UINT;
-          lpDx : ^WINT;
-          lpCaretPos : ^WINT;
-          lpClass : LPTSTR;
-          lpGlyphs : ^UINT;
-          nGlyphs : UINT;
-          nMaxFit : UINT;
-       end;
-     LPGCP_RESULTS = ^GCP_RESULTS;
-     tagGCP_RESULTS = GCP_RESULTS;
-     TGCPRESULTS = GCP_RESULTS;
-     PGCPRESULTS = ^GCP_RESULTS;
-//
-//  Define the generic mapping array.  This is used to denote the
-//  mapping of each generic access right to a specific access mask.
-//
-     GENERIC_MAPPING = record       //winnt
-          GenericRead : ACCESS_MASK;
-          GenericWrite : ACCESS_MASK;
-          GenericExecute : ACCESS_MASK;
-          GenericAll : ACCESS_MASK;
-       end;
-     PGENERIC_MAPPING = ^GENERIC_MAPPING;
-     _GENERIC_MAPPING = GENERIC_MAPPING;
-     TGENERICMAPPING = GENERIC_MAPPING;
-     PGENERICMAPPING = ^GENERIC_MAPPING;
-
-     GLYPHMETRICS = record
-          gmBlackBoxX : UINT;
-          gmBlackBoxY : UINT;
-          gmptGlyphOrigin : POINT;
-          gmCellIncX : integer;
-          gmCellIncY : integer;
-       end;
-     LPGLYPHMETRICS = ^GLYPHMETRICS;
-     _GLYPHMETRICS = GLYPHMETRICS;
-     TGLYPHMETRICS = GLYPHMETRICS;
-     PGLYPHMETRICS = ^GLYPHMETRICS;
-
-     HANDLETABLE = record
-          objectHandle : array[0..0] of HGDIOBJ;
-       end;
-     tagHANDLETABLE = HANDLETABLE;
-     THANDLETABLE = HANDLETABLE;
-     LPHANDLETABLE = ^HANDLETABLE;
-
-     HD_HITTESTINFO = record
-          pt : POINT;
-          flags : UINT;
-          iItem : longint;
-       end;
-     _HD_HITTESTINFO = HD_HITTESTINFO;
-     THDHITTESTINFO = HD_HITTESTINFO;
-     PHDHITTESTINFO = ^HD_HITTESTINFO;
-
-     HD_ITEM = record
-          mask : UINT;
-          cxy : longint;
-          pszText : LPTSTR;
-          hbm : HBITMAP;
-          cchTextMax : longint;
-          fmt : longint;
-          lParam : LPARAM;
-       end;
-     _HD_ITEM = HD_ITEM;
-     THDITEM = HD_ITEM;
-     PHDITEM = ^HD_ITEM;
-
-     WINDOWPOS = record
-          _hwnd : HWND;
-          hwndInsertAfter : HWND;
-          x : longint;
-          y : longint;
-          cx : longint;
-          cy : longint;
-          flags : UINT;
-       end;
-     LPWINDOWPOS = ^WINDOWPOS;
-     _WINDOWPOS = WINDOWPOS;
-     TWINDOWPOS = WINDOWPOS;
-     PWINDOWPOS = ^WINDOWPOS;
-
-     HD_LAYOUT = record
-          prc : ^RECT;
-          pwpos : ^WINDOWPOS;
-       end;
-     _HD_LAYOUT = HD_LAYOUT;
-     THDLAYOUT = HD_LAYOUT;
-     PHDLAYOUT = ^HD_LAYOUT;
-
-     HD_NOTIFY = record
-          hdr : NMHDR;
-          iItem : longint;
-          iButton : longint;
-          pitem : ^HD_ITEM;
-       end;
-     _HD_NOTIFY = HD_NOTIFY;
-     THDNOTIFY = HD_NOTIFY;
-     PHDNOTIFY = ^HD_NOTIFY;
-
-     HELPINFO = record
-          cbSize : UINT;
-          iContextType : longint;
-          iCtrlId : longint;
-          hItemHandle : HANDLE;
-          dwContextId : DWORD;
-          MousePos : POINT;
-       end;
-     LPHELPINFO = ^HELPINFO;
-     tagHELPINFO = HELPINFO;
-     THELPINFO = HELPINFO;
-     PHELPINFO = ^HELPINFO;
-
-     HELPWININFO = record
-          wStructSize : longint;
-          x : longint;
-          y : longint;
-          dx : longint;
-          dy : longint;
-          wMax : longint;
-          rgchMember : array[0..1] of TCHAR;
-       end;
-     THELPWININFO = HELPWININFO;
-     PHELPWININFO = ^HELPWININFO;
-
-     HIGHCONTRAST = record
-          cbSize : UINT;
-          dwFlags : DWORD;
-          lpszDefaultScheme : LPTSTR;
-       end;
-     LPHIGHCONTRAST = ^HIGHCONTRAST;
-     tagHIGHCONTRAST = HIGHCONTRAST;
-     THIGHCONTRAST = HIGHCONTRAST;
-     PHIGHCONTRAST = ^HIGHCONTRAST;
-
-     HSZPAIR = record
-          hszSvc : HSZ;
-          hszTopic : HSZ;
-       end;
-     tagHSZPAIR = HSZPAIR;
-     THSZPAIR = HSZPAIR;
-     PHSZPAIR = ^HSZPAIR;
-
-     ICONINFO = record
-          fIcon : WINBOOL;
-          xHotspot : DWORD;
-          yHotspot : DWORD;
-          hbmMask : HBITMAP;
-          hbmColor : HBITMAP;
-       end;
-     _ICONINFO = ICONINFO;
-     TICONINFO = ICONINFO;
-     PICONINFO = ^ICONINFO;
-
-     ICONMETRICS = record
-          cbSize : UINT;
-          iHorzSpacing : longint;
-          iVertSpacing : longint;
-          iTitleWrap : longint;
-          lfFont : LOGFONT;
-       end;
-     LPICONMETRICS = ^ICONMETRICS;
-     tagICONMETRICS = ICONMETRICS;
-     TICONMETRICS = ICONMETRICS;
-     PICONMETRICS = ^ICONMETRICS;
-
-     IMAGELISTDRAWPARAMS = record  //+commctrl
-          cbSize : DWORD;
-          himl : HIMAGELIST;
-          i : Integer;
-          hdcDst : HDC;
-          x : Integer;
-          y : Integer;
-          cx : Integer;
-          cy : Integer;
-          xBitmap : Integer;        // x offest from the upperleft of bitmap
-          yBitmap : Integer;        // y offset from the upperleft of bitmap
-          rgbBk  : COLORREF;
-          rgbFg  : COLORREF;
-          fStyle  : UINT;
-          dwRop : DWORD;
-       end;  
-       
-     _IMAGELISTDRAWPARAMS=IMAGELISTDRAWPARAMS;
-     PIMAGELISTDRAWPARAMS=^IMAGELISTDRAWPARAMS;
-
-     IMAGEINFO = record
-          hbmImage : HBITMAP;
-          hbmMask : HBITMAP;
-          Unused1 : longint;
-          Unused2 : longint;
-          rcImage : RECT;
-       end;
-     _IMAGEINFO = IMAGEINFO;
-     TIMAGEINFO = IMAGEINFO;
-     PIMAGEINFO = ^IMAGEINFO;
-
-     KEY_EVENT_RECORD = packed record
-          bKeyDown : WINBOOL;
-          wRepeatCount : WORD;
-          wVirtualKeyCode : WORD;
-          wVirtualScanCode : WORD;
-          case longint of
-             0 : ( UnicodeChar : WCHAR;
-                   dwControlKeyState : DWORD; );
-             1 : ( AsciiChar : CHAR );
-       end;
-     _KEY_EVENT_RECORD = KEY_EVENT_RECORD;
-     TKEYEVENTRECORD = KEY_EVENT_RECORD;
-     PKEYEVENTRECORD = ^KEY_EVENT_RECORD;
-
-     MOUSE_EVENT_RECORD = record
-          dwMousePosition : COORD;
-          dwButtonState : DWORD;
-          dwControlKeyState : DWORD;
-          dwEventFlags : DWORD;
-       end;
-     _MOUSE_EVENT_RECORD = MOUSE_EVENT_RECORD;
-     TMOUSEEVENTRECORD = MOUSE_EVENT_RECORD;
-     PMOUSEEVENTRECORD = ^MOUSE_EVENT_RECORD;
-
-     WINDOW_BUFFER_SIZE_RECORD = record
-          dwSize : COORD;
-       end;
-     _WINDOW_BUFFER_SIZE_RECORD = WINDOW_BUFFER_SIZE_RECORD;
-     TWINDOWBUFFERSIZERECORD = WINDOW_BUFFER_SIZE_RECORD;
-     PWINDOWBUFFERSIZERECORD = ^WINDOW_BUFFER_SIZE_RECORD;
-
-     MENU_EVENT_RECORD = record
-          dwCommandId : UINT;
-       end;
-     PMENU_EVENT_RECORD = ^MENU_EVENT_RECORD;
-     _MENU_EVENT_RECORD = MENU_EVENT_RECORD;
-     TMENUEVENTRECORD = MENU_EVENT_RECORD;
-     PMENUEVENTRECORD = ^MENU_EVENT_RECORD;
-
-     INPUT_RECORD = record
-          EventType: Word;
-          Reserved: Word;
-          Event : record case longint of
-                 0 : ( KeyEvent : KEY_EVENT_RECORD );
-                 1 : ( MouseEvent : MOUSE_EVENT_RECORD );
-                 2 : ( WindowBufferSizeEvent : WINDOW_BUFFER_SIZE_RECORD );
-                 3 : ( MenuEvent : MENU_EVENT_RECORD );
-                 4 : ( FocusEvent : FOCUS_EVENT_RECORD );
-       end;
-      end;
-     PINPUT_RECORD = ^INPUT_RECORD;
-     _INPUT_RECORD = INPUT_RECORD;
-     TINPUTRECORD = INPUT_RECORD;
-     PINPUTRECORD = ^INPUT_RECORD;
-
-     SYSTEMTIME = record
-          case integer of
-           1 : (
-             wYear : WORD;
-             wMonth : WORD;
-             wDayOfWeek : WORD;
-             wDay : WORD;
-             wHour : WORD;
-             wMinute : WORD;
-             wSecond : WORD;
-             wMilliseconds : WORD;
-               );
-           { Compatibility for FPC }
-           2 : (
-             Year : WORD;
-             Month : WORD;
-             DayOfWeek : WORD;
-             Day : WORD;
-             Hour : WORD;
-             Minute : WORD;
-             Second : WORD;
-             Millisecond : WORD;
-               );
-       end;
-     LPSYSTEMTIME = ^SYSTEMTIME;
-     _SYSTEMTIME = SYSTEMTIME;
-     TSYSTEMTIME = SYSTEMTIME;
-     PSYSTEMTIME = ^SYSTEMTIME;
-
-     JOB_INFO_1 = record
-          JobId : DWORD;
-          pPrinterName : LPTSTR;
-          pMachineName : LPTSTR;
-          pUserName : LPTSTR;
-          pDocument : LPTSTR;
-          pDatatype : LPTSTR;
-          pStatus : LPTSTR;
-          Status : DWORD;
-          Priority : DWORD;
-          Position : DWORD;
-          TotalPages : DWORD;
-          PagesPrinted : DWORD;
-          Submitted : SYSTEMTIME;
-       end;
-     _JOB_INFO_1 = JOB_INFO_1;
-     TJOBINFO1 = JOB_INFO_1;
-     PJOBINFO1 = ^JOB_INFO_1;
-
-     SID_AND_ATTRIBUTES = record  //~winnt, moved with SID declarations
-          Sid : PSID;
-          Attributes : DWORD;
-       end;
-     _SID_AND_ATTRIBUTES = SID_AND_ATTRIBUTES;
-     TSIDANDATTRIBUTES = SID_AND_ATTRIBUTES;
-     PSIDANDATTRIBUTES = ^SID_AND_ATTRIBUTES;
-
-     SID_AND_ATTRIBUTES_ARRAY = array[0..(ANYSIZE_ARRAY)-1] of SID_AND_ATTRIBUTES; //winnt
-     PSID_AND_ATTRIBUTES_ARRAY = ^SID_AND_ATTRIBUTES_ARRAY;
-     TSIDANDATTRIBUTESARRAY = SID_AND_ATTRIBUTES_ARRAY;
-     PSIDANDATTRIBUTESARRAY = ^SID_AND_ATTRIBUTES_ARRAY;
-
-     SECURITY_DESCRIPTOR_CONTROL = WORD;
-     PSECURITY_DESCRIPTOR_CONTROL = ^SECURITY_DESCRIPTOR_CONTROL;
-     TSECURITYDESCRIPTORCONTROL = SECURITY_DESCRIPTOR_CONTROL;
-     PSECURITYDESCRIPTORCONTROL = ^SECURITY_DESCRIPTOR_CONTROL;
-
-     SECURITY_DESCRIPTOR = record
-          Revision : BYTE;
-          Sbz1 : BYTE;
-          Control : SECURITY_DESCRIPTOR_CONTROL;
-          Owner : PSID;
-          Group : PSID;
-          Sacl : PACL;
-          Dacl : PACL;
-       end;
-     PSECURITY_DESCRIPTOR = ^SECURITY_DESCRIPTOR;
-     _SECURITY_DESCRIPTOR = SECURITY_DESCRIPTOR;
-     TSECURITYDESCRIPTOR = SECURITY_DESCRIPTOR;
-     PSECURITYDESCRIPTOR = ^SECURITY_DESCRIPTOR;
-
-     JOB_INFO_2 = record
-          JobId : DWORD;
-          pPrinterName : LPTSTR;
-          pMachineName : LPTSTR;
-          pUserName : LPTSTR;
-          pDocument : LPTSTR;
-          pNotifyName : LPTSTR;
-          pDatatype : LPTSTR;
-          pPrintProcessor : LPTSTR;
-          pParameters : LPTSTR;
-          pDriverName : LPTSTR;
-          pDevMode : LPDEVMODE;
-          pStatus : LPTSTR;
-          pSecurityDescriptor : PSECURITY_DESCRIPTOR;
-          Status : DWORD;
-          Priority : DWORD;
-          Position : DWORD;
-          StartTime : DWORD;
-          UntilTime : DWORD;
-          TotalPages : DWORD;
-          Size : DWORD;
-          Submitted : SYSTEMTIME;
-          Time : DWORD;
-          PagesPrinted : DWORD;
-       end;
-     _JOB_INFO_2 = JOB_INFO_2;
-     TJOBINFO2 = JOB_INFO_2;
-     PJOBINFO2 = ^JOB_INFO_2;
-
-     KERNINGPAIR = record
-          wFirst : WORD;
-          wSecond : WORD;
-          iKernAmount : longint;
-       end;
-     LPKERNINGPAIR = ^KERNINGPAIR;
-     tagKERNINGPAIR = KERNINGPAIR;
-     TKERNINGPAIR = KERNINGPAIR;
-     PKERNINGPAIR = ^KERNINGPAIR;
-
-     LANA_ENUM = record
-          length : UCHAR;
-          lana : array[0..(MAX_LANA)-1] of UCHAR;
-       end;
-     _LANA_ENUM = LANA_ENUM;
-     TLANAENUM = LANA_ENUM;
-     PLANAENUM = ^LANA_ENUM;
-  const
-     bm_LDT_ENTRY_BaseMid = $FF;
-     bp_LDT_ENTRY_BaseMid = 0;
-     bm_LDT_ENTRY_Type = $1F00;
-     bp_LDT_ENTRY_Type = 8;
-     bm_LDT_ENTRY_Dpl = $6000;
-     bp_LDT_ENTRY_Dpl = 13;
-     bm_LDT_ENTRY_Pres = $8000;
-     bp_LDT_ENTRY_Pres = 15;
-     bm_LDT_ENTRY_LimitHi = $F0000;
-     bp_LDT_ENTRY_LimitHi = 16;
-     bm_LDT_ENTRY_Sys = $100000;
-     bp_LDT_ENTRY_Sys = 20;
-     bm_LDT_ENTRY_Reserved_0 = $200000;
-     bp_LDT_ENTRY_Reserved_0 = 21;
-     bm_LDT_ENTRY_Default_Big = $400000;
-     bp_LDT_ENTRY_Default_Big = 22;
-     bm_LDT_ENTRY_Granularity = $800000;
-     bp_LDT_ENTRY_Granularity = 23;
-     bm_LDT_ENTRY_BaseHi = $FF000000;
-     bp_LDT_ENTRY_BaseHi = 24;
-
-  type
-
-     LOCALESIGNATURE = record
-          lsUsb : array[0..3] of DWORD;
-          lsCsbDefault : array[0..1] of DWORD;
-          lsCsbSupported : array[0..1] of DWORD;
-       end;
-     tagLOCALESIGNATURE = LOCALESIGNATURE;
-     TLOCALESIGNATURE = LOCALESIGNATURE;
-     PLOCALESIGNATURE = ^LOCALESIGNATURE;
-
-     LOCALGROUP_MEMBERS_INFO_0 = record
-          lgrmi0_sid : PSID;
-       end;
-     _LOCALGROUP_MEMBERS_INFO_0 = LOCALGROUP_MEMBERS_INFO_0;
-     TLOCALGROUPMEMBERSINFO0 = LOCALGROUP_MEMBERS_INFO_0;
-     PLOCALGROUPMEMBERSINFO0 = ^LOCALGROUP_MEMBERS_INFO_0;
-
-     LOCALGROUP_MEMBERS_INFO_3 = record
-          lgrmi3_domainandname : LPWSTR;
-       end;
-     _LOCALGROUP_MEMBERS_INFO_3 = LOCALGROUP_MEMBERS_INFO_3;
-     TLOCALGROUPMEMBERSINFO3 = LOCALGROUP_MEMBERS_INFO_3;
-     PLOCALGROUPMEMBERSINFO3 = ^LOCALGROUP_MEMBERS_INFO_3;
-
-     FXPT16DOT16 = longint;
-     LPFXPT16DOT16 = ^FXPT16DOT16;
-     TFXPT16DOT16 = FXPT16DOT16;
-     PFXPT16DOT16 = ^FXPT16DOT16;
-
-     LUID_AND_ATTRIBUTES = record  //winnt
-          Luid : LUID;
-          Attributes : DWORD;
-       end;
-     _LUID_AND_ATTRIBUTES = LUID_AND_ATTRIBUTES;
-     TLUIDANDATTRIBUTES = LUID_AND_ATTRIBUTES;
-     PLUIDANDATTRIBUTES = ^LUID_AND_ATTRIBUTES;
-
-     LUID_AND_ATTRIBUTES_ARRAY = array[0..(ANYSIZE_ARRAY)-1] of LUID_AND_ATTRIBUTES;
-     PLUID_AND_ATTRIBUTES_ARRAY = ^LUID_AND_ATTRIBUTES_ARRAY;
-     TLUIDANDATTRIBUTESARRAY = LUID_AND_ATTRIBUTES_ARRAY;
-     PLUIDANDATTRIBUTESARRAY = ^LUID_AND_ATTRIBUTES_ARRAY;
-
-     LV_COLUMN = record
-          mask : UINT;
-          fmt : longint;
-          cx : longint;
-{$IFDEF UNICODE}
-          pszText : LPWSTR;
-{$ELSE UNICODE}
-          pszText : LPTSTR;
-{$ENDIF UNICODE}
-          cchTextMax : longint;
-          iSubItem : longint;
-          iImage : Longint;    //#if (_WIN32_IE >= 0x0300)
-          iOrder : longint;    //#if (_WIN32_IE >= 0x0300)
-       end;
-     _LV_COLUMN = LV_COLUMN;
-     TLVCOLUMN = LV_COLUMN;
-     PLVCOLUMN = ^LV_COLUMN;
-
-     LV_ITEM = record
-          mask : UINT;
-          iItem : longint;
-          iSubItem : longint;
-          state : UINT;
-          stateMask : UINT;
-{$IFDEF UNICODE}
-          pszText : LPWSTR;
-{$ELSE UNICODE}
-          pszText : LPTSTR;
-{$ENDIF UNICODE}
-          cchTextMax : longint;
-          iImage : longint;
-          lParam : LPARAM;
-          iIndent: Longint;    //#if (_WIN32_IE >= 0x0300)
-       end;
-     _LV_ITEM = LV_ITEM;
-     TLVITEM = LV_ITEM;
-     PLVITEM = ^LV_ITEM;
-
-     LV_DISPINFO = record
-          hdr : NMHDR;
-          item : LV_ITEM;
-       end;
-     tagLV_DISPINFO = LV_DISPINFO;
-     TLVDISPINFO = LV_DISPINFO;
-     PLVDISPINFO = ^LV_DISPINFO;
-
-     LV_FINDINFO = record
-          flags : UINT;
-          psz : LPCTSTR;
-          lParam : LPARAM;
-          pt : POINT;
-          vkDirection : UINT;
-       end;
-     _LV_FINDINFO = LV_FINDINFO;
-     TLVFINDINFO = LV_FINDINFO;
-     PLVFINDINFO = ^LV_FINDINFO;
-
-     LV_HITTESTINFO = record
-          pt : POINT;
-          flags : UINT;
-          iItem : longint;
-       end;
-     _LV_HITTESTINFO = LV_HITTESTINFO;
-     TLVHITTESTINFO = LV_HITTESTINFO;
-     PLVHITTESTINFO = ^LV_HITTESTINFO;
-
-     LV_KEYDOWN = record
-          hdr : NMHDR;
-          wVKey : WORD;
-          flags : UINT;
-       end;
-     tagLV_KEYDOWN = LV_KEYDOWN;
-     TLVKEYDOWN = LV_KEYDOWN;
-     PLVKEYDOWN = ^LV_KEYDOWN;
-
-     MAT2 = record
-          eM11 : FIXED;
-          eM12 : FIXED;
-          eM21 : FIXED;
-          eM22 : FIXED;
-       end;
-     _MAT2 = MAT2;
-     TMAT2 = MAT2;
-     PMAT2 = ^MAT2;
-
-     MDICREATESTRUCT = record
-          szClass : LPCTSTR;
-          szTitle : LPCTSTR;
-          hOwner : HANDLE;
-          x : longint;
-          y : longint;
-          cx : longint;
-          cy : longint;
-          style : DWORD;
-          lParam : LPARAM;
-       end;
-     LPMDICREATESTRUCT = ^MDICREATESTRUCT;
-     tagMDICREATESTRUCT = MDICREATESTRUCT;
-     TMDICREATESTRUCT = MDICREATESTRUCT;
-     PMDICREATESTRUCT = ^MDICREATESTRUCT;
-
-     MEASUREITEMSTRUCT = record
-          CtlType : UINT;
-          CtlID : UINT;
-          itemID : UINT;
-          itemWidth : UINT;
-          itemHeight : UINT;
-          itemData : DWORD;
-       end;
-     LPMEASUREITEMSTRUCT = ^MEASUREITEMSTRUCT;
-     tagMEASUREITEMSTRUCT = MEASUREITEMSTRUCT;
-     TMEASUREITEMSTRUCT = MEASUREITEMSTRUCT;
-     PMEASUREITEMSTRUCT = ^MEASUREITEMSTRUCT;
-
-     MEMORY_BASIC_INFORMATION = record
-          BaseAddress : PVOID;
-          AllocationBase : PVOID;
-          AllocationProtect : DWORD;
-          RegionSize : DWORD;
-          State : DWORD;
-          Protect : DWORD;
-          _Type : DWORD;
-       end;
-     PMEMORY_BASIC_INFORMATION = ^MEMORY_BASIC_INFORMATION;
-     _MEMORY_BASIC_INFORMATION = MEMORY_BASIC_INFORMATION;
-     TMEMORYBASICINFORMATION = MEMORY_BASIC_INFORMATION;
-     PMEMORYBASICINFORMATION = ^MEMORY_BASIC_INFORMATION;
-
-     MEMORYSTATUS = record
-          dwLength : DWORD;
-          dwMemoryLoad : DWORD;
-          dwTotalPhys : DWORD;
-          dwAvailPhys : DWORD;
-          dwTotalPageFile : DWORD;
-          dwAvailPageFile : DWORD;
-          dwTotalVirtual : DWORD;
-          dwAvailVirtual : DWORD;
-       end;
-     LPMEMORYSTATUS = ^MEMORYSTATUS;
-     _MEMORYSTATUS = MEMORYSTATUS;
-     TMEMORYSTATUS = MEMORYSTATUS;
-     PMEMORYSTATUS = ^MEMORYSTATUS;
-
-     MENUEX_TEMPLATE_HEADER = record
-          wVersion : WORD;
-          wOffset : WORD;
-          dwHelpId : DWORD;
-       end;
-     TMENUXTEMPLATEHEADER = MENUEX_TEMPLATE_HEADER;
-     PMENUXTEMPLATEHEADER = ^MENUEX_TEMPLATE_HEADER;
-
-     MENUEX_TEMPLATE_ITEM = record
-          dwType : DWORD;
-          dwState : DWORD;
-          uId : UINT;
-          bResInfo : BYTE;
-          szText : array[0..0] of WCHAR;
-          dwHelpId : DWORD;
-       end;
-     TMENUEXTEMPLATEITEM = MENUEX_TEMPLATE_ITEM;
-     PMENUEXTEMPLATEITEM = ^MENUEX_TEMPLATE_ITEM;
-
-     MENUITEMINFO = record
-          cbSize : UINT;
-          fMask : UINT;
-          fType : UINT;
-          fState : UINT;
-          wID : UINT;
-          hSubMenu : HMENU;
-          hbmpChecked : HBITMAP;
-          hbmpUnchecked : HBITMAP;
-          dwItemData : DWORD;
-          dwTypeData : LPTSTR;
-          cch : UINT;
-       end;
-     LPMENUITEMINFO = ^MENUITEMINFO;
-     LPCMENUITEMINFO = ^MENUITEMINFO;
-     tagMENUITEMINFO = MENUITEMINFO;
-     TMENUITEMINFO = MENUITEMINFO;
-     TMENUITEMINFOW = MENUITEMINFO;
-     PMENUITEMINFO = ^MENUITEMINFO;
-     PMENUITEMINFOW = ^MENUITEMINFO;
-
-     MENUITEMTEMPLATE = record
-          mtOption : WORD;
-          mtID : WORD;
-          mtString : array[0..0] of WCHAR;
-       end;
-     TMENUITEMTEMPLATE = MENUITEMTEMPLATE;
-     PMENUITEMTEMPLATE = ^MENUITEMTEMPLATE;
-
-     MENUITEMTEMPLATEHEADER = record
-          versionNumber : WORD;
-          offset : WORD;
-       end;
-     TMENUITEMTEMPLATEHEADER = MENUITEMTEMPLATEHEADER;
-     PMENUITEMTEMPLATEHEADER = ^MENUITEMTEMPLATEHEADER;
-
-     MENUTEMPLATE = record
-                    end;
-     LPMENUTEMPLATE = ^MENUTEMPLATE;
-     TMENUTEMPLATE = MENUTEMPLATE;
-     PMENUTEMPLATE = ^MENUTEMPLATE;
-
-     METAFILEPICT = record
-          mm : LONG;
-          xExt : LONG;
-          yExt : LONG;
-          hMF : HMETAFILE;
-       end;
-     LPMETAFILEPICT = ^METAFILEPICT;
-     tagMETAFILEPICT = METAFILEPICT;
-     TMETAFILEPICT = METAFILEPICT;
-     PMETAFILEPICT = ^METAFILEPICT;
-
-     METAHEADER = packed record
-          mtType : WORD;
-          mtHeaderSize : WORD;
-          mtVersion : WORD;
-          mtSize : DWORD;
-          mtNoObjects : WORD;
-          mtMaxRecord : DWORD;
-          mtNoParameters : WORD;
-       end;
-     tagMETAHEADER = METAHEADER;
-     TMETAHEADER = METAHEADER;
-     PMETAHEADER = ^METAHEADER;
-
-     METARECORD = record
-          rdSize : DWORD;
-          rdFunction : WORD;
-          rdParm : array[0..0] of WORD;
-       end;
-     LPMETARECORD = ^METARECORD;
-     tagMETARECORD = METARECORD;
-     TMETARECORD = METARECORD;
-     PMETARECORD = ^METARECORD;
-
-     MINIMIZEDMETRICS = record
-          cbSize : UINT;
-          iWidth : longint;
-          iHorzGap : longint;
-          iVertGap : longint;
-          iArrange : longint;
-       end;
-     LPMINIMIZEDMETRICS = ^MINIMIZEDMETRICS;
-     tagMINIMIZEDMETRICS = MINIMIZEDMETRICS;
-     TMINIMIZEDMETRICS = MINIMIZEDMETRICS;
-     PMINIMIZEDMETRICS = ^MINIMIZEDMETRICS;
-
-     MINMAXINFO = record
-          ptReserved : POINT;
-          ptMaxSize : POINT;
-          ptMaxPosition : POINT;
-          ptMinTrackSize : POINT;
-          ptMaxTrackSize : POINT;
-       end;
-     tagMINMAXINFO = MINMAXINFO;
-     TMINMAXINFO = MINMAXINFO;
-     PMINMAXINFO = ^MINMAXINFO;
-
-     MODEMDEVCAPS = record
-          dwActualSize : DWORD;
-          dwRequiredSize : DWORD;
-          dwDevSpecificOffset : DWORD;
-          dwDevSpecificSize : DWORD;
-          dwModemProviderVersion : DWORD;
-          dwModemManufacturerOffset : DWORD;
-          dwModemManufacturerSize : DWORD;
-          dwModemModelOffset : DWORD;
-          dwModemModelSize : DWORD;
-          dwModemVersionOffset : DWORD;
-          dwModemVersionSize : DWORD;
-          dwDialOptions : DWORD;
-          dwCallSetupFailTimer : DWORD;
-          dwInactivityTimeout : DWORD;
-          dwSpeakerVolume : DWORD;
-          dwSpeakerMode : DWORD;
-          dwModemOptions : DWORD;
-          dwMaxDTERate : DWORD;
-          dwMaxDCERate : DWORD;
-          abVariablePortion : array[0..0] of BYTE;
-       end;
-     LPMODEMDEVCAPS = ^MODEMDEVCAPS;
-     TMODEMDEVCAPS = MODEMDEVCAPS;
-     PMODEMDEVCAPS = ^MODEMDEVCAPS;
-
-     modemdevcaps_tag = MODEMDEVCAPS;
-
-     MODEMSETTINGS = record
-          dwActualSize : DWORD;
-          dwRequiredSize : DWORD;
-          dwDevSpecificOffset : DWORD;
-          dwDevSpecificSize : DWORD;
-          dwCallSetupFailTimer : DWORD;
-          dwInactivityTimeout : DWORD;
-          dwSpeakerVolume : DWORD;
-          dwSpeakerMode : DWORD;
-          dwPreferredModemOptions : DWORD;
-          dwNegotiatedModemOptions : DWORD;
-          dwNegotiatedDCERate : DWORD;
-          abVariablePortion : array[0..0] of BYTE;
-       end;
-     LPMODEMSETTINGS = ^MODEMSETTINGS;
-     TMODEMSETTINGS = MODEMSETTINGS;
-     PMODEMSETTINGS = ^MODEMSETTINGS;
-
-     modemsettings_tag = MODEMSETTINGS;
-
-     MONCBSTRUCT = record
-          cb : UINT;
-          dwTime : DWORD;
-          hTask : HANDLE;
-          dwRet : DWORD;
-          wType : UINT;
-          wFmt : UINT;
-          hConv : HCONV;
-          hsz1 : HSZ;
-          hsz2 : HSZ;
-          hData : HDDEDATA;
-          dwData1 : DWORD;
-          dwData2 : DWORD;
-          cc : CONVCONTEXT;
-          cbData : DWORD;
-          Data : array[0..7] of DWORD;
-       end;
-     tagMONCBSTRUCT = MONCBSTRUCT;
-     TMONCBSTRUCT = MONCBSTRUCT;
-     PMONCBSTRUCT = ^MONCBSTRUCT;
-
-     MONCONVSTRUCT = record
-          cb : UINT;
-          fConnect : WINBOOL;
-          dwTime : DWORD;
-          hTask : HANDLE;
-          hszSvc : HSZ;
-          hszTopic : HSZ;
-          hConvClient : HCONV;
-          hConvServer : HCONV;
-       end;
-     tagMONCONVSTRUCT = MONCONVSTRUCT;
-     TMONCONVSTRUCT = MONCONVSTRUCT;
-     PMONCONVSTRUCT = ^MONCONVSTRUCT;
-
-     MONERRSTRUCT = record
-          cb : UINT;
-          wLastError : UINT;
-          dwTime : DWORD;
-          hTask : HANDLE;
-       end;
-     tagMONERRSTRUCT = MONERRSTRUCT;
-     TMONERRSTRUCT = MONERRSTRUCT;
-     PMONERRSTRUCT = ^MONERRSTRUCT;
-
-     MONHSZSTRUCT = record
-          cb : UINT;
-          fsAction : WINBOOL;
-          dwTime : DWORD;
-          hsz : HSZ;
-          hTask : HANDLE;
-          str : array[0..0] of TCHAR;
-       end;
-     tagMONHSZSTRUCT = MONHSZSTRUCT;
-     TMONHSZSTRUCT = MONHSZSTRUCT;
-     PMONHSZSTRUCT = ^MONHSZSTRUCT;
-
-     MONITOR_INFO_1 = record
-          pName : LPTSTR;
-       end;
-     _MONITOR_INFO_1 = MONITOR_INFO_1;
-     TMONITORINFO1 = MONITOR_INFO_1;
-     PMONITORINFO1 = ^MONITOR_INFO_1;
-
-     MONITOR_INFO_2 = record
-          pName : LPTSTR;
-          pEnvironment : LPTSTR;
-          pDLLName : LPTSTR;
-       end;
-     _MONITOR_INFO_2 = MONITOR_INFO_2;
-     TMONITORINFO2 = MONITOR_INFO_2;
-     PMONITORINFO2 = ^MONITOR_INFO_2;
-
-     MONLINKSTRUCT = record
-          cb : UINT;
-          dwTime : DWORD;
-          hTask : HANDLE;
-          fEstablished : WINBOOL;
-          fNoData : WINBOOL;
-          hszSvc : HSZ;
-          hszTopic : HSZ;
-          hszItem : HSZ;
-          wFmt : UINT;
-          fServer : WINBOOL;
-          hConvServer : HCONV;
-          hConvClient : HCONV;
-       end;
-     tagMONLINKSTRUCT = MONLINKSTRUCT;
-     TMONLINKSTRUCT = MONLINKSTRUCT;
-     PMONLINKSTRUCT = ^MONLINKSTRUCT;
-
-     MONMSGSTRUCT = record
-          cb : UINT;
-          hwndTo : HWND;
-          dwTime : DWORD;
-          hTask : HANDLE;
-          wMsg : UINT;
-          wParam : WPARAM;
-          lParam : LPARAM;
-          dmhd : DDEML_MSG_HOOK_DATA;
-       end;
-     tagMONMSGSTRUCT = MONMSGSTRUCT;
-     TMONMSGSTRUCT = MONMSGSTRUCT;
-     PMONMSGSTRUCT = ^MONMSGSTRUCT;
-
-     MOUSEHOOKSTRUCT = record
-          pt : POINT;
-          hwnd : HWND;
-          wHitTestCode : UINT;
-          dwExtraInfo : DWORD;
-       end;
-     LPMOUSEHOOKSTRUCT = ^MOUSEHOOKSTRUCT;
-     tagMOUSEHOOKSTRUCT = MOUSEHOOKSTRUCT;
-     TMOUSEHOOKSTRUCT = MOUSEHOOKSTRUCT;
-     PMOUSEHOOKSTRUCT = ^MOUSEHOOKSTRUCT;
-
-     MOUSEKEYS = record
-          cbSize : DWORD;
-          dwFlags : DWORD;
-          iMaxSpeed : DWORD;
-          iTimeToMaxSpeed : DWORD;
-          iCtrlSpeed : DWORD;
-          dwReserved1 : DWORD;
-          dwReserved2 : DWORD;
-       end;
-     TMOUSEKEYS = MOUSEKEYS;
-     PMOUSEKEYS = ^MOUSEKEYS;
-
-     MSGBOXCALLBACK = procedure (lpHelpInfo:LPHELPINFO);
-     TMSGBOXCALLBACK = MSGBOXCALLBACK;
-
-     MSGBOXPARAMS = record
-          cbSize : UINT;
-          hwndOwner : HWND;
-          hInstance : HINST;
-          lpszText : LPCSTR;
-          lpszCaption : LPCSTR;
-          dwStyle : DWORD;
-          lpszIcon : LPCSTR;
-          dwContextHelpId : DWORD;
-          lpfnMsgBoxCallback : MSGBOXCALLBACK;
-          dwLanguageId : DWORD;
-       end;
-     LPMSGBOXPARAMS = ^MSGBOXPARAMS;
-     TMSGBOXPARAMS = MSGBOXPARAMS;
-     TMSGBOXPARAMSA = MSGBOXPARAMS;
-     PMSGBOXPARAMS = ^MSGBOXPARAMS;
-
-     MSGFILTER = record
-          nmhdr : NMHDR;
-          msg : UINT;
-          wParam : WPARAM;
-          lParam : LPARAM;
-       end;
-     _msgfilter = MSGFILTER;
-     Tmsgfilter = MSGFILTER;
-     Pmsgfilter = ^MSGFILTER;
-
-     MULTIKEYHELP = record
-          mkSize : DWORD;
-          mkKeylist : TCHAR;
-          szKeyphrase : array[0..0] of TCHAR;
-       end;
-     tagMULTIKEYHELP = MULTIKEYHELP;
-     TMULTIKEYHELP = MULTIKEYHELP;
-     PMULTIKEYHELP = ^MULTIKEYHELP;
-
-     EXTENDED_NAME_FORMAT=(
-     // unknown name type
-     NameUnknown = 0,
-     // CN=Spencer Katt, OU=Software, OU=Engineering, O=Widget, C=US
-     NameFullyQualifiedDN = 1,
-     // Engineering\SpencerK
-     NameSamCompatible = 2,
-     // Probably "Spencer Katt" but could be something else.  I.e. The
-     // display name is not necessarily the defining RDN.
-     NameDisplay = 3,
-     // [email protected] where xxx could be "SpencerK" or
-     // anything else.  Could be multi-valued to handle migration and aliasing.
-     NameDomainSimple = 4,
-     // [email protected] where xxx could be "SpencerK" or anything else.
-     // Could be multi-valued to handle migration and aliasing.
-     NameEnterpriseSimple = 5,
-     // String-ized GUID as returned by IIDFromString().
-     // eg: {4fa050f0-f561-11cf-bdd9-00aa003a77b6}
-     NameUniqueId = 6,
-     // engineering.widget.com/software/spencer katt
-     NameCanonical = 7,
-     // local logon name
-     NameWindowsCeLocal = $80000001);              //+winbase
-     PEXTENDED_NAME_FORMAT=^EXTENDED_NAME_FORMAT;  //+winbase
-
-     NAME_BUFFER = record
-          name : array[0..(NCBNAMSZ)-1] of UCHAR;
-          name_num : UCHAR;
-          name_flags : UCHAR;
-       end;
-     _NAME_BUFFER = NAME_BUFFER;
-     TNAMEBUFFER = NAME_BUFFER;
-     PNAMEBUFFER = ^NAME_BUFFER;
-
-     p_NCB = ^_NCB;
-     NCB = record
-          ncb_command : UCHAR;
-          ncb_retcode : UCHAR;
-          ncb_lsn : UCHAR;
-          ncb_num : UCHAR;
-          ncb_buffer : PUCHAR;
-          ncb_length : WORD;
-          ncb_callname : array[0..(NCBNAMSZ)-1] of UCHAR;
-          ncb_name : array[0..(NCBNAMSZ)-1] of UCHAR;
-          ncb_rto : UCHAR;
-          ncb_sto : UCHAR;
-          ncb_post : procedure (_para1:p_NCB);CDECL;
-          ncb_lana_num : UCHAR;
-          ncb_cmd_cplt : UCHAR;
-          ncb_reserve : array[0..9] of UCHAR;
-          ncb_event : HANDLE;
-       end;
-     _NCB = NCB;
-     TNCB = NCB;
-     PNCB = ^NCB;
-
-     NCCALCSIZE_PARAMS = record
-          rgrc : array[0..2] of RECT;
-          lppos : PWINDOWPOS;
-       end;
-     _NCCALCSIZE_PARAMS = NCCALCSIZE_PARAMS;
-     TNCCALCSIZEPARAMS = NCCALCSIZE_PARAMS;
-     PNCCALCSIZEPARAMS = ^NCCALCSIZE_PARAMS;
-
-     NDDESHAREINFO = record
-          lRevision : LONG;
-          lpszShareName : LPTSTR;
-          lShareType : LONG;
-          lpszAppTopicList : LPTSTR;
-          fSharedFlag : LONG;
-          fService : LONG;
-          fStartAppFlag : LONG;
-          nCmdShow : LONG;
-          qModifyId : array[0..1] of LONG;
-          cNumItems : LONG;
-          lpszItemList : LPTSTR;
-       end;
-     _NDDESHAREINFO = NDDESHAREINFO;
-     TNDDESHAREINFO = NDDESHAREINFO;
-     PNDDESHAREINFO = ^NDDESHAREINFO;
-
-     NETRESOURCE = record
-          dwScope : DWORD;
-          dwType : DWORD;
-          dwDisplayType : DWORD;
-          dwUsage : DWORD;
-          lpLocalName : LPTSTR;
-          lpRemoteName : LPTSTR;
-          lpComment : LPTSTR;
-          lpProvider : LPTSTR;
-       end;
-     LPNETRESOURCE = ^NETRESOURCE;
-     _NETRESOURCE = NETRESOURCE;
-     TNETRESOURCE = NETRESOURCE;
-     TNETRESOURCEA = NETRESOURCE;
-     PNETRESOURCE = ^NETRESOURCE;
-     PNETRESOURCEA = ^NETRESOURCE;
-
-     NETRESOURCEW = record  //+winnetwk
-          dwScope : DWORD;
-          dwType : DWORD;
-          dwDisplayType : DWORD;
-          dwUsage : DWORD;
-          lpLocalName : LPWSTR;
-          lpRemoteName : LPWSTR;
-          lpComment : LPWSTR;
-          lpProvider : LPWSTR;
-       end;
-     LPNETRESOURCEW = ^NETRESOURCEW; //+winnetwk
-     _NETRESOURCEW = NETRESOURCEW;   //+winnetwk
-
-     NEWCPLINFO = record
-          dwSize : DWORD;
-          dwFlags : DWORD;
-          dwHelpContext : DWORD;
-          lData : LONG;
-          hIcon : HICON;
-          szName : array[0..31] of TCHAR;
-          szInfo : array[0..63] of TCHAR;
-          szHelpFile : array[0..127] of TCHAR;
-       end;
-     tagNEWCPLINFO = NEWCPLINFO;
-     TNEWCPLINFO = NEWCPLINFO;
-     PNEWCPLINFO = ^NEWCPLINFO;
-
-     NEWTEXTMETRIC = record
-          tmHeight : LONG;
-          tmAscent : LONG;
-          tmDescent : LONG;
-          tmInternalLeading : LONG;
-          tmExternalLeading : LONG;
-          tmAveCharWidth : LONG;
-          tmMaxCharWidth : LONG;
-          tmWeight : LONG;
-          tmOverhang : LONG;
-          tmDigitizedAspectX : LONG;
-          tmDigitizedAspectY : LONG;
-          tmFirstChar : BCHAR;
-          tmLastChar : BCHAR;
-          tmDefaultChar : BCHAR;
-          tmBreakChar : BCHAR;
-          tmItalic : BYTE;
-          tmUnderlined : BYTE;
-          tmStruckOut : BYTE;
-          tmPitchAndFamily : BYTE;
-          tmCharSet : BYTE;
-          ntmFlags : DWORD;
-          ntmSizeEM : UINT;
-          ntmCellHeight : UINT;
-          ntmAvgWidth : UINT;
-       end;
-     tagNEWTEXTMETRIC = NEWTEXTMETRIC;
-     TNEWTEXTMETRIC = NEWTEXTMETRIC;
-     PNEWTEXTMETRIC = ^NEWTEXTMETRIC;
-
-     NEWTEXTMETRICEX = record
-          ntmentm : NEWTEXTMETRIC;
-          ntmeFontSignature : FONTSIGNATURE;
-       end;
-     tagNEWTEXTMETRICEX = NEWTEXTMETRICEX;
-     TNEWTEXTMETRICEX = NEWTEXTMETRICEX;
-     PNEWTEXTMETRICEX = ^NEWTEXTMETRICEX;
-
-     NM_LISTVIEW = record
-          hdr : NMHDR;
-          iItem : longint;
-          iSubItem : longint;
-          uNewState : UINT;
-          uOldState : UINT;
-          uChanged : UINT;
-          ptAction : POINT;
-          lParam : LPARAM;
-       end;
-     tagNM_LISTVIEW = NM_LISTVIEW;
-     TNMLISTVIEW = NM_LISTVIEW;
-     PNMLISTVIEW = ^NM_LISTVIEW;
-
-     TV_ITEM = record
-          mask : UINT;
-          hItem : HTREEITEM;
-          state : UINT;
-          stateMask : UINT;
-          pszText : LPTSTR;
-          cchTextMax : longint;
-          iImage : longint;
-          iSelectedImage : longint;
-          cChildren : longint;
-          lParam : LPARAM;
-       end;
-     LPTV_ITEM = ^TV_ITEM;
-     _TV_ITEM = TV_ITEM;
-     TTVITEM = TV_ITEM;
-     PTVITEM = ^TV_ITEM;
-
-     NM_TREEVIEW = record
-          hdr : NMHDR;
-          action : UINT;
-          itemOld : TV_ITEM;
-          itemNew : TV_ITEM;
-          ptDrag : POINT;
-       end;
-     LPNM_TREEVIEW = ^NM_TREEVIEW;
-     _NM_TREEVIEW = NM_TREEVIEW;
-     TNMTREEVIEW = NM_TREEVIEW;
-     PNMTREEVIEW = ^NM_TREEVIEW;
-
-     NM_UPDOWNW = record
-          hdr : NMHDR;
-          iPos : longint;
-          iDelta : longint;
-       end;
-     _NM_UPDOWN = NM_UPDOWNW;
-     TNMUPDOWN = NM_UPDOWNW;
-     PNMUPDOWN = ^NM_UPDOWNW;
-
-     NONCLIENTMETRICS = record
-          cbSize : UINT;
-          iBorderWidth : longint;
-          iScrollWidth : longint;
-          iScrollHeight : longint;
-          iCaptionWidth : longint;
-          iCaptionHeight : longint;
-          lfCaptionFont : LOGFONT;
-          iSmCaptionWidth : longint;
-          iSmCaptionHeight : longint;
-          lfSmCaptionFont : LOGFONT;
-          iMenuWidth : longint;
-          iMenuHeight : longint;
-          lfMenuFont : LOGFONT;
-          lfStatusFont : LOGFONT;
-          lfMessageFont : LOGFONT;
-       end;
-     LPNONCLIENTMETRICS = ^NONCLIENTMETRICS;
-     tagNONCLIENTMETRICS = NONCLIENTMETRICS;
-     TNONCLIENTMETRICS = NONCLIENTMETRICS;
-     PNONCLIENTMETRICS = ^NONCLIENTMETRICS;
-
-     SERVICE_ADDRESS = record
-          dwAddressType : DWORD;
-          dwAddressFlags : DWORD;
-          dwAddressLength : DWORD;
-          dwPrincipalLength : DWORD;
-          lpAddress : ^BYTE;
-          lpPrincipal : ^BYTE;
-       end;
-     _SERVICE_ADDRESS = SERVICE_ADDRESS;
-     TSERVICEADDRESS = SERVICE_ADDRESS;
-     PSERVICEADDRESS = ^SERVICE_ADDRESS;
-
-     SERVICE_ADDRESSES = record
-          dwAddressCount : DWORD;
-          Addresses : array[0..0] of SERVICE_ADDRESS;
-       end;
-     LPSERVICE_ADDRESSES = ^SERVICE_ADDRESSES;
-     _SERVICE_ADDRESSES = SERVICE_ADDRESSES;
-     TSERVICEADDRESSES = SERVICE_ADDRESSES;
-     PSERVICEADDRESSES = ^SERVICE_ADDRESSES;
-
-     GUID = system.tguid;        //winnt
-     LPGUID = ^GUID;
-     _GUID = GUID;
-     TGUID = GUID;
-     PGUID = ^GUID;
-
-     CLSID = GUID;
-     LPCLSID = ^CLSID;
-     TCLSID = CLSID;
-     PCLSID = ^CLSID;
-
-     SERVICE_INFO = record
-          lpServiceType : LPGUID;
-          lpServiceName : LPTSTR;
-          lpComment : LPTSTR;
-          lpLocale : LPTSTR;
-          dwDisplayHint : DWORD;
-          dwVersion : DWORD;
-          dwTime : DWORD;
-          lpMachineName : LPTSTR;
-          lpServiceAddress : LPSERVICE_ADDRESSES;
-          ServiceSpecificInfo : BLOB;
-       end;
-     _SERVICE_INFO = SERVICE_INFO;
-     TSERVICEINFO = SERVICE_INFO;
-     PSERVICEINFO = ^SERVICE_INFO;
-
-     NS_SERVICE_INFO = record
-          dwNameSpace : DWORD;
-          ServiceInfo : SERVICE_INFO;
-       end;
-     _NS_SERVICE_INFO = NS_SERVICE_INFO;
-     TNSSERVICEINFO = NS_SERVICE_INFO;
-     PNSSERVICEINFO = ^NS_SERVICE_INFO;
-
-     NUMBERFMT = record
-          NumDigits : UINT;
-          LeadingZero : UINT;
-          Grouping : UINT;
-          lpDecimalSep : LPTSTR;
-          lpThousandSep : LPTSTR;
-          NegativeOrder : UINT;
-       end;
-     _numberfmt = NUMBERFMT;
-     Tnumberfmt = NUMBERFMT;
-     Pnumberfmt = ^NUMBERFMT;
-
-     OFSTRUCT = record
-          cBytes : BYTE;
-          fFixedDisk : BYTE;
-          nErrCode : WORD;
-          Reserved1 : WORD;
-          Reserved2 : WORD;
-          szPathName : array[0..(OFS_MAXPATHNAME)-1] of CHAR;
-       end;
-     LPOFSTRUCT = ^OFSTRUCT;
-     _OFSTRUCT = OFSTRUCT;
-     TOFSTRUCT = OFSTRUCT;
-     POFSTRUCT = ^OFSTRUCT;
-
-     OPENFILENAMEW = record     //+commdlg
-          lStructSize : DWORD;
-          hwndOwner : HWND;
-          hInstance : HINST;
-          lpstrFilter : LPCWSTR;
-          lpstrCustomFilter : LPWSTR;
-          nMaxCustFilter : DWORD;
-          nFilterIndex : DWORD;
-          lpstrFile : LPWSTR;
-          nMaxFile : DWORD;
-          lpstrFileTitle : LPWSTR;
-          nMaxFileTitle : DWORD;
-          lpstrInitialDir : LPCWSTR;
-          lpstrTitle : LPCWSTR;
-          Flags : DWORD;
-          nFileOffset : WORD;
-          nFileExtension : WORD;
-          lpstrDefExt : LPCWSTR;
-          lCustData : LPARAM;
-          lpfnHook : LPOFNHOOKPROC;
-          lpTemplateName : LPCWSTR;
-       end;
-     LPOPENFILENAMEW = ^OPENFILENAMEW; //+commdlg
-     tagOFNW = OPENFILENAMEW; //+commdlg
-     LPOPENFILENAME = ^OPENFILENAMEW;
-     TOPENFILENAME = OPENFILENAMEW;
-     POPENFILENAME = ^OPENFILENAMEW;
-     TOPENFILENAMEW = OPENFILENAMEW;
-     POPENFILENAMEW = ^OPENFILENAMEW;
-
-     tagOFN = OPENFILENAMEW;
-     TOFN = OPENFILENAMEW;
-     POFN = ^OPENFILENAMEW;
-
-     OFNOTIFY = record
-          hdr : NMHDR;
-          lpOFN : LPOPENFILENAME;
-          pszFile : LPTSTR;
-       end;
-     LPOFNOTIFY = ^OFNOTIFY;
-     _OFNOTIFY = OFNOTIFY;
-     TOFNOTIFY = OFNOTIFY;
-     POFNOTIFY = ^OFNOTIFY;
-
-     OSVERSIONINFO = record
-          dwOSVersionInfoSize : DWORD;
-          dwMajorVersion : DWORD;
-          dwMinorVersion : DWORD;
-          dwBuildNumber : DWORD;
-          dwPlatformId : DWORD;
-          szCSDVersion : array[0..127] of TCHAR;
-       end;
-     LPOSVERSIONINFO = ^OSVERSIONINFO;
-     _OSVERSIONINFO = OSVERSIONINFO;
-     TOSVERSIONINFO = OSVERSIONINFO;
-     POSVERSIONINFO = ^OSVERSIONINFO;
-
-     OSVERSIONINFOW = record
-       dwOSVersionInfoSize : DWORD;
-       dwMajorVersion : DWORD;
-       dwMinorVersion : DWORD;
-       dwBuildNumber : DWORD;
-       dwPlatformId : DWORD;
-       szCSDVersion : array[0..127] of WCHAR;
-     end;
-     LPOSVERSIONINFOW = ^OSVERSIONINFOW;
-     _OSVERSIONINFOW = OSVERSIONINFOW;
-     TOSVERSIONINFOW = OSVERSIONINFOW;
-     POSVERSIONINFOW = ^OSVERSIONINFOW;
-
-
-
-
-
-     TEXTMETRIC = record
-          tmHeight : LONG;
-          tmAscent : LONG;
-          tmDescent : LONG;
-          tmInternalLeading : LONG;
-          tmExternalLeading : LONG;
-          tmAveCharWidth : LONG;
-          tmMaxCharWidth : LONG;
-          tmWeight : LONG;
-          tmOverhang : LONG;
-          tmDigitizedAspectX : LONG;
-          tmDigitizedAspectY : LONG;
-          tmFirstChar : BCHAR;
-          tmLastChar : BCHAR;
-          tmDefaultChar : BCHAR;
-          tmBreakChar : BCHAR;
-          tmItalic : BYTE;
-          tmUnderlined : BYTE;
-          tmStruckOut : BYTE;
-          tmPitchAndFamily : BYTE;
-          tmCharSet : BYTE;
-       end;
-     LPTEXTMETRIC = ^TEXTMETRIC;
-     tagTEXTMETRIC = TEXTMETRIC;
-     TTEXTMETRIC = TEXTMETRIC;
-     PTEXTMETRIC = ^TEXTMETRIC;
-
-     TEXTMETRICW = record
-          tmHeight : LONG;
-          tmAscent : LONG;
-          tmDescent : LONG;
-          tmInternalLeading : LONG;
-          tmExternalLeading : LONG;
-          tmAveCharWidth : LONG;
-          tmMaxCharWidth : LONG;
-          tmWeight : LONG;
-          tmOverhang : LONG;
-          tmDigitizedAspectX : LONG;
-          tmDigitizedAspectY : LONG;
-          tmFirstChar : WCHAR;
-          tmLastChar : WCHAR;
-          tmDefaultChar : WCHAR;
-          tmBreakChar : WCHAR;
-          tmItalic : BYTE;
-          tmUnderlined : BYTE;
-          tmStruckOut : BYTE;
-          tmPitchAndFamily : BYTE;
-          tmCharSet : BYTE;
-       end;
-     LPTEXTMETRICW = ^TEXTMETRICW;
-     tagTEXTMETRICW = TEXTMETRICW;
-     TTEXTMETRICW = TEXTMETRICW;
-     PTEXTMETRICW = ^TEXTMETRICW;
-
-
-     OUTLINETEXTMETRIC = record
-          otmSize : UINT;
-          otmTextMetrics : TEXTMETRIC;
-          otmFiller : BYTE;
-          otmPanoseNumber : PANOSE;
-          otmfsSelection : UINT;
-          otmfsType : UINT;
-          otmsCharSlopeRise : longint;
-          otmsCharSlopeRun : longint;
-          otmItalicAngle : longint;
-          otmEMSquare : UINT;
-          otmAscent : longint;
-          otmDescent : longint;
-          otmLineGap : UINT;
-          otmsCapEmHeight : UINT;
-          otmsXHeight : UINT;
-          otmrcFontBox : RECT;
-          otmMacAscent : longint;
-          otmMacDescent : longint;
-          otmMacLineGap : UINT;
-          otmusMinimumPPEM : UINT;
-          otmptSubscriptSize : POINT;
-          otmptSubscriptOffset : POINT;
-          otmptSuperscriptSize : POINT;
-          otmptSuperscriptOffset : POINT;
-          otmsStrikeoutSize : UINT;
-          otmsStrikeoutPosition : longint;
-          otmsUnderscoreSize : longint;
-          otmsUnderscorePosition : longint;
-          otmpFamilyName : PSTR;
-          otmpFaceName : PSTR;
-          otmpStyleName : PSTR;
-          otmpFullName : PSTR;
-       end;
-     LPOUTLINETEXTMETRIC = ^OUTLINETEXTMETRIC;
-     _OUTLINETEXTMETRIC = OUTLINETEXTMETRIC;
-     TOUTLINETEXTMETRIC = OUTLINETEXTMETRIC;
-     POUTLINETEXTMETRIC = ^OUTLINETEXTMETRIC;
-
-     OVERLAPPED = record
-          Internal : DWORD;
-          InternalHigh : DWORD;
-          Offset : DWORD;
-          OffsetHigh : DWORD;
-          hEvent : HANDLE;
-       end;
-     LPOVERLAPPED = ^OVERLAPPED;
-     _OVERLAPPED = OVERLAPPED;
-     TOVERLAPPED = OVERLAPPED;
-     POVERLAPPED = ^OVERLAPPED;
-
-     {PAGESETUPDLG = record conflicts with function PageSetupDlg }
-     TPAGESETUPDLG = record
-          lStructSize : DWORD;
-          hwndOwner : HWND;
-          hDevMode : HGLOBAL;
-          hDevNames : HGLOBAL;
-          Flags : DWORD;
-          ptPaperSize : POINT;
-          rtMinMargin : RECT;
-          rtMargin : RECT;
-          hInstance : HINST;
-          lCustData : LPARAM;
-          lpfnPageSetupHook : LPPAGESETUPHOOK;
-          lpfnPagePaintHook : LPPAGEPAINTHOOK;
-          lpPageSetupTemplateName : LPCTSTR;
-          hPageSetupTemplate : HGLOBAL;
-       end;
-     LPPAGESETUPDLG = ^TPAGESETUPDLG;
-     PPAGESETUPDLG = ^TPAGESETUPDLG;
-
-     tagPSD = TPAGESETUPDLG;
-     TPSD = TPAGESETUPDLG;
-     PPSD = ^TPAGESETUPDLG;
-
-     TPAGESETUPDLGW = record    //+commdlg
-          lStructSize : DWORD;
-          hwndOwner : HWND;
-          hDevMode : HGLOBAL;
-          hDevNames : HGLOBAL;
-          Flags : DWORD;
-          ptPaperSize : POINT;   // ignored in CE
-          rtMinMargin : RECT;
-          rtMargin : RECT;
-          hInstance : HINST;
-          lCustData : LPARAM;
-          lpfnPageSetupHook : LPPAGESETUPHOOK;
-          lpfnPagePaintHook : LPPAGEPAINTHOOK; // ignored in CE
-          lpPageSetupTemplateName : LPCWSTR;
-          hPageSetupTemplate : HGLOBAL;
-       end;
-     LPPAGESETUPDLGW = ^TPAGESETUPDLGW; //+commdlg
-     tagPSDW = TPAGESETUPDLGW;          //+commdlg
-
-     PAINTSTRUCT = record
-          hdc : HDC;
-          fErase : WINBOOL;
-          rcPaint : RECT;
-          fRestore : WINBOOL;
-          fIncUpdate : WINBOOL;
-          rgbReserved : array[0..31] of BYTE;
-       end;
-     LPPAINTSTRUCT = ^PAINTSTRUCT;
-     tagPAINTSTRUCT = PAINTSTRUCT;
-     TPAINTSTRUCT = PAINTSTRUCT;
-     PPAINTSTRUCT = ^PAINTSTRUCT;
-
-     PARAFORMAT = record
-          cbSize : UINT;
-          dwMask : DWORD;
-          wNumbering : WORD;
-          wReserved : WORD;
-          dxStartIndent : LONG;
-          dxRightIndent : LONG;
-          dxOffset : LONG;
-          wAlignment : WORD;
-          cTabCount : SHORT;
-          rgxTabs : array[0..(MAX_TAB_STOPS)-1] of LONG;
-       end;
-     _paraformat = PARAFORMAT;
-     Tparaformat = PARAFORMAT;
-     Pparaformat = ^PARAFORMAT;
-
-     PERF_COUNTER_BLOCK = record
-          ByteLength : DWORD;
-       end;
-     _PERF_COUNTER_BLOCK = PERF_COUNTER_BLOCK;
-     TPERFCOUNTERBLOCK = PERF_COUNTER_BLOCK;
-     PPERFCOUNTERBLOCK = ^PERF_COUNTER_BLOCK;
-
-     PERF_COUNTER_DEFINITION = record
-          ByteLength : DWORD;
-          CounterNameTitleIndex : DWORD;
-          CounterNameTitle : LPWSTR;
-          CounterHelpTitleIndex : DWORD;
-          CounterHelpTitle : LPWSTR;
-          DefaultScale : DWORD;
-          DetailLevel : DWORD;
-          CounterType : DWORD;
-          CounterSize : DWORD;
-          CounterOffset : DWORD;
-       end;
-     _PERF_COUNTER_DEFINITION = PERF_COUNTER_DEFINITION;
-     TPERFCOUNTERDEFINITION = PERF_COUNTER_DEFINITION;
-     PPERFCOUNTERDEFINITION = ^PERF_COUNTER_DEFINITION;
-
-     PERF_DATA_BLOCK = record
-          Signature : array[0..3] of WCHAR;
-          LittleEndian : DWORD;
-          Version : DWORD;
-          Revision : DWORD;
-          TotalByteLength : DWORD;
-          HeaderLength : DWORD;
-          NumObjectTypes : DWORD;
-          DefaultObject : DWORD;
-          SystemTime : SYSTEMTIME;
-          PerfTime : LARGE_INTEGER;
-          PerfFreq : LARGE_INTEGER;
-          PerfTime100nSec : LARGE_INTEGER;
-          SystemNameLength : DWORD;
-          SystemNameOffset : DWORD;
-       end;
-     _PERF_DATA_BLOCK = PERF_DATA_BLOCK;
-     TPERFDATABLOCK = PERF_DATA_BLOCK;
-     PPERFDATABLOCK = ^PERF_DATA_BLOCK;
-
-     PERF_INSTANCE_DEFINITION = record
-          ByteLength : DWORD;
-          ParentObjectTitleIndex : DWORD;
-          ParentObjectInstance : DWORD;
-          UniqueID : DWORD;
-          NameOffset : DWORD;
-          NameLength : DWORD;
-       end;
-     _PERF_INSTANCE_DEFINITION = PERF_INSTANCE_DEFINITION;
-     TPERFINSTANCEDEFINITION = PERF_INSTANCE_DEFINITION;
-     PPERFINSTANCEDEFINITION = PERF_INSTANCE_DEFINITION;
-
-     PERF_OBJECT_TYPE = record
-          TotalByteLength : DWORD;
-          DefinitionLength : DWORD;
-          HeaderLength : DWORD;
-          ObjectNameTitleIndex : DWORD;
-          ObjectNameTitle : LPWSTR;
-          ObjectHelpTitleIndex : DWORD;
-          ObjectHelpTitle : LPWSTR;
-          DetailLevel : DWORD;
-          NumCounters : DWORD;
-          DefaultCounter : DWORD;
-          NumInstances : DWORD;
-          CodePage : DWORD;
-          PerfTime : LARGE_INTEGER;
-          PerfFreq : LARGE_INTEGER;
-       end;
-     _PERF_OBJECT_TYPE = PERF_OBJECT_TYPE;
-     TPERFOBJECTTYPE = PERF_OBJECT_TYPE;
-     PPERFOBJECTTYPE = ^PERF_OBJECT_TYPE;
-
-     POLYTEXT = record
-          x : longint;
-          y : longint;
-          n : UINT;
-          lpstr : LPCTSTR;
-          uiFlags : UINT;
-          rcl : RECT;
-          pdx : ^longint;
-       end;
-     _POLYTEXT = POLYTEXT;
-     TPOLYTEXT = POLYTEXT;
-     PPOLYTEXT = ^POLYTEXT;
-
-     PORT_INFO_1 = record
-          pName : LPTSTR;
-       end;
-     _PORT_INFO_1 = PORT_INFO_1;
-     TPORTINFO1 = PORT_INFO_1;
-     PPORTINFO1 = ^PORT_INFO_1;
-
-     PORT_INFO_2 = record
-          pPortName : LPSTR;
-          pMonitorName : LPSTR;
-          pDescription : LPSTR;
-          fPortType : DWORD;
-          Reserved : DWORD;
-       end;
-     _PORT_INFO_2 = PORT_INFO_2;
-     TPORTINFO2 = PORT_INFO_2;
-     PPORTINFO2 = ^PORT_INFO_2;
-
-     PREVENT_MEDIA_REMOVAL = record
-          PreventMediaRemoval : BOOLEAN;
-       end;
-     _PREVENT_MEDIA_REMOVAL = PREVENT_MEDIA_REMOVAL;
-     TPREVENTMEDIAREMOVAL = PREVENT_MEDIA_REMOVAL;
-     PPREVENTMEDIAREMOVAL = ^PREVENT_MEDIA_REMOVAL;
-
-     {PRINTDLG = record conflicts with PrintDlg function }
-     TPRINTDLG = packed record
-          lStructSize : DWORD;
-          hwndOwner : HWND;
-          hDevMode : HANDLE;
-          hDevNames : HANDLE;
-          hDC : HDC;
-          Flags : DWORD;
-          nFromPage : WORD;
-          nToPage : WORD;
-          nMinPage : WORD;
-          nMaxPage : WORD;
-          nCopies : WORD;
-          hInstance : HINST;
-          lCustData : DWORD;
-          lpfnPrintHook : LPPRINTHOOKPROC;
-          lpfnSetupHook : LPSETUPHOOKPROC;
-          lpPrintTemplateName : LPCTSTR;
-          lpSetupTemplateName : LPCTSTR;
-          hPrintTemplate : HANDLE;
-          hSetupTemplate : HANDLE;
-       end;
-     LPPRINTDLG = ^TPRINTDLG;
-     PPRINTDLG = ^TPRINTDLG;
-
-     tagPD = TPRINTDLG;
-     TPD = TPRINTDLG;
-     PPD = ^TPRINTDLG;
-
-     PRINTER_DEFAULTS = record
-          pDatatype : LPTSTR;
-          pDevMode : LPDEVMODE;
-          DesiredAccess : ACCESS_MASK;
-       end;
-     _PRINTER_DEFAULTS = PRINTER_DEFAULTS;
-     TPRINTERDEFAULTS = PRINTER_DEFAULTS;
-     PPRINTERDEFAULTS = ^PRINTER_DEFAULTS;
-
-     PRINTER_INFO_1 = record
-          Flags : DWORD;
-          pDescription : LPTSTR;
-          pName : LPTSTR;
-          pComment : LPTSTR;
-       end;
-     LPPRINTER_INFO_1 = ^PRINTER_INFO_1;
-     PPRINTER_INFO_1 = ^PRINTER_INFO_1;
-     _PRINTER_INFO_1 = PRINTER_INFO_1;
-     TPRINTERINFO1 = PRINTER_INFO_1;
-     PPRINTERINFO1 = ^PRINTER_INFO_1;
-
-     PRINTER_INFO_2 = record
-          pServerName : LPTSTR;
-          pPrinterName : LPTSTR;
-          pShareName : LPTSTR;
-          pPortName : LPTSTR;
-          pDriverName : LPTSTR;
-          pComment : LPTSTR;
-          pLocation : LPTSTR;
-          pDevMode : LPDEVMODE;
-          pSepFile : LPTSTR;
-          pPrintProcessor : LPTSTR;
-          pDatatype : LPTSTR;
-          pParameters : LPTSTR;
-          pSecurityDescriptor : PSECURITY_DESCRIPTOR;
-          Attributes : DWORD;
-          Priority : DWORD;
-          DefaultPriority : DWORD;
-          StartTime : DWORD;
-          UntilTime : DWORD;
-          Status : DWORD;
-          cJobs : DWORD;
-          AveragePPM : DWORD;
-       end;
-     _PRINTER_INFO_2 = PRINTER_INFO_2;
-     TPRINTERINFO2 = PRINTER_INFO_2;
-     PPRINTERINFO2 = ^PRINTER_INFO_2;
-
-     PRINTER_INFO_3 = record
-          pSecurityDescriptor : PSECURITY_DESCRIPTOR;
-       end;
-     _PRINTER_INFO_3 = PRINTER_INFO_3;
-     TPRINTERINFO3 = PRINTER_INFO_3;
-     PPRINTERINFO3 = ^PRINTER_INFO_3;
-
-     PRINTER_INFO_4 = record
-          pPrinterName : LPTSTR;
-          pServerName : LPTSTR;
-          Attributes : DWORD;
-       end;
-     _PRINTER_INFO_4 = PRINTER_INFO_4;
-     TPRINTERINFO4 = PRINTER_INFO_4;
-     PPRINTERINFO4 = ^PRINTER_INFO_4;
-
-     PRINTER_INFO_5 = record
-          pPrinterName : LPTSTR;
-          pPortName : LPTSTR;
-          Attributes : DWORD;
-          DeviceNotSelectedTimeout : DWORD;
-          TransmissionRetryTimeout : DWORD;
-       end;
-     _PRINTER_INFO_5 = PRINTER_INFO_5;
-     TPRINTERINFO5 = PRINTER_INFO_5;
-     PPRINTERINFO5 = ^PRINTER_INFO_5;
-
-     PRINTER_NOTIFY_INFO_DATA = record
-          _Type : WORD;
-          Field : WORD;
-          Reserved : DWORD;
-          Id : DWORD;
-          NotifyData : record
-              case longint of
-                 0 : ( adwData : array[0..1] of DWORD );
-                 1 : ( Data : record
-                      cbBuf : DWORD;
-                      pBuf : LPVOID;
-                   end );
-              end;
-       end;
-     _PRINTER_NOTIFY_INFO_DATA = PRINTER_NOTIFY_INFO_DATA;
-     TPRINTERNOTIFYINFODATA = PRINTER_NOTIFY_INFO_DATA;
-     PPRINTERNOTIFYINFODATA = ^PRINTER_NOTIFY_INFO_DATA;
-
-     PRINTER_NOTIFY_INFO = record
-          Version : DWORD;
-          Flags : DWORD;
-          Count : DWORD;
-          aData : array[0..0] of PRINTER_NOTIFY_INFO_DATA;
-       end;
-     _PRINTER_NOTIFY_INFO = PRINTER_NOTIFY_INFO;
-     TPRINTERNOTIFYINFO = PRINTER_NOTIFY_INFO;
-     PPRINTERNOTIFYINFO = ^PRINTER_NOTIFY_INFO;
-
-     PRINTER_NOTIFY_OPTIONS_TYPE = record
-          _Type : WORD;
-          Reserved0 : WORD;
-          Reserved1 : DWORD;
-          Reserved2 : DWORD;
-          Count : DWORD;
-          pFields : PWORD;
-       end;
-     PPRINTER_NOTIFY_OPTIONS_TYPE = ^PRINTER_NOTIFY_OPTIONS_TYPE;
-     _PRINTER_NOTIFY_OPTIONS_TYPE = PRINTER_NOTIFY_OPTIONS_TYPE;
-     TPRINTERNOTIFYOPTIONSTYPE = PRINTER_NOTIFY_OPTIONS_TYPE;
-     PPRINTERNOTIFYOPTIONSTYPE = ^PRINTER_NOTIFY_OPTIONS_TYPE;
-
-     PRINTER_NOTIFY_OPTIONS = record
-          Version : DWORD;
-          Flags : DWORD;
-          Count : DWORD;
-          pTypes : PPRINTER_NOTIFY_OPTIONS_TYPE;
-       end;
-     _PRINTER_NOTIFY_OPTIONS = PRINTER_NOTIFY_OPTIONS;
-     TPRINTERNOTIFYOPTIONS = PRINTER_NOTIFY_OPTIONS;
-     PPRINTERNOTIFYOPTIONS = ^PRINTER_NOTIFY_OPTIONS;
-
-     PRINTPROCESSOR_INFO_1 = record
-          pName : LPTSTR;
-       end;
-     _PRINTPROCESSOR_INFO_1 = PRINTPROCESSOR_INFO_1;
-     TPRINTPROCESSORINFO1 = PRINTPROCESSOR_INFO_1;
-     PPRINTPROCESSORINFO1 = ^PRINTPROCESSOR_INFO_1;
-
-     PRIVILEGE_SET = record
-          PrivilegeCount : DWORD;
-          Control : DWORD;
-          Privilege : array[0..(ANYSIZE_ARRAY)-1] of LUID_AND_ATTRIBUTES;
-       end;
-     LPPRIVILEGE_SET = ^PRIVILEGE_SET;
-     PPRIVILEGE_SET = ^PRIVILEGE_SET;
-     _PRIVILEGE_SET = PRIVILEGE_SET;
-     TPRIVILEGESET = PRIVILEGE_SET;
-     PPRIVILEGESET = ^PRIVILEGE_SET;
-
-     PROCESS_HEAPENTRY = record
-          lpData : PVOID;
-          cbData : DWORD;
-          cbOverhead : BYTE;
-          iRegionIndex : BYTE;
-          wFlags : WORD;
-          dwCommittedSize : DWORD;
-          dwUnCommittedSize : DWORD;
-          lpFirstBlock : LPVOID;
-          lpLastBlock : LPVOID;
-          hMem : HANDLE;
-       end;
-     LPPROCESS_HEAP_ENTRY = ^PROCESS_HEAPENTRY;
-     _PROCESS_HEAP_ENTRY = PROCESS_HEAPENTRY;
-     TPROCESSHEAPENTRY = PROCESS_HEAPENTRY;
-     PPROCESSHEAPENTRY = ^PROCESS_HEAPENTRY;
-
-     PROCESS_INFORMATION = record
-          hProcess : HANDLE;
-          hThread : HANDLE;
-          dwProcessId : DWORD;
-          dwThreadId : DWORD;
-       end;
-     LPPROCESS_INFORMATION = ^PROCESS_INFORMATION;
-     _PROCESS_INFORMATION = PROCESS_INFORMATION;
-     TPROCESSINFORMATION = PROCESS_INFORMATION;
-     PPROCESSINFORMATION = ^PROCESS_INFORMATION;
-
-     LPFNPSPCALLBACK = function (_para1:HWND; _para2:UINT; _para3:LPVOID):UINT;
-     TFNPSPCALLBACK = LPFNPSPCALLBACK;
-
-     PROPSHEETPAGEA = record
-          dwSize : DWORD;
-          dwFlags : DWORD;
-          hInstance : HINST;
-          case longint of
-            0 : (pszTemplate : LPCTSTR);
-            1 : (pResource : LPCDLGTEMPLATE;
-                 case longint of
-                    0 : (hIcon : HICON);
-                    1 : (pszIcon : LPCTSTR;
-                         pszTitle : LPCTSTR;
-                         pfnDlgProc : DLGPROC;
-                         lParam : LPARAM;
-                         pfnCallback : LPFNPSPCALLBACK;
-                         pcRefParent : ^UINT;
-                        );
-                );
-       end;
-     LPPROPSHEETPAGEA = ^PROPSHEETPAGEA;
-     LPCPROPSHEETPAGEA = ^PROPSHEETPAGEA;
-
-     PROPSHEETPAGEW = record
-          dwSize : DWORD;
-          dwFlags : DWORD;
-          hInstance : HINST;
-          case longint of
-            0 : (pszTemplate : LPCWSTR);
-            1 : (pResource : LPCDLGTEMPLATE;
-                 case longint of
-                    0 : (hIcon : HICON);
-                    1 : (pszIcon : LPCWSTR;
-                         pszTitle : LPCWSTR;
-                         pfnDlgProc : DLGPROC;
-                         lParam : LPARAM;
-                         pfnCallback : LPFNPSPCALLBACK;
-                         pcRefParent : ^UINT;
-                        );
-                );
-       end;
-     LPPROPSHEETPAGEW = ^PROPSHEETPAGEW;
-     LPCPROPSHEETPAGEW = ^PROPSHEETPAGEW;
-
-{$IFDEF UNICODE}
-     LPPROPSHEETPAGE = ^PROPSHEETPAGEW;
-     LPCPROPSHEETPAGE = ^PROPSHEETPAGEW;
-     _PROPSHEETPAGE = PROPSHEETPAGEW;
-     PROPSHEETPAGE = PROPSHEETPAGEW;
-     TPROPSHEETPAGE = PROPSHEETPAGEW;
-     PPROPSHEETPAGE = ^PROPSHEETPAGEW;
-{$ELSE UNICODE}
-     LPPROPSHEETPAGE = ^PROPSHEETPAGEA;
-     LPCPROPSHEETPAGE = ^PROPSHEETPAGEA;
-     _PROPSHEETPAGE = PROPSHEETPAGEA;
-     PROPSHEETPAGE = PROPSHEETPAGEA;
-     TPROPSHEETPAGE = PROPSHEETPAGEA;
-     PPROPSHEETPAGE = ^PROPSHEETPAGEA;
-{$ENDIF UNICODE}
-
-     emptyrecord = record
-       end;
-     lpemptyrecord = ^emptyrecord;
-     HPROPSHEETPAGE = ^emptyrecord;
-
-     PROPSHEETHEADERA = record //prsht
-          dwSize : DWORD;
-          dwFlags : DWORD;
-          hwndParent : HWND;
-          hInstance : HINST;
-          case longint of
-              0 : (hIcon : HICON);
-              1 : (pszIcon : LPCTSTR;
-                   pszCaption : LPCTSTR;
-                   nPages : UINT;
-                   case longint of
-                      0 : (nStartPage : UINT);
-                      1 : (pStartPage : LPCTSTR;
-                           case longint of
-                              0 : (ppsp : LPCPROPSHEETPAGE);
-                              1 : (phpage : ^HPROPSHEETPAGE;
-                                   pfnCallback : PFNPROPSHEETCALLBACK;
-                                   case longint of
-                                     0 : (hbmWatermark : HBITMAP);
-                                     1 : (pszbmWatermark : LPCTSTR;
-                                          hplWatermark : HPALETTE;
-                                          case longint of
-                                             0 : (hbmHeader : HBITMAP);
-                                             1 : (pszbmHeader: PAnsiChar);
-                                         );
-                                  );
-                          );
-                  );
-       end;
-     LPPROPSHEETHEADERA = ^PROPSHEETHEADERA;
-     LPCPROPSHEETHEADERA = ^PROPSHEETHEADERA;
-     PPROPSHEETHEADERA = ^PROPSHEETHEADERA;
-
-     PROPSHEETHEADERW = record //prsht
-          dwSize : DWORD;
-          dwFlags : DWORD;
-          hwndParent : HWND;
-          hInstance : HINST;
-          case longint of
-              0 : (hIcon : HICON);
-              1 : (pszIcon : LPCWSTR;
-                   pszCaption : LPCWSTR;
-                   nPages : UINT;
-                   case longint of
-                      0 : (nStartPage : UINT);
-                      1 : (pStartPage : LPCWSTR;
-                           case longint of
-                              0 : (ppsp : LPCPROPSHEETPAGE);
-                              1 : (phpage : ^HPROPSHEETPAGE;
-                                   pfnCallback : PFNPROPSHEETCALLBACK;
-                                  );
-                          );
-                  );
-       end;
-
-     LPPROPSHEETHEADERW = ^PROPSHEETHEADERW;
-     LPCPROPSHEETHEADERW = ^PROPSHEETHEADERW;
-     PPROPSHEETHEADERW = ^PROPSHEETHEADERW;
-
-{$IFDEF UNICODE}
-     _PROPSHEETHEADER = PROPSHEETHEADERW;
-     PROPSHEETHEADER = PROPSHEETHEADERW;
-     TPROPSHEETHEADER = PROPSHEETHEADERW;
-     PPROPSHEETHEADER = ^PROPSHEETHEADERW;
-     LPPROPSHEETHEADER = ^PROPSHEETHEADERW;
-     LPCPROPSHEETHEADER = ^PROPSHEETHEADERW;
-{$ELSE UNICODE}
-     _PROPSHEETHEADER = PROPSHEETHEADERA;
-     PROPSHEETHEADER = PROPSHEETHEADERA;
-     TPROPSHEETHEADER = PROPSHEETHEADERA;
-     PPROPSHEETHEADER = ^PROPSHEETHEADERA;
-     LPPROPSHEETHEADER = ^PROPSHEETHEADERA;
-     LPCPROPSHEETHEADER = ^PROPSHEETHEADERA;
-{$ENDIF UNICODE}
-
-
-     { PropertySheet callbacks  }
-     LPFNADDPROPSHEETPAGE = function (_para1:HPROPSHEETPAGE; _para2:LPARAM):WINBOOL;
-     TFNADDPROPSHEETPAGE = LPFNADDPROPSHEETPAGE;
-
-     LPFNADDPROPSHEETPAGES = function (_para1:LPVOID; _para2:LPFNADDPROPSHEETPAGE; _para3:LPARAM):WINBOOL;
-     TFNADDPROPSHEETPAGES = LPFNADDPROPSHEETPAGES;
-
-     PROTOCOL_INFO = record
-          dwServiceFlags : DWORD;
-          iAddressFamily : WINT;
-          iMaxSockAddr : WINT;
-          iMinSockAddr : WINT;
-          iSocketType : WINT;
-          iProtocol : WINT;
-          dwMessageSize : DWORD;
-          lpProtocol : LPTSTR;
-       end;
-     _PROTOCOL_INFO = PROTOCOL_INFO;
-     TPROTOCOLINFO = PROTOCOL_INFO;
-     PPROTOCOLINFO = ^PROTOCOL_INFO;
-
-     PROVIDOR_INFO_1 = record
-          pName : LPTSTR;
-          pEnvironment : LPTSTR;
-          pDLLName : LPTSTR;
-       end;
-     _PROVIDOR_INFO_1 = PROVIDOR_INFO_1;
-     TPROVIDORINFO1 = PROVIDOR_INFO_1;
-     PPROVIDORINFO1 = ^PROVIDOR_INFO_1;
-
-     PSHNOTIFY = record
-          hdr : NMHDR;
-          lParam : LPARAM;
-       end;
-     LPPSHNOTIFY = ^PSHNOTIFY;
-     _PSHNOTIFY = PSHNOTIFY;
-     TPSHNOTIFY = PSHNOTIFY;
-     PPSHNOTIFY = ^PSHNOTIFY;
-
-     PUNCTUATION = record
-          iSize : UINT;
-          szPunctuation : LPSTR;
-       end;
-     _punctuation = PUNCTUATION;
-     Tpunctuation = PUNCTUATION;
-     Ppunctuation = ^PUNCTUATION;
-
-     QUERY_SERVICE_CONFIG = record
-          dwServiceType : DWORD;
-          dwStartType : DWORD;
-          dwErrorControl : DWORD;
-          lpBinaryPathName : LPTSTR;
-          lpLoadOrderGroup : LPTSTR;
-          dwTagId : DWORD;
-          lpDependencies : LPTSTR;
-          lpServiceStartName : LPTSTR;
-          lpDisplayName : LPTSTR;
-       end;
-     LPQUERY_SERVICE_CONFIG = ^QUERY_SERVICE_CONFIG;
-     _QUERY_SERVICE_CONFIG = QUERY_SERVICE_CONFIG;
-     TQUERYSERVICECONFIG = QUERY_SERVICE_CONFIG;
-     PQUERYSERVICECONFIG = ^QUERY_SERVICE_CONFIG;
-
-     QUERY_SERVICE_LOCK_STATUS = record
-          fIsLocked : DWORD;
-          lpLockOwner : LPTSTR;
-          dwLockDuration : DWORD;
-       end;
-     LPQUERY_SERVICE_LOCK_STATUS = ^QUERY_SERVICE_LOCK_STATUS;
-     _QUERY_SERVICE_LOCK_STATUS = QUERY_SERVICE_LOCK_STATUS;
-     TQUERYSERVICELOCKSTATUS = QUERY_SERVICE_LOCK_STATUS;
-     PQUERYSERVICELOCKSTATUS = ^QUERY_SERVICE_LOCK_STATUS;
-
-     RASAMB = record
-          dwSize : DWORD;
-          dwError : DWORD;
-          szNetBiosError : array[0..(NETBIOS_NAME_LEN + 1)-1] of TCHAR;
-          bLana : BYTE;
-       end;
-     _RASAMB = RASAMB;
-     TRASAMB = RASAMB;
-     PRASAMB = ^RASAMB;
-
-     RASCONN = record
-          dwSize : DWORD;
-          hrasconn : HRASCONN;
-          szEntryName : array[0..(RAS_MaxEntryName + 1)-1] of TCHAR;
-          szDeviceType : array[0..(RAS_MaxDeviceType + 1)-1] of CHAR;
-          szDeviceName : array[0..(RAS_MaxDeviceName + 1)-1] of CHAR;
-       end;
-     _RASCONN = RASCONN;
-     TRASCONN = RASCONN;
-     PRASCONN = ^RASCONN;
-
-     RASCONNSTATUS = record
-          dwSize : DWORD;
-          rasconnstate : RASCONNSTATE;
-          dwError : DWORD;
-          szDeviceType : array[0..(RAS_MaxDeviceType + 1)-1] of TCHAR;
-          szDeviceName : array[0..(RAS_MaxDeviceName + 1)-1] of TCHAR;
-       end;
-     _RASCONNSTATUS = RASCONNSTATUS;
-     TRASCONNSTATUS = RASCONNSTATUS;
-     PRASCONNSTATUS = ^RASCONNSTATUS;
-
-     RASDIALEXTENSIONS = record
-          dwSize : DWORD;
-          dwfOptions : DWORD;
-          hwndParent : HWND;
-          reserved : DWORD;
-       end;
-     _RASDIALEXTENSIONS = RASDIALEXTENSIONS;
-     TRASDIALEXTENSIONS = RASDIALEXTENSIONS;
-     PRASDIALEXTENSIONS = ^RASDIALEXTENSIONS;
-
-     RASDIALPARAMS = record
-          dwSize : DWORD;
-          szEntryName : array[0..(RAS_MaxEntryName + 1)-1] of TCHAR;
-          szPhoneNumber : array[0..(RAS_MaxPhoneNumber + 1)-1] of TCHAR;
-          szCallbackNumber : array[0..(RAS_MaxCallbackNumber + 1)-1] of TCHAR;
-          szUserName : array[0..(UNLEN + 1)-1] of TCHAR;
-          szPassword : array[0..(PWLEN + 1)-1] of TCHAR;
-          szDomain : array[0..(DNLEN + 1)-1] of TCHAR;
-       end;
-     _RASDIALPARAMS = RASDIALPARAMS;
-     TRASDIALPARAMS = RASDIALPARAMS;
-     PRASDIALPARAMS = ^RASDIALPARAMS;
-
-     RASENTRYNAME = record
-          dwSize : DWORD;
-          szEntryName : array[0..(RAS_MaxEntryName + 1)-1] of TCHAR;
-       end;
-     _RASENTRYNAME = RASENTRYNAME;
-     TRASENTRYNAME = RASENTRYNAME;
-     PRASENTRYNAME = ^RASENTRYNAME;
-
-     RASPPPIP = record
-          dwSize : DWORD;
-          dwError : DWORD;
-          szIpAddress : array[0..(RAS_MaxIpAddress + 1)-1] of TCHAR;
-       end;
-     _RASPPPIP = RASPPPIP;
-     TRASPPPIP = RASPPPIP;
-     PRASPPPIP = ^RASPPPIP;
-
-     RASPPPIPX = record
-          dwSize : DWORD;
-          dwError : DWORD;
-          szIpxAddress : array[0..(RAS_MaxIpxAddress + 1)-1] of TCHAR;
-       end;
-     _RASPPPIPX = RASPPPIPX;
-     TRASPPPIPX = RASPPPIPX;
-     PRASPPPIPX = ^RASPPPIPX;
-
-     RASPPPNBF = record
-          dwSize : DWORD;
-          dwError : DWORD;
-          dwNetBiosError : DWORD;
-          szNetBiosError : array[0..(NETBIOS_NAME_LEN + 1)-1] of TCHAR;
-          szWorkstationName : array[0..(NETBIOS_NAME_LEN + 1)-1] of TCHAR;
-          bLana : BYTE;
-       end;
-     _RASPPPNBF = RASPPPNBF;
-     TRASPPPNBF = RASPPPNBF;
-     PRASPPPNBF = ^RASPPPNBF;
-
-     RASTERIZER_STATUS = record
-          nSize : integer;
-          wFlags : integer;
-          nLanguageID : integer;
-       end;
-     LPRASTERIZER_STATUS = ^RASTERIZER_STATUS;
-     _RASTERIZER_STATUS = RASTERIZER_STATUS;
-     TRASTERIZERSTATUS = RASTERIZER_STATUS;
-     PRASTERIZERSTATUS = ^RASTERIZER_STATUS;
-
-     REASSIGN_BLOCKS = record
-          Reserved : WORD;
-          Count : WORD;
-          BlockNumber : array[0..0] of DWORD;
-       end;
-     _REASSIGN_BLOCKS = REASSIGN_BLOCKS;
-     TREASSIGNBLOCKS = REASSIGN_BLOCKS;
-     PREASSIGNBLOCKS = ^REASSIGN_BLOCKS;
-
-     REMOTE_NAME_INFO = record
-          lpUniversalName : LPTSTR;
-          lpConnectionName : LPTSTR;
-          lpRemainingPath : LPTSTR;
-       end;
-     _REMOTE_NAME_INFO = REMOTE_NAME_INFO;
-     TREMOTENAMEINFO = REMOTE_NAME_INFO;
-     PREMOTENAMEINFO = ^REMOTE_NAME_INFO;
-
-  (*
-   TODO: OLE
-  typedef struct _reobject {
-    DWORD  cbStruct;
-    LONG   cp;
-    CLSID  clsid;
-    LPOLEOBJECT      poleobj;
-    LPSTORAGE        pstg;
-    LPOLECLIENTSITE  polesite;
-    SIZEL  sizel;
-    DWORD  dvaspect;
-    DWORD  dwFlags;
-    DWORD  dwUser;
-  } REOBJECT;
-   *)
-
-     REPASTESPECIAL = record
-          dwAspect : DWORD;
-          dwParam : DWORD;
-       end;
-     _repastespecial = REPASTESPECIAL;
-     Trepastespecial = REPASTESPECIAL;
-     Prepastespecial = ^REPASTESPECIAL;
-
-     REQRESIZE = record
-          nmhdr : NMHDR;
-          rc : RECT;
-       end;
-     _reqresize = REQRESIZE;
-     Treqresize = REQRESIZE;
-     Preqresize = ^REQRESIZE;
-
-     RGNDATAHEADER = record
-          dwSize : DWORD;
-          iType : DWORD;
-          nCount : DWORD;
-          nRgnSize : DWORD;
-          rcBound : RECT;
-       end;
-     _RGNDATAHEADER = RGNDATAHEADER;
-     TRGNDATAHEADER = RGNDATAHEADER;
-     PRGNDATAHEADER = ^RGNDATAHEADER;
-
-     RGNDATA = record
-          rdh : RGNDATAHEADER;
-          Buffer : array[0..0] of char;
-       end;
-     LPRGNDATA = ^RGNDATA;
-     _RGNDATA = RGNDATA;
-     TRGNDATA = RGNDATA;
-     PRGNDATA = ^RGNDATA;
-
-     SCROLLINFO = record
-          cbSize : UINT;
-          fMask : UINT;
-          nMin : longint;
-          nMax : longint;
-          nPage : UINT;
-          nPos : longint;
-          nTrackPos : longint;
-       end;
-     LPSCROLLINFO = ^SCROLLINFO;
-     LPCSCROLLINFO = ^SCROLLINFO;
-     tagSCROLLINFO = SCROLLINFO;
-     TSCROLLINFO = SCROLLINFO;
-     PSCROLLINFO = ^SCROLLINFO;
-
-     SECURITY_ATTRIBUTES = record
-          nLength : DWORD;
-          lpSecurityDescriptor : LPVOID;
-          bInheritHandle : WINBOOL;
-       end;
-     LPSECURITY_ATTRIBUTES = ^SECURITY_ATTRIBUTES;
-     _SECURITY_ATTRIBUTES = SECURITY_ATTRIBUTES;
-     TSECURITYATTRIBUTES = SECURITY_ATTRIBUTES;
-     PSECURITYATTRIBUTES = ^SECURITY_ATTRIBUTES;
-
-     SECURITY_INFORMATION = DWORD;
-     PSECURITY_INFORMATION = ^SECURITY_INFORMATION;
-     TSECURITYINFORMATION = SECURITY_INFORMATION;
-     PSECURITYINFORMATION = ^SECURITY_INFORMATION;
-
-     SELCHANGE = record
-          nmhdr : NMHDR;
-          chrg : CHARRANGE;
-          seltyp : WORD;
-       end;
-     _selchange = SELCHANGE;
-     Tselchange = SELCHANGE;
-     Pselchange = ^SELCHANGE;
-
-     SERIALKEYS = record
-          cbSize : DWORD;
-          dwFlags : DWORD;
-          lpszActivePort : LPSTR;
-          lpszPort : LPSTR;
-          iBaudRate : DWORD;
-          iPortState : DWORD;
-       end;
-     LPSERIALKEYS = ^SERIALKEYS;
-     tagSERIALKEYS = SERIALKEYS;
-     TSERIALKEYS = SERIALKEYS;
-     PSERIALKEYS = ^SERIALKEYS;
-
-     SERVICE_TABLE_ENTRY = record
-          lpServiceName : LPTSTR;
-          lpServiceProc : LPSERVICE_MAIN_FUNCTION;
-       end;
-     LPSERVICE_TABLE_ENTRY = ^SERVICE_TABLE_ENTRY;
-     _SERVICE_TABLE_ENTRY = SERVICE_TABLE_ENTRY;
-     TSERVICETABLEENTRY = SERVICE_TABLE_ENTRY;
-     PSERVICETABLEENTRY = ^SERVICE_TABLE_ENTRY;
-
-     SERVICE_TYPE_VALUE_ABS = record
-          dwNameSpace : DWORD;
-          dwValueType : DWORD;
-          dwValueSize : DWORD;
-          lpValueName : LPTSTR;
-          lpValue : PVOID;
-       end;
-     _SERVICE_TYPE_VALUE_ABS = SERVICE_TYPE_VALUE_ABS;
-     TSERVICETYPEVALUEABS = SERVICE_TYPE_VALUE_ABS;
-     PSERVICETYPEVALUEABS = ^SERVICE_TYPE_VALUE_ABS;
-
-     SERVICE_TYPE_INFO_ABS = record
-          lpTypeName : LPTSTR;
-          dwValueCount : DWORD;
-          Values : array[0..0] of SERVICE_TYPE_VALUE_ABS;
-       end;
-     _SERVICE_TYPE_INFO_ABS = SERVICE_TYPE_INFO_ABS;
-     TSERVICETYPEINFOABS = SERVICE_TYPE_INFO_ABS;
-     PSERVICETYPEINFOABS = ^SERVICE_TYPE_INFO_ABS;
-
-     SESSION_BUFFER = record
-          lsn : UCHAR;
-          state : UCHAR;
-          local_name : array[0..(NCBNAMSZ)-1] of UCHAR;
-          remote_name : array[0..(NCBNAMSZ)-1] of UCHAR;
-          rcvs_outstanding : UCHAR;
-          sends_outstanding : UCHAR;
-       end;
-     _SESSION_BUFFER = SESSION_BUFFER;
-     TSESSIONBUFFER = SESSION_BUFFER;
-     PSESSIONBUFFER = ^SESSION_BUFFER;
-
-     SESSION_HEADER = record
-          sess_name : UCHAR;
-          num_sess : UCHAR;
-          rcv_dg_outstanding : UCHAR;
-          rcv_any_outstanding : UCHAR;
-       end;
-     _SESSION_HEADER = SESSION_HEADER;
-     TSESSIONHEADER = SESSION_HEADER;
-     PSESSIONHEADER = ^SESSION_HEADER;
-
-     SET_PARTITION_INFORMATION = record
-          PartitionType : BYTE;
-       end;
-     _SET_PARTITION_INFORMATION = SET_PARTITION_INFORMATION;
-     TSETPARTITIONINFORMATION = SET_PARTITION_INFORMATION;
-     PSETPARTITIONINFORMATION = ^SET_PARTITION_INFORMATION;
-
-     SHELLEXECUTEINFO = record //+shellapi
-          cbSize: DWORD;
-          fMask: ULONG;
-          hwnd: HWND;
-          lpVerb: LPCTSTR;
-          lpFile: LPCTSTR;
-          lpParameters: LPCTSTR;
-          lpDirectory: LPCTSTR;
-          nShow: Integer ;
-          hInstApp: HINST;
-          // Optional fields
-          lpIDList: LPVOID;
-          lpClass: LPCTSTR;
-          hkeyClass: HKEY;
-          dwHotKey: DWORD;
-          hIcon: HANDLE;
-          hProcess :HANDLE;
-        end;
-     _SHELLEXECUTEINFO=SHELLEXECUTEINFO;   //+shellapi
-     LPSHELLEXECUTEINFO=^SHELLEXECUTEINFO; //+shellapi
-
-     SHCONTF = (SHCONTF_FOLDERS := 32,SHCONTF_NONFOLDERS := 64,
-       SHCONTF_INCLUDEHIDDEN := 128);
-     tagSHCONTF = SHCONTF;
-     TSHCONTF = SHCONTF;
-
-     SHFILEINFO = record
-          hIcon : HICON;
-          iIcon : longint;
-          dwAttributes : DWORD;
-          szDisplayName : array[0..MAX_PATH-1] of TCHAR;
-          szTypeName : array[0..79] of TCHAR;
-       end;
-     _SHFILEINFO = SHFILEINFO;
-     TSHFILEINFO = SHFILEINFO;
-     PSHFILEINFO = ^SHFILEINFO;
-
-     FILEOP_FLAGS = WORD;
-     TFILEOPFLAGS = FILEOP_FLAGS;
-     PFILEOPFLAGS = ^FILEOP_FLAGS;
-
-     SHFILEOPSTRUCTW = record //+shellapi
-          wnd : HWND;
-          wFunc : UINT;
-          pFrom : LPCWSTR;
-          pTo : LPCWSTR;
-          fFlags : FILEOP_FLAGS;
-          fAnyOperationsAborted : WINBOOL;
-          hNameMappings : LPVOID;
-          lpszProgressTitle : LPCWSTR;
-       end;
-     LPSHFILEOPSTRUCTW = ^SHFILEOPSTRUCTW;
-     _SHFILEOPSTRUCT = SHFILEOPSTRUCTW;
-     TSHFILEOPSTRUCT = SHFILEOPSTRUCTW;
-     PSHFILEOPSTRUCT = ^SHFILEOPSTRUCTW;
-     TSHFILEOPSTRUCTW = SHFILEOPSTRUCTW;
-     PSHFILEOPSTRUCTW = ^SHFILEOPSTRUCTW;
-
-     SHGNO = (SHGDN_NORMAL := 0,SHGDN_INFOLDER := 1,
-       SHGDN_FORPARSING := $8000);
-     tagSHGDN = SHGNO;
-     TSHGDN = SHGNO;
-
-     SHNAMEMAPPING = record
-          pszOldPath : LPSTR;
-          pszNewPath : LPSTR;
-          cchOldPath : longint;
-          cchNewPath : longint;
-       end;
-     LPSHNAMEMAPPING = ^SHNAMEMAPPING;
-     _SHNAMEMAPPING = SHNAMEMAPPING;
-     TSHNAMEMAPPING = SHNAMEMAPPING;
-     PSHNAMEMAPPING = ^SHNAMEMAPPING;
-
-     SINGLE_LIST_ENTRY = record
-          Next : ^_SINGLE_LIST_ENTRY;
-       end;
-     _SINGLE_LIST_ENTRY = SINGLE_LIST_ENTRY;
-     TSINGLELISTENTRY = SINGLE_LIST_ENTRY;
-     PSINGLELISTENTRY = ^SINGLE_LIST_ENTRY;
-
-     SOUNDSENTRY = record
-          cbSize : UINT;
-          dwFlags : DWORD;
-          iFSTextEffect : DWORD;
-          iFSTextEffectMSec : DWORD;
-          iFSTextEffectColorBits : DWORD;
-          iFSGrafEffect : DWORD;
-          iFSGrafEffectMSec : DWORD;
-          iFSGrafEffectColor : DWORD;
-          iWindowsEffect : DWORD;
-          iWindowsEffectMSec : DWORD;
-          lpszWindowsEffectDLL : LPTSTR;
-          iWindowsEffectOrdinal : DWORD;
-       end;
-     LPSOUNDSENTRY = ^SOUNDSENTRY;
-     tagSOUNDSENTRY = SOUNDSENTRY;
-     TSOUNDSENTRY = SOUNDSENTRY;
-     PSOUNDSENTRY = ^SOUNDSENTRY;
-
-     STARTUPINFO = record
-          cb : DWORD;
-          lpReserved : LPTSTR;
-          lpDesktop : LPTSTR;
-          lpTitle : LPTSTR;
-          dwX : DWORD;
-          dwY : DWORD;
-          dwXSize : DWORD;
-          dwYSize : DWORD;
-          dwXCountChars : DWORD;
-          dwYCountChars : DWORD;
-          dwFillAttribute : DWORD;
-          dwFlags : DWORD;
-          wShowWindow : WORD;
-          cbReserved2 : WORD;
-          lpReserved2 : LPBYTE;
-          hStdInput : HANDLE;
-          hStdOutput : HANDLE;
-          hStdError : HANDLE;
-       end;
-     LPSTARTUPINFO = ^STARTUPINFO;
-     _STARTUPINFO = STARTUPINFO;
-     TSTARTUPINFO = STARTUPINFO;
-     PSTARTUPINFO = ^STARTUPINFO;
-
-     STICKYKEYS = record
-          cbSize : DWORD;
-          dwFlags : DWORD;
-       end;
-     LPSTICKYKEYS = ^STICKYKEYS;
-     tagSTICKYKEYS = STICKYKEYS;
-     TSTICKYKEYS = STICKYKEYS;
-     PSTICKYKEYS = ^STICKYKEYS;
-
-     STRRET = record
-          uType : UINT;
-          DUMMYUNIONNAME : record
-              case longint of
-                 0 : ( pOleStr : LPWSTR );
-                 1 : ( uOffset : UINT );
-                 2 : ( cStr : array[0..(MAX_PATH)-1] of char );
-              end;
-       end;
-     LPSTRRET = ^STRRET;
-     _STRRET = STRRET;
-     TSTRRET = STRRET;
-     PSTRRET = ^STRRET;
-
-     STYLEBUF = record
-          dwStyle : DWORD;
-          szDescription : array[0..31] of CHAR;
-       end;
-     LPSTYLEBUF = ^STYLEBUF;
-     _tagSTYLEBUF = STYLEBUF;
-     TSTYLEBUF = STYLEBUF;
-     PSTYLEBUF = ^STYLEBUF;
-
-     STYLESTRUCT = record
-          styleOld : DWORD;
-          styleNew : DWORD;
-       end;
-     LPSTYLESTRUCT = ^STYLESTRUCT;
-     tagSTYLESTRUCT = STYLESTRUCT;
-     TSTYLESTRUCT = STYLESTRUCT;
-     PSTYLESTRUCT = ^STYLESTRUCT;
-
-     SYSTEM_AUDIT_ACE = record
-          Header : ACE_HEADER;
-          Mask : ACCESS_MASK;
-          SidStart : DWORD;
-       end;
-     _SYSTEM_AUDIT_ACE = SYSTEM_AUDIT_ACE;
-     TSYSTEMAUDITACE = SYSTEM_AUDIT_ACE;
-     PSYSTEMAUDITACE = ^SYSTEM_AUDIT_ACE;
-
-     SYSTEM_INFO = record
-          u : record
-              case longint of
-                 0 : ( dwOemId : DWORD );
-                 1 : ( s : record
-                      wProcessorArchitecture : WORD;
-                      wReserved : WORD;
-                   end );
-              end;
-          dwPageSize : DWORD;
-          lpMinimumApplicationAddress : LPVOID;
-          lpMaximumApplicationAddress : LPVOID;
-          dwActiveProcessorMask : DWORD;
-          dwNumberOfProcessors : DWORD;
-          dwProcessorType : DWORD;
-          dwAllocationGranularity : DWORD;
-          wProcessorLevel : WORD;
-          wProcessorRevision : WORD;
-       end;
-     LPSYSTEM_INFO = ^SYSTEM_INFO;
-     _SYSTEM_INFO = SYSTEM_INFO;
-     TSYSTEMINFO = SYSTEM_INFO;
-     PSYSTEMINFO = ^SYSTEM_INFO;
-
-     SYSTEM_POWER_STATUS = record
-          ACLineStatus : BYTE;
-          BatteryFlag : BYTE;
-          BatteryLifePercent : BYTE;
-          Reserved1 : BYTE;
-          BatteryLifeTime : DWORD;
-          BatteryFullLifeTime : DWORD;
-       end;
-     _SYSTEM_POWER_STATUS = SYSTEM_POWER_STATUS;
-     TSYSTEMPOWERSTATUS = SYSTEM_POWER_STATUS;
-     PSYSTEMPOWERSTATUS = ^SYSTEM_POWER_STATUS;
-
-     LPSYSTEM_POWER_STATUS = ^emptyrecord;
-
-     TAPE_ERASE = record
-          _Type : ULONG;
-       end;
-     _TAPE_ERASE = TAPE_ERASE;
-     TTAPEERASE = TAPE_ERASE;
-     PTAPEERASE = ^TAPE_ERASE;
-
-     TAPE_GET_DRIVE_PARAMETERS = record
-          ECC : BOOLEAN;
-          Compression : BOOLEAN;
-          DataPadding : BOOLEAN;
-          ReportSetmarks : BOOLEAN;
-          DefaultBlockSize : ULONG;
-          MaximumBlockSize : ULONG;
-          MinimumBlockSize : ULONG;
-          MaximumPartitionCount : ULONG;
-          FeaturesLow : ULONG;
-          FeaturesHigh : ULONG;
-          EOTWarningZoneSize : ULONG;
-       end;
-     _TAPE_GET_DRIVE_PARAMETERS = TAPE_GET_DRIVE_PARAMETERS;
-     TTAPEGETDRIVEPARAMETERS = TAPE_GET_DRIVE_PARAMETERS;
-     PTAPEGETDRIVEPARAMETERS = ^TAPE_GET_DRIVE_PARAMETERS;
-
-     TAPE_GET_MEDIA_PARAMETERS = record
-          Capacity : LARGE_INTEGER;
-          Remaining : LARGE_INTEGER;
-          BlockSize : DWORD;
-          PartitionCount : DWORD;
-          WriteProtected : BOOLEAN;
-       end;
-     _TAPE_GET_MEDIA_PARAMETERS = TAPE_GET_MEDIA_PARAMETERS;
-     TTAPEGETMEDIAPARAMETERS = TAPE_GET_MEDIA_PARAMETERS;
-     PTAPEGETMEDIAPARAMETERS = ^TAPE_GET_MEDIA_PARAMETERS;
-
-     TAPE_GET_POSITION = record
-          _Type : ULONG;
-          Partition : ULONG;
-          OffsetLow : ULONG;
-          OffsetHigh : ULONG;
-       end;
-     _TAPE_GET_POSITION = TAPE_GET_POSITION;
-     TTAPEGETPOSITION = TAPE_GET_POSITION;
-     PTAPEGETPOSITION = ^TAPE_GET_POSITION;
-
-     TAPE_PREPARE = record
-          Operation : ULONG;
-       end;
-     _TAPE_PREPARE = TAPE_PREPARE;
-     TTAPEPREPARE = TAPE_PREPARE;
-     PTAPEPREPARE = ^TAPE_PREPARE;
-
-     TAPE_SET_DRIVE_PARAMETERS = record
-          ECC : BOOLEAN;
-          Compression : BOOLEAN;
-          DataPadding : BOOLEAN;
-          ReportSetmarks : BOOLEAN;
-          EOTWarningZoneSize : ULONG;
-       end;
-     _TAPE_SET_DRIVE_PARAMETERS = TAPE_SET_DRIVE_PARAMETERS;
-     TTAPESETDRIVEPARAMETERS = TAPE_SET_DRIVE_PARAMETERS;
-     PTAPESETDRIVEPARAMETERS = ^TAPE_SET_DRIVE_PARAMETERS;
-
-     TAPE_SET_MEDIA_PARAMETERS = record
-          BlockSize : ULONG;
-       end;
-     _TAPE_SET_MEDIA_PARAMETERS = TAPE_SET_MEDIA_PARAMETERS;
-     TTAPESETMEDIAPARAMETERS = TAPE_SET_MEDIA_PARAMETERS;
-     PTAPESETMEDIAPARAMETERS = ^TAPE_SET_MEDIA_PARAMETERS;
-
-     TAPE_SET_POSITION = record
-          Method : ULONG;
-          Partition : ULONG;
-          OffsetLow : ULONG;
-          OffsetHigh : ULONG;
-       end;
-     _TAPE_SET_POSITION = TAPE_SET_POSITION;
-     TTAPESETPOSITION = TAPE_SET_POSITION;
-     PTAPESETPOSITION = ^TAPE_SET_POSITION;
-
-     TAPE_WRITE_MARKS = record
-          _Type : ULONG;
-          Count : ULONG;
-       end;
-     _TAPE_WRITE_MARKS = TAPE_WRITE_MARKS;
-     TTAPEWRITEMARKS = TAPE_WRITE_MARKS;
-     PTAPEWRITEMARKS = ^TAPE_WRITE_MARKS;
-
-     TBADDBITMAP = record
-          hInst : HINST;
-          nID : UINT;
-       end;
-     LPTBADDBITMAP = ^TBADDBITMAP;
-     TTBADDBITMAP = TBADDBITMAP;
-     PTBADDBITMAP = ^TBADDBITMAP;
-
-     TBBUTTON = record
-          iBitmap : longint;
-          idCommand : longint;
-          fsState : BYTE;
-          fsStyle : BYTE;
-          dwData : DWORD;
-          iString : longint;
-       end;
-     LPTBBUTTON = ^TBBUTTON;
-     LPCTBBUTTON = ^TBBUTTON;
-     _TBBUTTON = TBBUTTON;
-     TTBBUTTON = TBBUTTON;
-     PTBBUTTON = ^TBBUTTON;
-
-     TBNOTIFY = record
-          hdr : NMHDR;
-          iItem : longint;
-          tbButton : TBBUTTON;
-          cchText : longint;
-          pszText : LPTSTR;
-       end;
-     LPTBNOTIFY = ^TBNOTIFY;
-     TTBNOTIFY = TBNOTIFY;
-     PTBNOTIFY = ^TBNOTIFY;
-
-     TBSAVEPARAMS = record
-          hkr : HKEY;
-          pszSubKey : LPCTSTR;
-          pszValueName : LPCTSTR;
-       end;
-     TTBSAVEPARAMS = TBSAVEPARAMS;
-     PTBSAVEPARAMS = ^TBSAVEPARAMS;
-
-     TC_HITTESTINFO = record
-          pt : POINT;
-          flags : UINT;
-       end;
-     _TC_HITTESTINFO = TC_HITTESTINFO;
-     TTCHITTESTINFO = TC_HITTESTINFO;
-     PTCHITTESTINFO = ^TC_HITTESTINFO;
-
-     TC_ITEM = record
-          mask : UINT;
-          lpReserved1 : UINT;
-          lpReserved2 : UINT;
-          pszText : LPTSTR;
-          cchTextMax : longint;
-          iImage : longint;
-          lParam : LPARAM;
-       end;
-     _TC_ITEM = TC_ITEM;
-     TTCITEM = TC_ITEM;
-     PTCITEM = ^TC_ITEM;
-
-     TC_ITEMHEADER = record
-          mask : UINT;
-          lpReserved1 : UINT;
-          lpReserved2 : UINT;
-          pszText : LPTSTR;
-          cchTextMax : longint;
-          iImage : longint;
-       end;
-     _TC_ITEMHEADER = TC_ITEMHEADER;
-     TTCITEMHEADER = TC_ITEMHEADER;
-     PTCITEMHEADER = ^TC_ITEMHEADER;
-
-     TC_KEYDOWN = record
-          hdr : NMHDR;
-          wVKey : WORD;
-          flags : UINT;
-       end;
-     _TC_KEYDOWN = TC_KEYDOWN;
-     TTCKEYDOWN = TC_KEYDOWN;
-     PTCKEYDOWN = ^TC_KEYDOWN;
-
-     TEXTRANGE = record
-          chrg : CHARRANGE;
-          lpstrText : LPSTR;
-       end;
-     _textrange = TEXTRANGE;
-     Ttextrange = TEXTRANGE;
-     Ptextrange = ^TEXTRANGE;
-
-     TIME_ZONE_INFORMATION = record
-          Bias : LONG;
-          StandardName : array[0..31] of WCHAR;
-          StandardDate : SYSTEMTIME;
-          StandardBias : LONG;
-          DaylightName : array[0..31] of WCHAR;
-          DaylightDate : SYSTEMTIME;
-          DaylightBias : LONG;
-       end;
-     LPTIME_ZONE_INFORMATION = ^TIME_ZONE_INFORMATION;
-     _TIME_ZONE_INFORMATION = TIME_ZONE_INFORMATION;
-     TTIMEZONEINFORMATION = TIME_ZONE_INFORMATION;
-     PTIMEZONEINFORMATION = ^TIME_ZONE_INFORMATION;
-
-     TOGGLEKEYS = record
-          cbSize : DWORD;
-          dwFlags : DWORD;
-       end;
-     tagTOGGLEKEYS = TOGGLEKEYS;
-     TTOGGLEKEYS = TOGGLEKEYS;
-     PTOGGLEKEYS = ^TOGGLEKEYS;
-
-     TOKEN_SOURCE = record
-          SourceName : array[0..7] of CHAR;
-          SourceIdentifier : LUID;
-       end;
-     _TOKEN_SOURCE = TOKEN_SOURCE;
-     TTOKENSOURCE = TOKEN_SOURCE;
-     PTOKENSOURCE = ^TOKEN_SOURCE;
-
-     TOKEN_CONTROL = record
-          TokenId : LUID;
-          AuthenticationId : LUID;
-          ModifiedId : LUID;
-          TokenSource : TOKEN_SOURCE;
-       end;
-     _TOKEN_CONTROL = TOKEN_CONTROL;
-     TTOKENCONTROL = TOKEN_CONTROL;
-     PTOKENCONTROL = ^TOKEN_CONTROL;
-
-     TOKEN_DEFAULT_DACL = record
-          DefaultDacl : PACL;
-       end;
-     _TOKEN_DEFAULT_DACL = TOKEN_DEFAULT_DACL;
-     TTOKENDEFAULTDACL = TOKEN_DEFAULT_DACL;
-     PTOKENDEFAULTDACL = ^TOKEN_DEFAULT_DACL;
-
-     TOKEN_GROUPS = record
-          GroupCount : DWORD;
-          Groups : array[0..(ANYSIZE_ARRAY)-1] of SID_AND_ATTRIBUTES;
-       end;
-     PTOKEN_GROUPS = ^TOKEN_GROUPS;
-     LPTOKEN_GROUPS = ^TOKEN_GROUPS;
-     _TOKEN_GROUPS = TOKEN_GROUPS;
-     TTOKENGROUPS = TOKEN_GROUPS;
-     PTOKENGROUPS = ^TOKEN_GROUPS;
-
-     TOKEN_OWNER = record
-          Owner : PSID;
-       end;
-     _TOKEN_OWNER = TOKEN_OWNER;
-     TTOKENOWNER = TOKEN_OWNER;
-     PTOKENOWNER = ^TOKEN_OWNER;
-
-     TOKEN_PRIMARY_GROUP = record
-          PrimaryGroup : PSID;
-       end;
-     _TOKEN_PRIMARY_GROUP = TOKEN_PRIMARY_GROUP;
-     TTOKENPRIMARYGROUP = TOKEN_PRIMARY_GROUP;
-     PTOKENPRIMARYGROUP = ^TOKEN_PRIMARY_GROUP;
-
-     TOKEN_PRIVILEGES = packed record
-          PrivilegeCount : DWORD;
-          Privileges : array[0..(ANYSIZE_ARRAY)-1] of LUID_AND_ATTRIBUTES;
-       end;
-
-     PTOKEN_PRIVILEGES = ^TOKEN_PRIVILEGES;
-     LPTOKEN_PRIVILEGES = ^TOKEN_PRIVILEGES;
-     _TOKEN_PRIVILEGES = TOKEN_PRIVILEGES;
-     TTOKENPRIVILEGES = TOKEN_PRIVILEGES;
-     PTOKENPRIVILEGES = ^TOKEN_PRIVILEGES;
-
-     TOKEN_STATISTICS = record
-          TokenId : LUID;
-          AuthenticationId : LUID;
-          ExpirationTime : LARGE_INTEGER;
-          TokenType : TOKEN_TYPE;
-          ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL;
-          DynamicCharged : DWORD;
-          DynamicAvailable : DWORD;
-          GroupCount : DWORD;
-          PrivilegeCount : DWORD;
-          ModifiedId : LUID;
-       end;
-     _TOKEN_STATISTICS = TOKEN_STATISTICS;
-     TTOKENSTATISTICS = TOKEN_STATISTICS;
-     PTOKENSTATISTICS = ^TOKEN_STATISTICS;
-
-     TOKEN_USER = record
-          User : SID_AND_ATTRIBUTES;
-       end;
-     _TOKEN_USER = TOKEN_USER;
-     TTOKENUSER = TOKEN_USER;
-     PTOKENUSER = ^TOKEN_USER;
-
-     TOOLINFO = record
-          cbSize : UINT;
-          uFlags : UINT;
-          hwnd : HWND;
-          uId : UINT;
-          rect : RECT;
-          hinst : HINST;
-          lpszText : LPTSTR;
-       end;
-     LPTOOLINFO = ^TOOLINFO;
-     TTOOLINFO = TOOLINFO;
-     PTOOLINFO = ^TOOLINFO;
-
-     TPMPARAMS = record
-          cbSize : UINT;
-          rcExclude : RECT;
-       end;
-     LPTPMPARAMS = ^TPMPARAMS;
-     tagTPMPARAMS = TPMPARAMS;
-     TTPMPARAMS = TPMPARAMS;
-     PTPMPARAMS = ^TPMPARAMS;
-
-     TRANSMIT_FILE_BUFFERS = record
-          Head : PVOID;
-          HeadLength : DWORD;
-          Tail : PVOID;
-          TailLength : DWORD;
-       end;
-     _TRANSMIT_FILE_BUFFERS = TRANSMIT_FILE_BUFFERS;
-     TTRANSMITFILEBUFFERS = TRANSMIT_FILE_BUFFERS;
-     PTRANSMITFILEBUFFERS = ^TRANSMIT_FILE_BUFFERS;
-
-     TTHITTESTINFO = record
-          hwnd : HWND;
-          pt : POINT;
-          ti : TOOLINFO;
-       end;
-     LPHITTESTINFO = ^TTHITTESTINFO;
-     _TT_HITTESTINFO = TTHITTESTINFO;
-     TTTHITTESTINFO = TTHITTESTINFO;
-     PTTHITTESTINFO = ^TTHITTESTINFO;
-
-     TTPOLYCURVE = record
-          wType : WORD;
-          cpfx : WORD;
-          apfx : array[0..0] of POINTFX;
-       end;
-     LPTTPOLYCURVE = ^TTPOLYCURVE;
-     tagTTPOLYCURVE = TTPOLYCURVE;
-     TTTPOLYCURVE = TTPOLYCURVE;
-     PTTPOLYCURVE = ^TTPOLYCURVE;
-
-     TTPOLYGONHEADER = record
-          cb : DWORD;
-          dwType : DWORD;
-          pfxStart : POINTFX;
-       end;
-     LPTTPOLYGONHEADER = ^TTPOLYGONHEADER;
-     _TTPOLYGONHEADER = TTPOLYGONHEADER;
-     TTTPOLYGONHEADER = TTPOLYGONHEADER;
-     PTTPOLYGONHEADER = ^TTPOLYGONHEADER;
-
-     TV_DISPINFO = record
-          hdr : NMHDR;
-          item : TV_ITEM;
-       end;
-     _TV_DISPINFO = TV_DISPINFO;
-     TTVDISPINFO = TV_DISPINFO;
-     PTVDISPINFO = ^TV_DISPINFO;
-
-     TV_HITTESTINFO = record
-          pt : POINT;
-          flags : UINT;
-          hItem : HTREEITEM;
-       end;
-     LPTV_HITTESTINFO = ^TV_HITTESTINFO;
-     _TVHITTESTINFO = TV_HITTESTINFO;
-     TTVHITTESTINFO = TV_HITTESTINFO;
-     PTVHITTESTINFO = ^TV_HITTESTINFO;
-
-     TV_INSERTSTRUCT = record
-          hParent : HTREEITEM;
-          hInsertAfter : HTREEITEM;
-          item : TV_ITEM;
-       end;
-     LPTV_INSERTSTRUCT = ^TV_INSERTSTRUCT;
-     _TV_INSERTSTRUCT = TV_INSERTSTRUCT;
-     TTVINSERTSTRUCT = TV_INSERTSTRUCT;
-     PTVINSERTSTRUCT = ^TV_INSERTSTRUCT;
-
-     TV_KEYDOWN = record
-          hdr : NMHDR;
-          wVKey : WORD;
-          flags : UINT;
-       end;
-     _TV_KEYDOWN = TV_KEYDOWN;
-     TTVKEYDOWN = TV_KEYDOWN;
-     PTVKEYDOWN = ^TV_KEYDOWN;
-
-     TV_SORTCB = record
-          hParent : HTREEITEM;
-          lpfnCompare : PFNTVCOMPARE;
-          lParam : LPARAM;
-       end;
-     LPTV_SORTCB = ^TV_SORTCB;
-     _TV_SORTCB = TV_SORTCB;
-     TTVSORTCB = TV_SORTCB;
-     PTVSORTCB = ^TV_SORTCB;
-
-     UDACCEL = record
-          nSec : UINT;
-          nInc : UINT;
-       end;
-     TUDACCEL = UDACCEL;
-     PUDACCEL = ^UDACCEL;
-
-
-     UNIVERSAL_NAME_INFO = record
-          lpUniversalName : LPTSTR;
-       end;
-     _UNIVERSAL_NAME_INFO = UNIVERSAL_NAME_INFO;
-     TUNIVERSALNAMEINFO = UNIVERSAL_NAME_INFO;
-     PUNIVERSALNAMEINFO = ^UNIVERSAL_NAME_INFO;
-
-     USEROBJECTFLAGS = record
-          fInherit : WINBOOL;
-          fReserved : WINBOOL;
-          dwFlags : DWORD;
-       end;
-     tagUSEROBJECTFLAGS = USEROBJECTFLAGS;
-     TUSEROBJECTFLAGS = USEROBJECTFLAGS;
-     PUSEROBJECTFLAGS = ^USEROBJECTFLAGS;
-
-     VALENT = record
-          ve_valuename : LPTSTR;
-          ve_valuelen : DWORD;
-          ve_valueptr : DWORD;
-          ve_type : DWORD;
-       end;
-     TVALENT = VALENT;
-     PVALENT = ^VALENT;
-
-     value_ent = VALENT;
-     Tvalue_ent = VALENT;
-     Pvalue_ent = ^VALENT;
-
-     VERIFY_INFORMATION = record
-          StartingOffset : LARGE_INTEGER;
-          Length : DWORD;
-       end;
-     _VERIFY_INFORMATION = VERIFY_INFORMATION;
-     TVERIFYINFORMATION = VERIFY_INFORMATION;
-     PVERIFYINFORMATION = ^VERIFY_INFORMATION;
-
-     VS_FIXEDFILEINFO = record
-          dwSignature : DWORD;
-          dwStrucVersion : DWORD;
-          dwFileVersionMS : DWORD;
-          dwFileVersionLS : DWORD;
-          dwProductVersionMS : DWORD;
-          dwProductVersionLS : DWORD;
-          dwFileFlagsMask : DWORD;
-          dwFileFlags : DWORD;
-          dwFileOS : DWORD;
-          dwFileType : DWORD;
-          dwFileSubtype : DWORD;
-          dwFileDateMS : DWORD;
-          dwFileDateLS : DWORD;
-       end;
-     _VS_FIXEDFILEINFO = VS_FIXEDFILEINFO;
-     TVSFIXEDFILEINFO = VS_FIXEDFILEINFO;
-     PVSFIXEDFILEINFO = ^VS_FIXEDFILEINFO;
-
-     WIN32_FIND_DATAW = record
-          dwFileAttributes : DWORD;
-          ftCreationTime : FILETIME;
-          ftLastAccessTime : FILETIME;
-          ftLastWriteTime : FILETIME;
-          nFileSizeHigh : DWORD;
-          nFileSizeLow : DWORD;
-          dwOID: DWORD;
-          cFileName : array[0..MAX_PATH] of WCHAR;
-       end;
-
-     LPWIN32_FIND_DATAW = ^WIN32_FIND_DATAW;
-     PWIN32_FIND_DATAW = ^WIN32_FIND_DATAW;
-     _WIN32_FIND_DATAW = WIN32_FIND_DATAW;
-     TWIN32FINDDATAW = WIN32_FIND_DATAW;
-     PWIN32FINDDATAW = ^WIN32_FIND_DATAW;
-
-     WIN32_FIND_DATA = WIN32_FIND_DATAW;
-     LPWIN32_FIND_DATA = ^WIN32_FIND_DATAW;
-     PWIN32_FIND_DATA = ^WIN32_FIND_DATAW;
-     _WIN32_FIND_DATA = WIN32_FIND_DATAW;
-     TWIN32FINDDATA = WIN32_FIND_DATAW;
-     PWIN32FINDDATA = ^WIN32_FIND_DATAW;
-
-     WIN32_STREAM_ID = record
-          dwStreamId : DWORD;
-          dwStreamAttributes : DWORD;
-          Size : LARGE_INTEGER;
-          dwStreamNameSize : DWORD;
-          cStreamName : ^WCHAR;
-       end;
-     _WIN32_STREAM_ID = WIN32_STREAM_ID;
-     TWIN32STREAMID = WIN32_STREAM_ID;
-     PWIN32STREAMID = ^WIN32_STREAM_ID;
-
-     WINDOWPLACEMENT = record
-          length : UINT;
-          flags : UINT;
-          showCmd : UINT;
-          ptMinPosition : POINT;
-          ptMaxPosition : POINT;
-          rcNormalPosition : RECT;
-       end;
-     _WINDOWPLACEMENT = WINDOWPLACEMENT;
-     TWINDOWPLACEMENT = WINDOWPLACEMENT;
-     PWINDOWPLACEMENT = ^WINDOWPLACEMENT;
-
-     WNDCLASS = record
-          style : UINT;
-          lpfnWndProc : WNDPROC;
-          cbClsExtra : longint;
-          cbWndExtra : longint;
-          hInstance : HANDLE;
-          hIcon : HICON;
-          hCursor : HCURSOR;
-          hbrBackground : HBRUSH;
-          lpszMenuName : LPCTSTR;
-          lpszClassName : LPCTSTR;
-       end;
-     LPWNDCLASS = ^WNDCLASS;
-     _WNDCLASS = WNDCLASS;
-     TWNDCLASSA = WNDCLASS;
-
-
-     WNDCLASSW = record
-          style : UINT;
-          lpfnWndProc : WNDPROC;
-          cbClsExtra : longint;
-          cbWndExtra : longint;
-          hInstance : HANDLE;
-          hIcon : HICON;
-          hCursor : HCURSOR;
-          hbrBackground : HBRUSH;
-          lpszMenuName : LPCWSTR;
-          lpszClassName : LPCWSTR;
-       end;
-     LPWNDCLASSW = ^WNDCLASSW;
-     _WNDCLASSW  = WNDCLASSW;
-     TWNDCLASSW  = WNDCLASSW;
-     PWNDCLASSW  = ^WNDCLASSW;
-     TWNDCLASS = WNDCLASSW;
-     PWNDCLASS = ^WNDCLASSW;
-
-     WNDCLASSEX = record
-          cbSize : UINT;
-          style : UINT;
-          lpfnWndProc : WNDPROC;
-          cbClsExtra : longint;
-          cbWndExtra : longint;
-          hInstance : HANDLE;
-          hIcon : HICON;
-          hCursor : HCURSOR;
-          hbrBackground : HBRUSH;
-          lpszMenuName : LPCTSTR;
-          lpszClassName : LPCTSTR;
-          hIconSm : HANDLE;
-       end;
-     LPWNDCLASSEX = ^WNDCLASSEX;
-     _WNDCLASSEX = WNDCLASSEX;
-     TWNDCLASSEX = WNDCLASSEX;
-     TWNDCLASSEXA = WNDCLASSEX;
-     PWNDCLASSEX = ^WNDCLASSEX;
-
-     WNDCLASSEXW = record
-          cbSize : UINT;
-          style : UINT;
-          lpfnWndProc : WNDPROC;
-          cbClsExtra : longint;
-          cbWndExtra : longint;
-          hInstance : HANDLE;
-          hIcon : HICON;
-          hCursor : HCURSOR;
-          hbrBackground : HBRUSH;
-          lpszMenuName : LPCWSTR;
-          lpszClassName : LPCWSTR;
-          hIconSm : HANDLE;
-       end;
-     LPWNDCLASSEXW = ^WNDCLASSEXW;
-     _WNDCLASSEXW  = WNDCLASSEXW;
-     TWNDCLASSEXW  = WNDCLASSEXW;
-     PWNDCLASSEXW  = ^WNDCLASSEXW;
-
-     CONNECTDLGSTRUCT = record
-          cbStructure : DWORD;
-          hwndOwner : HWND;
-          lpConnRes : LPNETRESOURCE;
-          dwFlags : DWORD;
-          dwDevNum : DWORD;
-       end;
-     LPCONNECTDLGSTRUCT = ^CONNECTDLGSTRUCT;
-     _CONNECTDLGSTRUCT = CONNECTDLGSTRUCT;
-     TCONNECTDLGSTRUCT = CONNECTDLGSTRUCT;
-     PCONNECTDLGSTRUCT = ^CONNECTDLGSTRUCT;
-
-     CONNECTDLGSTRUCTW = record //+winnetwk
-          cbStructure : DWORD;
-          hwndOwner : HWND;
-          lpConnRes : LPNETRESOURCEW;
-          dwFlags : DWORD;
-          dwDevNum : DWORD;
-       end;
-     LPCONNECTDLGSTRUCTW = ^CONNECTDLGSTRUCTW; //+winnetwk
-     _CONNECTDLGSTRUCTW = CONNECTDLGSTRUCTW;  //+winnetwk
-
-     DISCDLGSTRUCT = record
-          cbStructure : DWORD;
-          hwndOwner : HWND;
-          lpLocalName : LPTSTR;
-          lpRemoteName : LPTSTR;
-          dwFlags : DWORD;
-       end;
-     LPDISCDLGSTRUCT = ^DISCDLGSTRUCT;
-     _DISCDLGSTRUCT = DISCDLGSTRUCT;
-     TDISCDLGSTRUCT = DISCDLGSTRUCT;
-     TDISCDLGSTRUCTA = DISCDLGSTRUCT;
-     PDISCDLGSTRUCT = ^DISCDLGSTRUCT;
-
-     DISCDLGSTRUCTW = record  //+winnetwk
-          cbStructure : DWORD;
-          hwndOwner : HWND;
-          lpLocalName : LPWSTR;
-          lpRemoteName : LPWSTR;
-          dwFlags : DWORD;
-       end;
-     LPDISCDLGSTRUCTW = ^DISCDLGSTRUCTW; //+winnetwk
-     _DISCDLGSTRUCTW = DISCDLGSTRUCTW;   //+winnetwk
-
-     NETINFOSTRUCT = record
-          cbStructure : DWORD;
-          dwProviderVersion : DWORD;
-          dwStatus : DWORD;
-          dwCharacteristics : DWORD;
-          dwHandle : DWORD;
-          wNetType : WORD;
-          dwPrinters : DWORD;
-          dwDrives : DWORD;
-       end;
-     LPNETINFOSTRUCT = ^NETINFOSTRUCT;
-     _NETINFOSTRUCT = NETINFOSTRUCT;
-     TNETINFOSTRUCT = NETINFOSTRUCT;
-     PNETINFOSTRUCT = ^NETINFOSTRUCT;
-
-     NETCONNECTINFOSTRUCT = record
-          cbStructure : DWORD;
-          dwFlags : DWORD;
-          dwSpeed : DWORD;
-          dwDelay : DWORD;
-          dwOptDataSize : DWORD;
-       end;
-     LPNETCONNECTINFOSTRUCT = ^NETCONNECTINFOSTRUCT;
-     _NETCONNECTINFOSTRUCT = NETCONNECTINFOSTRUCT;
-     TNETCONNECTINFOSTRUCT = NETCONNECTINFOSTRUCT;
-     PNETCONNECTINFOSTRUCT = ^NETCONNECTINFOSTRUCT;
-
-     ENUMMETAFILEPROC = function (_para1:HDC; _para2:HANDLETABLE; _para3:METARECORD; _para4:longint; _para5:LPARAM):longint;
-
-     ENHMETAFILEPROC = function (_para1:HDC; _para2:HANDLETABLE; _para3:ENHMETARECORD; _para4:longint; _para5:LPARAM):longint;
-
-     ENUMFONTSPROC = function (_para1:LPLOGFONT; _para2:LPTEXTMETRIC; _para3:DWORD; _para4:LPARAM):longint;
-
-     FONTENUMPROC = function (var _para1:ENUMLOGFONT; var _para2:NEWTEXTMETRIC; _para3:longint; _para4:LPARAM):longint;
-
-     FONTENUMEXPROC = function (var _para1:ENUMLOGFONTEX;var _para2:NEWTEXTMETRICEX; _para3:longint; _para4:LPARAM):longint;
-
-     LPOVERLAPPED_COMPLETION_ROUTINE = procedure (_para1:DWORD; _para2:DWORD; _para3:LPOVERLAPPED);
-
-     { Structures for the extensions to OpenGL }
-
-     POINTFLOAT = record
-          x : Single;
-          y : Single;
-       end;
-     _POINTFLOAT = POINTFLOAT;
-     TPOINTFLOAT = POINTFLOAT;
-     PPOINTFLOAT = ^POINTFLOAT;
-
-     GLYPHMETRICSFLOAT = record
-          gmfBlackBoxX : Single;
-          gmfBlackBoxY : Single;
-          gmfptGlyphOrigin : POINTFLOAT;
-          gmfCellIncX : Single;
-          gmfCellIncY : Single;
-       end;
-     LPGLYPHMETRICSFLOAT = ^GLYPHMETRICSFLOAT;
-     _GLYPHMETRICSFLOAT = GLYPHMETRICSFLOAT;
-     TGLYPHMETRICSFLOAT = GLYPHMETRICSFLOAT;
-     PGLYPHMETRICSFLOAT = ^GLYPHMETRICSFLOAT;
-
-     LAYERPLANEDESCRIPTOR = record
-          nSize : WORD;
-          nVersion : WORD;
-          dwFlags : DWORD;
-          iPixelType : BYTE;
-          cColorBits : BYTE;
-          cRedBits : BYTE;
-          cRedShift : BYTE;
-          cGreenBits : BYTE;
-          cGreenShift : BYTE;
-          cBlueBits : BYTE;
-          cBlueShift : BYTE;
-          cAlphaBits : BYTE;
-          cAlphaShift : BYTE;
-          cAccumBits : BYTE;
-          cAccumRedBits : BYTE;
-          cAccumGreenBits : BYTE;
-          cAccumBlueBits : BYTE;
-          cAccumAlphaBits : BYTE;
-          cDepthBits : BYTE;
-          cStencilBits : BYTE;
-          cAuxBuffers : BYTE;
-          iLayerPlane : BYTE;
-          bReserved : BYTE;
-          crTransparent : COLORREF;
-       end;
-     LPLAYERPLANEDESCRIPTOR = ^LAYERPLANEDESCRIPTOR;
-     tagLAYERPLANEDESCRIPTOR = LAYERPLANEDESCRIPTOR;
-     TLAYERPLANEDESCRIPTOR = LAYERPLANEDESCRIPTOR;
-     PLAYERPLANEDESCRIPTOR = ^LAYERPLANEDESCRIPTOR;
-
-     PIXELFORMATDESCRIPTOR = record
-          nSize : WORD;
-          nVersion : WORD;
-          dwFlags : DWORD;
-          iPixelType : BYTE;
-          cColorBits : BYTE;
-          cRedBits : BYTE;
-          cRedShift : BYTE;
-          cGreenBits : BYTE;
-          cGreenShift : BYTE;
-          cBlueBits : BYTE;
-          cBlueShift : BYTE;
-          cAlphaBits : BYTE;
-          cAlphaShift : BYTE;
-          cAccumBits : BYTE;
-          cAccumRedBits : BYTE;
-          cAccumGreenBits : BYTE;
-          cAccumBlueBits : BYTE;
-          cAccumAlphaBits : BYTE;
-          cDepthBits : BYTE;
-          cStencilBits : BYTE;
-          cAuxBuffers : BYTE;
-          iLayerType : BYTE;
-          bReserved : BYTE;
-          dwLayerMask : DWORD;
-          dwVisibleMask : DWORD;
-          dwDamageMask : DWORD;
-       end;
-     LPPIXELFORMATDESCRIPTOR = ^PIXELFORMATDESCRIPTOR;
-     tagPIXELFORMATDESCRIPTOR = PIXELFORMATDESCRIPTOR;
-     TPIXELFORMATDESCRIPTOR = PIXELFORMATDESCRIPTOR;
-     PPIXELFORMATDESCRIPTOR = ^PIXELFORMATDESCRIPTOR;
-
-     USER_INFO_2 = record
-          usri2_name : LPWSTR;
-          usri2_password : LPWSTR;
-          usri2_password_age : DWORD;
-          usri2_priv : DWORD;
-          usri2_home_dir : LPWSTR;
-          usri2_comment : LPWSTR;
-          usri2_flags : DWORD;
-          usri2_script_path : LPWSTR;
-          usri2_auth_flags : DWORD;
-          usri2_full_name : LPWSTR;
-          usri2_usr_comment : LPWSTR;
-          usri2_parms : LPWSTR;
-          usri2_workstations : LPWSTR;
-          usri2_last_logon : DWORD;
-          usri2_last_logoff : DWORD;
-          usri2_acct_expires : DWORD;
-          usri2_max_storage : DWORD;
-          usri2_units_per_week : DWORD;
-          usri2_logon_hours : PBYTE;
-          usri2_bad_pw_count : DWORD;
-          usri2_num_logons : DWORD;
-          usri2_logon_server : LPWSTR;
-          usri2_country_code : DWORD;
-          usri2_code_page : DWORD;
-       end;
-     PUSER_INFO_2 = ^USER_INFO_2;
-     LPUSER_INFO_2 = ^USER_INFO_2;
-     TUSERINFO2 = USER_INFO_2;
-     PUSERINFO2 = ^USER_INFO_2;
-
-     USER_INFO_0 = record
-          usri0_name : LPWSTR;
-       end;
-     PUSER_INFO_0 = ^USER_INFO_0;
-     LPUSER_INFO_0 = ^USER_INFO_0;
-     TUSERINFO0 = USER_INFO_0;
-     PUSERINFO0 = ^USER_INFO_0;
-
-     USER_INFO_3 = record
-          usri3_name : LPWSTR;
-          usri3_password : LPWSTR;
-          usri3_password_age : DWORD;
-          usri3_priv : DWORD;
-          usri3_home_dir : LPWSTR;
-          usri3_comment : LPWSTR;
-          usri3_flags : DWORD;
-          usri3_script_path : LPWSTR;
-          usri3_auth_flags : DWORD;
-          usri3_full_name : LPWSTR;
-          usri3_usr_comment : LPWSTR;
-          usri3_parms : LPWSTR;
-          usri3_workstations : LPWSTR;
-          usri3_last_logon : DWORD;
-          usri3_last_logoff : DWORD;
-          usri3_acct_expires : DWORD;
-          usri3_max_storage : DWORD;
-          usri3_units_per_week : DWORD;
-          usri3_logon_hours : PBYTE;
-          usri3_bad_pw_count : DWORD;
-          usri3_num_logons : DWORD;
-          usri3_logon_server : LPWSTR;
-          usri3_country_code : DWORD;
-          usri3_code_page : DWORD;
-          usri3_user_id : DWORD;
-          usri3_primary_group_id : DWORD;
-          usri3_profile : LPWSTR;
-          usri3_home_dir_drive : LPWSTR;
-          usri3_password_expired : DWORD;
-       end;
-     PUSER_INFO_3 = ^USER_INFO_3;
-     LPUSER_INFO_3 = ^USER_INFO_3;
-     TUSERINFO3 = USER_INFO_3;
-     PUSERINFO3 = ^USER_INFO_3;
-
-     GROUP_INFO_2 = record
-          grpi2_name : LPWSTR;
-          grpi2_comment : LPWSTR;
-          grpi2_group_id : DWORD;
-          grpi2_attributes : DWORD;
-       end;
-     PGROUP_INFO_2 = ^GROUP_INFO_2;
-     TGROUPINFO2 = GROUP_INFO_2;
-     PGROUPINFO2 = ^GROUP_INFO_2;
-
-     LOCALGROUP_INFO_0 = record
-          lgrpi0_name : LPWSTR;
-       end;
-     PLOCALGROUP_INFO_0 = ^LOCALGROUP_INFO_0;
-     LPLOCALGROUP_INFO_0 = ^LOCALGROUP_INFO_0;
-     TLOCALGROUPINFO0 = LOCALGROUP_INFO_0;
-     PLOCALGROUPINFO0 = ^LOCALGROUP_INFO_0;
-
-  { PE executable header.   }
-  { Magic number, 0x5a4d  }
-  { Bytes on last page of file, 0x90  }
-  { Pages in file, 0x3  }
-  { Relocations, 0x0  }
-  { Size of header in paragraphs, 0x4  }
-  { Minimum extra paragraphs needed, 0x0  }
-  { Maximum extra paragraphs needed, 0xFFFF  }
-  { Initial (relative) SS value, 0x0  }
-  { Initial SP value, 0xb8  }
-  { Checksum, 0x0  }
-  { Initial IP value, 0x0  }
-  { Initial (relative) CS value, 0x0  }
-  { File address of relocation table, 0x40  }
-  { Overlay number, 0x0  }
-  { Reserved words, all 0x0  }
-  { OEM identifier (for e_oeminfo), 0x0  }
-  { OEM information; e_oemid specific, 0x0  }
-  { Reserved words, all 0x0  }
-  { File address of new exe header, 0x80  }
-  { We leave out the next two fields, since they aren't in the header file }
-  { DWORD dos_message[16];   text which always follows dos header  }
-  { DWORD nt_signature;      required NT signature, 0x4550  }
-
-     IMAGE_DOS_HEADER = record
-          e_magic : WORD;
-          e_cblp : WORD;
-          e_cp : WORD;
-          e_crlc : WORD;
-          e_cparhdr : WORD;
-          e_minalloc : WORD;
-          e_maxalloc : WORD;
-          e_ss : WORD;
-          e_sp : WORD;
-          e_csum : WORD;
-          e_ip : WORD;
-          e_cs : WORD;
-          e_lfarlc : WORD;
-          e_ovno : WORD;
-          e_res : array[0..3] of WORD;
-          e_oemid : WORD;
-          e_oeminfo : WORD;
-          e_res2 : array[0..9] of WORD;
-          e_lfanew : LONG;
-       end;
-     PIMAGE_DOS_HEADER = ^IMAGE_DOS_HEADER;
-     TIMAGEDOSHEADER = IMAGE_DOS_HEADER;
-     PIMAGEDOSHEADER = ^IMAGE_DOS_HEADER;
-
-      _NOTIFYICONDATAA = record
-          cbSize: DWORD;
-          Wnd: HWND;
-          uID: UINT;
-          uFlags: UINT;
-          uCallbackMessage: UINT;
-          hIcon: HICON;
-          szTip: array [0..63] of Char;
-     end;
-     _NOTIFYICONDATA = _NOTIFYICONDATAA;
-
-     _NOTIFYICONDATAW = record
-         cbSize: DWORD;
-         Wnd: HWND;
-         uID: UINT;
-         uFlags: UINT;
-         uCallbackMessage: UINT;
-         hIcon: HICON;
-         szTip: array [0..63] of Word;
-     end;
-     TNotifyIconDataA = _NOTIFYICONDATAA;
-     TNotifyIconDataW = _NOTIFYICONDATAW;
-     TNotifyIconData = TNotifyIconDataA;
-     NOTIFYICONDATAA = _NOTIFYICONDATAA;
-     NOTIFYICONDATAW = _NOTIFYICONDATAW;
-     NOTIFYICONDATA = NOTIFYICONDATAA;
-     PNotifyIconDataA = ^TNotifyIconDataA;
-     PNotifyIconDataW = ^TNotifyIconDataW;
-     PNotifyIconData = PNotifyIconDataA;
-
-     TWOHandleArray = array[0..MAXIMUM_WAIT_OBJECTS-1] of HANDLE;
-     PWOHandleArray = ^TWOHandleArray;
-
- MMRESULT = Longint;
-
-type
-  PWaveFormatEx = ^TWaveFormatEx;
-  TWaveFormatEx = packed record
-    wFormatTag: Word;       { format type }
-    nChannels: Word;        { number of channels (i.e. mono, stereo, etc.) }
-    nSamplesPerSec: DWORD;  { sample rate }
-    nAvgBytesPerSec: DWORD; { for buffer estimation }
-    nBlockAlign: Word;      { block size of data }
-    wBitsPerSample: Word;   { number of bits per sample of mono data }
-    cbSize: Word;           { the count in bytes of the size of }
-  end;
-
-  _WIN32_FILE_ATTRIBUTE_DATA = packed record
-    dwFileAttributes:     DWORD;
-    ftCreationTime:       FILETIME;
-    ftLastAccessTime:     FILETIME;
-    ftLastWriteTime:      FILETIME;
-    nFileSizeHigh:        DWORD;
-    nFileSizeLow:         DWORD;
-    end;
-  WIN32_FILE_ATTRIBUTE_DATA   = _WIN32_FILE_ATTRIBUTE_DATA ;
-  LPWIN32_FILE_ATTRIBUTE_DATA = ^_WIN32_FILE_ATTRIBUTE_DATA;
-  TWIN32FILEATTRIBUTEDATA     = _WIN32_FILE_ATTRIBUTE_DATA ;
-  PWIN32FILEATTRIBUTEDATA     = ^_WIN32_FILE_ATTRIBUTE_DATA;
-
-  // TrackMouseEvent. NT or higher only.
-  TTrackMouseEvent = Record
-    cbSize : DWORD;
-    dwFlags : DWORD;
-    hwndTrack : HWND;
-    dwHoverTime : DWORD;
-  end;
-  PTrackMouseEvent = ^TTrackMouseEvent;
-
-{$endif read_interface}
-
-
-{$ifdef read_implementation}
-
-  function fBinary(var a : DCB) : DWORD;
-    begin
-       fBinary:=(a.flags and bm_DCB_fBinary) shr bp_DCB_fBinary;
-    end;
-
-  procedure set_fBinary(var a : DCB; __fBinary : DWORD);
-    begin
-       a.flags:=a.flags or ((__fBinary shl bp_DCB_fBinary) and bm_DCB_fBinary);
-    end;
-
-  function fParity(var a : DCB) : DWORD;
-    begin
-       fParity:=(a.flags and bm_DCB_fParity) shr bp_DCB_fParity;
-    end;
-
-  procedure set_fParity(var a : DCB; __fParity : DWORD);
-    begin
-       a.flags:=a.flags or ((__fParity shl bp_DCB_fParity) and bm_DCB_fParity);
-    end;
-
-  function fOutxCtsFlow(var a : DCB) : DWORD;
-    begin
-       fOutxCtsFlow:=(a.flags and bm_DCB_fOutxCtsFlow) shr bp_DCB_fOutxCtsFlow;
-    end;
-
-  procedure set_fOutxCtsFlow(var a : DCB; __fOutxCtsFlow : DWORD);
-    begin
-       a.flags:=a.flags or ((__fOutxCtsFlow shl bp_DCB_fOutxCtsFlow) and bm_DCB_fOutxCtsFlow);
-    end;
-
-  function fOutxDsrFlow(var a : DCB) : DWORD;
-    begin
-       fOutxDsrFlow:=(a.flags and bm_DCB_fOutxDsrFlow) shr bp_DCB_fOutxDsrFlow;
-    end;
-
-  procedure set_fOutxDsrFlow(var a : DCB; __fOutxDsrFlow : DWORD);
-    begin
-       a.flags:=a.flags or ((__fOutxDsrFlow shl bp_DCB_fOutxDsrFlow) and bm_DCB_fOutxDsrFlow);
-    end;
-
-  function fDtrControl(var a : DCB) : DWORD;
-    begin
-       fDtrControl:=(a.flags and bm_DCB_fDtrControl) shr bp_DCB_fDtrControl;
-    end;
-
-  procedure set_fDtrControl(var a : DCB; __fDtrControl : DWORD);
-    begin
-       a.flags:=a.flags or ((__fDtrControl shl bp_DCB_fDtrControl) and bm_DCB_fDtrControl);
-    end;
-
-  function fDsrSensitivity(var a : DCB) : DWORD;
-    begin
-       fDsrSensitivity:=(a.flags and bm_DCB_fDsrSensitivity) shr bp_DCB_fDsrSensitivity;
-    end;
-
-  procedure set_fDsrSensitivity(var a : DCB; __fDsrSensitivity : DWORD);
-    begin
-       a.flags:=a.flags or ((__fDsrSensitivity shl bp_DCB_fDsrSensitivity) and bm_DCB_fDsrSensitivity);
-    end;
-
-  function fTXContinueOnXoff(var a : DCB) : DWORD;
-    begin
-       fTXContinueOnXoff:=(a.flags and bm_DCB_fTXContinueOnXoff) shr bp_DCB_fTXContinueOnXoff;
-    end;
-
-  procedure set_fTXContinueOnXoff(var a : DCB; __fTXContinueOnXoff : DWORD);
-    begin
-       a.flags:=a.flags or ((__fTXContinueOnXoff shl bp_DCB_fTXContinueOnXoff) and bm_DCB_fTXContinueOnXoff);
-    end;
-
-  function fOutX(var a : DCB) : DWORD;
-    begin
-       fOutX:=(a.flags and bm_DCB_fOutX) shr bp_DCB_fOutX;
-    end;
-
-  procedure set_fOutX(var a : DCB; __fOutX : DWORD);
-    begin
-       a.flags:=a.flags or ((__fOutX shl bp_DCB_fOutX) and bm_DCB_fOutX);
-    end;
-
-  function fInX(var a : DCB) : DWORD;
-    begin
-       fInX:=(a.flags and bm_DCB_fInX) shr bp_DCB_fInX;
-    end;
-
-  procedure set_fInX(var a : DCB; __fInX : DWORD);
-    begin
-       a.flags:=a.flags or ((__fInX shl bp_DCB_fInX) and bm_DCB_fInX);
-    end;
-
-  function fErrorChar(var a : DCB) : DWORD;
-    begin
-       fErrorChar:=(a.flags and bm_DCB_fErrorChar) shr bp_DCB_fErrorChar;
-    end;
-
-  procedure set_fErrorChar(var a : DCB; __fErrorChar : DWORD);
-    begin
-       a.flags:=a.flags or ((__fErrorChar shl bp_DCB_fErrorChar) and bm_DCB_fErrorChar);
-    end;
-
-  function fNull(var a : DCB) : DWORD;
-    begin
-       fNull:=(a.flags and bm_DCB_fNull) shr bp_DCB_fNull;
-    end;
-
-  procedure set_fNull(var a : DCB; __fNull : DWORD);
-    begin
-       a.flags:=a.flags or ((__fNull shl bp_DCB_fNull) and bm_DCB_fNull);
-    end;
-
-  function fRtsControl(var a : DCB) : DWORD;
-    begin
-       fRtsControl:=(a.flags and bm_DCB_fRtsControl) shr bp_DCB_fRtsControl;
-    end;
-
-  procedure set_fRtsControl(var a : DCB; __fRtsControl : DWORD);
-    begin
-       a.flags:=a.flags or ((__fRtsControl shl bp_DCB_fRtsControl) and bm_DCB_fRtsControl);
-    end;
-
-  function fAbortOnError(var a : DCB) : DWORD;
-    begin
-       fAbortOnError:=(a.flags and bm_DCB_fAbortOnError) shr bp_DCB_fAbortOnError;
-    end;
-
-  procedure set_fAbortOnError(var a : DCB; __fAbortOnError : DWORD);
-    begin
-       a.flags:=a.flags or ((__fAbortOnError shl bp_DCB_fAbortOnError) and bm_DCB_fAbortOnError);
-    end;
-
-  function fDummy2(var a : DCB) : DWORD;
-    begin
-       fDummy2:=(a.flags and bm_DCB_fDummy2) shr bp_DCB_fDummy2;
-    end;
-
-  procedure set_fDummy2(var a : DCB; __fDummy2 : DWORD);
-    begin
-       a.flags:=a.flags or ((__fDummy2 shl bp_DCB_fDummy2) and bm_DCB_fDummy2);
-    end;
-
-  function fCtsHold(var a : COMSTAT) : DWORD;
-    begin
-       fCtsHold:=(a.flag0 and bm_COMSTAT_fCtsHold) shr bp_COMSTAT_fCtsHold;
-    end;
-
-  procedure set_fCtsHold(var a : COMSTAT; __fCtsHold : DWORD);
-    begin
-       a.flag0:=a.flag0 or ((__fCtsHold shl bp_COMSTAT_fCtsHold) and bm_COMSTAT_fCtsHold);
-    end;
-
-  function fDsrHold(var a : COMSTAT) : DWORD;
-    begin
-       fDsrHold:=(a.flag0 and bm_COMSTAT_fDsrHold) shr bp_COMSTAT_fDsrHold;
-    end;
-
-  procedure set_fDsrHold(var a : COMSTAT; __fDsrHold : DWORD);
-    begin
-       a.flag0:=a.flag0 or ((__fDsrHold shl bp_COMSTAT_fDsrHold) and bm_COMSTAT_fDsrHold);
-    end;
-
-  function fRlsdHold(var a : COMSTAT) : DWORD;
-    begin
-       fRlsdHold:=(a.flag0 and bm_COMSTAT_fRlsdHold) shr bp_COMSTAT_fRlsdHold;
-    end;
-
-  procedure set_fRlsdHold(var a : COMSTAT; __fRlsdHold : DWORD);
-    begin
-       a.flag0:=a.flag0 or ((__fRlsdHold shl bp_COMSTAT_fRlsdHold) and bm_COMSTAT_fRlsdHold);
-    end;
-
-  function fXoffHold(var a : COMSTAT) : DWORD;
-    begin
-       fXoffHold:=(a.flag0 and bm_COMSTAT_fXoffHold) shr bp_COMSTAT_fXoffHold;
-    end;
-
-  procedure set_fXoffHold(var a : COMSTAT; __fXoffHold : DWORD);
-    begin
-       a.flag0:=a.flag0 or ((__fXoffHold shl bp_COMSTAT_fXoffHold) and bm_COMSTAT_fXoffHold);
-    end;
-
-  function fXoffSent(var a : COMSTAT) : DWORD;
-    begin
-       fXoffSent:=(a.flag0 and bm_COMSTAT_fXoffSent) shr bp_COMSTAT_fXoffSent;
-    end;
-
-  procedure set_fXoffSent(var a : COMSTAT; __fXoffSent : DWORD);
-    begin
-       a.flag0:=a.flag0 or ((__fXoffSent shl bp_COMSTAT_fXoffSent) and bm_COMSTAT_fXoffSent);
-    end;
-
-  function fEof(var a : COMSTAT) : DWORD;
-    begin
-       fEof:=(a.flag0 and bm_COMSTAT_fEof) shr bp_COMSTAT_fEof;
-    end;
-
-  procedure set_fEof(var a : COMSTAT; __fEof : DWORD);
-    begin
-       a.flag0:=a.flag0 or ((__fEof shl bp_COMSTAT_fEof) and bm_COMSTAT_fEof);
-    end;
-
-  function fTxim(var a : COMSTAT) : DWORD;
-    begin
-       fTxim:=(a.flag0 and bm_COMSTAT_fTxim) shr bp_COMSTAT_fTxim;
-    end;
-
-  procedure set_fTxim(var a : COMSTAT; __fTxim : DWORD);
-    begin
-       a.flag0:=a.flag0 or ((__fTxim shl bp_COMSTAT_fTxim) and bm_COMSTAT_fTxim);
-    end;
-
-  function fReserved(var a : COMSTAT) : DWORD;
-    begin
-       fReserved:=(a.flag0 and bm_COMSTAT_fReserved) shr bp_COMSTAT_fReserved;
-    end;
-
-  procedure set_fReserved(var a : COMSTAT; __fReserved : DWORD);
-    begin
-       a.flag0:=a.flag0 or ((__fReserved shl bp_COMSTAT_fReserved) and bm_COMSTAT_fReserved);
-    end;
-
-  function bAppReturnCode(var a : DDEACK) : word;
-    begin
-       bAppReturnCode:=(a.flag0 and bm_DDEACK_bAppReturnCode) shr bp_DDEACK_bAppReturnCode;
-    end;
-
-  procedure set_bAppReturnCode(var a : DDEACK; __bAppReturnCode : word);
-    begin
-       a.flag0:=a.flag0 or ((__bAppReturnCode shl bp_DDEACK_bAppReturnCode) and bm_DDEACK_bAppReturnCode);
-    end;
-
-  function reserved(var a : DDEACK) : word;
-    begin
-       reserved:=(a.flag0 and bm_DDEACK_reserved) shr bp_DDEACK_reserved;
-    end;
-
-  procedure set_reserved(var a : DDEACK; __reserved : word);
-    begin
-       a.flag0:=a.flag0 or ((__reserved shl bp_DDEACK_reserved) and bm_DDEACK_reserved);
-    end;
-
-  function fBusy(var a : DDEACK) : word;
-    begin
-       fBusy:=(a.flag0 and bm_DDEACK_fBusy) shr bp_DDEACK_fBusy;
-    end;
-
-  procedure set_fBusy(var a : DDEACK; __fBusy : word);
-    begin
-       a.flag0:=a.flag0 or ((__fBusy shl bp_DDEACK_fBusy) and bm_DDEACK_fBusy);
-    end;
-
-  function fAck(var a : DDEACK) : word;
-    begin
-       fAck:=(a.flag0 and bm_DDEACK_fAck) shr bp_DDEACK_fAck;
-    end;
-
-  procedure set_fAck(var a : DDEACK; __fAck : word);
-    begin
-       a.flag0:=a.flag0 or ((__fAck shl bp_DDEACK_fAck) and bm_DDEACK_fAck);
-    end;
-
-  function reserved(var a : DDEADVISE) : word;
-    begin
-       reserved:=(a.flag0 and bm_DDEADVISE_reserved) shr bp_DDEADVISE_reserved;
-    end;
-
-  procedure set_reserved(var a : DDEADVISE; __reserved : word);
-    begin
-       a.flag0:=a.flag0 or ((__reserved shl bp_DDEADVISE_reserved) and bm_DDEADVISE_reserved);
-    end;
-
-  function fDeferUpd(var a : DDEADVISE) : word;
-    begin
-       fDeferUpd:=(a.flag0 and bm_DDEADVISE_fDeferUpd) shr bp_DDEADVISE_fDeferUpd;
-    end;
-
-  procedure set_fDeferUpd(var a : DDEADVISE; __fDeferUpd : word);
-    begin
-       a.flag0:=a.flag0 or ((__fDeferUpd shl bp_DDEADVISE_fDeferUpd) and bm_DDEADVISE_fDeferUpd);
-    end;
-
-  function fAckReq(var a : DDEADVISE) : word;
-    begin
-       fAckReq:=(a.flag0 and bm_DDEADVISE_fAckReq) shr bp_DDEADVISE_fAckReq;
-    end;
-
-  procedure set_fAckReq(var a : DDEADVISE; __fAckReq : word);
-    begin
-       a.flag0:=a.flag0 or ((__fAckReq shl bp_DDEADVISE_fAckReq) and bm_DDEADVISE_fAckReq);
-    end;
-
-  function unused(var a : DDEDATA) : word;
-    begin
-       unused:=(a.flag0 and bm_DDEDATA_unused) shr bp_DDEDATA_unused;
-    end;
-
-  procedure set_unused(var a : DDEDATA; __unused : word);
-    begin
-       a.flag0:=a.flag0 or ((__unused shl bp_DDEDATA_unused) and bm_DDEDATA_unused);
-    end;
-
-  function fResponse(var a : DDEDATA) : word;
-    begin
-       fResponse:=(a.flag0 and bm_DDEDATA_fResponse) shr bp_DDEDATA_fResponse;
-    end;
-
-  procedure set_fResponse(var a : DDEDATA; __fResponse : word);
-    begin
-       a.flag0:=a.flag0 or ((__fResponse shl bp_DDEDATA_fResponse) and bm_DDEDATA_fResponse);
-    end;
-
-  function fRelease(var a : DDEDATA) : word;
-    begin
-       fRelease:=(a.flag0 and bm_DDEDATA_fRelease) shr bp_DDEDATA_fRelease;
-    end;
-
-  procedure set_fRelease(var a : DDEDATA; __fRelease : word);
-    begin
-       a.flag0:=a.flag0 or ((__fRelease shl bp_DDEDATA_fRelease) and bm_DDEDATA_fRelease);
-    end;
-
-  function reserved(var a : DDEDATA) : word;
-    begin
-       reserved:=(a.flag0 and bm_DDEDATA_reserved) shr bp_DDEDATA_reserved;
-    end;
-
-  procedure set_reserved(var a : DDEDATA; __reserved : word);
-    begin
-       a.flag0:=a.flag0 or ((__reserved shl bp_DDEDATA_reserved) and bm_DDEDATA_reserved);
-    end;
-
-  function fAckReq(var a : DDEDATA) : word;
-    begin
-       fAckReq:=(a.flag0 and bm_DDEDATA_fAckReq) shr bp_DDEDATA_fAckReq;
-    end;
-
-  procedure set_fAckReq(var a : DDEDATA; __fAckReq : word);
-    begin
-       a.flag0:=a.flag0 or ((__fAckReq shl bp_DDEDATA_fAckReq) and bm_DDEDATA_fAckReq);
-    end;
-
-  function unused(var a : DDELN) : word;
-    begin
-       unused:=(a.flag0 and bm_DDELN_unused) shr bp_DDELN_unused;
-    end;
-
-  procedure set_unused(var a : DDELN; __unused : word);
-    begin
-       a.flag0:=a.flag0 or ((__unused shl bp_DDELN_unused) and bm_DDELN_unused);
-    end;
-
-  function fRelease(var a : DDELN) : word;
-    begin
-       fRelease:=(a.flag0 and bm_DDELN_fRelease) shr bp_DDELN_fRelease;
-    end;
-
-  procedure set_fRelease(var a : DDELN; __fRelease : word);
-    begin
-       a.flag0:=a.flag0 or ((__fRelease shl bp_DDELN_fRelease) and bm_DDELN_fRelease);
-    end;
-
-  function fDeferUpd(var a : DDELN) : word;
-    begin
-       fDeferUpd:=(a.flag0 and bm_DDELN_fDeferUpd) shr bp_DDELN_fDeferUpd;
-    end;
-
-  procedure set_fDeferUpd(var a : DDELN; __fDeferUpd : word);
-    begin
-       a.flag0:=a.flag0 or ((__fDeferUpd shl bp_DDELN_fDeferUpd) and bm_DDELN_fDeferUpd);
-    end;
-
-  function fAckReq(var a : DDELN) : word;
-    begin
-       fAckReq:=(a.flag0 and bm_DDELN_fAckReq) shr bp_DDELN_fAckReq;
-    end;
-
-  procedure set_fAckReq(var a : DDELN; __fAckReq : word);
-    begin
-       a.flag0:=a.flag0 or ((__fAckReq shl bp_DDELN_fAckReq) and bm_DDELN_fAckReq);
-    end;
-
-  function unused(var a : DDEPOKE) : word;
-    begin
-       unused:=(a.flag0 and bm_DDEPOKE_unused) shr bp_DDEPOKE_unused;
-    end;
-
-  procedure set_unused(var a : DDEPOKE; __unused : word);
-    begin
-       a.flag0:=a.flag0 or ((__unused shl bp_DDEPOKE_unused) and bm_DDEPOKE_unused);
-    end;
-
-  function fRelease(var a : DDEPOKE) : word;
-    begin
-       fRelease:=(a.flag0 and bm_DDEPOKE_fRelease) shr bp_DDEPOKE_fRelease;
-    end;
-
-  procedure set_fRelease(var a : DDEPOKE; __fRelease : word);
-    begin
-       a.flag0:=a.flag0 or ((__fRelease shl bp_DDEPOKE_fRelease) and bm_DDEPOKE_fRelease);
-    end;
-
-  function fReserved(var a : DDEPOKE) : word;
-    begin
-       fReserved:=(a.flag0 and bm_DDEPOKE_fReserved) shr bp_DDEPOKE_fReserved;
-    end;
-
-  procedure set_fReserved(var a : DDEPOKE; __fReserved : word);
-    begin
-       a.flag0:=a.flag0 or ((__fReserved shl bp_DDEPOKE_fReserved) and bm_DDEPOKE_fReserved);
-    end;
-
-  function unused(var a : DDEUP) : word;
-    begin
-       unused:=(a.flag0 and bm_DDEUP_unused) shr bp_DDEUP_unused;
-    end;
-
-  procedure set_unused(var a : DDEUP; __unused : word);
-    begin
-       a.flag0:=a.flag0 or ((__unused shl bp_DDEUP_unused) and bm_DDEUP_unused);
-    end;
-
-  function fAck(var a : DDEUP) : word;
-    begin
-       fAck:=(a.flag0 and bm_DDEUP_fAck) shr bp_DDEUP_fAck;
-    end;
-
-  procedure set_fAck(var a : DDEUP; __fAck : word);
-    begin
-       a.flag0:=a.flag0 or ((__fAck shl bp_DDEUP_fAck) and bm_DDEUP_fAck);
-    end;
-
-  function fRelease(var a : DDEUP) : word;
-    begin
-       fRelease:=(a.flag0 and bm_DDEUP_fRelease) shr bp_DDEUP_fRelease;
-    end;
-
-  procedure set_fRelease(var a : DDEUP; __fRelease : word);
-    begin
-       a.flag0:=a.flag0 or ((__fRelease shl bp_DDEUP_fRelease) and bm_DDEUP_fRelease);
-    end;
-
-  function fReserved(var a : DDEUP) : word;
-    begin
-       fReserved:=(a.flag0 and bm_DDEUP_fReserved) shr bp_DDEUP_fReserved;
-    end;
-
-  procedure set_fReserved(var a : DDEUP; __fReserved : word);
-    begin
-       a.flag0:=a.flag0 or ((__fReserved shl bp_DDEUP_fReserved) and bm_DDEUP_fReserved);
-    end;
-
-  function fAckReq(var a : DDEUP) : word;
-    begin
-       fAckReq:=(a.flag0 and bm_DDEUP_fAckReq) shr bp_DDEUP_fAckReq;
-    end;
-
-  procedure set_fAckReq(var a : DDEUP; __fAckReq : word);
-    begin
-       a.flag0:=a.flag0 or ((__fAckReq shl bp_DDEUP_fAckReq) and bm_DDEUP_fAckReq);
-    end;
-
-{$endif read_implementation}
-
+{
+    This file is part of the Free Pascal run time library.
+    This unit contains the record definition for the Win32 API
+    Copyright (c) 1999-2000 by Florian KLaempfl,
+    member of the Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{
+  Structures.h
+
+  Declarations for all the Windows32 API Structures
+
+  Copyright (C) 1996 Free Software Foundation, Inc.
+
+  Author:  Scott Christley <[email protected]>
+  Date: 1996
+
+  This file is part of the Windows32 API Library.
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Library General Public
+  License as published by the Free Software Foundation; either
+  version 2 of the License, or (at your option) any later version.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Library General Public License for more details.
+
+  If you are interested in a warranty or support for this source code,
+  contact Scott Christley <[email protected]> for more information.
+
+  You should have received a copy of the GNU Library General Public
+  License along with this library; see the file COPYING.LIB.
+  If not, write to the Free Software Foundation,
+  59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+
+  Changes :
+
+  22/15/2005 update for wince4.2 port, [email protected]
+
+}
+
+{$ifdef read_interface}
+
+  type
+
+    { WARNING
+      the variable argument list
+      is not implemented for FPC
+      va_list is just a dummy record
+      MvdV: Nevertheless it should be a pointer type, not a record}
+
+     va_list = pchar;
+
+     ABC = record
+          abcA : longint;
+          abcB : UINT;
+          abcC : longint;
+       end;
+     LPABC = ^ABC;
+     _ABC = ABC;
+     TABC = ABC;
+     PABC = ^ABC;
+
+     ABCFLOAT = record
+          abcfA : Single;
+          abcfB : Single;
+          abcfC : Single;
+       end;
+     LPABCFLOAT = ^ABCFLOAT;
+     _ABCFLOAT = ABCFLOAT;
+     TABCFLOAT = ABCFLOAT;
+     PABCFLOAT = ^ABCFLOAT;
+
+     ACCEL = record
+          fVirt : BYTE;
+          key : WORD;
+          cmd : WORD;
+       end;
+     LPACCEL = ^ACCEL;
+     _ACCEL = ACCEL;
+     TACCEL = ACCEL;
+     PACCEL = ^ACCEL;
+
+     //
+     //  The structure of an ACE is a common ace header followed by ace type
+     //  specific data.  Pictorally the structure of the common ace header is
+     //  as follows:
+     //
+     //       3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+     //       1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+     //      +---------------+-------+-------+---------------+---------------+
+     //      |            AceSize            |    AceFlags   |     AceType   |
+     //      +---------------+-------+-------+---------------+---------------+
+     //
+     //  AceType denotes the type of the ace, there are some predefined ace
+     //  types
+     //
+     //  AceSize is the size, in bytes, of ace.
+     //
+     //  AceFlags are the Ace flags for audit and inheritance, defined shortly.
+
+     ACE_HEADER = record           //winnt
+          AceType : BYTE;
+          AceFlags : BYTE;
+          AceSize : WORD;
+       end;
+     _ACE_HEADER = ACE_HEADER;
+     TACE_HEADER = ACE_HEADER;
+     PACE_HEADER = ^ACE_HEADER;
+
+     ACCESS_MASK = DWORD;          //winnt
+     PACCESS_MASK = ^ACCESS_MASK;  //+winnt
+
+     REGSAM = ACCESS_MASK;
+
+     ACCESS_ALLOWED_ACE = record
+          Header : ACE_HEADER;
+          Mask : ACCESS_MASK;
+          SidStart : DWORD;
+       end;
+     _ACCESS_ALLOWED_ACE = ACCESS_ALLOWED_ACE;
+     TACCESS_ALLOWED_ACE = ACCESS_ALLOWED_ACE;
+     PACCESS_ALLOWED_ACE = ^ACCESS_ALLOWED_ACE;
+
+     ACCESS_DENIED_ACE = record
+          Header : ACE_HEADER;
+          Mask : ACCESS_MASK;
+          SidStart : DWORD;
+       end;
+     _ACCESS_DENIED_ACE = ACCESS_DENIED_ACE;
+     TACCESS_DENIED_ACE = ACCESS_DENIED_ACE;
+
+     ACCESSTIMEOUT = record
+          cbSize : UINT;
+          dwFlags : DWORD;
+          iTimeOutMSec : DWORD;
+       end;
+     _ACCESSTIMEOUT = ACCESSTIMEOUT;
+     TACCESSTIMEOUT = ACCESSTIMEOUT;
+     PACCESSTIMEOUT = ^ACCESSTIMEOUT;
+
+     PACCESS_TOKEN  = PVOID; //+winnt
+
+     ////////////////////////////////////////////////////////////////////////
+     //                                                                    //
+     //                         ACL  and  ACE                              //
+     //                                                                    //
+     ////////////////////////////////////////////////////////////////////////
+
+     //
+     //  Define an ACL and the ACE format.  The structure of an ACL header
+     //  followed by one or more ACEs.  Pictorally the structure of an ACL header
+     //  is as follows:
+     //
+     //       3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
+     //       1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+     //      +-------------------------------+---------------+---------------+
+     //      |            AclSize            |      Sbz1     |  AclRevision  |
+     //      +-------------------------------+---------------+---------------+
+     //      |              Sbz2             |           AceCount            |
+     //      +-------------------------------+-------------------------------+
+     //
+     //  The current AclRevision is defined to be ACL_REVISION.
+     //
+     //  AclSize is the size, in bytes, allocated for the ACL.  This includes
+     //  the ACL header, ACES, and remaining free space in the buffer.
+     //
+     //  AceCount is the number of ACES in the ACL.
+     //
+
+     ACL = record           //winnt
+          AclRevision : BYTE;
+          Sbz1 : BYTE;
+          AclSize : WORD;
+          AceCount : WORD;
+          Sbz2 : WORD;
+       end;
+     PACL = ^ACL;
+     _ACL = ACL;
+     TACL = ACL;
+
+     ACL_REVISION_INFORMATION = record
+          AclRevision : DWORD;
+       end;
+     _ACL_REVISION_INFORMATION = ACL_REVISION_INFORMATION;
+     TACLREVISIONINFORMATION = ACL_REVISION_INFORMATION;
+     PACLREVISIONINFORMATION = ^ACL_REVISION_INFORMATION;
+
+     ACL_SIZE_INFORMATION = record
+          AceCount : DWORD;
+          AclBytesInUse : DWORD;
+          AclBytesFree : DWORD;
+       end;
+     _ACL_SIZE_INFORMATION = ACL_SIZE_INFORMATION;
+     TACLSIZEINFORMATION = ACL_SIZE_INFORMATION;
+     PACLSIZEINFORMATION = ^ACL_SIZE_INFORMATION;
+
+     ACTION_HEADER = record
+          transport_id : ULONG;
+          action_code : USHORT;
+          reserved : USHORT;
+       end;
+     _ACTION_HEADER = ACTION_HEADER;
+     TACTIONHEADER = ACTION_HEADER;
+     PACTIONHEADER = ^ACTION_HEADER;
+
+     ADAPTER_STATUS = record
+          adapter_address : array[0..5] of UCHAR;
+          rev_major : UCHAR;
+          reserved0 : UCHAR;
+          adapter_type : UCHAR;
+          rev_minor : UCHAR;
+          duration : WORD;
+          frmr_recv : WORD;
+          frmr_xmit : WORD;
+          iframe_recv_err : WORD;
+          xmit_aborts : WORD;
+          xmit_success : DWORD;
+          recv_success : DWORD;
+          iframe_xmit_err : WORD;
+          recv_buff_unavail : WORD;
+          t1_timeouts : WORD;
+          ti_timeouts : WORD;
+          reserved1 : DWORD;
+          free_ncbs : WORD;
+          max_cfg_ncbs : WORD;
+          max_ncbs : WORD;
+          xmit_buf_unavail : WORD;
+          max_dgram_size : WORD;
+          pending_sess : WORD;
+          max_cfg_sess : WORD;
+          max_sess : WORD;
+          max_sess_pkt_size : WORD;
+          name_count : WORD;
+       end;
+     _ADAPTER_STATUS = ADAPTER_STATUS;
+     TADAPTERSTATUS = ADAPTER_STATUS;
+     PADAPTERSTATUS = ^ADAPTER_STATUS;
+
+     ADDJOB_INFO_1 = record
+          Path : LPTSTR;
+          JobId : DWORD;
+       end;
+     _ADDJOB_INFO_1 = ADDJOB_INFO_1;
+     TADDJOB_INFO_1 = ADDJOB_INFO_1;
+     PADDJOB_INFO_1 = ^ADDJOB_INFO_1;
+
+     ANIMATIONINFO = record
+          cbSize : UINT;
+          iMinAnimate : longint;
+       end;
+     LPANIMATIONINFO = ^ANIMATIONINFO;
+     _ANIMATIONINFO = ANIMATIONINFO;
+     TANIMATIONINFO = ANIMATIONINFO;
+     PANIMATIONINFO = ^ANIMATIONINFO;
+
+     POINT = record
+          x : LONG;
+          y : LONG;
+       end;
+     LPPOINT = ^POINT;
+     tagPOINT = POINT;
+     TPOINT = POINT;
+     PPOINT = ^POINT;
+
+     RECT = record
+          case Integer of
+             0: (Left,Top,Right,Bottom : Longint);
+             1: (TopLeft,BottomRight : TPoint);
+       end;
+     LPRECT = ^RECT;
+     _RECT = RECT;
+     TRECT = RECT;
+     PRECT = ^RECT;
+     tagRECT = RECT; //+windef
+
+     RECTL = record
+          left : LONG;
+          top : LONG;
+          right : LONG;
+          bottom : LONG;
+       end;
+     _RECTL = RECTL;
+     TRECTL = RECTL;
+     PRECTL = ^RECTL;
+
+     APPBARDATA = record
+          cbSize : DWORD;
+          hWnd : HWND;
+          uCallbackMessage : UINT;
+          uEdge : UINT;
+          rc : RECT;
+          lParam : LPARAM;
+       end;
+     _AppBarData = APPBARDATA;
+     TAppBarData = APPBARDATA;
+     PAppBarData = ^APPBARDATA;
+
+     BITMAP = record
+          bmType : LONG;
+          bmWidth : LONG;
+          bmHeight : LONG;
+          bmWidthBytes : LONG;
+          bmPlanes : WORD;
+          bmBitsPixel : WORD;
+          bmBits : LPVOID;
+       end;
+     PBITMAP = ^BITMAP;
+     NPBITMAP = ^BITMAP;
+     LPBITMAP = ^BITMAP;
+     tagBITMAP = BITMAP;
+     TBITMAP = BITMAP;
+
+     BITMAPCOREHEADER = record
+          bcSize : DWORD;
+          bcWidth : WORD;
+          bcHeight : WORD;
+          bcPlanes : WORD;
+          bcBitCount : WORD;
+       end;
+     tagBITMAPCOREHEADER = BITMAPCOREHEADER;
+     TBITMAPCOREHEADER = BITMAPCOREHEADER;
+     PBITMAPCOREHEADER = ^BITMAPCOREHEADER;
+
+     RGBTRIPLE = record
+          rgbtBlue : BYTE;
+          rgbtGreen : BYTE;
+          rgbtRed : BYTE;
+       end;
+     tagRGBTRIPLE = RGBTRIPLE;
+     TRGBTRIPLE = RGBTRIPLE;
+     PRGBTRIPLE = ^RGBTRIPLE;
+
+     BITMAPCOREINFO = record
+          bmciHeader : BITMAPCOREHEADER;
+          bmciColors : array[0..0] of RGBTRIPLE;
+       end;
+     PBITMAPCOREINFO = ^BITMAPCOREINFO;
+     LPBITMAPCOREINFO = ^BITMAPCOREINFO;
+     _BITMAPCOREINFO = BITMAPCOREINFO;
+     TBITMAPCOREINFO = BITMAPCOREINFO;
+
+(* error
+  WORD    bfReserved1;
+  WORD    bfReserved2;
+ in declarator_list *)
+
+     BITMAPINFOHEADER = record
+          biSize : DWORD;
+          biWidth : LONG;
+          biHeight : LONG;
+          biPlanes : WORD;
+          biBitCount : WORD;
+          biCompression : DWORD;
+          biSizeImage : DWORD;
+          biXPelsPerMeter : LONG;
+          biYPelsPerMeter : LONG;
+          biClrUsed : DWORD;
+          biClrImportant : DWORD;
+       end;
+     LPBITMAPINFOHEADER = ^BITMAPINFOHEADER;
+     TBITMAPINFOHEADER = BITMAPINFOHEADER;
+     PBITMAPINFOHEADER = ^BITMAPINFOHEADER;
+
+     RGBQUAD = record
+          rgbBlue : BYTE;
+          rgbGreen : BYTE;
+          rgbRed : BYTE;
+          rgbReserved : BYTE;
+       end;
+     tagRGBQUAD = RGBQUAD;
+     TRGBQUAD = RGBQUAD;
+     PRGBQUAD = ^RGBQUAD;
+
+     BITMAPINFO = record
+          bmiHeader : BITMAPINFOHEADER;
+          bmiColors : array[0..0] of RGBQUAD;
+       end;
+     LPBITMAPINFO = ^BITMAPINFO;
+     PBITMAPINFO = ^BITMAPINFO;
+     TBITMAPINFO = BITMAPINFO;
+
+     FXPT2DOT30 = longint;
+     LPFXPT2DOT30 = ^FXPT2DOT30;
+     TPFXPT2DOT30 = FXPT2DOT30;
+     PPFXPT2DOT30 = ^FXPT2DOT30;
+
+     CIEXYZ = record
+          ciexyzX : FXPT2DOT30;
+          ciexyzY : FXPT2DOT30;
+          ciexyzZ : FXPT2DOT30;
+       end;
+     tagCIEXYZ = CIEXYZ;
+     LPCIEXYZ = ^CIEXYZ;
+     TPCIEXYZ = CIEXYZ;
+     PCIEXYZ = ^CIEXYZ;
+
+     CIEXYZTRIPLE = record
+          ciexyzRed : CIEXYZ;
+          ciexyzGreen : CIEXYZ;
+          ciexyzBlue : CIEXYZ;
+       end;
+     tagCIEXYZTRIPLE = CIEXYZTRIPLE;
+     LPCIEXYZTRIPLE = ^CIEXYZTRIPLE;
+     TCIEXYZTRIPLE = CIEXYZTRIPLE;
+     PCIEXYZTRIPLE = ^CIEXYZTRIPLE;
+
+     BITMAPV4HEADER = record
+          bV4Size : DWORD;
+          bV4Width : LONG;
+          bV4Height : LONG;
+          bV4Planes : WORD;
+          bV4BitCount : WORD;
+          bV4V4Compression : DWORD;
+          bV4SizeImage : DWORD;
+          bV4XPelsPerMeter : LONG;
+          bV4YPelsPerMeter : LONG;
+          bV4ClrUsed : DWORD;
+          bV4ClrImportant : DWORD;
+          bV4RedMask : DWORD;
+          bV4GreenMask : DWORD;
+          bV4BlueMask : DWORD;
+          bV4AlphaMask : DWORD;
+          bV4CSType : DWORD;
+          bV4Endpoints : CIEXYZTRIPLE;
+          bV4GammaRed : DWORD;
+          bV4GammaGreen : DWORD;
+          bV4GammaBlue : DWORD;
+       end;
+     LPBITMAPV4HEADER = ^BITMAPV4HEADER;
+     TBITMAPV4HEADER = BITMAPV4HEADER;
+     PBITMAPV4HEADER = ^BITMAPV4HEADER;
+
+     BITMAPFILEHEADER = packed record
+       bfType : Word;
+       bfSize : DWord;
+       bfReserved1 : Word;
+       bfReserved2 : Word;
+       bfOffBits : DWord;
+     end;
+     TBitmapFileHeader = BITMAPFILEHEADER;
+
+     BLOB = record
+          cbSize : ULONG;
+          pBlobData : ^BYTE;
+       end;
+     _BLOB = BLOB;
+     TBLOB = BLOB;
+     PBLOB = ^BLOB;
+
+     SHITEMID = record
+          cb : USHORT;
+          abID : array[0..0] of BYTE;
+       end;
+     LPSHITEMID = ^SHITEMID;
+     LPCSHITEMID = ^SHITEMID;
+     _SHITEMID = SHITEMID;
+     TSHITEMID = SHITEMID;
+     PSHITEMID = ^SHITEMID;
+
+     ITEMIDLIST = record
+          mkid : SHITEMID;
+       end;
+     LPITEMIDLIST = ^ITEMIDLIST;
+     LPCITEMIDLIST = ^ITEMIDLIST;
+     _ITEMIDLIST = ITEMIDLIST;
+     TITEMIDLIST = ITEMIDLIST;
+     PITEMIDLIST = ^ITEMIDLIST;
+
+     FILETIME = record
+          dwLowDateTime : DWORD;
+          dwHighDateTime : DWORD;
+       end;
+     LPFILETIME = ^FILETIME;
+     _FILETIME = FILETIME;
+     TFILETIME = FILETIME;
+     PFILETIME = ^FILETIME;
+
+     _GET_FILEEX_INFO_LEVELS=(GetFileExInfoStandard,GetFileExMaxInfoLevel); //+winbase
+     GET_FILEEX_INFO_LEVELS=_GET_FILEEX_INFO_LEVELS;                        //+winbase
+
+     _FINDEX_INFO_LEVELS = (FindExInfoStandard,FindExInfoMaxInfoLevel); //+winbase
+     FINDEX_INFO_LEVELS = _FINDEX_INFO_LEVELS;                          //+winbase
+
+     _FINDEX_SEARCH_OPS = ( FindExSearchNameMatch, FindExSearchLimitToDirectories,
+                            FindExSearchLimitToDevices, FindExSearchMaxSearchOp);
+     FINDEX_SEARCH_OPS=_FINDEX_SEARCH_OPS;
+
+     BY_HANDLE_FILE_INFORMATION = record
+          dwFileAttributes : DWORD;
+          ftCreationTime : FILETIME;
+          ftLastAccessTime : FILETIME;
+          ftLastWriteTime : FILETIME;
+          dwVolumeSerialNumber : DWORD;
+          nFileSizeHigh : DWORD;
+          nFileSizeLow : DWORD;
+          nNumberOfLinks : DWORD;
+          nFileIndexHigh : DWORD;
+          nFileIndexLow : DWORD;
+       end;
+     LPBY_HANDLE_FILE_INFORMATION = ^BY_HANDLE_FILE_INFORMATION;
+     _BY_HANDLE_FILE_INFORMATION = BY_HANDLE_FILE_INFORMATION;
+     TBYHANDLEFILEINFORMATION = BY_HANDLE_FILE_INFORMATION;
+     PBYHANDLEFILEINFORMATION = ^BY_HANDLE_FILE_INFORMATION;
+
+     FIXED = record
+          fract : WORD;
+          value : integer;
+       end;
+     _FIXED = FIXED;
+     TFIXED = FIXED;
+     PFIXED = ^FIXED;
+
+     POINTFX = record
+          x : FIXED;
+          y : FIXED;
+       end;
+     tagPOINTFX = POINTFX;
+     TPOINTFX = POINTFX;
+     PPOINTFX = ^POINTFX;
+
+     POINTL = record
+          x : LONG;
+          y : LONG;
+       end;
+     _POINTL = POINTL;
+     TPOINTL = POINTL;
+     PPOINTL = ^POINTL;
+
+     TSmallPoint = record
+       X,
+       Y : SmallInt;
+       end;
+
+
+     POINTS = record
+          x : SHORT;
+          y : SHORT;
+       end;
+     tagPOINTS = POINTS;  //windef
+     TPOINTS = POINTS;
+     PPOINTS = ^POINTS;
+
+     CANDIDATEFORM = record
+          dwIndex : DWORD;
+          dwStyle : DWORD;
+          ptCurrentPos : POINT;
+          rcArea : RECT;
+       end;
+     LPCANDIDATEFORM = ^CANDIDATEFORM;
+     _tagCANDIDATEFORM = CANDIDATEFORM;
+     TCANDIDATEFORM = CANDIDATEFORM;
+     PCANDIDATEFORM = ^CANDIDATEFORM;
+
+     CANDIDATELIST = record
+          dwSize : DWORD;
+          dwStyle : DWORD;
+          dwCount : DWORD;
+          dwSelection : DWORD;
+          dwPageStart : DWORD;
+          dwPageSize : DWORD;
+          dwOffset : array[0..0] of DWORD;
+       end;
+     LPCANDIDATELIST = ^CANDIDATELIST;
+     _tagCANDIDATELIST = CANDIDATELIST;
+     TCANDIDATELIST = CANDIDATELIST;
+     PCANDIDATELIST = ^CANDIDATELIST;
+
+     CREATESTRUCT = record
+          lpCreateParams : LPVOID;
+          hInstance : HINST;
+          hMenu : HMENU;
+          hwndParent : HWND;
+          cy : longint;
+          cx : longint;
+          y : longint;
+          x : longint;
+          style : LONG;
+          lpszName : LPCTSTR;
+          lpszClass : LPCTSTR;
+          dwExStyle : DWORD;
+       end;
+     LPCREATESTRUCT = ^CREATESTRUCT;
+     tagCREATESTRUCT = CREATESTRUCT;
+     TCREATESTRUCT = CREATESTRUCT;
+     PCREATESTRUCT = ^CREATESTRUCT;
+
+     CBT_CREATEWND = record
+          lpcs : LPCREATESTRUCT;
+          hwndInsertAfter : HWND;
+       end;
+     tagCBT_CREATEWND = CBT_CREATEWND;
+     TCBT_CREATEWND = CBT_CREATEWND;
+     PCBT_CREATEWND = ^CBT_CREATEWND;
+
+     CBTACTIVATESTRUCT = record
+          fMouse : WINBOOL;
+          hWndActive : HWND;
+       end;
+     tagCBTACTIVATESTRUCT = CBTACTIVATESTRUCT;
+     TCBTACTIVATESTRUCT = CBTACTIVATESTRUCT;
+     PCBTACTIVATESTRUCT = ^CBTACTIVATESTRUCT;
+
+
+     CHAR_INFO = record
+              case longint of
+                 0 : ( UnicodeChar : WCHAR;
+                       Attributes  : Word);
+                 1 : ( AsciiChar : CHAR );
+              end;
+     _CHAR_INFO = CHAR_INFO;
+     TCHAR_INFO = CHAR_INFO;
+     PCHAR_INFO = ^CHAR_INFO;
+
+     CHARFORMAT = record
+          cbSize : UINT;
+          dwMask : DWORD;
+          dwEffects : DWORD;
+          yHeight : LONG;
+          yOffset : LONG;
+          crTextColor : COLORREF;
+          bCharSet : BYTE;
+          bPitchAndFamily : BYTE;
+          szFaceName : array[0..(LF_FACESIZE)-1] of TCHAR;
+       end;
+     _charformat = CHARFORMAT;
+     Tcharformat = CHARFORMAT;
+     Pcharformat = ^CHARFORMAT;
+
+     CHARRANGE = record
+          cpMin : LONG;
+          cpMax : LONG;
+       end;
+     _charrange = CHARRANGE;
+     Tcharrange = CHARRANGE;
+     Pcharrange = ^CHARRANGE;
+
+     CHARSET = record
+          aflBlock : array[0..2] of DWORD;
+          flLang : DWORD;
+       end;
+     tagCHARSET = CHARSET;
+     TCHARSET = CHARSET;
+     PCHARSET = ^CHARSET;
+
+     FONTSIGNATURE = record
+          fsUsb : array[0..3] of DWORD;
+          fsCsb : array[0..1] of DWORD;
+       end;
+     LPFONTSIGNATURE = ^FONTSIGNATURE;
+     tagFONTSIGNATURE = FONTSIGNATURE;
+     TFONTSIGNATURE = FONTSIGNATURE;
+     PFONTSIGNATURE = ^FONTSIGNATURE;
+
+     FLOAT128 = record        //+winnt
+          LowPart  : int64;
+          HighPart : int64;
+       end;
+     PFLOAT128 = ^FLOAT128;
+
+     CHARSETINFO = record
+          ciCharset : UINT;
+          ciACP : UINT;
+          fs : FONTSIGNATURE;
+       end;
+     LPCHARSETINFO = ^CHARSETINFO;
+     TCHARSETINFO = CHARSETINFO;
+     PCHARSETINFO = ^CHARSETINFO;
+
+     {CHOOSECOLOR = record confilcts with function ChooseColor }
+     TCHOOSECOLOR = record
+          lStructSize : DWORD;
+          hwndOwner : HWND;
+          hInstance : HWND;
+          rgbResult : COLORREF;
+          lpCustColors : ^COLORREF;
+          Flags : DWORD;
+          lCustData : LPARAM;
+          lpfnHook : LPCCHOOKPROC;
+          lpTemplateName : LPCTSTR;
+       end;
+     LPCHOOSECOLOR = ^TCHOOSECOLOR;
+     PCHOOSECOLOR = ^TCHOOSECOLOR;
+
+     LOGFONTA = record
+          lfHeight : LONG;
+          lfWidth : LONG;
+          lfEscapement : LONG;
+          lfOrientation : LONG;
+          lfWeight : LONG;
+          lfItalic : BYTE;
+          lfUnderline : BYTE;
+          lfStrikeOut : BYTE;
+          lfCharSet : BYTE;
+          lfOutPrecision : BYTE;
+          lfClipPrecision : BYTE;
+          lfQuality : BYTE;
+          lfPitchAndFamily : BYTE;
+          lfFaceName : array[0..(LF_FACESIZE)-1] of TCHAR;
+       end;
+     TLOGFONTA = LOGFONTA;
+     tagLOGFONTA = LOGFONTA;
+     NPLOGFONTA = ^LOGFONTA;
+     PLOGFONTA = ^LOGFONTA;
+
+     LOGFONTW = record
+         lfHeight: LONG;
+         lfWidth: LONG;
+         lfEscapement: LONG;
+         lfOrientation: LONG;
+         lfWeight: LONG;
+         lfItalic: BYTE;
+         lfUnderline: BYTE;
+         lfStrikeOut: BYTE;
+         lfCharSet: BYTE;
+         lfOutPrecision: BYTE;
+         lfClipPrecision: BYTE;
+         lfQuality: BYTE;
+         lfPitchAndFamily: BYTE;
+         lfFaceName: array [0..LF_FACESIZE - 1] of WCHAR;
+       end;
+     LPLOGFONTW = ^LOGFONTW;
+     NPLOGFONTW = ^LOGFONTW;
+     tagLOGFONTW = LOGFONTW;
+     TLogFontW = LOGFONTW;
+     PLogFontW = ^TLogFontW;
+
+     TLOGFONT = LOGFONTW;
+     LOGFONT = LOGFONTW;
+     tagLOGFONT = LOGFONTW;
+     LPLOGFONT = ^LOGFONTW;
+     PLOGFONT = ^LOGFONTW;
+     NPLOGFONT = ^LOGFONTW;
+
+     TCHOOSEFONTW = record //+commdlg
+          lStructSize : DWORD;
+          hwndOwner : HWND;
+          hDC : HDC;
+          lpLogFont : LPLOGFONTW;
+          iPointSize : Integer;
+          Flags : DWORD;
+          rgbColors : DWORD;
+          lCustData : LPARAM;
+          lpfnHook : LPCFHOOKPROC;
+          lpTemplateName : LPCWSTR;
+          hInstance : HINST;
+          lpszStyle : LPTSTR;
+          nFontType : WORD;
+          ___MISSING_ALIGNMENT__ : WORD;
+          nSizeMin : Integer;
+          nSizeMax : Integer;
+       end;
+     tagCHOOSEFONTW = TCHOOSEFONTW; //+commdlg
+     LPCHOOSEFONTW = ^TCHOOSEFONTW; //+commdlg
+     PCHOOSEFONTW = ^TCHOOSEFONTW; //+commdlg
+
+     {CHOOSEFONT = record conflicts with ChooseFont function }
+     TCHOOSEFONT = record
+          lStructSize : DWORD;
+          hwndOwner : HWND;
+          hDC : HDC;
+          lpLogFont : LPLOGFONT;
+          iPointSize : WINT;
+          Flags : DWORD;
+          rgbColors : DWORD;
+          lCustData : LPARAM;
+          lpfnHook : LPCFHOOKPROC;
+          lpTemplateName : LPCTSTR;
+          hInstance : HINST;
+          lpszStyle : LPTSTR;
+          nFontType : WORD;
+          ___MISSING_ALIGNMENT__ : WORD;
+          nSizeMin : WINT;
+          nSizeMax : WINT;
+       end;
+     LPCHOOSEFONT = ^TCHOOSEFONT;
+     PCHOOSEFONT = ^TCHOOSEFONT;
+
+     CIDA = record
+          cidl : UINT;
+          aoffset : array[0..0] of UINT;
+       end;
+     LPIDA = ^CIDA;
+     _IDA = CIDA;
+     TIDA = CIDA;
+     PIDA = ^CIDA;
+
+     CLIENTCREATESTRUCT = record
+          hWindowMenu : HANDLE;
+          idFirstChild : UINT;
+       end;
+     LPCLIENTCREATESTRUCT = ^CLIENTCREATESTRUCT;
+     tagCLIENTCREATESTRUCT = CLIENTCREATESTRUCT;
+     TCLIENTCREATESTRUCT = CLIENTCREATESTRUCT;
+     PCLIENTCREATESTRUCT = ^CLIENTCREATESTRUCT;
+
+     CMINVOKECOMMANDINFO = record
+          cbSize : DWORD;
+          fMask : DWORD;
+          hwnd : HWND;
+          lpVerb : LPCSTR;
+          lpParameters : LPCSTR;
+          lpDirectory : LPCSTR;
+          nShow : longint;
+          dwHotKey : DWORD;
+          hIcon : HANDLE;
+       end;
+     LPCMINVOKECOMMANDINFO = ^CMINVOKECOMMANDINFO;
+     _CMInvokeCommandInfo = CMINVOKECOMMANDINFO;
+     TCMInvokeCommandInfo = CMINVOKECOMMANDINFO;
+     PCMInvokeCommandInfo = ^CMINVOKECOMMANDINFO;
+
+     COLORADJUSTMENT = record
+          caSize : WORD;
+          caFlags : WORD;
+          caIlluminantIndex : WORD;
+          caRedGamma : WORD;
+          caGreenGamma : WORD;
+          caBlueGamma : WORD;
+          caReferenceBlack : WORD;
+          caReferenceWhite : WORD;
+          caContrast : SHORT;
+          caBrightness : SHORT;
+          caColorfulness : SHORT;
+          caRedGreenTint : SHORT;
+       end;
+     LPCOLORADJUSTMENT = ^COLORADJUSTMENT;
+     tagCOLORADJUSTMENT = COLORADJUSTMENT;
+     TCOLORADJUSTMENT = COLORADJUSTMENT;
+     PCOLORADJUSTMENT = ^COLORADJUSTMENT;
+
+     COLORMAP = record
+          from : COLORREF;
+          _to : COLORREF;
+       end;
+     LPCOLORMAP = ^COLORMAP;
+     _COLORMAP = COLORMAP;
+     TCOLORMAP = COLORMAP;
+     PCOLORMAP = ^COLORMAP;
+
+     DCB = record
+          DCBlength : DWORD;
+          BaudRate : DWORD;
+          flags : DWORD;
+          wReserved : WORD;
+          XonLim : WORD;
+          XoffLim : WORD;
+          ByteSize : BYTE;
+          Parity : BYTE;
+          StopBits : BYTE;
+          XonChar : char;
+          XoffChar : char;
+          ErrorChar : char;
+          EofChar : char;
+          EvtChar : char;
+          wReserved1 : WORD;
+       end;
+     LPDCB = ^DCB;
+     _DCB = DCB;
+     TDCB = DCB;
+     PDCB = ^DCB;
+
+  const
+     bm_DCB_fBinary = $1;
+     bp_DCB_fBinary = 0;
+     bm_DCB_fParity = $2;
+     bp_DCB_fParity = 1;
+     bm_DCB_fOutxCtsFlow = $4;
+     bp_DCB_fOutxCtsFlow = 2;
+     bm_DCB_fOutxDsrFlow = $8;
+     bp_DCB_fOutxDsrFlow = 3;
+     bm_DCB_fDtrControl = $30;
+     bp_DCB_fDtrControl = 4;
+     bm_DCB_fDsrSensitivity = $40;
+     bp_DCB_fDsrSensitivity = 6;
+     bm_DCB_fTXContinueOnXoff = $80;
+     bp_DCB_fTXContinueOnXoff = 7;
+     bm_DCB_fOutX = $100;
+     bp_DCB_fOutX = 8;
+     bm_DCB_fInX = $200;
+     bp_DCB_fInX = 9;
+     bm_DCB_fErrorChar = $400;
+     bp_DCB_fErrorChar = 10;
+     bm_DCB_fNull = $800;
+     bp_DCB_fNull = 11;
+     bm_DCB_fRtsControl = $3000;
+     bp_DCB_fRtsControl = 12;
+     bm_DCB_fAbortOnError = $4000;
+     bp_DCB_fAbortOnError = 14;
+     bm_DCB_fDummy2 = $FFFF8000;
+     bp_DCB_fDummy2 = 15;
+  function fBinary(var a : DCB) : DWORD;
+  procedure set_fBinary(var a : DCB; __fBinary : DWORD);
+  function fParity(var a : DCB) : DWORD;
+  procedure set_fParity(var a : DCB; __fParity : DWORD);
+  function fOutxCtsFlow(var a : DCB) : DWORD;
+  procedure set_fOutxCtsFlow(var a : DCB; __fOutxCtsFlow : DWORD);
+  function fOutxDsrFlow(var a : DCB) : DWORD;
+  procedure set_fOutxDsrFlow(var a : DCB; __fOutxDsrFlow : DWORD);
+  function fDtrControl(var a : DCB) : DWORD;
+  procedure set_fDtrControl(var a : DCB; __fDtrControl : DWORD);
+  function fDsrSensitivity(var a : DCB) : DWORD;
+  procedure set_fDsrSensitivity(var a : DCB; __fDsrSensitivity : DWORD);
+  function fTXContinueOnXoff(var a : DCB) : DWORD;
+  procedure set_fTXContinueOnXoff(var a : DCB; __fTXContinueOnXoff : DWORD);
+  function fOutX(var a : DCB) : DWORD;
+  procedure set_fOutX(var a : DCB; __fOutX : DWORD);
+  function fInX(var a : DCB) : DWORD;
+  procedure set_fInX(var a : DCB; __fInX : DWORD);
+  function fErrorChar(var a : DCB) : DWORD;
+  procedure set_fErrorChar(var a : DCB; __fErrorChar : DWORD);
+  function fNull(var a : DCB) : DWORD;
+  procedure set_fNull(var a : DCB; __fNull : DWORD);
+  function fRtsControl(var a : DCB) : DWORD;
+  procedure set_fRtsControl(var a : DCB; __fRtsControl : DWORD);
+  function fAbortOnError(var a : DCB) : DWORD;
+  procedure set_fAbortOnError(var a : DCB; __fAbortOnError : DWORD);
+  function fDummy2(var a : DCB) : DWORD;
+  procedure set_fDummy2(var a : DCB; __fDummy2 : DWORD);
+
+  type
+
+     tagINITCOMMONCONTROLSEX = record
+          dwSize:DWORD;             // size of this structure
+          dwICC:DWORD;              // flags indicating which classes to be initialized
+        end;  
+     TINITCOMMONCONTROLSEX=tagINITCOMMONCONTROLSEX;
+     LPINITCOMMONCONTROLSEX=^tagINITCOMMONCONTROLSEX;
+
+     COMMCONFIG = record
+          dwSize : DWORD;
+          wVersion : WORD;
+          wReserved : WORD;
+          dcb : DCB;
+          dwProviderSubType : DWORD;
+          dwProviderOffset : DWORD;
+          dwProviderSize : DWORD;
+          wcProviderData : array[0..0] of WCHAR;
+       end;
+     LPCOMMCONFIG = ^COMMCONFIG;
+     _COMM_CONFIG = COMMCONFIG;
+     TCOMMCONFIG = COMMCONFIG;
+     PCOMMCONFIG = ^COMMCONFIG;
+
+     COMMPROP = record
+          wPacketLength : WORD;
+          wPacketVersion : WORD;
+          dwServiceMask : DWORD;
+          dwReserved1 : DWORD;
+          dwMaxTxQueue : DWORD;
+          dwMaxRxQueue : DWORD;
+          dwMaxBaud : DWORD;
+          dwProvSubType : DWORD;
+          dwProvCapabilities : DWORD;
+          dwSettableParams : DWORD;
+          dwSettableBaud : DWORD;
+          wSettableData : WORD;
+          wSettableStopParity : WORD;
+          dwCurrentTxQueue : DWORD;
+          dwCurrentRxQueue : DWORD;
+          dwProvSpec1 : DWORD;
+          dwProvSpec2 : DWORD;
+          wcProvChar : array[0..0] of WCHAR;
+       end;
+     LPCOMMPROP = ^COMMPROP;
+     _COMMPROP = COMMPROP;
+     TCOMMPROP = COMMPROP;
+     PCOMMPROP = ^COMMPROP;
+
+     COMMTIMEOUTS = record
+          ReadIntervalTimeout : DWORD;
+          ReadTotalTimeoutMultiplier : DWORD;
+          ReadTotalTimeoutConstant : DWORD;
+          WriteTotalTimeoutMultiplier : DWORD;
+          WriteTotalTimeoutConstant : DWORD;
+       end;
+     LPCOMMTIMEOUTS = ^COMMTIMEOUTS;
+     _COMMTIMEOUTS = COMMTIMEOUTS;
+     TCOMMTIMEOUTS = COMMTIMEOUTS;
+     PCOMMTIMEOUTS = ^COMMTIMEOUTS;
+
+     COMPAREITEMSTRUCT = record
+          CtlType : UINT;
+          CtlID : UINT;
+          hwndItem : HWND;
+          itemID1 : UINT;
+          itemData1 : DWORD;
+          itemID2 : UINT;
+          itemData2 : DWORD;
+       end;
+     tagCOMPAREITEMSTRUCT = COMPAREITEMSTRUCT;
+     TCOMPAREITEMSTRUCT = COMPAREITEMSTRUCT;
+     PCOMPAREITEMSTRUCT = ^COMPAREITEMSTRUCT;
+
+     COMPCOLOR = record
+          crText : COLORREF;
+          crBackground : COLORREF;
+          dwEffects : DWORD;
+       end;
+     TCOMPCOLOR = COMPCOLOR;
+     PCOMPCOLOR = ^COMPCOLOR;
+
+     COMPOSITIONFORM = record
+          dwStyle : DWORD;
+          ptCurrentPos : POINT;
+          rcArea : RECT;
+       end;
+     LPCOMPOSITIONFORM = ^COMPOSITIONFORM;
+     _tagCOMPOSITIONFORM = COMPOSITIONFORM;
+     TCOMPOSITIONFORM = COMPOSITIONFORM;
+     PCOMPOSITIONFORM = ^COMPOSITIONFORM;
+
+//     TComStatFlags = set of (fCtsHold, fDsrHold, fRlsdHold , fXoffHold ,
+//                    fXoffSent , fEof ,  fTxim  , fReserved);
+
+     COMSTAT = record
+          flag0 : DWORD;   // can't use tcomstatflags, set packing issues
+                           // and conflicts with macro's
+          cbInQue : DWORD;
+          cbOutQue : DWORD;
+       end;
+     LPCOMSTAT = ^COMSTAT;
+     _COMSTAT = COMSTAT;
+     TCOMSTAT = COMSTAT;
+     PCOMSTAT = ^COMSTAT;
+  const
+     bm_COMSTAT_fCtsHold = $1;
+     bp_COMSTAT_fCtsHold = 0;
+     bm_COMSTAT_fDsrHold = $2;
+     bp_COMSTAT_fDsrHold = 1;
+     bm_COMSTAT_fRlsdHold = $4;
+     bp_COMSTAT_fRlsdHold = 2;
+     bm_COMSTAT_fXoffHold = $8;
+     bp_COMSTAT_fXoffHold = 3;
+     bm_COMSTAT_fXoffSent = $10;
+     bp_COMSTAT_fXoffSent = 4;
+     bm_COMSTAT_fEof = $20;
+     bp_COMSTAT_fEof = 5;
+     bm_COMSTAT_fTxim = $40;
+     bp_COMSTAT_fTxim = 6;
+     bm_COMSTAT_fReserved = $FFFFFF80;
+     bp_COMSTAT_fReserved = 7;
+  function fCtsHold(var a : COMSTAT) : DWORD;  // should be renamed to get_<x>?
+  procedure set_fCtsHold(var a : COMSTAT; __fCtsHold : DWORD);
+  function fDsrHold(var a : COMSTAT) : DWORD;
+  procedure set_fDsrHold(var a : COMSTAT; __fDsrHold : DWORD);
+  function fRlsdHold(var a : COMSTAT) : DWORD;
+  procedure set_fRlsdHold(var a : COMSTAT; __fRlsdHold : DWORD);
+  function fXoffHold(var a : COMSTAT) : DWORD;
+  procedure set_fXoffHold(var a : COMSTAT; __fXoffHold : DWORD);
+  function fXoffSent(var a : COMSTAT) : DWORD;
+  procedure set_fXoffSent(var a : COMSTAT; __fXoffSent : DWORD);
+  function fEof(var a : COMSTAT) : DWORD;
+  procedure set_fEof(var a : COMSTAT; __fEof : DWORD);
+  function fTxim(var a : COMSTAT) : DWORD;
+  procedure set_fTxim(var a : COMSTAT; __fTxim : DWORD);
+  function fReserved(var a : COMSTAT) : DWORD;
+  procedure set_fReserved(var a : COMSTAT; __fReserved : DWORD);
+
+  type
+
+     CONSOLE_CURSOR_INFO = record
+          dwSize : DWORD;
+          bVisible : WINBOOL;
+       end;
+     PCONSOLE_CURSOR_INFO = ^CONSOLE_CURSOR_INFO;
+     _CONSOLE_CURSOR_INFO = CONSOLE_CURSOR_INFO;
+     TCONSOLECURSORINFO = CONSOLE_CURSOR_INFO;
+     PCONSOLECURSORINFO = ^CONSOLE_CURSOR_INFO;
+     TCURSORINFO = CONSOLE_CURSOR_INFO;
+
+     COORD = record
+          X : SHORT;
+          Y : SHORT;
+       end;
+     _COORD = COORD;
+     TCOORD = COORD;
+     PCOORD = ^COORD;
+
+     SMALL_RECT = record
+          Left : SHORT;
+          Top : SHORT;
+          Right : SHORT;
+          Bottom : SHORT;
+       end;
+     _SMALL_RECT = SMALL_RECT;
+     TSMALL_RECT = SMALL_RECT;
+     PSMALL_RECT = ^SMALL_RECT;
+
+     CONSOLE_SCREEN_BUFFER_INFO = packed record
+          dwSize : COORD;
+          dwCursorPosition : COORD;
+          wAttributes : WORD;
+          srWindow : SMALL_RECT;
+          dwMaximumWindowSize : COORD;
+       end;
+     PCONSOLE_SCREEN_BUFFER_INFO = ^CONSOLE_SCREEN_BUFFER_INFO;
+     _CONSOLE_SCREEN_BUFFER_INFO = CONSOLE_SCREEN_BUFFER_INFO;
+     TCONSOLESCREENBUFFERINFO = CONSOLE_SCREEN_BUFFER_INFO;
+     PCONSOLESCREENBUFFERINFO = ^CONSOLE_SCREEN_BUFFER_INFO;
+
+{$ifdef i386}                              //+winnt
+  type
+     FLOATING_SAVE_AREA = record //~winnt
+          ControlWord : DWORD;
+          StatusWord : DWORD;
+          TagWord : DWORD;
+          ErrorOffset : DWORD;
+          ErrorSelector : DWORD;
+          DataOffset : DWORD;
+          DataSelector : DWORD;
+          RegisterArea : array[0..SIZE_OF_80387_REGISTERS-1] of BYTE; //~winnt
+          Cr0NpxState : DWORD;
+       end;
+     _FLOATING_SAVE_AREA = FLOATING_SAVE_AREA; //winnt
+     TFLOATINGSAVEAREA = FLOATING_SAVE_AREA;   //winnt
+     PFLOATING_SAVE_AREA = ^FLOATING_SAVE_AREA;  //~winnt
+
+//
+// Context Frame
+//
+//  This frame has a several purposes: 1) it is used as an argument to
+//  NtContinue, 2) is is used to constuct a call frame for APC delivery,
+//  and 3) it is used in the user level thread creation routines.
+//
+//  The layout of the record conforms to a standard call frame.
+//
+
+     CONTEXT = record                       //winnt
+          ContextFlags : DWORD;
+          Dr0 : DWORD;
+          Dr1 : DWORD;
+          Dr2 : DWORD;
+          Dr3 : DWORD;
+          Dr6 : DWORD;
+          Dr7 : DWORD;
+          FloatSave : FLOATING_SAVE_AREA;
+          SegGs : DWORD;
+          SegFs : DWORD;
+          SegEs : DWORD;
+          SegDs : DWORD;
+          Edi : DWORD;
+          Esi : DWORD;
+          Ebx : DWORD;
+          Edx : DWORD;
+          Ecx : DWORD;
+          Eax : DWORD;
+          Ebp : DWORD;
+          Eip : DWORD;
+          SegCs : DWORD;
+          EFlags : DWORD;
+          Esp : DWORD;
+          SegSs : DWORD;
+       end;
+
+     LDT_ENTRY = record  //~winnt, moved into _X86_
+          LimitLow : WORD;
+          BaseLow : WORD;
+          HighWord : record
+              case longint of
+                 0 : ( Bytes : record
+                      BaseMid : BYTE;
+                      Flags1 : BYTE;
+                      Flags2 : BYTE;
+                      BaseHi : BYTE;
+                   end );
+                 1 : ( Bits : record
+                      flag0 : longint;
+                   end );
+              end;
+       end;
+     LPLDT_ENTRY = ^LDT_ENTRY;
+     PLDT_ENTRY = ^LDT_ENTRY;
+     _LDT_ENTRY = LDT_ENTRY;
+     TLDTENTRY = LDT_ENTRY;
+     PLDTENTRY = ^LDT_ENTRY;
+
+{$endif i386}                              //+winnt
+
+{$ifdef _MIPS_}                             //+winnt all block added
+//
+// Context Frame
+//
+//  N.B. This frame must be exactly a multiple of 16 bytes in length.
+//
+//  This frame has a several purposes: 1) it is used as an argument to
+//  NtContinue, 2) it is used to constuct a call frame for APC delivery,
+//  3) it is used to construct a call frame for exception dispatching
+//  in user mode, and 4) it is used in the user level thread creation
+//  routines.
+//
+//  The layout of the record conforms to a standard call frame.
+//
+  type
+    {$ifdef  _MIPS64} //+winnt
+     FREG_TYPE =  ULONGLONG;
+     REG_TYPE  =  ULONGLONG;
+    {$else}
+     FREG_TYPE =  DWORD;
+     REG_TYPE  =  ULONG;
+    {$endif _MIPS64}
+     CONTEXT = record                       //+winnt
+          Argument : Array[0..3] of REG_TYPE;
+          FltF0    : FREG_TYPE;
+          FltF1    : FREG_TYPE;
+          FltF2    : FREG_TYPE;
+          FltF3    : FREG_TYPE;
+          FltF4    : FREG_TYPE;
+          FltF5    : FREG_TYPE;
+          FltF6    : FREG_TYPE;
+          FltF7    : FREG_TYPE;
+          FltF8    : FREG_TYPE;
+          FltF9    : FREG_TYPE;
+          FltF10   : FREG_TYPE;
+          FltF11   : FREG_TYPE;
+          FltF12   : FREG_TYPE;
+          FltF13   : FREG_TYPE;
+          FltF14   : FREG_TYPE;
+          FltF15   : FREG_TYPE;
+          FltF16   : FREG_TYPE;
+          FltF17   : FREG_TYPE;
+          FltF18   : FREG_TYPE;
+          FltF19   : FREG_TYPE;
+          FltF20   : FREG_TYPE;
+          FltF21   : FREG_TYPE;
+          FltF22   : FREG_TYPE;
+          FltF23   : FREG_TYPE;
+          FltF24   : FREG_TYPE;
+          FltF25   : FREG_TYPE;
+          FltF26   : FREG_TYPE;
+          FltF27   : FREG_TYPE;
+          FltF28   : FREG_TYPE;
+          FltF29   : FREG_TYPE;
+          FltF30   : FREG_TYPE;
+          FltF31   : FREG_TYPE;
+
+          IntZero : REG_TYPE;
+          IntAt   : REG_TYPE;
+          IntV0   : REG_TYPE;
+          IntV1   : REG_TYPE;
+          IntA0   : REG_TYPE;
+          IntA1   : REG_TYPE;
+          IntA2   : REG_TYPE;
+          IntA3   : REG_TYPE;
+          IntT0   : REG_TYPE;
+          IntT1   : REG_TYPE;
+          IntT2   : REG_TYPE;
+          IntT3   : REG_TYPE;
+          IntT4   : REG_TYPE;
+          IntT5   : REG_TYPE;
+          IntT6   : REG_TYPE;
+          IntT7   : REG_TYPE;
+          IntS0   : REG_TYPE;
+          IntS1   : REG_TYPE;
+          IntS2   : REG_TYPE;
+          IntS3   : REG_TYPE;
+          IntS4   : REG_TYPE;
+          IntS5   : REG_TYPE;
+          IntS6   : REG_TYPE;
+          IntS7   : REG_TYPE;
+          IntT8   : REG_TYPE;
+          IntT9   : REG_TYPE;
+          IntK0   : REG_TYPE;
+          IntK1   : REG_TYPE;
+          IntGp   : REG_TYPE;
+          IntSp   : REG_TYPE;
+          IntS8   : REG_TYPE;
+          IntRa   : REG_TYPE;
+          IntLo   : REG_TYPE;
+          IntHi   : REG_TYPE;
+
+          Fsr     : DWORD;
+          Fir     : DWORD;
+          Psr     : DWORD;
+          ContextFlags : DWORD;
+          Fill    : Array[0..1] of DWORD;
+      end;
+
+{$endif _MIPS_}                             //+winnt
+
+{$ifdef _PPC_}                             //+winnt
+  { Floating point registers returned when CONTEXT_FLOATING_POINT is set  }
+  { Integer registers returned when CONTEXT_INTEGER is set.   }
+  { Condition register  }
+  { Fixed point exception register  }
+  { The following are set when CONTEXT_CONTROL is set.   }
+  { Machine status register  }
+  { Instruction address register  }
+  { Link register  }
+  { Control register  }
+  { Control which context values are returned  }
+  { Registers returned if CONTEXT_DEBUG_REGISTERS is set.   }
+  { Breakpoint Register 1  }
+  { Breakpoint Register 2  }
+  { Breakpoint Register 3  }
+  { Breakpoint Register 4  }
+  { Breakpoint Register 5  }
+  { Breakpoint Register 6  }
+  { Debug Status Register  }
+  { Debug Control Register  }
+
+  type
+
+     CONTEXT = record
+          Fpr0 : double;
+          Fpr1 : double;
+          Fpr2 : double;
+          Fpr3 : double;
+          Fpr4 : double;
+          Fpr5 : double;
+          Fpr6 : double;
+          Fpr7 : double;
+          Fpr8 : double;
+          Fpr9 : double;
+          Fpr10 : double;
+          Fpr11 : double;
+          Fpr12 : double;
+          Fpr13 : double;
+          Fpr14 : double;
+          Fpr15 : double;
+          Fpr16 : double;
+          Fpr17 : double;
+          Fpr18 : double;
+          Fpr19 : double;
+          Fpr20 : double;
+          Fpr21 : double;
+          Fpr22 : double;
+          Fpr23 : double;
+          Fpr24 : double;
+          Fpr25 : double;
+          Fpr26 : double;
+          Fpr27 : double;
+          Fpr28 : double;
+          Fpr29 : double;
+          Fpr30 : double;
+          Fpr31 : double;
+          Fpscr : double;
+          Gpr0 : DWORD;
+          Gpr1 : DWORD;
+          Gpr2 : DWORD;
+          Gpr3 : DWORD;
+          Gpr4 : DWORD;
+          Gpr5 : DWORD;
+          Gpr6 : DWORD;
+          Gpr7 : DWORD;
+          Gpr8 : DWORD;
+          Gpr9 : DWORD;
+          Gpr10 : DWORD;
+          Gpr11 : DWORD;
+          Gpr12 : DWORD;
+          Gpr13 : DWORD;
+          Gpr14 : DWORD;
+          Gpr15 : DWORD;
+          Gpr16 : DWORD;
+          Gpr17 : DWORD;
+          Gpr18 : DWORD;
+          Gpr19 : DWORD;
+          Gpr20 : DWORD;
+          Gpr21 : DWORD;
+          Gpr22 : DWORD;
+          Gpr23 : DWORD;
+          Gpr24 : DWORD;
+          Gpr25 : DWORD;
+          Gpr26 : DWORD;
+          Gpr27 : DWORD;
+          Gpr28 : DWORD;
+          Gpr29 : DWORD;
+          Gpr30 : DWORD;
+          Gpr31 : DWORD;
+          Cr : DWORD;
+          Xer : DWORD;
+          Msr : DWORD;
+          Iar : DWORD;
+          Lr : DWORD;
+          Ctr : DWORD;
+          ContextFlags : DWORD;
+          Fill : array[0..2] of DWORD;
+          Dr0 : DWORD;
+          Dr1 : DWORD;
+          Dr2 : DWORD;
+          Dr3 : DWORD;
+          Dr4 : DWORD;
+          Dr5 : DWORD;
+          Dr6 : DWORD;
+          Dr7 : DWORD;
+       end;
+     _STACK_FRAME_HEADER = record  // GPR 1 points here
+          BackChain : DWORD;       // Addr of previous frame
+          Reserved1 : DWORD;       // Reserved
+
+          Parameter0 : DWORD;     // First 8 parameter words are
+          Parameter1 : DWORD;     //   always present
+          Parameter2 : DWORD;
+          Parameter3 : DWORD;
+          Parameter4 : DWORD;
+          Parameter5 : DWORD;
+          Parameter6 : DWORD;
+          Parameter7 : DWORD;
+       end;
+
+     PSTACK_FRAME_HEADER=^STACK_FRAME_HEADER;
+ {$endif _PPC_}                    //~winnt
+
+ {$ifdef _MPPC_} //+winnt all block
+  type
+     CONTEXT = record
+          Fpr0 : double;
+          Fpr1 : double;
+          Fpr2 : double;
+          Fpr3 : double;
+          Fpr4 : double;
+          Fpr5 : double;
+          Fpr6 : double;
+          Fpr7 : double;
+          Fpr8 : double;
+          Fpr9 : double;
+          Fpr10 : double;
+          Fpr11 : double;
+          Fpr12 : double;
+          Fpr13 : double;
+          Fpr14 : double;
+          Fpr15 : double;
+          Fpr16 : double;
+          Fpr17 : double;
+          Fpr18 : double;
+          Fpr19 : double;
+          Fpr20 : double;
+          Fpr21 : double;
+          Fpr22 : double;
+          Fpr23 : double;
+          Fpr24 : double;
+          Fpr25 : double;
+          Fpr26 : double;
+          Fpr27 : double;
+          Fpr28 : double;
+          Fpr29 : double;
+          Fpr30 : double;
+          Fpr31 : double;
+          Fpscr : double;
+          Gpr0 : DWORD;
+          Gpr1 : DWORD;
+          Gpr2 : DWORD;
+          Gpr3 : DWORD;
+          Gpr4 : DWORD;
+          Gpr5 : DWORD;
+          Gpr6 : DWORD;
+          Gpr7 : DWORD;
+          Gpr8 : DWORD;
+          Gpr9 : DWORD;
+          Gpr10 : DWORD;
+          Gpr11 : DWORD;
+          Gpr12 : DWORD;
+          Gpr13 : DWORD;
+          Gpr14 : DWORD;
+          Gpr15 : DWORD;
+          Gpr16 : DWORD;
+          Gpr17 : DWORD;
+          Gpr18 : DWORD;
+          Gpr19 : DWORD;
+          Gpr20 : DWORD;
+          Gpr21 : DWORD;
+          Gpr22 : DWORD;
+          Gpr23 : DWORD;
+          Gpr24 : DWORD;
+          Gpr25 : DWORD;
+          Gpr26 : DWORD;
+          Gpr27 : DWORD;
+          Gpr28 : DWORD;
+          Gpr29 : DWORD;
+          Gpr30 : DWORD;
+          Gpr31 : DWORD;
+          Cr : DWORD;
+          Xer : DWORD;
+          Msr : DWORD;
+          Iar : DWORD;
+          Lr : DWORD;
+          Ctr : DWORD;
+          ContextFlags : DWORD;
+          Fill : array[0..2] of DWORD;
+          Dr0 : DWORD;
+          Dr1 : DWORD;
+          Dr2 : DWORD;
+          Dr3 : DWORD;
+          Dr4 : DWORD;
+          Dr5 : DWORD;
+          Dr6 : DWORD;
+          Dr7 : DWORD;
+       end;
+     _STACK_FRAME_HEADER = record  // GPR 1 points here
+          BackChain  : DWORD;      // Addr of previous frame
+          GlueSaved1 : DWORD;      // Used by glue code
+          GlueSaved2 : DWORD;
+          Reserved1  : DWORD;
+          Spare1     : DWORD;
+          Spare2     : DWORD;
+
+          Parameter0 : DWORD;     // First 8 parameter words are
+          Parameter1 : DWORD;     //   always present
+          Parameter2 : DWORD;
+          Parameter3 : DWORD;
+          Parameter4 : DWORD;
+          Parameter5 : DWORD;
+          Parameter6 : DWORD;
+          Parameter7 : DWORD;
+       end;
+
+     PSTACK_FRAME_HEADER=^STACK_FRAME_HEADER;
+
+ {$endif _MPPC_} //+winnt
+
+ {$ifdef _IA64_} //+winnt all block
+  type
+     CONTEXT = record
+
+          ContextFlags : DWORD;
+          Fill1 : array[0..2] of DWORD;
+          DbI0 : ULONGLONG;              // Instruction debug registers
+          DbI1 : ULONGLONG;
+          DbI2 : ULONGLONG;
+          DbI3 : ULONGLONG;
+          DbI4 : ULONGLONG;
+          DbI5 : ULONGLONG;
+          DbI6 : ULONGLONG;
+          DbI7 : ULONGLONG;
+
+          DbD0 : ULONGLONG;              // Data debug registers
+          DbD1 : ULONGLONG;
+          DbD2 : ULONGLONG;
+          DbD3 : ULONGLONG;
+          DbD4 : ULONGLONG;
+          DbD5 : ULONGLONG;
+          DbD6 : ULONGLONG;
+          DbD7 : ULONGLONG;
+
+          FltS0 : FLOAT128;             // Lower floating point (f2-f5) - saved (preserved)
+          FltS1 : FLOAT128;
+          FltS2 : FLOAT128;
+          FltS3 : FLOAT128;
+          FltT0 : FLOAT128;             // Lower floating point (f6-f15) - temporary (volatile)
+          FltT1 : FLOAT128;
+          FltT2 : FLOAT128;
+          FltT3 : FLOAT128;
+          FltT4 : FLOAT128;
+          FltT5 : FLOAT128;
+          FltT6 : FLOAT128;
+          FltT7 : FLOAT128;
+          FltT8 : FLOAT128;
+          FltT9 : FLOAT128;
+          FltS4 : FLOAT128;             // Higher floating point (f16-f31) - saved (preserved)
+          FltS5 : FLOAT128;
+          FltS6 : FLOAT128;
+          FltS7 : FLOAT128;
+          FltS8 : FLOAT128;
+          FltS9 : FLOAT128;
+          FltS10 : FLOAT128;
+          FltS11 : FLOAT128;
+          FltS12 : FLOAT128;
+          FltS13 : FLOAT128;
+          FltS14 : FLOAT128;
+          FltS15 : FLOAT128;
+          FltS16 : FLOAT128;
+          FltS17 : FLOAT128;
+          FltS18 : FLOAT128;
+          FltS19 : FLOAT128;
+
+          FltF32 : FLOAT128;           // Higher floating point (f32-f127) - temporary (volatile)
+          FltF33 : FLOAT128;
+          FltF34 : FLOAT128;
+          FltF35 : FLOAT128;
+          FltF36 : FLOAT128;
+          FltF37 : FLOAT128;
+          FltF38 : FLOAT128;
+          FltF39 : FLOAT128;
+
+          FltF40 : FLOAT128;
+          FltF41 : FLOAT128;
+          FltF42 : FLOAT128;
+          FltF43 : FLOAT128;
+          FltF44 : FLOAT128;
+          FltF45 : FLOAT128;
+          FltF46 : FLOAT128;
+          FltF47 : FLOAT128;
+          FltF48 : FLOAT128;
+          FltF49 : FLOAT128;
+
+          FltF50 : FLOAT128;
+          FltF51 : FLOAT128;
+          FltF52 : FLOAT128;
+          FltF53 : FLOAT128;
+          FltF54 : FLOAT128;
+          FltF55 : FLOAT128;
+          FltF56 : FLOAT128;
+          FltF57 : FLOAT128;
+          FltF58 : FLOAT128;
+          FltF59 : FLOAT128;
+
+          FltF60 : FLOAT128;
+          FltF61 : FLOAT128;
+          FltF62 : FLOAT128;
+          FltF63 : FLOAT128;
+          FltF64 : FLOAT128;
+          FltF65 : FLOAT128;
+          FltF66 : FLOAT128;
+          FltF67 : FLOAT128;
+          FltF68 : FLOAT128;
+          FltF69 : FLOAT128;
+
+          FltF70 : FLOAT128;
+          FltF71 : FLOAT128;
+          FltF72 : FLOAT128;
+          FltF73 : FLOAT128;
+          FltF74 : FLOAT128;
+          FltF75 : FLOAT128;
+          FltF76 : FLOAT128;
+          FltF77 : FLOAT128;
+          FltF78 : FLOAT128;
+          FltF79 : FLOAT128;
+
+          FltF80 : FLOAT128;
+          FltF81 : FLOAT128;
+          FltF82 : FLOAT128;
+          FltF83 : FLOAT128;
+          FltF84 : FLOAT128;
+          FltF85 : FLOAT128;
+          FltF86 : FLOAT128;
+          FltF87 : FLOAT128;
+          FltF88 : FLOAT128;
+          FltF89 : FLOAT128;
+
+          FltF90 : FLOAT128;
+          FltF91 : FLOAT128;
+          FltF92 : FLOAT128;
+          FltF93 : FLOAT128;
+          FltF94 : FLOAT128;
+          FltF95 : FLOAT128;
+          FltF96 : FLOAT128;
+          FltF97 : FLOAT128;
+          FltF98 : FLOAT128;
+          FltF99 : FLOAT128;
+
+          FltF100 : FLOAT128;
+          FltF101 : FLOAT128;
+          FltF102 : FLOAT128;
+          FltF103 : FLOAT128;
+          FltF104 : FLOAT128;
+          FltF105 : FLOAT128;
+          FltF106 : FLOAT128;
+          FltF107 : FLOAT128;
+          FltF108 : FLOAT128;
+          FltF109 : FLOAT128;
+
+          FltF110 : FLOAT128;
+          FltF111 : FLOAT128;
+          FltF112 : FLOAT128;
+          FltF113 : FLOAT128;
+          FltF114 : FLOAT128;
+          FltF115 : FLOAT128;
+          FltF116 : FLOAT128;
+          FltF117 : FLOAT128;
+          FltF118 : FLOAT128;
+          FltF119 : FLOAT128;
+
+          FltF120 : FLOAT128;
+          FltF121 : FLOAT128;
+          FltF122 : FLOAT128;
+          FltF123 : FLOAT128;
+          FltF124 : FLOAT128;
+          FltF125 : FLOAT128;
+          FltF126 : FLOAT128;
+          FltF127 : FLOAT128;
+
+          StFPSR : ULONGLONG;          // FP status
+          StFSR  : ULONGLONG;          // x86 FP status (a copy of AR28)
+          StFIR  : ULONGLONG;          // x86 FP status (a copy of AR29)
+          StFDR  : ULONGLONG;          // x86 FP status (a copy of AR30)
+
+          IntGp  : ULONGLONG;          // global pointer (r1) - temporary (volatile)
+          IntT0  : ULONGLONG;          // integer registers (r2-r3) - temporary (volatile)
+          IntT1  : ULONGLONG;
+          IntS0  : ULONGLONG;          // integer registers (r4-r7) - saved (preserved)
+          IntS1  : ULONGLONG;
+          IntS2  : ULONGLONG;
+          IntS3  : ULONGLONG;
+          IntV0  : ULONGLONG;          // return value (r8) - temporary (volatile)
+          IntT2  : ULONGLONG;          // integer registers (r9-r11) - temporary (volatile)
+          IntT3  : ULONGLONG;
+          IntT4  : ULONGLONG;
+          IntSP  : ULONGLONG;          // stack pointer (r12) - special
+          IntTeb : ULONGLONG;          // teb (r13) - special
+          IntT5  : ULONGLONG;          // integer registers (r14-r31) - temporary (volatile)
+          IntT6  : ULONGLONG;
+          IntT7  : ULONGLONG;
+          IntT8  : ULONGLONG;
+          IntT9  : ULONGLONG;
+          IntT10 : ULONGLONG;
+          IntT11 : ULONGLONG;
+          IntT12 : ULONGLONG;
+          IntT13 : ULONGLONG;
+          IntT14 : ULONGLONG;
+          IntT15 : ULONGLONG;
+          IntT16 : ULONGLONG;
+          IntT17 : ULONGLONG;
+          IntT18 : ULONGLONG;
+          IntT19 : ULONGLONG;
+          IntT20 : ULONGLONG;
+          IntT21 : ULONGLONG;
+          IntT22 : ULONGLONG;
+
+          IntNats : ULONGLONG;         // Nat bits for general registers
+                                       // r1-r31 in bit positions 1 to 31.
+          Preds   : ULONGLONG;         // predicates - saved (preserved)
+          BrRp    : ULONGLONG;         // return pointer (b0) - saved (preserved)
+          BrS0    : ULONGLONG;         // branch registers (b1-b5) - saved (preserved)
+          BrS1    : ULONGLONG;
+          BrS2    : ULONGLONG;
+          BrS3    : ULONGLONG;
+          BrS4    : ULONGLONG;
+
+          BrT0    : ULONGLONG;         // branch registers (b6-b7) - temporary (volatile)
+          BrT1    : ULONGLONG;
+          // iA32 related Interger registers
+          SegCSD  : ULONGLONG;         // iA32 CSDescriptor (Ar25)
+          SegSSD  : ULONGLONG;         // iA32 SSDescriptor (Ar26)
+
+          // Other application registers
+          ApUNAT  : ULONGLONG;         // User Nat collection register - saved (preserved)
+          ApLC    : ULONGLONG;         // Loop counter register - saved (preserved)
+          ApEC    : ULONGLONG;         // Epilog counter register - saved (preserved)
+          ApCCV   : ULONGLONG;         // CMPXCHG value register - temporary (volatile)
+          ApDCR   : ULONGLONG;         // Default control register (TBD)
+
+          // Register stack info
+          RsPFS   : ULONGLONG;         // Previous function state - saved (preserved)
+          RsBSP   : ULONGLONG;         // Backing store pointer - saved (preserved)
+          RsBSPSTORE : ULONGLONG;      // BSP Store - saved (preserved)
+          RsRSC   : ULONGLONG;         // RSE configuration - temporary (volatile)
+          RsRNAT  : ULONGLONG;         // RSE Nat collection register - saved (preserved)
+          // iA32 related control registers
+          Eflag   : ULONGLONG;         // Eflag  copy of Ar24
+          Cflag   : ULONGLONG;         // Cr0+Cr4 copy of Ar27
+
+          // Trap Status Information
+          StIPSR  : ULONGLONG;         // Interruption Processor Status
+          StIIP   : ULONGLONG;         // Interruption IP
+          StIFS   : ULONGLONG;         // Interruption Function State
+
+       end;
+
+     FLOATING_SAVE_AREA = record
+          ControlWord : DWORD;
+          StatusWord : DWORD;
+          TagWord : DWORD;
+          ErrorOffset : DWORD;
+          ErrorSelector : DWORD;
+          DataOffset : DWORD;
+          DataSelector : DWORD;
+          RegisterArea : array[0..SIZE_OF_80387_REGISTERS-1] of BYTE;
+          Cr0NpxState : DWORD;
+       end;
+     _FLOATING_SAVE_AREA = FLOATING_SAVE_AREA;
+     TFLOATINGSAVEAREA = FLOATING_SAVE_AREA;
+     PFLOATING_SAVE_AREA = ^FLOATING_SAVE_AREA;
+
+     CONTEXT86 = record
+          ContextFlags : DWORD;
+          Dr0 : DWORD;
+          Dr1 : DWORD;
+          Dr2 : DWORD;
+          Dr3 : DWORD;
+          Dr6 : DWORD;
+          Dr7 : DWORD;
+          FloatSave : FLOATING_SAVE_AREA;
+          SegGs : DWORD;
+          SegFs : DWORD;
+          SegEs : DWORD;
+          SegDs : DWORD;
+          Edi : DWORD;
+          Esi : DWORD;
+          Ebx : DWORD;
+          Edx : DWORD;
+          Ecx : DWORD;
+          Eax : DWORD;
+          Ebp : DWORD;
+          Eip : DWORD;
+          SegCs : DWORD;
+          EFlags : DWORD;
+          Esp : DWORD;
+          SegSs : DWORD;
+       end;
+
+     LDT_ENTRY = record
+          LimitLow : WORD;
+          BaseLow : WORD;
+          HighWord : record
+              case longint of
+                 0 : ( Bytes : record
+                      BaseMid : BYTE;
+                      Flags1 : BYTE;
+                      Flags2 : BYTE;
+                      BaseHi : BYTE;
+                   end );
+                 1 : ( Bits : record
+                      flag0 : longint;
+                   end );
+              end;
+       end;
+     LPLDT_ENTRY = ^LDT_ENTRY;
+     PLDT_ENTRY = ^LDT_ENTRY;
+     _LDT_ENTRY = LDT_ENTRY;
+     TLDTENTRY = LDT_ENTRY;
+     PLDTENTRY = ^LDT_ENTRY;
+
+     PLABEL_DESCRIPTOR = record
+          EntryPoint : ULONGLONG;
+          GlobalPointer : ULONGLONG;
+       end;
+     _PLABEL_DESCRIPTOR = PLABEL_DESCRIPTOR;
+     PPLABEL_DESCRIPTOR = ^PLABEL_DESCRIPTOR;
+
+
+ {$endif _IA64_} //+winnt
+
+ {$ifdef SHx} //+winnt all block added
+     //These are the debug or break registers on the SH3
+     DEBUG_REGISTERS = RECORD
+          BarA  : ULONG;
+          BasrA : UCHAR;
+          BamrA : UCHAR;
+          BbrA  : USHORT;
+          BarB  : ULONG;
+          BasrB : UCHAR;
+          BamrB : UCHAR;
+          BbrB  : USHORT;
+          BdrB  : ULONG;
+          BdmrB : ULONG;
+          Brcr  : USHORT;
+          Align : USHORT;
+       end;
+     _DEBUG_REGISTERS=DEBUG_REZGISTERS;
+     PDEBUG_REGISTERS=^DEBUG_REZGISTERS;
+
+     CONTEXT = record
+          ContextFlags : ULONG;
+          PR   : ULONG;
+          MACH : ULONG;
+          MACL : ULONG;
+          GBR  : ULONG;
+          R0   : ULONG;
+          R1   : ULONG;
+          R2   : ULONG;
+          R3   : ULONG;
+          R4   : ULONG;
+          R5   : ULONG;
+          R6   : ULONG;
+          R7   : ULONG;
+          R8   : ULONG;
+          R9   : ULONG;
+          R10  : ULONG;
+          R11  : ULONG;
+          R12  : ULONG;
+          R13  : ULONG;
+          R14  : ULONG;
+          R15  : ULONG;
+
+    // N.B. The registers r15 and ra are defined in the integer section,
+    //   but are considered part of the control context rather than part of
+    //   the integer context.
+    //
+
+          Fir  : ULONG;
+          Psr  : ULONG;
+
+          {$ifndef SH3e}
+          {$ifndef SH4}
+          OldStuff : Array[0..1] of ULONG;
+          DebugRegisters : DEBUG_REGISTERS;
+          DSR  : ULONG;
+          MOD_ : ULONG; // MOD replaced by MOD_
+          RS   : ULONG;
+          RE   : ULONG;
+          A0   : ULONG;
+          A1   : ULONG;
+          M0   : ULONG;
+          M1   : ULONG;
+          X0   : ULONG;
+          X1   : ULONG;
+          Y0   : ULONG;
+          Y1   : ULONG;
+         //  The guard bit registers are 8 bits long, but can only be saved and
+         //  restored using 16 or 32 bit moves.  Note, the contents of the guard
+         //  bit register are in the upper 8 bits.
+          A0G : USHORT;
+          A1G : USHORT;
+          {$else}
+          Fpscr  : ULONG;
+          Fpul   : ULONG;
+          FRegs  : Array[0..15] of ULONG;
+          xFRegs : Array[0..15] of ULONG;
+          {$endif SH4}
+          {$else}
+          Fpscr  : ULONG;
+          Fpul   : ULONG;
+          FRegs  : Array[0..15] of ULONG;
+          {$endif SH3e}
+       end;
+
+ {$endif SHx} //+winnt
+
+ {$ifdef CPUARM} //+winnt all block added
+     CONTEXT = record
+          ContextFlags : ULONG;
+          R0  : ULONG;
+          R1  : ULONG;
+          R2  : ULONG;
+          R3  : ULONG;
+          R4  : ULONG;
+          R5  : ULONG;
+          R6  : ULONG;
+          R7  : ULONG;
+          R8  : ULONG;
+          R9  : ULONG;
+          R10 : ULONG;
+          R11 : ULONG;
+          R12 : ULONG;
+
+          SP  : ULONG;
+          Lr  : ULONG;
+          Pc  : ULONG;
+          Psr : ULONG;
+          Fpscr : ULONG;
+          FpExc : ULONG;
+          S       : Array [0..NUM_VFP_REGS] of ULONG;
+          FpExtra : Array [0..NUM_EXTRA_CONTROL_REGS-1] of ULONG;
+       end;
+ {$endif CPUARM} //+winnt
+
+     LPCONTEXT = ^CONTEXT;
+     _CONTEXT = CONTEXT;
+     TCONTEXT = CONTEXT;
+     PCONTEXT = ^CONTEXT;         //winnt
+
+  type
+
+     LIST_ENTRY = record          //winnt
+          Flink : ^_LIST_ENTRY;
+          Blink : ^_LIST_ENTRY;
+       end;
+     _LIST_ENTRY = LIST_ENTRY;
+     TLISTENTRY = LIST_ENTRY;
+     PLISTENTRY = ^LIST_ENTRY;
+
+     CRITICAL_SECTION_DEBUG = record
+          _Type : WORD;
+          CreatorBackTraceIndex : WORD;
+          CriticalSection : ^_CRITICAL_SECTION;
+          ProcessLocksList : LIST_ENTRY;
+          EntryCount : DWORD;
+          ContentionCount : DWORD;
+          Depth : DWORD;
+          OwnerBackTrace : array[0..4] of PVOID;
+       end;
+     LPCRITICAL_SECTION_DEBUG = ^CRITICAL_SECTION_DEBUG;
+     PCRITICAL_SECTION_DEBUG = ^CRITICAL_SECTION_DEBUG;
+     _CRITICAL_SECTION_DEBUG = CRITICAL_SECTION_DEBUG;
+     TCRITICALSECTIONDEBUG = CRITICAL_SECTION_DEBUG;
+     PCRITICALSECTIONDEBUG = ^CRITICAL_SECTION_DEBUG;
+
+     CRITICAL_SECTION = TRTLCriticalSection;
+     _CRITICAL_SECTION = TRTLCriticalSection;
+     TCRITICAL_SECTION = TRTLCriticalSection;
+     PCRITICAL_SECTION = PRTLCriticalSection;
+     LPCRITICAL_SECTION = PRTLCriticalSection;
+     TCRITICALSECTION = TRTLCriticalSection;
+     PCRITICALSECTION = PRTLCriticalSection;
+
+  { SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;  }
+
+     SECURITY_QUALITY_OF_SERVICE = record
+          Length : DWORD;
+          ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL;
+          ContextTrackingMode : WINBOOL;
+          EffectiveOnly : BOOLEAN;
+       end;
+     PSECURITY_QUALITY_OF_SERVICE = ^SECURITY_QUALITY_OF_SERVICE;
+     _SECURITY_QUALITY_OF_SERVICE = SECURITY_QUALITY_OF_SERVICE;
+     TSECURITYQUALITYOFSERVICE = SECURITY_QUALITY_OF_SERVICE;
+     PSECURITYQUALITYOFSERVICE = ^SECURITY_QUALITY_OF_SERVICE;
+
+     CONVCONTEXT = record
+          cb : UINT;
+          wFlags : UINT;
+          wCountryID : UINT;
+          iCodePage : longint;
+          dwLangID : DWORD;
+          dwSecurity : DWORD;
+          qos : SECURITY_QUALITY_OF_SERVICE;
+       end;
+     tagCONVCONTEXT = CONVCONTEXT;
+     TCONVCONTEXT = CONVCONTEXT;
+     PCONVCONTEXT = ^CONVCONTEXT;
+
+     CONVINFO = record
+          cb : DWORD;
+          hUser : DWORD;
+          hConvPartner : HCONV;
+          hszSvcPartner : HSZ;
+          hszServiceReq : HSZ;
+          hszTopic : HSZ;
+          hszItem : HSZ;
+          wFmt : UINT;
+          wType : UINT;
+          wStatus : UINT;
+          wConvst : UINT;
+          wLastError : UINT;
+          hConvList : HCONVLIST;
+          ConvCtxt : CONVCONTEXT;
+          _hwnd : HWND;
+          hwndPartner : HWND;
+       end;
+     tagCONVINFO = CONVINFO;
+     TCONVINFO = CONVINFO;
+     PCONVINFO = ^CONVINFO;
+
+     COPYDATASTRUCT = record
+          dwData : DWORD;
+          cbData : DWORD;
+          lpData : PVOID;
+       end;
+     tagCOPYDATASTRUCT = COPYDATASTRUCT;
+     TCOPYDATASTRUCT = COPYDATASTRUCT;
+     PCOPYDATASTRUCT = ^COPYDATASTRUCT;
+
+     CPINFO = record
+          MaxCharSize : UINT;
+          DefaultChar : array[0..(MAX_DEFAULTCHAR)-1] of BYTE;
+          LeadByte : array[0..(MAX_LEADBYTES)-1] of BYTE;
+       end;
+     LPCPINFO = ^CPINFO;
+     _cpinfo = CPINFO;
+     Tcpinfo = CPINFO;
+     Pcpinfo = ^CPINFO;
+
+     CPLINFO = record
+          idIcon : longint;
+          idName : longint;
+          idInfo : longint;
+          lData : LONG;
+       end;
+     tagCPLINFO = CPLINFO;
+     TCPLINFO = CPLINFO;
+     PCPLINFO = ^CPLINFO;
+
+     CREATE_PROCESS_DEBUG_INFO = record
+          hFile : HANDLE;
+          hProcess : HANDLE;
+          hThread : HANDLE;
+          lpBaseOfImage : LPVOID;
+          dwDebugInfoFileOffset : DWORD;
+          nDebugInfoSize : DWORD;
+          lpThreadLocalBase : LPVOID;
+          lpStartAddress : LPTHREAD_START_ROUTINE;
+          lpImageName : LPVOID;
+          fUnicode : WORD;
+       end;
+     _CREATE_PROCESS_DEBUG_INFO = CREATE_PROCESS_DEBUG_INFO;
+     TCREATEPROCESSDEBUGINFO = CREATE_PROCESS_DEBUG_INFO;
+     PCREATEPROCESSDEBUGINFO = ^CREATE_PROCESS_DEBUG_INFO;
+
+     CREATE_THREAD_DEBUG_INFO = record
+          hThread : HANDLE;
+          lpThreadLocalBase : LPVOID;
+          lpStartAddress : LPTHREAD_START_ROUTINE;
+       end;
+     _CREATE_THREAD_DEBUG_INFO = CREATE_THREAD_DEBUG_INFO;
+     TCREATETHREADDEBUGINFO = CREATE_THREAD_DEBUG_INFO;
+     PCREATETHREADDEBUGINFO = ^CREATE_THREAD_DEBUG_INFO;
+  (*
+   TODO: sockets
+  typedef struct _SOCKET_ADDRESS {
+    LPSOCKADDR lpSockaddr ;
+    INT iSockaddrLength ;
+  } SOCKET_ADDRESS,  PSOCKET_ADDRESS,  LPSOCKET_ADDRESS;
+   }
+  {
+  typedef struct _CSADDR_INFO {
+    SOCKET_ADDRESS  LocalAddr;
+    SOCKET_ADDRESS  RemoteAddr;
+    INT             iSocketType;
+    INT             iProtocol;
+  } CSADDR_INFO;
+    *)
+
+     CURRENCYFMT = record
+          NumDigits : UINT;
+          LeadingZero : UINT;
+          Grouping : UINT;
+          lpDecimalSep : LPTSTR;
+          lpThousandSep : LPTSTR;
+          NegativeOrder : UINT;
+          PositiveOrder : UINT;
+          lpCurrencySymbol : LPTSTR;
+       end;
+     _currencyfmt = CURRENCYFMT;
+     Tcurrencyfmt = CURRENCYFMT;
+     Pcurrencyfmt = ^CURRENCYFMT;
+
+     CURSORSHAPE = record
+          xHotSpot : longint;
+          yHotSpot : longint;
+          cx : longint;
+          cy : longint;
+          cbWidth : longint;
+          Planes : BYTE;
+          BitsPixel : BYTE;
+       end;
+     LPCURSORSHAPE = ^CURSORSHAPE;
+     tagCURSORSHAPE = CURSORSHAPE;
+     TCURSORSHAPE = CURSORSHAPE;
+     PCURSORSHAPE = ^CURSORSHAPE;
+
+     CWPRETSTRUCT = record
+          lResult : LRESULT;
+          lParam : LPARAM;
+          wParam : WPARAM;
+          message : DWORD;
+          hwnd : HWND;
+       end;
+     tagCWPRETSTRUCT = CWPRETSTRUCT;
+     TCWPRETSTRUCT = CWPRETSTRUCT;
+     PCWPRETSTRUCT = ^CWPRETSTRUCT;
+
+     CWPSTRUCT = record
+          lParam : LPARAM;
+          wParam : WPARAM;
+          message : UINT;
+          hwnd : HWND;
+       end;
+     tagCWPSTRUCT = CWPSTRUCT;
+     TCWPSTRUCT = CWPSTRUCT;
+     PCWPSTRUCT = ^CWPSTRUCT;
+
+     DATATYPES_INFO_1 = record
+          pName : LPTSTR;
+       end;
+     _DATATYPES_INFO_1 = DATATYPES_INFO_1;
+     TDATATYPESINFO1 = DATATYPES_INFO_1;
+     PDATATYPESINFO1 = ^DATATYPES_INFO_1;
+
+     DDEACK = record
+          flag0 : word;
+       end;
+     TDDEACK = DDEACK;
+     PDDEACK = ^DDEACK;
+  const
+     bm_DDEACK_bAppReturnCode = $FF;
+     bp_DDEACK_bAppReturnCode = 0;
+     bm_DDEACK_reserved = $3F00;
+     bp_DDEACK_reserved = 8;
+     bm_DDEACK_fBusy = $4000;
+     bp_DDEACK_fBusy = 14;
+     bm_DDEACK_fAck = $8000;
+     bp_DDEACK_fAck = 15;
+  function bAppReturnCode(var a : DDEACK) : word;
+  procedure set_bAppReturnCode(var a : DDEACK; __bAppReturnCode : word);
+  function reserved(var a : DDEACK) : word;
+  procedure set_reserved(var a : DDEACK; __reserved : word);
+  function fBusy(var a : DDEACK) : word;
+  procedure set_fBusy(var a : DDEACK; __fBusy : word);
+  function fAck(var a : DDEACK) : word;
+  procedure set_fAck(var a : DDEACK; __fAck : word);
+
+  type
+
+     DDEADVISE = record
+          flag0 : word;
+          cfFormat : integer;
+       end;
+     TDDEADVISE = DDEADVISE;
+     PDDEADVISE = ^DDEADVISE;
+  const
+     bm_DDEADVISE_reserved = $3FFF;
+     bp_DDEADVISE_reserved = 0;
+     bm_DDEADVISE_fDeferUpd = $4000;
+     bp_DDEADVISE_fDeferUpd = 14;
+     bm_DDEADVISE_fAckReq = $8000;
+     bp_DDEADVISE_fAckReq = 15;
+  function reserved(var a : DDEADVISE) : word;
+  procedure set_reserved(var a : DDEADVISE; __reserved : word);
+  function fDeferUpd(var a : DDEADVISE) : word;
+  procedure set_fDeferUpd(var a : DDEADVISE; __fDeferUpd : word);
+  function fAckReq(var a : DDEADVISE) : word;
+  procedure set_fAckReq(var a : DDEADVISE; __fAckReq : word);
+
+  type
+
+     DDEDATA = record
+          flag0 : word;
+          cfFormat : integer;
+          Value : array[0..0] of BYTE;
+       end;
+     PDDEDATA = ^DDEDATA;
+  const
+     bm_DDEDATA_unused = $FFF;
+     bp_DDEDATA_unused = 0;
+     bm_DDEDATA_fResponse = $1000;
+     bp_DDEDATA_fResponse = 12;
+     bm_DDEDATA_fRelease = $2000;
+     bp_DDEDATA_fRelease = 13;
+     bm_DDEDATA_reserved = $4000;
+     bp_DDEDATA_reserved = 14;
+     bm_DDEDATA_fAckReq = $8000;
+     bp_DDEDATA_fAckReq = 15;
+  function unused(var a : DDEDATA) : word;
+  procedure set_unused(var a : DDEDATA; __unused : word);
+  function fResponse(var a : DDEDATA) : word;
+  procedure set_fResponse(var a : DDEDATA; __fResponse : word);
+  function fRelease(var a : DDEDATA) : word;
+  procedure set_fRelease(var a : DDEDATA; __fRelease : word);
+  function reserved(var a : DDEDATA) : word;
+  procedure set_reserved(var a : DDEDATA; __reserved : word);
+  function fAckReq(var a : DDEDATA) : word;
+  procedure set_fAckReq(var a : DDEDATA; __fAckReq : word);
+
+  type
+
+     DDELN = record
+          flag0 : word;
+          cfFormat : integer;
+       end;
+     TDDELN = DDELN;
+     PDDELN = ^DDELN;
+  const
+     bm_DDELN_unused = $1FFF;
+     bp_DDELN_unused = 0;
+     bm_DDELN_fRelease = $2000;
+     bp_DDELN_fRelease = 13;
+     bm_DDELN_fDeferUpd = $4000;
+     bp_DDELN_fDeferUpd = 14;
+     bm_DDELN_fAckReq = $8000;
+     bp_DDELN_fAckReq = 15;
+  function unused(var a : DDELN) : word;
+  procedure set_unused(var a : DDELN; __unused : word);
+  function fRelease(var a : DDELN) : word;
+  procedure set_fRelease(var a : DDELN; __fRelease : word);
+  function fDeferUpd(var a : DDELN) : word;
+  procedure set_fDeferUpd(var a : DDELN; __fDeferUpd : word);
+  function fAckReq(var a : DDELN) : word;
+  procedure set_fAckReq(var a : DDELN; __fAckReq : word);
+
+  type
+
+     DDEML_MSG_HOOK_DATA = record
+          uiLo : UINT;
+          uiHi : UINT;
+          cbData : DWORD;
+          Data : array[0..7] of DWORD;
+       end;
+     tagDDEML_MSG_HOOK_DATA = DDEML_MSG_HOOK_DATA;
+     TDDEMLMSGHOOKDATA = DDEML_MSG_HOOK_DATA;
+     PDDEMLMSGHOOKDATA = ^DDEML_MSG_HOOK_DATA;
+
+     DDEPOKE = record
+          flag0 : word;
+          cfFormat : integer;
+          Value : array[0..0] of BYTE;
+       end;
+     TDDEPOKE = DDEPOKE;
+     PDDEPOKE = ^DDEPOKE;
+  const
+     bm_DDEPOKE_unused = $1FFF;
+     bp_DDEPOKE_unused = 0;
+     bm_DDEPOKE_fRelease = $2000;
+     bp_DDEPOKE_fRelease = 13;
+     bm_DDEPOKE_fReserved = $C000;
+     bp_DDEPOKE_fReserved = 14;
+  function unused(var a : DDEPOKE) : word;
+  procedure set_unused(var a : DDEPOKE; __unused : word);
+  function fRelease(var a : DDEPOKE) : word;
+  procedure set_fRelease(var a : DDEPOKE; __fRelease : word);
+  function fReserved(var a : DDEPOKE) : word;
+  procedure set_fReserved(var a : DDEPOKE; __fReserved : word);
+
+  type
+
+     DDEUP = record
+          flag0 : word;
+          cfFormat : integer;
+          rgb : array[0..0] of BYTE;
+       end;
+     TDDEUP = DDEUP;
+     PDDEUP = ^DDEUP;
+  const
+     bm_DDEUP_unused = $FFF;
+     bp_DDEUP_unused = 0;
+     bm_DDEUP_fAck = $1000;
+     bp_DDEUP_fAck = 12;
+     bm_DDEUP_fRelease = $2000;
+     bp_DDEUP_fRelease = 13;
+     bm_DDEUP_fReserved = $4000;
+     bp_DDEUP_fReserved = 14;
+     bm_DDEUP_fAckReq = $8000;
+     bp_DDEUP_fAckReq = 15;
+  function unused(var a : DDEUP) : word;
+  procedure set_unused(var a : DDEUP; __unused : word);
+  function fAck(var a : DDEUP) : word;
+  procedure set_fAck(var a : DDEUP; __fAck : word);
+  function fRelease(var a : DDEUP) : word;
+  procedure set_fRelease(var a : DDEUP; __fRelease : word);
+  function fReserved(var a : DDEUP) : word;
+  procedure set_fReserved(var a : DDEUP; __fReserved : word);
+  function fAckReq(var a : DDEUP) : word;
+  procedure set_fAckReq(var a : DDEUP; __fAckReq : word);
+
+  type
+
+     // definition of _exception struct - this struct is passed to the matherr
+     // routine when a floating point exception is detected
+     _EXCEPTION = record  //+stdlib
+       type_  : Integer;  //identifier type replaced by Type_ for compilation
+       Name   : PChar;    // name of function where error occured
+       arg1   : double;   // first argument to function
+       arg2   : double;   // second argument (if any) to function
+       retval : double;   // value to be returned by function
+      end;
+
+     EXCEPTION_RECORD = record        //winnt
+          ExceptionCode : DWORD;
+          ExceptionFlags : DWORD;
+          ExceptionRecord : ^_EXCEPTION_RECORD;
+          ExceptionAddress : PVOID;
+          NumberParameters : DWORD;
+          ExceptionInformation : array[0..(EXCEPTION_MAXIMUM_PARAMETERS)-1] of Pointer; //~winnt, was DWORD, SDK:ULONG_PTR
+       end;
+     PEXCEPTION_RECORD = ^EXCEPTION_RECORD;
+     _EXCEPTION_RECORD = EXCEPTION_RECORD;
+     TEXCEPTIONRECORD = EXCEPTION_RECORD;
+     PEXCEPTIONRECORD = ^EXCEPTION_RECORD;
+
+     EXCEPTION_DEBUG_INFO = record
+          ExceptionRecord : EXCEPTION_RECORD;
+          dwFirstChance : DWORD;
+       end;
+     PEXCEPTION_DEBUG_INFO = ^EXCEPTION_DEBUG_INFO;
+     _EXCEPTION_DEBUG_INFO = EXCEPTION_DEBUG_INFO;
+     TEXCEPTIONDEBUGINFO = EXCEPTION_DEBUG_INFO;
+     PEXCEPTIONDEBUGINFO = ^EXCEPTION_DEBUG_INFO;
+
+     EXIT_PROCESS_DEBUG_INFO = record
+          dwExitCode : DWORD;
+       end;
+     _EXIT_PROCESS_DEBUG_INFO = EXIT_PROCESS_DEBUG_INFO;
+     TEXITPROCESSDEBUGINFO = EXIT_PROCESS_DEBUG_INFO;
+     PEXITPROCESSDEBUGINFO = ^EXIT_PROCESS_DEBUG_INFO;
+
+
+     EXIT_THREAD_DEBUG_INFO = record
+          dwExitCode : DWORD;
+       end;
+     _EXIT_THREAD_DEBUG_INFO = EXIT_THREAD_DEBUG_INFO;
+     TEXITTHREADDEBUGINFO = EXIT_THREAD_DEBUG_INFO;
+     PEXITTHREADDEBUGINFO = ^EXIT_THREAD_DEBUG_INFO;
+
+     LOAD_DLL_DEBUG_INFO = record
+          hFile : HANDLE;
+          lpBaseOfDll : LPVOID;
+          dwDebugInfoFileOffset : DWORD;
+          nDebugInfoSize : DWORD;
+          lpImageName : LPVOID;
+          fUnicode : WORD;
+       end;
+     _LOAD_DLL_DEBUG_INFO = LOAD_DLL_DEBUG_INFO;
+     TLOADDLLDEBUGINFO = LOAD_DLL_DEBUG_INFO;
+     PLOADDLLDEBUGINFO = ^LOAD_DLL_DEBUG_INFO;
+
+     UNLOAD_DLL_DEBUG_INFO = record
+          lpBaseOfDll : LPVOID;
+       end;
+     _UNLOAD_DLL_DEBUG_INFO = UNLOAD_DLL_DEBUG_INFO;
+     TUNLOADDLLDEBUGINFO = UNLOAD_DLL_DEBUG_INFO;
+     PUNLOADDLLDEBUGINFO = ^UNLOAD_DLL_DEBUG_INFO;
+
+     OUTPUT_DEBUG_STRING_INFO = record
+          lpDebugStringData : LPSTR;
+          fUnicode : WORD;
+          nDebugStringLength : WORD;
+       end;
+     _OUTPUT_DEBUG_STRING_INFO = OUTPUT_DEBUG_STRING_INFO;
+     TOUTPUTDEBUGSTRINGINFO = OUTPUT_DEBUG_STRING_INFO;
+     POUTPUTDEBUGSTRINGINFO = ^OUTPUT_DEBUG_STRING_INFO;
+
+     RIP_INFO = record
+          dwError : DWORD;
+          dwType : DWORD;
+       end;
+     _RIP_INFO = RIP_INFO;
+     TRIPINFO = RIP_INFO;
+     PRIPINFO = ^RIP_INFO;
+
+     DEBUG_EVENT = record
+          dwDebugEventCode : DWORD;
+          dwProcessId : DWORD;
+          dwThreadId : DWORD;
+          u : record
+              case longint of
+                 0 : ( Exception : EXCEPTION_DEBUG_INFO );
+                 1 : ( CreateThread : CREATE_THREAD_DEBUG_INFO );
+                 2 : ( CreateProcessInfo : CREATE_PROCESS_DEBUG_INFO );
+                 3 : ( ExitThread : EXIT_THREAD_DEBUG_INFO );
+                 4 : ( ExitProcess : EXIT_PROCESS_DEBUG_INFO );
+                 5 : ( LoadDll : LOAD_DLL_DEBUG_INFO );
+                 6 : ( UnloadDll : UNLOAD_DLL_DEBUG_INFO );
+                 7 : ( DebugString : OUTPUT_DEBUG_STRING_INFO );
+                 8 : ( RipInfo : RIP_INFO );
+              end;
+       end;
+     LPDEBUG_EVENT = ^DEBUG_EVENT;
+     _DEBUG_EVENT = DEBUG_EVENT;
+     TDEBUGEVENT = DEBUG_EVENT;
+     PDEBUGEVENT = ^DEBUG_EVENT;
+
+     DEBUGHOOKINFO = record
+          idThread : DWORD;
+          idThreadInstaller : DWORD;
+          lParam : LPARAM;
+          wParam : WPARAM;
+          code : longint;
+       end;
+     tagDEBUGHOOKINFO = DEBUGHOOKINFO;
+     TDEBUGHOOKINFO = DEBUGHOOKINFO;
+     PDEBUGHOOKINFO = ^DEBUGHOOKINFO;
+
+     DELETEITEMSTRUCT = record
+          CtlType : UINT;
+          CtlID : UINT;
+          itemID : UINT;
+          hwndItem : HWND;
+          itemData : UINT;
+       end;
+     tagDELETEITEMSTRUCT = DELETEITEMSTRUCT;
+     TDELETEITEMSTRUCT = DELETEITEMSTRUCT;
+     PDELETEITEMSTRUCT = ^DELETEITEMSTRUCT;
+
+     DEV_BROADCAST_HDR = record
+          dbch_size : ULONG;
+          dbch_devicetype : ULONG;
+          dbch_reserved : ULONG;
+       end;
+     PDEV_BROADCAST_HDR = ^DEV_BROADCAST_HDR;
+     _DEV_BROADCAST_HDR = DEV_BROADCAST_HDR;
+     TDEVBROADCASTHDR = DEV_BROADCAST_HDR;
+     PDEVBROADCASTHDR = ^DEV_BROADCAST_HDR;
+
+     DEV_BROADCAST_OEM = record
+          dbco_size : ULONG;
+          dbco_devicetype : ULONG;
+          dbco_reserved : ULONG;
+          dbco_identifier : ULONG;
+          dbco_suppfunc : ULONG;
+       end;
+     PDEV_BROADCAST_OEM = ^DEV_BROADCAST_OEM;
+     _DEV_BROADCAST_OEM = DEV_BROADCAST_OEM;
+     TDEVBROADCASTOEM = DEV_BROADCAST_OEM;
+     PDEVBROADCASTOEM = ^DEV_BROADCAST_OEM;
+
+     DEV_BROADCAST_PORT = record
+          dbcp_size : ULONG;
+          dbcp_devicetype : ULONG;
+          dbcp_reserved : ULONG;
+          dbcp_name : array[0..0] of char;
+       end;
+     PDEV_BROADCAST_PORT = ^DEV_BROADCAST_PORT;
+     _DEV_BROADCAST_PORT = DEV_BROADCAST_PORT;
+     TDEVBROADCASTPORT = DEV_BROADCAST_PORT;
+     PDEVBROADCASTPORT = ^DEV_BROADCAST_PORT;
+
+     _DEV_BROADCAST_USERDEFINED = record
+          dbud_dbh : _DEV_BROADCAST_HDR;
+          dbud_szName : array[0..0] of char;
+          dbud_rgbUserDefined : array[0..0] of BYTE;
+       end;
+     TDEVBROADCASTUSERDEFINED = _DEV_BROADCAST_USERDEFINED;
+     PDEVBROADCASTUSERDEFINED = ^_DEV_BROADCAST_USERDEFINED;
+
+     DEV_BROADCAST_VOLUME = record
+          dbcv_size : ULONG;
+          dbcv_devicetype : ULONG;
+          dbcv_reserved : ULONG;
+          dbcv_unitmask : ULONG;
+          dbcv_flags : USHORT;
+       end;
+     PDEV_BROADCAST_VOLUME = ^DEV_BROADCAST_VOLUME;
+     _DEV_BROADCAST_VOLUME = DEV_BROADCAST_VOLUME;
+     TDEVBROADCASTVOLUME = DEV_BROADCAST_VOLUME;
+     PDEVBROADCASTVOLUME = ^DEV_BROADCAST_VOLUME;
+
+     DEVMODEA   = record
+                     dmDeviceName   : array[0.. CCHDEVICENAME-1] of BCHAR;
+                     dmSpecVersion  : WORD;
+                     dmDriverVersion: WORD;
+                     dmSize        : WORD;
+                     dmDriverExtra  : WORD;
+                     dmFields       : DWORD;
+                     dmOrientation  : short;
+                     dmPaperSize    : short;
+                     dmPaperLength  : short;
+                     dmPaperWidth   : short;
+                     dmScale       : short;
+                     dmCopies      : short;
+                     dmDefaultSource: short;
+                     dmPrintQuality : short;
+                     dmColor       : short;
+                     dmDuplex      : short;
+                     dmYResolution  : short;
+                     dmTTOption    : short;
+                     dmCollate     : short;
+                     dmFormName     : array [0..CCHFORMNAME-1] of BCHAR;
+                     dmLogPixels    : WORD;
+                     dmBitsPerPel   : DWORD;
+                     dmPelsWidth    : DWORD;
+                     dmPelsHeight   : DWORD;
+                     dmDisplayFlags : DWORD;
+                     dmDisplayFrequency     : DWORD;
+                     dmICMMethod    : DWORD;
+                     dmICMIntent    : DWORD;
+                     dmMediaType    : DWORD;
+                     dmDitherType   : DWORD;
+                     dmReserved1    : DWORD;
+                     dmReserved2    : DWORD;
+                     dmPanningWidth : DWORD;
+                     dmPanningHeight: DWORD;
+                     dmDisplayOrientation : DWORD;
+                   end;
+     _DEVICEMODE1=DEVMODEA;
+     PDEVMODEA=^DEVMODEA;
+     NPDEVMODEA=^DEVMODEA;
+     LPDEVMODEA=^DEVMODEA;
+
+     DEVMODEW   = record
+                     dmDeviceName   : array[0.. CCHDEVICENAME-1] of WCHAR;
+                     dmSpecVersion  : WORD;
+                     dmDriverVersion: WORD;
+                     dmSize        : WORD;
+                     dmDriverExtra  : WORD;
+                     dmFields       : DWORD;
+                     dmOrientation  : short;
+                     dmPaperSize    : short;
+                     dmPaperLength  : short;
+                     dmPaperWidth   : short;
+                     dmScale       : short;
+                     dmCopies      : short;
+                     dmDefaultSource: short;
+                     dmPrintQuality : short;
+                     dmColor       : short;
+                     dmDuplex      : short;
+                     dmYResolution  : short;
+                     dmTTOption    : short;
+                     dmCollate     : short;
+                     dmFormName     : array [0..CCHFORMNAME-1] of wchar;
+                     dmLogPixels    : WORD;
+                     dmBitsPerPel   : DWORD;
+                     dmPelsWidth    : DWORD;
+                     dmPelsHeight   : DWORD;
+                     dmDisplayFlags : DWORD;
+                     dmDisplayFrequency   : DWORD;
+                     dmDisplayOrientation : DWORD;
+                   end;
+
+     LPDEVMODEW   = ^DEVMODEW;
+     _devicemodeW = DEVMODEW;
+     devicemodeW  = DEVMODEW;
+     TDeviceModeW = DEVMODEW;
+     PDeviceModeW = LPDEVMODEW;
+     TDEVMODEW    = DEVMODEW;
+     PDEVMODEW    = LPDEVMODEW;
+
+{$IFDEF UNICODE}
+     DEVMODE=DEVMODEW;
+     LPDEVMODE = ^DEVMODEW;
+     _devicemode = DEVMODEW;
+     devicemode = DEVMODEW;
+     tdevicemode = DEVMODEW;
+     tdevicemodeA = DEVMODEW;
+     PDeviceModeA = LPDEVMODEW;
+     PDeviceMode = LPDEVMODEW;
+     TDEVMODE = DEVMODEW;
+     PDEVMODE = LPDEVMODEW;
+{$ELSE UNICODE}
+     DEVMODE=DEVMODEA;
+     LPDEVMODE = ^DEVMODEA;
+     _devicemode = DEVMODEA;
+     devicemode = DEVMODEA;
+     tdevicemode = DEVMODEA;
+     tdevicemodeA = DEVMODEA;
+     PDeviceModeA = LPDEVMODEA;
+     PDeviceMode = LPDEVMODEA;
+     TDEVMODE = DEVMODEA;
+     PDEVMODE = LPDEVMODEA;
+{$ENDIF UNICODE}
+
+     DEVNAMES = record
+          wDriverOffset : WORD;
+          wDeviceOffset : WORD;
+          wOutputOffset : WORD;
+          wDefault : WORD;
+       end;
+     LPDEVNAMES = ^DEVNAMES;
+     tagDEVNAMES = DEVNAMES;
+     TDEVNAMES = DEVNAMES;
+     PDEVNAMES = ^DEVNAMES;
+
+     DIBSECTION = record
+          dsBm : BITMAP;
+          dsBmih : BITMAPINFOHEADER;
+          dsBitfields : array[0..2] of DWORD;
+          dshSection : HANDLE;
+          dsOffset : DWORD;
+       end;
+     tagDIBSECTION = DIBSECTION;
+     TDIBSECTION = DIBSECTION;
+     PDIBSECTION = ^DIBSECTION;
+
+     LARGE_INTEGER = record    //winnt
+        case byte of
+          0: (LowPart : DWORD;
+              HighPart : LONG);
+          1: (QuadPart : LONGLONG);
+       end;
+     PLARGE_INTEGER = ^LARGE_INTEGER; //winnt
+     _LARGE_INTEGER = LARGE_INTEGER;  //winnt
+
+     TLargeInteger = Int64;
+     PLargeInteger = ^TLargeInteger;
+
+     ULARGE_INTEGER = record
+        case byte of
+          0: (LowPart : DWORD;
+              HighPart : DWORD);
+          1: (QuadPart : LONGLONG);
+       end;
+     PULARGE_INTEGER = ^ULARGE_INTEGER;
+     _ULARGE_INTEGER = ULARGE_INTEGER;
+
+     TULargeInteger = QWord;
+     PULargeInteger = ^TULargeInteger;
+
+     DISK_GEOMETRY = record
+          Cylinders : LARGE_INTEGER;
+          MediaType : MEDIA_TYPE;
+          TracksPerCylinder : DWORD;
+          SectorsPerTrack : DWORD;
+          BytesPerSector : DWORD;
+       end;
+     _DISK_GEOMETRY = DISK_GEOMETRY;
+     TDISKGEOMETRY = DISK_GEOMETRY;
+     PDISKGEOMETRY = ^DISK_GEOMETRY;
+
+     DISK_PERFORMANCE = record
+          BytesRead : LARGE_INTEGER;
+          BytesWritten : LARGE_INTEGER;
+          ReadTime : LARGE_INTEGER;
+          WriteTime : LARGE_INTEGER;
+          ReadCount : DWORD;
+          WriteCount : DWORD;
+          QueueDepth : DWORD;
+       end;
+     _DISK_PERFORMANCE = DISK_PERFORMANCE;
+     TDISKPERFORMANCE = DISK_PERFORMANCE;
+     PDISKPERFORMANCE = ^DISK_PERFORMANCE;
+
+     DLGITEMTEMPLATE = packed record
+          style : DWORD;
+          dwExtendedStyle : DWORD;
+          x : integer;
+          y : integer;
+          cx : integer;
+          cy : integer;
+          id : WORD;
+       end;
+     LPDLGITEMTEMPLATE = ^DLGITEMTEMPLATE;
+     TDLGITEMTEMPLATE = DLGITEMTEMPLATE;
+     PDLGITEMTEMPLATE = ^DLGITEMTEMPLATE;
+
+     DLGTEMPLATE = packed record
+          style : DWORD;
+          dwExtendedStyle : DWORD;
+          cdit : WORD;
+          x : integer;
+          y : integer;
+          cx : integer;
+          cy : integer;
+       end;
+     LPDLGTEMPLATE = ^DLGTEMPLATE;
+     LPCDLGTEMPLATE = ^DLGTEMPLATE;
+     LPCDLGTEMPLATEW = ^DLGTEMPLATE; //+winuser
+     TDLGTEMPLATE = DLGTEMPLATE;
+     PDLGTEMPLATE = ^DLGTEMPLATE;
+
+     DOC_INFO_1 = record
+          pDocName : LPTSTR;
+          pOutputFile : LPTSTR;
+          pDatatype : LPTSTR;
+       end;
+     _DOC_INFO_1 = DOC_INFO_1;
+     TDOCINFO1 = DOC_INFO_1;
+     PDOCINFO1 = ^DOC_INFO_1;
+
+     DOC_INFO_2 = record
+          pDocName : LPTSTR;
+          pOutputFile : LPTSTR;
+          pDatatype : LPTSTR;
+          dwMode : DWORD;
+          JobId : DWORD;
+       end;
+     _DOC_INFO_2 = DOC_INFO_2;
+     TDOCINFO2 = DOC_INFO_2;
+     PDOCINFO2 = ^DOC_INFO_2;
+
+     DOCINFO = record //+wingdi
+          cbSize : Integer;
+          lpszDocName : LPCWSTR;
+          lpszOutput : LPCWSTR;
+          lpszDatatype : LPCWSTR;
+          fwType : DWORD;
+       end;
+     TDOCINFO = DOCINFO;
+     PDOCINFO = ^DOCINFO;
+     DOCINFOW = DOCINFO;
+     TDOCINFOW = DOCINFOW;
+     _DOCINFOW=DOCINFOW; //+wingdi
+     LPDOCINFOW=^PDOCINFO; //+wingdi
+     PDOCINFOW=^PDOCINFO; //+wingdi
+
+     DRAGLISTINFO = record
+          uNotification : UINT;
+          hWnd : HWND;
+          ptCursor : POINT;
+       end;
+     LPDRAGLISTINFO = ^DRAGLISTINFO;
+     TDRAGLISTINFO = DRAGLISTINFO;
+     PDRAGLISTINFO = ^DRAGLISTINFO;
+
+     DRAWITEMSTRUCT = record
+          CtlType : UINT;
+          CtlID : UINT;
+          itemID : UINT;
+          itemAction : UINT;
+          itemState : UINT;
+          hwndItem : HWND;
+          hDC : HDC;
+          rcItem : RECT;
+          itemData : DWORD;
+       end;
+     LPDRAWITEMSTRUCT = ^DRAWITEMSTRUCT;
+     tagDRAWITEMSTRUCT = DRAWITEMSTRUCT;
+     TDRAWITEMSTRUCT = DRAWITEMSTRUCT;
+     PDRAWITEMSTRUCT = ^DRAWITEMSTRUCT;
+
+     DRAWTEXTPARAMS = record
+          cbSize : UINT;
+          iTabLength : longint;
+          iLeftMargin : longint;
+          iRightMargin : longint;
+          uiLengthDrawn : UINT;
+       end;
+     LPDRAWTEXTPARAMS = ^DRAWTEXTPARAMS;
+     TDRAWTEXTPARAMS = DRAWTEXTPARAMS;
+     PDRAWTEXTPARAMS = ^DRAWTEXTPARAMS;
+
+     PARTITION_INFORMATION = record
+          PartitionType : BYTE;
+          BootIndicator : BOOLEAN;
+          RecognizedPartition : BOOLEAN;
+          RewritePartition : BOOLEAN;
+          StartingOffset : LARGE_INTEGER;
+          PartitionLength : LARGE_INTEGER;
+          HiddenSectors : LARGE_INTEGER;
+       end;
+     _PARTITION_INFORMATION = PARTITION_INFORMATION;
+     TPARTITIONINFORMATION = PARTITION_INFORMATION;
+     PPARTITIONINFORMATION = ^PARTITION_INFORMATION;
+
+     DRIVE_LAYOUT_INFORMATION = record
+          PartitionCount : DWORD;
+          Signature : DWORD;
+          PartitionEntry : array[0..0] of PARTITION_INFORMATION;
+       end;
+     _DRIVE_LAYOUT_INFORMATION = DRIVE_LAYOUT_INFORMATION;
+     TDRIVELAYOUTINFORMATION = DRIVE_LAYOUT_INFORMATION;
+     PDRIVELAYOUTINFORMATION = ^DRIVE_LAYOUT_INFORMATION;
+
+     DRIVER_INFO_1 = record
+          pName : LPTSTR;
+       end;
+     _DRIVER_INFO_1 = DRIVER_INFO_1;
+     TDRIVERINFO1 = DRIVER_INFO_1;
+     PDRIVERINFO1 = ^DRIVER_INFO_1;
+
+     DRIVER_INFO_2 = record
+          cVersion : DWORD;
+          pName : LPTSTR;
+          pEnvironment : LPTSTR;
+          pDriverPath : LPTSTR;
+          pDataFile : LPTSTR;
+          pConfigFile : LPTSTR;
+       end;
+     _DRIVER_INFO_2 = DRIVER_INFO_2;
+     TDRIVERINFO2 = DRIVER_INFO_2;
+     PDRIVERINFO2 = ^DRIVER_INFO_2;
+
+     DRIVER_INFO_3 = record
+          cVersion : DWORD;
+          pName : LPTSTR;
+          pEnvironment : LPTSTR;
+          pDriverPath : LPTSTR;
+          pDataFile : LPTSTR;
+          pConfigFile : LPTSTR;
+          pHelpFile : LPTSTR;
+          pDependentFiles : LPTSTR;
+          pMonitorName : LPTSTR;
+          pDefaultDataType : LPTSTR;
+       end;
+     _DRIVER_INFO_3 = DRIVER_INFO_3;
+     TDRIVERINFO3 = DRIVER_INFO_3;
+     PDRIVERINFO3 = ^DRIVER_INFO_3;
+
+     EDITSTREAM = record
+          dwCookie : DWORD;
+          dwError : DWORD;
+          pfnCallback : EDITSTREAMCALLBACK;
+       end;
+     _editstream = EDITSTREAM;
+     Teditstream = EDITSTREAM;
+     Peditstream = ^EDITSTREAM;
+
+     EMR = record
+          iType : DWORD;
+          nSize : DWORD;
+       end;
+     tagEMR = EMR;
+     TEMR = EMR;
+     PEMR = ^EMR;
+
+     EMRANGLEARC = record
+          emr : EMR;
+          ptlCenter : POINTL;
+          nRadius : DWORD;
+          eStartAngle : Single;
+          eSweepAngle : Single;
+       end;
+     tagEMRANGLEARC = EMRANGLEARC;
+     TEMRANGLEARC = EMRANGLEARC;
+     PEMRANGLEARC = ^EMRANGLEARC;
+
+     EMRARC = record
+          emr : EMR;
+          rclBox : RECTL;
+          ptlStart : POINTL;
+          ptlEnd : POINTL;
+       end;
+     tagEMRARC = EMRARC;
+     TEMRARC = EMRARC;
+     PEMRARC = ^EMRARC;
+
+     EMRARCTO = EMRARC;
+     TEMRARCTO = EMRARC;
+     PEMRARCTO = ^EMRARC;
+
+     EMRCHORD = EMRARC;
+     TEMRCHORD = EMRARC;
+     PEMRCHORD = ^EMRARC;
+
+     EMRPIE = EMRARC;
+     TEMRPIE = EMRARC;
+     PEMRPIE = ^EMRARC;
+
+     XFORM = record
+          eM11 : Single;
+          eM12 : Single;
+          eM21 : Single;
+          eM22 : Single;
+          eDx : Single;
+          eDy : Single;
+       end;
+     LPXFORM = ^XFORM;
+     _XFORM = XFORM;
+     TXFORM = XFORM;
+     PXFORM = ^XFORM;
+
+     EMRBITBLT = record
+          emr : EMR;
+          rclBounds : RECTL;
+          xDest : LONG;
+          yDest : LONG;
+          cxDest : LONG;
+          cyDest : LONG;
+          dwRop : DWORD;
+          xSrc : LONG;
+          ySrc : LONG;
+          xformSrc : XFORM;
+          crBkColorSrc : COLORREF;
+          iUsageSrc : DWORD;
+          offBmiSrc : DWORD;
+          offBitsSrc : DWORD;
+          cbBitsSrc : DWORD;
+       end;
+     tagEMRBITBLT = EMRBITBLT;
+     TEMRBITBLT = EMRBITBLT;
+     PEMRBITBLT = ^EMRBITBLT;
+
+     LOGBRUSH = record
+          lbStyle : UINT;
+          lbColor : COLORREF;
+          lbHatch : LONG;
+       end;
+     tagLOGBRUSH = LOGBRUSH;
+     TLOGBRUSH = LOGBRUSH;
+     PLOGBRUSH = ^LOGBRUSH;
+
+     EMRCREATEBRUSHINDIRECT = record
+          emr : EMR;
+          ihBrush : DWORD;
+          lb : LOGBRUSH;
+       end;
+     tagEMRCREATEBRUSHINDIRECT = EMRCREATEBRUSHINDIRECT;
+     TEMRCREATEBRUSHINDIRECT = EMRCREATEBRUSHINDIRECT;
+     PEMRCREATEBRUSHINDIRECT = ^EMRCREATEBRUSHINDIRECT;
+
+     LCSCSTYPE = LONG;
+
+     LCSGAMUTMATCH = LONG;
+
+     LOGCOLORSPACE = record
+          lcsSignature : DWORD;
+          lcsVersion : DWORD;
+          lcsSize : DWORD;
+          lcsCSType : LCSCSTYPE;
+          lcsIntent : LCSGAMUTMATCH;
+          lcsEndpoints : CIEXYZTRIPLE;
+          lcsGammaRed : DWORD;
+          lcsGammaGreen : DWORD;
+          lcsGammaBlue : DWORD;
+          lcsFilename : array[0..(MAX_PATH)-1] of TCHAR;
+       end;
+     LPLOGCOLORSPACE = ^LOGCOLORSPACE;
+     tagLOGCOLORSPACE = LOGCOLORSPACE;
+     TLOGCOLORSPACE = LOGCOLORSPACE;
+     TLOGCOLORSPACEA = LOGCOLORSPACE;
+     PLOGCOLORSPACE = ^LOGCOLORSPACE;
+
+     EMRCREATECOLORSPACE = record
+          emr : EMR;
+          ihCS : DWORD;
+          lcs : LOGCOLORSPACE;
+       end;
+     tagEMRCREATECOLORSPACE = EMRCREATECOLORSPACE;
+     TEMRCREATECOLORSPACE = EMRCREATECOLORSPACE;
+     PEMRCREATECOLORSPACE = ^EMRCREATECOLORSPACE;
+
+     EMRCREATEDIBPATTERNBRUSHPT = record
+          emr : EMR;
+          ihBrush : DWORD;
+          iUsage : DWORD;
+          offBmi : DWORD;
+          cbBmi : DWORD;
+          offBits : DWORD;
+          cbBits : DWORD;
+       end;
+     tagEMRCREATEDIBPATTERNBRUSHPT = EMRCREATEDIBPATTERNBRUSHPT;
+     TEMRCREATEDIBPATTERNBRUSHPT = EMRCREATEDIBPATTERNBRUSHPT;
+     PEMRCREATEDIBPATTERNBRUSHPT = EMRCREATEDIBPATTERNBRUSHPT;
+
+     EMRCREATEMONOBRUSH = record
+          emr : EMR;
+          ihBrush : DWORD;
+          iUsage : DWORD;
+          offBmi : DWORD;
+          cbBmi : DWORD;
+          offBits : DWORD;
+          cbBits : DWORD;
+       end;
+     tagEMRCREATEMONOBRUSH = EMRCREATEMONOBRUSH;
+     TEMRCREATEMONOBRUSH = EMRCREATEMONOBRUSH;
+     PEMRCREATEMONOBRUSH = ^EMRCREATEMONOBRUSH;
+
+     PALETTEENTRY = record
+          peRed : BYTE;
+          peGreen : BYTE;
+          peBlue : BYTE;
+          peFlags : BYTE;
+       end;
+     LPPALETTEENTRY = ^PALETTEENTRY;
+     tagPALETTEENTRY = PALETTEENTRY;
+     TPALETTEENTRY = PALETTEENTRY;
+     PPALETTEENTRY = ^PALETTEENTRY;
+
+     LOGPALETTE = record
+          palVersion : WORD;
+          palNumEntries : WORD;
+          palPalEntry : array[0..0] of PALETTEENTRY;
+       end;
+     LPLOGPALETTE = ^LOGPALETTE;
+     tagLOGPALETTE = LOGPALETTE;
+     TLOGPALETTE = LOGPALETTE;
+     PLOGPALETTE = ^LOGPALETTE;
+
+     EMRCREATEPALETTE = record
+          emr : EMR;
+          ihPal : DWORD;
+          lgpl : LOGPALETTE;
+       end;
+     tagEMRCREATEPALETTE = EMRCREATEPALETTE;
+     TEMRCREATEPALETTE = EMRCREATEPALETTE;
+     PEMRCREATEPALETTE = ^EMRCREATEPALETTE;
+
+     LOGPEN = record
+          lopnStyle : UINT;
+          lopnWidth : POINT;
+          lopnColor : COLORREF;
+       end;
+     tagLOGPEN = LOGPEN;
+     TLOGPEN = LOGPEN;
+     PLOGPEN = ^LOGPEN;
+
+     EMRCREATEPEN = record
+          emr : EMR;
+          ihPen : DWORD;
+          lopn : LOGPEN;
+       end;
+     tagEMRCREATEPEN = EMRCREATEPEN;
+     TEMRCREATEPEN = EMRCREATEPEN;
+     PEMRCREATEPEN = ^EMRCREATEPEN;
+
+     EMRELLIPSE = record
+          emr : EMR;
+          rclBox : RECTL;
+       end;
+     tagEMRELLIPSE = EMRELLIPSE;
+     TEMRELLIPSE = EMRELLIPSE;
+     PEMRELLIPSE = ^EMRELLIPSE;
+
+     EMRRECTANGLE = EMRELLIPSE;
+     TEMRRECTANGLE = EMRELLIPSE;
+     PEMRRECTANGLE = ^EMRELLIPSE;
+
+     EMREOF = record
+          emr : EMR;
+          nPalEntries : DWORD;
+          offPalEntries : DWORD;
+          nSizeLast : DWORD;
+       end;
+     tagEMREOF = EMREOF;
+     TEMREOF = EMREOF;
+     PEMREOF = ^EMREOF;
+
+     EMREXCLUDECLIPRECT = record
+          emr : EMR;
+          rclClip : RECTL;
+       end;
+     tagEMREXCLUDECLIPRECT = EMREXCLUDECLIPRECT;
+     TEMREXCLUDECLIPRECT = EMREXCLUDECLIPRECT;
+     PEMREXCLUDECLIPRECT = ^EMREXCLUDECLIPRECT;
+
+     EMRINTERSECTCLIPRECT = EMREXCLUDECLIPRECT;
+     TEMRINTERSECTCLIPRECT = EMREXCLUDECLIPRECT;
+     PEMRINTERSECTCLIPRECT = ^EMREXCLUDECLIPRECT;
+
+     PANOSE = record
+          bFamilyType : BYTE;
+          bSerifStyle : BYTE;
+          bWeight : BYTE;
+          bProportion : BYTE;
+          bContrast : BYTE;
+          bStrokeVariation : BYTE;
+          bArmStyle : BYTE;
+          bLetterform : BYTE;
+          bMidline : BYTE;
+          bXHeight : BYTE;
+       end;
+     tagPANOSE = PANOSE;
+     TPANOSE = PANOSE;
+     PPANOSE = ^PANOSE;
+
+     EXTLOGFONT = record
+          elfLogFont : LOGFONT;
+          elfFullName : array[0..(LF_FULLFACESIZE)-1] of BCHAR;
+          elfStyle : array[0..(LF_FACESIZE)-1] of BCHAR;
+          elfVersion : DWORD;
+          elfStyleSize : DWORD;
+          elfMatch : DWORD;
+          elfReserved : DWORD;
+          elfVendorId : array[0..(ELF_VENDOR_SIZE)-1] of BYTE;
+          elfCulture : DWORD;
+          elfPanose : PANOSE;
+       end;
+     tagEXTLOGFONT = EXTLOGFONT;
+     TEXTLOGFONT = EXTLOGFONT;
+     PEXTLOGFONT = ^EXTLOGFONT;
+
+     EMREXTCREATEFONTINDIRECTW = record
+          emr : EMR;
+          ihFont : DWORD;
+          elfw : EXTLOGFONT;
+       end;
+     tagEMREXTCREATEFONTINDIRECTW = EMREXTCREATEFONTINDIRECTW;
+     TEMREXTCREATEFONTINDIRECTW = EMREXTCREATEFONTINDIRECTW;
+     PEMREXTCREATEFONTINDIRECTW = ^EMREXTCREATEFONTINDIRECTW;
+
+
+     EXTLOGPEN = record
+          elpPenStyle : UINT;
+          elpWidth : UINT;
+          elpBrushStyle : UINT;
+          elpColor : COLORREF;
+          elpHatch : LONG;
+          elpNumEntries : DWORD;
+          elpStyleEntry : array[0..0] of DWORD;
+       end;
+     tagEXTLOGPEN = EXTLOGPEN;
+     TEXTLOGPEN = EXTLOGPEN;
+     PEXTLOGPEN = ^EXTLOGPEN;
+
+     EMREXTCREATEPEN = record
+          emr : EMR;
+          ihPen : DWORD;
+          offBmi : DWORD;
+          cbBmi : DWORD;
+          offBits : DWORD;
+          cbBits : DWORD;
+          elp : EXTLOGPEN;
+       end;
+     tagEMREXTCREATEPEN = EMREXTCREATEPEN;
+     TEMREXTCREATEPEN = EMREXTCREATEPEN;
+     PEMREXTCREATEPEN = ^EMREXTCREATEPEN;
+
+     EMREXTFLOODFILL = record
+          emr : EMR;
+          ptlStart : POINTL;
+          crColor : COLORREF;
+          iMode : DWORD;
+       end;
+     tagEMREXTFLOODFILL = EMREXTFLOODFILL;
+     TEMREXTFLOODFILL = EMREXTFLOODFILL;
+     PEMREXTFLOODFILL = ^EMREXTFLOODFILL;
+
+     EMREXTSELECTCLIPRGN = record
+          emr : EMR;
+          cbRgnData : DWORD;
+          iMode : DWORD;
+          RgnData : array[0..0] of BYTE;
+       end;
+     tagEMREXTSELECTCLIPRGN = EMREXTSELECTCLIPRGN;
+     TEMREXTSELECTCLIPRGN = EMREXTSELECTCLIPRGN;
+     PEMREXTSELECTCLIPRGN = ^EMREXTSELECTCLIPRGN;
+
+     EMRTEXT = record
+          ptlReference : POINTL;
+          nChars : DWORD;
+          offString : DWORD;
+          fOptions : DWORD;
+          rcl : RECTL;
+          offDx : DWORD;
+       end;
+     tagEMRTEXT = EMRTEXT;
+     TEMRTEXT = EMRTEXT;
+     PEMRTEXT = ^EMRTEXT;
+
+     EMREXTTEXTOUTA = record
+          emr : EMR;
+          rclBounds : RECTL;
+          iGraphicsMode : DWORD;
+          exScale : Single;
+          eyScale : Single;
+          emrtext : EMRTEXT;
+       end;
+     tagEMREXTTEXTOUTA = EMREXTTEXTOUTA;
+     TEMREXTTEXTOUTA = EMREXTTEXTOUTA;
+     PEMREXTTEXTOUTA = ^EMREXTTEXTOUTA;
+
+     EMREXTTEXTOUTW = EMREXTTEXTOUTA;
+     TEMREXTTEXTOUTW = EMREXTTEXTOUTA;
+     PEMREXTTEXTOUTW = ^EMREXTTEXTOUTA;
+
+     EMRFILLPATH = record
+          emr : EMR;
+          rclBounds : RECTL;
+       end;
+     tagEMRFILLPATH = EMRFILLPATH;
+     TEMRFILLPATH = EMRFILLPATH;
+     PEMRFILLPATH = ^EMRFILLPATH;
+
+     EMRSTROKEANDFILLPATH = EMRFILLPATH;
+     TEMRSTROKEANDFILLPATH = EMRFILLPATH;
+     PEMRSTROKEANDFILLPATH = ^EMRFILLPATH;
+
+     EMRSTROKEPATH = EMRFILLPATH;
+     TEMRSTROKEPATH = EMRFILLPATH;
+     PEMRSTROKEPATH = ^EMRFILLPATH;
+
+     EMRFILLRGN = record
+          emr : EMR;
+          rclBounds : RECTL;
+          cbRgnData : DWORD;
+          ihBrush : DWORD;
+          RgnData : array[0..0] of BYTE;
+       end;
+     tagEMRFILLRGN = EMRFILLRGN;
+     TEMRFILLRGN = EMRFILLRGN;
+     PEMRFILLRGN = ^EMRFILLRGN;
+
+     EMRFORMAT = record
+          dSignature : DWORD;
+          nVersion : DWORD;
+          cbData : DWORD;
+          offData : DWORD;
+       end;
+     tagEMRFORMAT = EMRFORMAT;
+     TEMRFORMAT = EMRFORMAT;
+     PEMRFORMAT = ^EMRFORMAT;
+
+     SIZE = record
+          cx : LONG;
+          cy : LONG;
+       end;
+     LPSIZE = ^SIZE;
+     tagSIZE = SIZE;
+     TSIZE = SIZE;
+     PSIZE = ^SIZE;
+
+     SIZEL = SIZE;        //windef
+     TSIZEL = SIZE;       //windef
+     PSIZEL = ^SIZE;
+     LPSIZEL = ^SIZE;
+
+     EMRFRAMERGN = record
+          emr : EMR;
+          rclBounds : RECTL;
+          cbRgnData : DWORD;
+          ihBrush : DWORD;
+          szlStroke : SIZEL;
+          RgnData : array[0..0] of BYTE;
+       end;
+     tagEMRFRAMERGN = EMRFRAMERGN;
+     TEMRFRAMERGN = EMRFRAMERGN;
+     PEMRFRAMERGN = ^EMRFRAMERGN;
+
+     EMRGDICOMMENT = record
+          emr : EMR;
+          cbData : DWORD;
+          Data : array[0..0] of BYTE;
+       end;
+     tagEMRGDICOMMENT = EMRGDICOMMENT;
+     TEMRGDICOMMENT = EMRGDICOMMENT;
+     PEMRGDICOMMENT = ^EMRGDICOMMENT;
+
+     EMRINVERTRGN = record
+          emr : EMR;
+          rclBounds : RECTL;
+          cbRgnData : DWORD;
+          RgnData : array[0..0] of BYTE;
+       end;
+     tagEMRINVERTRGN = EMRINVERTRGN;
+     TEMRINVERTRGN = EMRINVERTRGN;
+     PEMRINVERTRGN = ^EMRINVERTRGN;
+
+     EMRPAINTRGN = EMRINVERTRGN;
+     TEMRPAINTRGN = EMRINVERTRGN;
+     PEMRPAINTRGN = ^EMRINVERTRGN;
+
+     EMRLINETO = record
+          emr : EMR;
+          ptl : POINTL;
+       end;
+     tagEMRLINETO = EMRLINETO;
+     TEMRLINETO = EMRLINETO;
+     PEMRLINETO = ^EMRLINETO;
+
+     EMRMOVETOEX = EMRLINETO;
+     TEMRMOVETOEX = EMRLINETO;
+     PEMRMOVETOEX = ^EMRLINETO;
+
+     EMRMASKBLT = record
+          emr : EMR;
+          rclBounds : RECTL;
+          xDest : LONG;
+          yDest : LONG;
+          cxDest : LONG;
+          cyDest : LONG;
+          dwRop : DWORD;
+          xSrc : LONG;
+          ySrc : LONG;
+          xformSrc : XFORM;
+          crBkColorSrc : COLORREF;
+          iUsageSrc : DWORD;
+          offBmiSrc : DWORD;
+          cbBmiSrc : DWORD;
+          offBitsSrc : DWORD;
+          cbBitsSrc : DWORD;
+          xMask : LONG;
+          yMask : LONG;
+          iUsageMask : DWORD;
+          offBmiMask : DWORD;
+          cbBmiMask : DWORD;
+          offBitsMask : DWORD;
+          cbBitsMask : DWORD;
+       end;
+     tagEMRMASKBLT = EMRMASKBLT;
+     TEMRMASKBLT = EMRMASKBLT;
+     PEMRMASKBLT = ^EMRMASKBLT;
+
+     EMRMODIFYWORLDTRANSFORM = record
+          emr : EMR;
+          xform : XFORM;
+          iMode : DWORD;
+       end;
+     tagEMRMODIFYWORLDTRANSFORM = EMRMODIFYWORLDTRANSFORM;
+     TEMRMODIFYWORLDTRANSFORM = EMRMODIFYWORLDTRANSFORM;
+     PEMRMODIFYWORLDTRANSFORM = EMRMODIFYWORLDTRANSFORM;
+
+     EMROFFSETCLIPRGN = record
+          emr : EMR;
+          ptlOffset : POINTL;
+       end;
+     tagEMROFFSETCLIPRGN = EMROFFSETCLIPRGN;
+     TEMROFFSETCLIPRGN = EMROFFSETCLIPRGN;
+     PEMROFFSETCLIPRGN = ^EMROFFSETCLIPRGN;
+
+     EMRPLGBLT = record
+          emr : EMR;
+          rclBounds : RECTL;
+          aptlDest : array[0..2] of POINTL;
+          xSrc : LONG;
+          ySrc : LONG;
+          cxSrc : LONG;
+          cySrc : LONG;
+          xformSrc : XFORM;
+          crBkColorSrc : COLORREF;
+          iUsageSrc : DWORD;
+          offBmiSrc : DWORD;
+          cbBmiSrc : DWORD;
+          offBitsSrc : DWORD;
+          cbBitsSrc : DWORD;
+          xMask : LONG;
+          yMask : LONG;
+          iUsageMask : DWORD;
+          offBmiMask : DWORD;
+          cbBmiMask : DWORD;
+          offBitsMask : DWORD;
+          cbBitsMask : DWORD;
+       end;
+     tagEMRPLGBLT = EMRPLGBLT;
+     TEMRPLGBLT = EMRPLGBLT;
+     PEMRPLGBLT = ^EMRPLGBLT;
+
+     EMRPOLYDRAW = record
+          emr : EMR;
+          rclBounds : RECTL;
+          cptl : DWORD;
+          aptl : array[0..0] of POINTL;
+          abTypes : array[0..0] of BYTE;
+       end;
+     tagEMRPOLYDRAW = EMRPOLYDRAW;
+     TEMRPOLYDRAW = EMRPOLYDRAW;
+     PEMRPOLYDRAW = ^EMRPOLYDRAW;
+
+     EMRPOLYDRAW16 = record
+          emr : EMR;
+          rclBounds : RECTL;
+          cpts : DWORD;
+          apts : array[0..0] of POINTS;
+          abTypes : array[0..0] of BYTE;
+       end;
+     tagEMRPOLYDRAW16 = EMRPOLYDRAW16;
+     TEMRPOLYDRAW16 = EMRPOLYDRAW16;
+     PEMRPOLYDRAW16 = ^EMRPOLYDRAW16;
+
+     EMRPOLYLINE = record
+          emr : EMR;
+          rclBounds : RECTL;
+          cptl : DWORD;
+          aptl : array[0..0] of POINTL;
+       end;
+     tagEMRPOLYLINE = EMRPOLYLINE;
+     TEMRPOLYLINE = EMRPOLYLINE;
+     PEMRPOLYLINE = ^EMRPOLYLINE;
+
+     EMRPOLYBEZIER = EMRPOLYLINE;
+     TEMRPOLYBEZIER = EMRPOLYLINE;
+     PEMRPOLYBEZIER = ^EMRPOLYLINE;
+
+     EMRPOLYGON = EMRPOLYLINE;
+     TEMRPOLYGON = EMRPOLYLINE;
+     PEMRPOLYGON = ^EMRPOLYLINE;
+
+     EMRPOLYBEZIERTO = EMRPOLYLINE;
+     TEMRPOLYBEZIERTO = EMRPOLYLINE;
+     PEMRPOLYBEZIERTO = ^EMRPOLYLINE;
+
+     EMRPOLYLINETO = EMRPOLYLINE;
+     TEMRPOLYLINETO = EMRPOLYLINE;
+     PEMRPOLYLINETO = ^EMRPOLYLINE;
+
+     EMRPOLYLINE16 = record
+          emr : EMR;
+          rclBounds : RECTL;
+          cpts : DWORD;
+          apts : array[0..0] of POINTL;
+       end;
+     tagEMRPOLYLINE16 = EMRPOLYLINE16;
+     TEMRPOLYLINE16 = EMRPOLYLINE16;
+     PEMRPOLYLINE16 = ^EMRPOLYLINE16;
+
+     EMRPOLYBEZIER16 = EMRPOLYLINE16;
+     TEMRPOLYBEZIER16 = EMRPOLYLINE16;
+     PEMRPOLYBEZIER16 = ^EMRPOLYLINE16;
+
+     EMRPOLYGON16 = EMRPOLYLINE16;
+     TEMRPOLYGON16 = EMRPOLYLINE16;
+     PEMRPOLYGON16 = ^EMRPOLYLINE16;
+
+     EMRPOLYBEZIERTO16 = EMRPOLYLINE16;
+     TEMRPOLYBEZIERTO16 = EMRPOLYLINE16;
+     PEMRPOLYBEZIERTO16 = ^EMRPOLYLINE16;
+
+     EMRPOLYLINETO16 = EMRPOLYLINE16;
+     TEMRPOLYLINETO16 = EMRPOLYLINE16;
+     PEMRPOLYLINETO16 = ^EMRPOLYLINE16;
+
+     EMRPOLYPOLYLINE = record
+          emr : EMR;
+          rclBounds : RECTL;
+          nPolys : DWORD;
+          cptl : DWORD;
+          aPolyCounts : array[0..0] of DWORD;
+          aptl : array[0..0] of POINTL;
+       end;
+     tagEMRPOLYPOLYLINE = EMRPOLYPOLYLINE;
+     TEMRPOLYPOLYLINE = EMRPOLYPOLYLINE;
+     PEMRPOLYPOLYLINE = ^EMRPOLYPOLYLINE;
+
+     EMRPOLYPOLYGON = EMRPOLYPOLYLINE;
+     TEMRPOLYPOLYGON = EMRPOLYPOLYLINE;
+     PEMRPOLYPOLYGON = ^EMRPOLYPOLYLINE;
+
+     EMRPOLYPOLYLINE16 = record
+          emr : EMR;
+          rclBounds : RECTL;
+          nPolys : DWORD;
+          cpts : DWORD;
+          aPolyCounts : array[0..0] of DWORD;
+          apts : array[0..0] of POINTS;
+       end;
+     tagEMRPOLYPOLYLINE16 = EMRPOLYPOLYLINE16;
+     TEMRPOLYPOLYLINE16 = EMRPOLYPOLYLINE16;
+     PEMRPOLYPOLYLINE16 = ^EMRPOLYPOLYLINE16;
+
+     EMRPOLYPOLYGON16 = EMRPOLYPOLYLINE16;
+     TEMRPOLYPOLYGON16 = EMRPOLYPOLYLINE16;
+     PEMRPOLYPOLYGON16 = ^EMRPOLYPOLYLINE16;
+
+     EMRPOLYTEXTOUTA = record
+          emr : EMR;
+          rclBounds : RECTL;
+          iGraphicsMode : DWORD;
+          exScale : Single;
+          eyScale : Single;
+          cStrings : LONG;
+          aemrtext : array[0..0] of EMRTEXT;
+       end;
+     tagEMRPOLYTEXTOUTA = EMRPOLYTEXTOUTA;
+     TEMRPOLYTEXTOUTA = EMRPOLYTEXTOUTA;
+     PEMRPOLYTEXTOUTA = ^EMRPOLYTEXTOUTA;
+
+     EMRPOLYTEXTOUTW = EMRPOLYTEXTOUTA;
+     TEMRPOLYTEXTOUTW = EMRPOLYTEXTOUTA;
+     PEMRPOLYTEXTOUTW = ^EMRPOLYTEXTOUTA;
+
+     EMRRESIZEPALETTE = record
+          emr : EMR;
+          ihPal : DWORD;
+          cEntries : DWORD;
+       end;
+     tagEMRRESIZEPALETTE = EMRRESIZEPALETTE;
+     TEMRRESIZEPALETTE = EMRRESIZEPALETTE;
+     PEMRRESIZEPALETTE = ^EMRRESIZEPALETTE;
+
+     EMRRESTOREDC = record
+          emr : EMR;
+          iRelative : LONG;
+       end;
+     tagEMRRESTOREDC = EMRRESTOREDC;
+     TEMRRESTOREDC = EMRRESTOREDC;
+     PEMRRESTOREDC = ^EMRRESTOREDC;
+
+     EMRROUNDRECT = record
+          emr : EMR;
+          rclBox : RECTL;
+          szlCorner : SIZEL;
+       end;
+     tagEMRROUNDRECT = EMRROUNDRECT;
+     TEMRROUNDRECT = EMRROUNDRECT;
+     PEMRROUNDRECT = ^EMRROUNDRECT;
+
+     EMRSCALEVIEWPORTEXTEX = record
+          emr : EMR;
+          xNum : LONG;
+          xDenom : LONG;
+          yNum : LONG;
+          yDenom : LONG;
+       end;
+     tagEMRSCALEVIEWPORTEXTEX = EMRSCALEVIEWPORTEXTEX;
+     TEMRSCALEVIEWPORTEXTEX = EMRSCALEVIEWPORTEXTEX;
+     PEMRSCALEVIEWPORTEXTEX = ^EMRSCALEVIEWPORTEXTEX;
+
+     EMRSCALEWINDOWEXTEX = EMRSCALEVIEWPORTEXTEX;
+     TEMRSCALEWINDOWEXTEX = EMRSCALEVIEWPORTEXTEX;
+     PEMRSCALEWINDOWEXTEX = ^EMRSCALEVIEWPORTEXTEX;
+
+     EMRSELECTCOLORSPACE = record
+          emr : EMR;
+          ihCS : DWORD;
+       end;
+     tagEMRSELECTCOLORSPACE = EMRSELECTCOLORSPACE;
+     TEMRSELECTCOLORSPACE = EMRSELECTCOLORSPACE;
+     PEMRSELECTCOLORSPACE = ^EMRSELECTCOLORSPACE;
+
+     EMRDELETECOLORSPACE = EMRSELECTCOLORSPACE;
+     TEMRDELETECOLORSPACE = EMRSELECTCOLORSPACE;
+     PEMRDELETECOLORSPACE = ^EMRSELECTCOLORSPACE;
+
+     EMRSELECTOBJECT = record
+          emr : EMR;
+          ihObject : DWORD;
+       end;
+     tagEMRSELECTOBJECT = EMRSELECTOBJECT;
+     TEMRSELECTOBJECT = EMRSELECTOBJECT;
+     PEMRSELECTOBJECT = ^EMRSELECTOBJECT;
+
+     EMRDELETEOBJECT = EMRSELECTOBJECT;
+     TEMRDELETEOBJECT = EMRSELECTOBJECT;
+     PEMRDELETEOBJECT = ^EMRSELECTOBJECT;
+
+     EMRSELECTPALETTE = record
+          emr : EMR;
+          ihPal : DWORD;
+       end;
+     tagEMRSELECTPALETTE = EMRSELECTPALETTE;
+     TEMRSELECTPALETTE = EMRSELECTPALETTE;
+     PEMRSELECTPALETTE = ^EMRSELECTPALETTE;
+
+     EMRSETARCDIRECTION = record
+          emr : EMR;
+          iArcDirection : DWORD;
+       end;
+     tagEMRSETARCDIRECTION = EMRSETARCDIRECTION;
+     TEMRSETARCDIRECTION = EMRSETARCDIRECTION;
+     PEMRSETARCDIRECTION = ^EMRSETARCDIRECTION;
+
+     EMRSETBKCOLOR = record
+          emr : EMR;
+          crColor : COLORREF;
+       end;
+     tagEMRSETTEXTCOLOR = EMRSETBKCOLOR;
+     TEMRSETBKCOLOR = EMRSETBKCOLOR;
+     PEMRSETBKCOLOR = ^EMRSETBKCOLOR;
+
+     EMRSETTEXTCOLOR = EMRSETBKCOLOR;
+     TEMRSETTEXTCOLOR = EMRSETBKCOLOR;
+     PEMRSETTEXTCOLOR = ^EMRSETBKCOLOR;
+
+     EMRSETCOLORADJUSTMENT = record
+          emr : EMR;
+          ColorAdjustment : COLORADJUSTMENT;
+       end;
+     tagEMRSETCOLORADJUSTMENT = EMRSETCOLORADJUSTMENT;
+     TEMRSETCOLORADJUSTMENT = EMRSETCOLORADJUSTMENT;
+     PEMRSETCOLORADJUSTMENT = ^EMRSETCOLORADJUSTMENT;
+
+     EMRSETDIBITSTODEVICE = record
+          emr : EMR;
+          rclBounds : RECTL;
+          xDest : LONG;
+          yDest : LONG;
+          xSrc : LONG;
+          ySrc : LONG;
+          cxSrc : LONG;
+          cySrc : LONG;
+          offBmiSrc : DWORD;
+          cbBmiSrc : DWORD;
+          offBitsSrc : DWORD;
+          cbBitsSrc : DWORD;
+          iUsageSrc : DWORD;
+          iStartScan : DWORD;
+          cScans : DWORD;
+       end;
+     tagEMRSETDIBITSTODEVICE = EMRSETDIBITSTODEVICE;
+     TEMRSETDIBITSTODEVICE = EMRSETDIBITSTODEVICE;
+     PEMRSETDIBITSTODEVICE = ^EMRSETDIBITSTODEVICE;
+
+     EMRSETMAPPERFLAGS = record
+          emr : EMR;
+          dwFlags : DWORD;
+       end;
+     tagEMRSETMAPPERFLAGS = EMRSETMAPPERFLAGS;
+     TEMRSETMAPPERFLAGS = EMRSETMAPPERFLAGS;
+     PEMRSETMAPPERFLAGS = ^EMRSETMAPPERFLAGS;
+
+     EMRSETMITERLIMIT = record
+          emr : EMR;
+          eMiterLimit : Single;
+       end;
+     tagEMRSETMITERLIMIT = EMRSETMITERLIMIT;
+     TEMRSETMITERLIMIT = EMRSETMITERLIMIT;
+     PEMRSETMITERLIMIT = ^EMRSETMITERLIMIT;
+
+     EMRSETPALETTEENTRIES = record
+          emr : EMR;
+          ihPal : DWORD;
+          iStart : DWORD;
+          cEntries : DWORD;
+          aPalEntries : array[0..0] of PALETTEENTRY;
+       end;
+     tagEMRSETPALETTEENTRIES = EMRSETPALETTEENTRIES;
+     TEMRSETPALETTEENTRIES = EMRSETPALETTEENTRIES;
+     PEMRSETPALETTEENTRIES = ^EMRSETPALETTEENTRIES;
+
+     EMRSETPIXELV = record
+          emr : EMR;
+          ptlPixel : POINTL;
+          crColor : COLORREF;
+       end;
+     tagEMRSETPIXELV = EMRSETPIXELV;
+     TEMRSETPIXELV = EMRSETPIXELV;
+     PEMRSETPIXELV = ^EMRSETPIXELV;
+
+     EMRSETVIEWPORTEXTEX = record
+          emr : EMR;
+          szlExtent : SIZEL;
+       end;
+     tagEMRSETVIEWPORTEXTEX = EMRSETVIEWPORTEXTEX;
+     TEMRSETVIEWPORTEXTEX = EMRSETVIEWPORTEXTEX;
+     PEMRSETVIEWPORTEXTEX = ^EMRSETVIEWPORTEXTEX;
+
+     EMRSETWINDOWEXTEX = EMRSETVIEWPORTEXTEX;
+     TEMRSETWINDOWEXTEX = EMRSETVIEWPORTEXTEX;
+     PEMRSETWINDOWEXTEX = ^EMRSETVIEWPORTEXTEX;
+
+     EMRSETVIEWPORTORGEX = record
+          emr : EMR;
+          ptlOrigin : POINTL;
+       end;
+     tagEMRSETVIEWPORTORGEX = EMRSETVIEWPORTORGEX;
+     TEMRSETVIEWPORTORGEX = EMRSETVIEWPORTORGEX;
+     PEMRSETVIEWPORTORGEX = ^EMRSETVIEWPORTORGEX;
+
+     EMRSETWINDOWORGEX = EMRSETVIEWPORTORGEX;
+     TEMRSETWINDOWORGEX = EMRSETVIEWPORTORGEX;
+     PEMRSETWINDOWORGEX = ^EMRSETVIEWPORTORGEX;
+
+     EMRSETBRUSHORGEX = EMRSETVIEWPORTORGEX;
+     TEMRSETBRUSHORGEX = EMRSETVIEWPORTORGEX;
+     PEMRSETBRUSHORGEX = ^EMRSETVIEWPORTORGEX;
+
+     EMRSETWORLDTRANSFORM = record
+          emr : EMR;
+          xform : XFORM;
+       end;
+     tagEMRSETWORLDTRANSFORM = EMRSETWORLDTRANSFORM;
+     TEMRSETWORLDTRANSFORM = EMRSETWORLDTRANSFORM;
+     PEMRSETWORLDTRANSFORM = ^EMRSETWORLDTRANSFORM;
+
+     EMRSTRETCHBLT = record
+          emr : EMR;
+          rclBounds : RECTL;
+          xDest : LONG;
+          yDest : LONG;
+          cxDest : LONG;
+          cyDest : LONG;
+          dwRop : DWORD;
+          xSrc : LONG;
+          ySrc : LONG;
+          xformSrc : XFORM;
+          crBkColorSrc : COLORREF;
+          iUsageSrc : DWORD;
+          offBmiSrc : DWORD;
+          cbBmiSrc : DWORD;
+          offBitsSrc : DWORD;
+          cbBitsSrc : DWORD;
+          cxSrc : LONG;
+          cySrc : LONG;
+       end;
+     tagEMRSTRETCHBLT = EMRSTRETCHBLT;
+     TEMRSTRETCHBLT = EMRSTRETCHBLT;
+     PEMRSTRETCHBLT = ^EMRSTRETCHBLT;
+
+     EMRSTRETCHDIBITS = record
+          emr : EMR;
+          rclBounds : RECTL;
+          xDest : LONG;
+          yDest : LONG;
+          xSrc : LONG;
+          ySrc : LONG;
+          cxSrc : LONG;
+          cySrc : LONG;
+          offBmiSrc : DWORD;
+          cbBmiSrc : DWORD;
+          offBitsSrc : DWORD;
+          cbBitsSrc : DWORD;
+          iUsageSrc : DWORD;
+          dwRop : DWORD;
+          cxDest : LONG;
+          cyDest : LONG;
+       end;
+     tagEMRSTRETCHDIBITS = EMRSTRETCHDIBITS;
+     TEMRSTRETCHDIBITS = EMRSTRETCHDIBITS;
+     PEMRSTRETCHDIBITS = ^EMRSTRETCHDIBITS;
+
+     EMRABORTPATH = record
+          emr : EMR;
+       end;
+     TEMRABORTPATH = EMRABORTPATH;
+     PEMRABORTPATH = ^EMRABORTPATH;
+
+     tagABORTPATH = EMRABORTPATH;
+     TABORTPATH = EMRABORTPATH;
+
+     EMRBEGINPATH = EMRABORTPATH;
+     TEMRBEGINPATH = EMRABORTPATH;
+     PEMRBEGINPATH = ^EMRABORTPATH;
+
+     EMRENDPATH = EMRABORTPATH;
+     TEMRENDPATH = EMRABORTPATH;
+     PEMRENDPATH = ^EMRABORTPATH;
+
+     EMRCLOSEFIGURE = EMRABORTPATH;
+     TEMRCLOSEFIGURE = EMRABORTPATH;
+     PEMRCLOSEFIGURE = ^EMRABORTPATH;
+
+     EMRFLATTENPATH = EMRABORTPATH;
+     TEMRFLATTENPATH = EMRABORTPATH;
+     PEMRFLATTENPATH = ^EMRABORTPATH;
+
+     EMRWIDENPATH = EMRABORTPATH;
+     TEMRWIDENPATH = EMRABORTPATH;
+     PEMRWIDENPATH = ^EMRABORTPATH;
+
+     EMRSETMETARGN = EMRABORTPATH;
+     TEMRSETMETARGN = EMRABORTPATH;
+     PEMRSETMETARGN = ^EMRABORTPATH;
+
+     EMRSAVEDC = EMRABORTPATH;
+     TEMRSAVEDC = EMRABORTPATH;
+     PEMRSAVEDC = ^EMRABORTPATH;
+
+     EMRREALIZEPALETTE = EMRABORTPATH;
+     TEMRREALIZEPALETTE = EMRABORTPATH;
+     PEMRREALIZEPALETTE = ^EMRABORTPATH;
+
+     EMRSELECTCLIPPATH = record
+          emr : EMR;
+          iMode : DWORD;
+       end;
+     tagEMRSELECTCLIPPATH = EMRSELECTCLIPPATH;
+     TEMRSELECTCLIPPATH = EMRSELECTCLIPPATH;
+     PEMRSELECTCLIPPATH = ^EMRSELECTCLIPPATH;
+
+     EMRSETBKMODE = EMRSELECTCLIPPATH;
+     TEMRSETBKMODE = EMRSELECTCLIPPATH;
+     PEMRSETBKMODE = ^EMRSELECTCLIPPATH;
+
+     EMRSETMAPMODE = EMRSELECTCLIPPATH;
+     TEMRSETMAPMODE = EMRSELECTCLIPPATH;
+     PEMRSETMAPMODE = ^EMRSELECTCLIPPATH;
+
+     EMRSETPOLYFILLMODE = EMRSELECTCLIPPATH;
+     TEMRSETPOLYFILLMODE = EMRSELECTCLIPPATH;
+     PEMRSETPOLYFILLMODE = ^EMRSELECTCLIPPATH;
+
+     EMRSETROP2 = EMRSELECTCLIPPATH;
+     TEMRSETROP2 = EMRSELECTCLIPPATH;
+     PEMRSETROP2 = ^EMRSELECTCLIPPATH;
+
+     EMRSETSTRETCHBLTMODE = EMRSELECTCLIPPATH;
+     TEMRSETSTRETCHBLTMODE = EMRSELECTCLIPPATH;
+     PEMRSETSTRETCHBLTMODE = ^EMRSELECTCLIPPATH;
+
+     EMRSETTEXTALIGN = EMRSELECTCLIPPATH;
+     TEMRSETTEXTALIGN = EMRSELECTCLIPPATH;
+     PEMRSETTEXTALIGN = ^EMRSELECTCLIPPATH;
+
+     EMRENABLEICM = EMRSELECTCLIPPATH;
+     TEMRENABLEICM = EMRSELECTCLIPPATH;
+     PEMRENABLEICM = ^EMRSELECTCLIPPATH;
+
+     NMHDR = record
+          hwndFrom : HWND;
+          idFrom : UINT;
+          code : UINT;
+       end;
+     tagNMHDR = NMHDR;
+     TNMHDR = NMHDR;
+     PNMHDR = ^NMHDR;
+
+     ENCORRECTTEXT = record
+          nmhdr : NMHDR;
+          chrg : CHARRANGE;
+          seltyp : WORD;
+       end;
+     _encorrecttext = ENCORRECTTEXT;
+     Tencorrecttext = ENCORRECTTEXT;
+     Pencorrecttext = ^ENCORRECTTEXT;
+
+     ENDROPFILES = record
+          nmhdr : NMHDR;
+          hDrop : HANDLE;
+          cp : LONG;
+          fProtected : WINBOOL;
+       end;
+     _endropfiles = ENDROPFILES;
+     Tendropfiles = ENDROPFILES;
+     Pendropfiles = ^ENDROPFILES;
+
+     ENSAVECLIPBOARD = record
+          nmhdr : NMHDR;
+          cObjectCount : LONG;
+          cch : LONG;
+       end;
+     TENSAVECLIPBOARD = ENSAVECLIPBOARD;
+     PENSAVECLIPBOARD = ^ENSAVECLIPBOARD;
+
+     ENOLEOPFAILED = record
+          nmhdr : NMHDR;
+          iob : LONG;
+          lOper : LONG;
+          hr : HRESULT;
+       end;
+     TENOLEOPFAILED = ENOLEOPFAILED;
+     PENOLEOPFAILED = ^ENOLEOPFAILED;
+
+     ENHMETAHEADER = record
+          iType : DWORD;
+          nSize : DWORD;
+          rclBounds : RECTL;
+          rclFrame : RECTL;
+          dSignature : DWORD;
+          nVersion : DWORD;
+          nBytes : DWORD;
+          nRecords : DWORD;
+          nHandles : WORD;
+          sReserved : WORD;
+          nDescription : DWORD;
+          offDescription : DWORD;
+          nPalEntries : DWORD;
+          szlDevice : SIZEL;
+          szlMillimeters : SIZEL;
+       end;
+     LPENHMETAHEADER = ^ENHMETAHEADER;
+     tagENHMETAHEADER = ENHMETAHEADER;
+     TENHMETAHEADER = ENHMETAHEADER;
+     PENHMETAHEADER = ^ENHMETAHEADER;
+
+     ENHMETARECORD = record
+          iType : DWORD;
+          nSize : DWORD;
+          dParm : array[0..0] of DWORD;
+       end;
+     LPENHMETARECORD = ^ENHMETARECORD;
+     tagENHMETARECORD = ENHMETARECORD;
+     TENHMETARECORD = ENHMETARECORD;
+     PENHMETARECORD = ^ENHMETARECORD;
+
+     ENPROTECTED = record
+          nmhdr : NMHDR;
+          msg : UINT;
+          wParam : WPARAM;
+          lParam : LPARAM;
+          chrg : CHARRANGE;
+       end;
+     _enprotected = ENPROTECTED;
+     Tenprotected = ENPROTECTED;
+     Penprotected = ^ENPROTECTED;
+
+     SERVICE_STATUS = record
+          dwServiceType : DWORD;
+          dwCurrentState : DWORD;
+          dwControlsAccepted : DWORD;
+          dwWin32ExitCode : DWORD;
+          dwServiceSpecificExitCode : DWORD;
+          dwCheckPoint : DWORD;
+          dwWaitHint : DWORD;
+       end;
+     LPSERVICE_STATUS = ^SERVICE_STATUS;
+     _SERVICE_STATUS = SERVICE_STATUS;
+     TSERVICESTATUS = SERVICE_STATUS;
+     PSERVICESTATUS = ^SERVICE_STATUS;
+
+     ENUM_SERVICE_STATUS = record
+          lpServiceName : LPTSTR;
+          lpDisplayName : LPTSTR;
+          ServiceStatus : SERVICE_STATUS;
+       end;
+     LPENUM_SERVICE_STATUS = ^ENUM_SERVICE_STATUS;
+     _ENUM_SERVICE_STATUS = ENUM_SERVICE_STATUS;
+     TENUMSERVICESTATUS = ENUM_SERVICE_STATUS;
+     PENUMSERVICESTATUS = ^ENUM_SERVICE_STATUS;
+
+     ENUMLOGFONT = record
+          elfLogFont : LOGFONT;
+          elfFullName : array[0..(LF_FULLFACESIZE)-1] of BCHAR;
+          elfStyle : array[0..(LF_FACESIZE)-1] of BCHAR;
+       end;
+     tagENUMLOGFONT = ENUMLOGFONT;
+     TENUMLOGFONT = ENUMLOGFONT;
+     PENUMLOGFONT = ^ENUMLOGFONT;
+
+     ENUMLOGFONTEX = record
+          elfLogFont : LOGFONT;
+          elfFullName : array[0..(LF_FULLFACESIZE)-1] of BCHAR;
+          elfStyle : array[0..(LF_FACESIZE)-1] of BCHAR;
+          elfScript : array[0..(LF_FACESIZE)-1] of BCHAR;
+       end;
+     tagENUMLOGFONTEX = ENUMLOGFONTEX;
+     TENUMLOGFONTEX = ENUMLOGFONTEX;
+     PENUMLOGFONTEX = ^ENUMLOGFONTEX;
+  {
+    Then follow:
+
+    TCHAR SourceName[]
+    TCHAR Computername[]
+    SID   UserSid
+    TCHAR Strings[]
+    BYTE  Data[]
+    CHAR  Pad[]
+    DWORD Length;
+   }
+
+     EVENTLOGRECORD = record
+          Length : DWORD;
+          Reserved : DWORD;
+          RecordNumber : DWORD;
+          TimeGenerated : DWORD;
+          TimeWritten : DWORD;
+          EventID : DWORD;
+          EventType : WORD;
+          NumStrings : WORD;
+          EventCategory : WORD;
+          ReservedFlags : WORD;
+          ClosingRecordNumber : DWORD;
+          StringOffset : DWORD;
+          UserSidLength : DWORD;
+          UserSidOffset : DWORD;
+          DataLength : DWORD;
+          DataOffset : DWORD;
+       end;
+     _EVENTLOGRECORD = EVENTLOGRECORD;
+     TEVENTLOGRECORD = EVENTLOGRECORD;
+     PEVENTLOGRECORD = ^EVENTLOGRECORD;
+
+     EVENTMSG = record
+          message : UINT;
+          paramL : UINT;
+          paramH : UINT;
+          time : DWORD;
+          hwnd : HWND;
+       end;
+     tagEVENTMSG = EVENTMSG;
+     TEVENTMSG = EVENTMSG;
+     PEVENTMSG = ^EVENTMSG;
+
+     EXCEPTION_POINTERS = record                //winnt
+          ExceptionRecord : PEXCEPTION_RECORD;
+          ContextRecord : PCONTEXT;
+       end;
+     LPEXCEPTION_POINTERS = ^EXCEPTION_POINTERS;
+     PEXCEPTION_POINTERS = ^EXCEPTION_POINTERS;
+     _EXCEPTION_POINTERS = EXCEPTION_POINTERS;
+     TEXCEPTIONPOINTERS = EXCEPTION_POINTERS;
+     PEXCEPTIONPOINTERS = ^EXCEPTION_POINTERS;
+
+     EXT_BUTTON = record
+          idCommand : WORD;
+          idsHelp : WORD;
+          fsStyle : WORD;
+       end;
+     LPEXT_BUTTON = ^EXT_BUTTON;
+     _EXT_BUTTON = EXT_BUTTON;
+     TEXTBUTTON = EXT_BUTTON;
+     PEXTBUTTON = ^EXT_BUTTON;
+
+     FILTERKEYS = record
+          cbSize : UINT;
+          dwFlags : DWORD;
+          iWaitMSec : DWORD;
+          iDelayMSec : DWORD;
+          iRepeatMSec : DWORD;
+          iBounceMSec : DWORD;
+       end;
+     tagFILTERKEYS = FILTERKEYS;
+     TFILTERKEYS = FILTERKEYS;
+     PFILTERKEYS = ^FILTERKEYS;
+
+     FIND_NAME_BUFFER = record
+          length : UCHAR;
+          access_control : UCHAR;
+          frame_control : UCHAR;
+          destination_addr : array[0..5] of UCHAR;
+          source_addr : array[0..5] of UCHAR;
+          routing_info : array[0..17] of UCHAR;
+       end;
+     _FIND_NAME_BUFFER = FIND_NAME_BUFFER;
+     TFINDNAMEBUFFER = FIND_NAME_BUFFER;
+     PFINDNAMEBUFFER = ^FIND_NAME_BUFFER;
+
+     FIND_NAME_HEADER = record
+          node_count : WORD;
+          reserved : UCHAR;
+          unique_group : UCHAR;
+       end;
+     _FIND_NAME_HEADER = FIND_NAME_HEADER;
+     TFINDNAMEHEADER = FIND_NAME_HEADER;
+     PFINDNAMEHEADER = ^FIND_NAME_HEADER;
+
+     FINDREPLACE = record
+          lStructSize : DWORD;
+          hwndOwner : HWND;
+          hInstance : HINST;
+          Flags : DWORD;
+          lpstrFindWhat : LPTSTR;
+          lpstrReplaceWith : LPTSTR;
+          wFindWhatLen : WORD;
+          wReplaceWithLen : WORD;
+          lCustData : LPARAM;
+          lpfnHook : LPFRHOOKPROC;
+          lpTemplateName : LPCTSTR;
+       end;
+     LPFINDREPLACE = ^FINDREPLACE;
+     TFINDREPLACE = FINDREPLACE;
+     PFINDREPLACE = ^FINDREPLACE;
+
+     {FINDTEXT = record conflicts with FindText function }
+     TFINDTEXT = record
+          chrg : CHARRANGE;
+          lpstrText : LPSTR;
+       end;
+     _findtext = TFINDTEXT;
+     Pfindtext = ^TFINDTEXT;
+
+     FINDTEXTEX = record
+          chrg : CHARRANGE;
+          lpstrText : LPSTR;
+          chrgText : CHARRANGE;
+       end;
+     _findtextex = FINDTEXTEX;
+     Tfindtextex = FINDTEXTEX;
+     Pfindtextex = ^FINDTEXTEX;
+
+     FMS_GETDRIVEINFO = record
+          dwTotalSpace : DWORD;
+          dwFreeSpace : DWORD;
+          szPath : array[0..259] of TCHAR;
+          szVolume : array[0..13] of TCHAR;
+          szShare : array[0..127] of TCHAR;
+       end;
+     _FMS_GETDRIVEINFO = FMS_GETDRIVEINFO;
+     TFMSGETDRIVEINFO = FMS_GETDRIVEINFO;
+     PFMSGETDRIVEINFO = ^FMS_GETDRIVEINFO;
+
+     FMS_GETFILESEL = record
+          ftTime : FILETIME;
+          dwSize : DWORD;
+          bAttr : BYTE;
+          szName : array[0..259] of TCHAR;
+       end;
+     _FMS_GETFILESEL = FMS_GETFILESEL;
+     TFMSGETFILESEL = FMS_GETFILESEL;
+     PFMSGETFILESEL = ^FMS_GETFILESEL;
+
+     FMS_LOAD = record
+          dwSize : DWORD;
+          szMenuName : array[0..(MENU_TEXT_LEN)-1] of TCHAR;
+          hMenu : HMENU;
+          wMenuDelta : UINT;
+       end;
+     _FMS_LOAD = FMS_LOAD;
+     TFMSLOAD = FMS_LOAD;
+     PFMSLOAD = ^FMS_LOAD;
+
+     FMS_TOOLBARLOAD = record
+          dwSize : DWORD;
+          lpButtons : LPEXT_BUTTON;
+          cButtons : WORD;
+          cBitmaps : WORD;
+          idBitmap : WORD;
+          hBitmap : HBITMAP;
+       end;
+     _FMS_TOOLBARLOAD = FMS_TOOLBARLOAD;
+     TFMSTOOLBARLOAD = FMS_TOOLBARLOAD;
+     PFMSTOOLBARLOAD = ^FMS_TOOLBARLOAD;
+
+     FOCUS_EVENT_RECORD = record
+          bSetFocus : WINBOOL;
+       end;
+     _FOCUS_EVENT_RECORD = FOCUS_EVENT_RECORD;
+     TFOCUSEVENTRECORD = FOCUS_EVENT_RECORD;
+     PFOCUSEVENTRECORD = ^FOCUS_EVENT_RECORD;
+
+     FORM_INFO_1 = record
+          Flags : DWORD;
+          pName : LPTSTR;
+          Size : SIZEL;
+          ImageableArea : RECTL;
+       end;
+     _FORM_INFO_1 = FORM_INFO_1;
+     TFORMINFO1 = FORM_INFO_1;
+     PFORMINFO1 = ^FORM_INFO_1;
+
+     FORMAT_PARAMETERS = record
+          MediaType : MEDIA_TYPE;
+          StartCylinderNumber : DWORD;
+          EndCylinderNumber : DWORD;
+          StartHeadNumber : DWORD;
+          EndHeadNumber : DWORD;
+       end;
+     _FORMAT_PARAMETERS = FORMAT_PARAMETERS;
+     TFORMATPARAMETERS = FORMAT_PARAMETERS;
+     PFORMATPARAMETERS = ^FORMAT_PARAMETERS;
+
+     FORMATRANGE = record
+          _hdc : HDC;
+          hdcTarget : HDC;
+          rc : RECT;
+          rcPage : RECT;
+          chrg : CHARRANGE;
+       end;
+     _formatrange = FORMATRANGE;
+     Tformatrange = FORMATRANGE;
+     Pformatrange = ^FORMATRANGE;
+
+     GCP_RESULTS = record
+          lStructSize : DWORD;
+          lpOutString : LPTSTR;
+          lpOrder : ^UINT;
+          lpDx : ^WINT;
+          lpCaretPos : ^WINT;
+          lpClass : LPTSTR;
+          lpGlyphs : ^UINT;
+          nGlyphs : UINT;
+          nMaxFit : UINT;
+       end;
+     LPGCP_RESULTS = ^GCP_RESULTS;
+     tagGCP_RESULTS = GCP_RESULTS;
+     TGCPRESULTS = GCP_RESULTS;
+     PGCPRESULTS = ^GCP_RESULTS;
+//
+//  Define the generic mapping array.  This is used to denote the
+//  mapping of each generic access right to a specific access mask.
+//
+     GENERIC_MAPPING = record       //winnt
+          GenericRead : ACCESS_MASK;
+          GenericWrite : ACCESS_MASK;
+          GenericExecute : ACCESS_MASK;
+          GenericAll : ACCESS_MASK;
+       end;
+     PGENERIC_MAPPING = ^GENERIC_MAPPING;
+     _GENERIC_MAPPING = GENERIC_MAPPING;
+     TGENERICMAPPING = GENERIC_MAPPING;
+     PGENERICMAPPING = ^GENERIC_MAPPING;
+
+     GLYPHMETRICS = record
+          gmBlackBoxX : UINT;
+          gmBlackBoxY : UINT;
+          gmptGlyphOrigin : POINT;
+          gmCellIncX : integer;
+          gmCellIncY : integer;
+       end;
+     LPGLYPHMETRICS = ^GLYPHMETRICS;
+     _GLYPHMETRICS = GLYPHMETRICS;
+     TGLYPHMETRICS = GLYPHMETRICS;
+     PGLYPHMETRICS = ^GLYPHMETRICS;
+
+     HANDLETABLE = record
+          objectHandle : array[0..0] of HGDIOBJ;
+       end;
+     tagHANDLETABLE = HANDLETABLE;
+     THANDLETABLE = HANDLETABLE;
+     LPHANDLETABLE = ^HANDLETABLE;
+
+     HD_HITTESTINFO = record
+          pt : POINT;
+          flags : UINT;
+          iItem : longint;
+       end;
+     _HD_HITTESTINFO = HD_HITTESTINFO;
+     THDHITTESTINFO = HD_HITTESTINFO;
+     PHDHITTESTINFO = ^HD_HITTESTINFO;
+
+     HD_ITEM = record
+          mask : UINT;
+          cxy : longint;
+          pszText : LPTSTR;
+          hbm : HBITMAP;
+          cchTextMax : longint;
+          fmt : longint;
+          lParam : LPARAM;
+       end;
+     _HD_ITEM = HD_ITEM;
+     THDITEM = HD_ITEM;
+     PHDITEM = ^HD_ITEM;
+
+     WINDOWPOS = record
+          _hwnd : HWND;
+          hwndInsertAfter : HWND;
+          x : longint;
+          y : longint;
+          cx : longint;
+          cy : longint;
+          flags : UINT;
+       end;
+     LPWINDOWPOS = ^WINDOWPOS;
+     _WINDOWPOS = WINDOWPOS;
+     TWINDOWPOS = WINDOWPOS;
+     PWINDOWPOS = ^WINDOWPOS;
+
+     HD_LAYOUT = record
+          prc : ^RECT;
+          pwpos : ^WINDOWPOS;
+       end;
+     _HD_LAYOUT = HD_LAYOUT;
+     THDLAYOUT = HD_LAYOUT;
+     PHDLAYOUT = ^HD_LAYOUT;
+
+     HD_NOTIFY = record
+          hdr : NMHDR;
+          iItem : longint;
+          iButton : longint;
+          pitem : ^HD_ITEM;
+       end;
+     _HD_NOTIFY = HD_NOTIFY;
+     THDNOTIFY = HD_NOTIFY;
+     PHDNOTIFY = ^HD_NOTIFY;
+
+     HELPINFO = record
+          cbSize : UINT;
+          iContextType : longint;
+          iCtrlId : longint;
+          hItemHandle : HANDLE;
+          dwContextId : DWORD;
+          MousePos : POINT;
+       end;
+     LPHELPINFO = ^HELPINFO;
+     tagHELPINFO = HELPINFO;
+     THELPINFO = HELPINFO;
+     PHELPINFO = ^HELPINFO;
+
+     HELPWININFO = record
+          wStructSize : longint;
+          x : longint;
+          y : longint;
+          dx : longint;
+          dy : longint;
+          wMax : longint;
+          rgchMember : array[0..1] of TCHAR;
+       end;
+     THELPWININFO = HELPWININFO;
+     PHELPWININFO = ^HELPWININFO;
+
+     HIGHCONTRAST = record
+          cbSize : UINT;
+          dwFlags : DWORD;
+          lpszDefaultScheme : LPTSTR;
+       end;
+     LPHIGHCONTRAST = ^HIGHCONTRAST;
+     tagHIGHCONTRAST = HIGHCONTRAST;
+     THIGHCONTRAST = HIGHCONTRAST;
+     PHIGHCONTRAST = ^HIGHCONTRAST;
+
+     HSZPAIR = record
+          hszSvc : HSZ;
+          hszTopic : HSZ;
+       end;
+     tagHSZPAIR = HSZPAIR;
+     THSZPAIR = HSZPAIR;
+     PHSZPAIR = ^HSZPAIR;
+
+     ICONINFO = record
+          fIcon : WINBOOL;
+          xHotspot : DWORD;
+          yHotspot : DWORD;
+          hbmMask : HBITMAP;
+          hbmColor : HBITMAP;
+       end;
+     _ICONINFO = ICONINFO;
+     TICONINFO = ICONINFO;
+     PICONINFO = ^ICONINFO;
+
+     ICONMETRICS = record
+          cbSize : UINT;
+          iHorzSpacing : longint;
+          iVertSpacing : longint;
+          iTitleWrap : longint;
+          lfFont : LOGFONT;
+       end;
+     LPICONMETRICS = ^ICONMETRICS;
+     tagICONMETRICS = ICONMETRICS;
+     TICONMETRICS = ICONMETRICS;
+     PICONMETRICS = ^ICONMETRICS;
+
+     IMAGELISTDRAWPARAMS = record  //+commctrl
+          cbSize : DWORD;
+          himl : HIMAGELIST;
+          i : Integer;
+          hdcDst : HDC;
+          x : Integer;
+          y : Integer;
+          cx : Integer;
+          cy : Integer;
+          xBitmap : Integer;        // x offest from the upperleft of bitmap
+          yBitmap : Integer;        // y offset from the upperleft of bitmap
+          rgbBk  : COLORREF;
+          rgbFg  : COLORREF;
+          fStyle  : UINT;
+          dwRop : DWORD;
+       end;  
+       
+     _IMAGELISTDRAWPARAMS=IMAGELISTDRAWPARAMS;
+     PIMAGELISTDRAWPARAMS=^IMAGELISTDRAWPARAMS;
+
+     IMAGEINFO = record
+          hbmImage : HBITMAP;
+          hbmMask : HBITMAP;
+          Unused1 : longint;
+          Unused2 : longint;
+          rcImage : RECT;
+       end;
+     _IMAGEINFO = IMAGEINFO;
+     TIMAGEINFO = IMAGEINFO;
+     PIMAGEINFO = ^IMAGEINFO;
+
+     KEY_EVENT_RECORD = packed record
+          bKeyDown : WINBOOL;
+          wRepeatCount : WORD;
+          wVirtualKeyCode : WORD;
+          wVirtualScanCode : WORD;
+          case longint of
+             0 : ( UnicodeChar : WCHAR;
+                   dwControlKeyState : DWORD; );
+             1 : ( AsciiChar : CHAR );
+       end;
+     _KEY_EVENT_RECORD = KEY_EVENT_RECORD;
+     TKEYEVENTRECORD = KEY_EVENT_RECORD;
+     PKEYEVENTRECORD = ^KEY_EVENT_RECORD;
+
+     MOUSE_EVENT_RECORD = record
+          dwMousePosition : COORD;
+          dwButtonState : DWORD;
+          dwControlKeyState : DWORD;
+          dwEventFlags : DWORD;
+       end;
+     _MOUSE_EVENT_RECORD = MOUSE_EVENT_RECORD;
+     TMOUSEEVENTRECORD = MOUSE_EVENT_RECORD;
+     PMOUSEEVENTRECORD = ^MOUSE_EVENT_RECORD;
+
+     WINDOW_BUFFER_SIZE_RECORD = record
+          dwSize : COORD;
+       end;
+     _WINDOW_BUFFER_SIZE_RECORD = WINDOW_BUFFER_SIZE_RECORD;
+     TWINDOWBUFFERSIZERECORD = WINDOW_BUFFER_SIZE_RECORD;
+     PWINDOWBUFFERSIZERECORD = ^WINDOW_BUFFER_SIZE_RECORD;
+
+     MENU_EVENT_RECORD = record
+          dwCommandId : UINT;
+       end;
+     PMENU_EVENT_RECORD = ^MENU_EVENT_RECORD;
+     _MENU_EVENT_RECORD = MENU_EVENT_RECORD;
+     TMENUEVENTRECORD = MENU_EVENT_RECORD;
+     PMENUEVENTRECORD = ^MENU_EVENT_RECORD;
+
+     INPUT_RECORD = record
+          EventType: Word;
+          Reserved: Word;
+          Event : record case longint of
+                 0 : ( KeyEvent : KEY_EVENT_RECORD );
+                 1 : ( MouseEvent : MOUSE_EVENT_RECORD );
+                 2 : ( WindowBufferSizeEvent : WINDOW_BUFFER_SIZE_RECORD );
+                 3 : ( MenuEvent : MENU_EVENT_RECORD );
+                 4 : ( FocusEvent : FOCUS_EVENT_RECORD );
+       end;
+      end;
+     PINPUT_RECORD = ^INPUT_RECORD;
+     _INPUT_RECORD = INPUT_RECORD;
+     TINPUTRECORD = INPUT_RECORD;
+     PINPUTRECORD = ^INPUT_RECORD;
+
+     SYSTEMTIME = record
+          case integer of
+           1 : (
+             wYear : WORD;
+             wMonth : WORD;
+             wDayOfWeek : WORD;
+             wDay : WORD;
+             wHour : WORD;
+             wMinute : WORD;
+             wSecond : WORD;
+             wMilliseconds : WORD;
+               );
+           { Compatibility for FPC }
+           2 : (
+             Year : WORD;
+             Month : WORD;
+             DayOfWeek : WORD;
+             Day : WORD;
+             Hour : WORD;
+             Minute : WORD;
+             Second : WORD;
+             Millisecond : WORD;
+               );
+       end;
+     LPSYSTEMTIME = ^SYSTEMTIME;
+     _SYSTEMTIME = SYSTEMTIME;
+     TSYSTEMTIME = SYSTEMTIME;
+     PSYSTEMTIME = ^SYSTEMTIME;
+
+     JOB_INFO_1 = record
+          JobId : DWORD;
+          pPrinterName : LPTSTR;
+          pMachineName : LPTSTR;
+          pUserName : LPTSTR;
+          pDocument : LPTSTR;
+          pDatatype : LPTSTR;
+          pStatus : LPTSTR;
+          Status : DWORD;
+          Priority : DWORD;
+          Position : DWORD;
+          TotalPages : DWORD;
+          PagesPrinted : DWORD;
+          Submitted : SYSTEMTIME;
+       end;
+     _JOB_INFO_1 = JOB_INFO_1;
+     TJOBINFO1 = JOB_INFO_1;
+     PJOBINFO1 = ^JOB_INFO_1;
+
+     SID_AND_ATTRIBUTES = record  //~winnt, moved with SID declarations
+          Sid : PSID;
+          Attributes : DWORD;
+       end;
+     _SID_AND_ATTRIBUTES = SID_AND_ATTRIBUTES;
+     TSIDANDATTRIBUTES = SID_AND_ATTRIBUTES;
+     PSIDANDATTRIBUTES = ^SID_AND_ATTRIBUTES;
+
+     SID_AND_ATTRIBUTES_ARRAY = array[0..(ANYSIZE_ARRAY)-1] of SID_AND_ATTRIBUTES; //winnt
+     PSID_AND_ATTRIBUTES_ARRAY = ^SID_AND_ATTRIBUTES_ARRAY;
+     TSIDANDATTRIBUTESARRAY = SID_AND_ATTRIBUTES_ARRAY;
+     PSIDANDATTRIBUTESARRAY = ^SID_AND_ATTRIBUTES_ARRAY;
+
+     SECURITY_DESCRIPTOR_CONTROL = WORD;
+     PSECURITY_DESCRIPTOR_CONTROL = ^SECURITY_DESCRIPTOR_CONTROL;
+     TSECURITYDESCRIPTORCONTROL = SECURITY_DESCRIPTOR_CONTROL;
+     PSECURITYDESCRIPTORCONTROL = ^SECURITY_DESCRIPTOR_CONTROL;
+
+     SECURITY_DESCRIPTOR = record
+          Revision : BYTE;
+          Sbz1 : BYTE;
+          Control : SECURITY_DESCRIPTOR_CONTROL;
+          Owner : PSID;
+          Group : PSID;
+          Sacl : PACL;
+          Dacl : PACL;
+       end;
+     PSECURITY_DESCRIPTOR = ^SECURITY_DESCRIPTOR;
+     _SECURITY_DESCRIPTOR = SECURITY_DESCRIPTOR;
+     TSECURITYDESCRIPTOR = SECURITY_DESCRIPTOR;
+     PSECURITYDESCRIPTOR = ^SECURITY_DESCRIPTOR;
+
+     JOB_INFO_2 = record
+          JobId : DWORD;
+          pPrinterName : LPTSTR;
+          pMachineName : LPTSTR;
+          pUserName : LPTSTR;
+          pDocument : LPTSTR;
+          pNotifyName : LPTSTR;
+          pDatatype : LPTSTR;
+          pPrintProcessor : LPTSTR;
+          pParameters : LPTSTR;
+          pDriverName : LPTSTR;
+          pDevMode : LPDEVMODE;
+          pStatus : LPTSTR;
+          pSecurityDescriptor : PSECURITY_DESCRIPTOR;
+          Status : DWORD;
+          Priority : DWORD;
+          Position : DWORD;
+          StartTime : DWORD;
+          UntilTime : DWORD;
+          TotalPages : DWORD;
+          Size : DWORD;
+          Submitted : SYSTEMTIME;
+          Time : DWORD;
+          PagesPrinted : DWORD;
+       end;
+     _JOB_INFO_2 = JOB_INFO_2;
+     TJOBINFO2 = JOB_INFO_2;
+     PJOBINFO2 = ^JOB_INFO_2;
+
+     KERNINGPAIR = record
+          wFirst : WORD;
+          wSecond : WORD;
+          iKernAmount : longint;
+       end;
+     LPKERNINGPAIR = ^KERNINGPAIR;
+     tagKERNINGPAIR = KERNINGPAIR;
+     TKERNINGPAIR = KERNINGPAIR;
+     PKERNINGPAIR = ^KERNINGPAIR;
+
+     LANA_ENUM = record
+          length : UCHAR;
+          lana : array[0..(MAX_LANA)-1] of UCHAR;
+       end;
+     _LANA_ENUM = LANA_ENUM;
+     TLANAENUM = LANA_ENUM;
+     PLANAENUM = ^LANA_ENUM;
+  const
+     bm_LDT_ENTRY_BaseMid = $FF;
+     bp_LDT_ENTRY_BaseMid = 0;
+     bm_LDT_ENTRY_Type = $1F00;
+     bp_LDT_ENTRY_Type = 8;
+     bm_LDT_ENTRY_Dpl = $6000;
+     bp_LDT_ENTRY_Dpl = 13;
+     bm_LDT_ENTRY_Pres = $8000;
+     bp_LDT_ENTRY_Pres = 15;
+     bm_LDT_ENTRY_LimitHi = $F0000;
+     bp_LDT_ENTRY_LimitHi = 16;
+     bm_LDT_ENTRY_Sys = $100000;
+     bp_LDT_ENTRY_Sys = 20;
+     bm_LDT_ENTRY_Reserved_0 = $200000;
+     bp_LDT_ENTRY_Reserved_0 = 21;
+     bm_LDT_ENTRY_Default_Big = $400000;
+     bp_LDT_ENTRY_Default_Big = 22;
+     bm_LDT_ENTRY_Granularity = $800000;
+     bp_LDT_ENTRY_Granularity = 23;
+     bm_LDT_ENTRY_BaseHi = $FF000000;
+     bp_LDT_ENTRY_BaseHi = 24;
+
+  type
+
+     LOCALESIGNATURE = record
+          lsUsb : array[0..3] of DWORD;
+          lsCsbDefault : array[0..1] of DWORD;
+          lsCsbSupported : array[0..1] of DWORD;
+       end;
+     tagLOCALESIGNATURE = LOCALESIGNATURE;
+     TLOCALESIGNATURE = LOCALESIGNATURE;
+     PLOCALESIGNATURE = ^LOCALESIGNATURE;
+
+     LOCALGROUP_MEMBERS_INFO_0 = record
+          lgrmi0_sid : PSID;
+       end;
+     _LOCALGROUP_MEMBERS_INFO_0 = LOCALGROUP_MEMBERS_INFO_0;
+     TLOCALGROUPMEMBERSINFO0 = LOCALGROUP_MEMBERS_INFO_0;
+     PLOCALGROUPMEMBERSINFO0 = ^LOCALGROUP_MEMBERS_INFO_0;
+
+     LOCALGROUP_MEMBERS_INFO_3 = record
+          lgrmi3_domainandname : LPWSTR;
+       end;
+     _LOCALGROUP_MEMBERS_INFO_3 = LOCALGROUP_MEMBERS_INFO_3;
+     TLOCALGROUPMEMBERSINFO3 = LOCALGROUP_MEMBERS_INFO_3;
+     PLOCALGROUPMEMBERSINFO3 = ^LOCALGROUP_MEMBERS_INFO_3;
+
+     FXPT16DOT16 = longint;
+     LPFXPT16DOT16 = ^FXPT16DOT16;
+     TFXPT16DOT16 = FXPT16DOT16;
+     PFXPT16DOT16 = ^FXPT16DOT16;
+
+     LUID_AND_ATTRIBUTES = record  //winnt
+          Luid : LUID;
+          Attributes : DWORD;
+       end;
+     _LUID_AND_ATTRIBUTES = LUID_AND_ATTRIBUTES;
+     TLUIDANDATTRIBUTES = LUID_AND_ATTRIBUTES;
+     PLUIDANDATTRIBUTES = ^LUID_AND_ATTRIBUTES;
+
+     LUID_AND_ATTRIBUTES_ARRAY = array[0..(ANYSIZE_ARRAY)-1] of LUID_AND_ATTRIBUTES;
+     PLUID_AND_ATTRIBUTES_ARRAY = ^LUID_AND_ATTRIBUTES_ARRAY;
+     TLUIDANDATTRIBUTESARRAY = LUID_AND_ATTRIBUTES_ARRAY;
+     PLUIDANDATTRIBUTESARRAY = ^LUID_AND_ATTRIBUTES_ARRAY;
+
+     LV_COLUMN = record
+          mask : UINT;
+          fmt : longint;
+          cx : longint;
+{$IFDEF UNICODE}
+          pszText : LPWSTR;
+{$ELSE UNICODE}
+          pszText : LPTSTR;
+{$ENDIF UNICODE}
+          cchTextMax : longint;
+          iSubItem : longint;
+          iImage : Longint;    //#if (_WIN32_IE >= 0x0300)
+          iOrder : longint;    //#if (_WIN32_IE >= 0x0300)
+       end;
+     _LV_COLUMN = LV_COLUMN;
+     TLVCOLUMN = LV_COLUMN;
+     PLVCOLUMN = ^LV_COLUMN;
+
+     LV_ITEM = record
+          mask : UINT;
+          iItem : longint;
+          iSubItem : longint;
+          state : UINT;
+          stateMask : UINT;
+{$IFDEF UNICODE}
+          pszText : LPWSTR;
+{$ELSE UNICODE}
+          pszText : LPTSTR;
+{$ENDIF UNICODE}
+          cchTextMax : longint;
+          iImage : longint;
+          lParam : LPARAM;
+          iIndent: Longint;    //#if (_WIN32_IE >= 0x0300)
+       end;
+     _LV_ITEM = LV_ITEM;
+     TLVITEM = LV_ITEM;
+     PLVITEM = ^LV_ITEM;
+
+     LV_DISPINFO = record
+          hdr : NMHDR;
+          item : LV_ITEM;
+       end;
+     tagLV_DISPINFO = LV_DISPINFO;
+     TLVDISPINFO = LV_DISPINFO;
+     PLVDISPINFO = ^LV_DISPINFO;
+
+     LV_FINDINFO = record
+          flags : UINT;
+          psz : LPCTSTR;
+          lParam : LPARAM;
+          pt : POINT;
+          vkDirection : UINT;
+       end;
+     _LV_FINDINFO = LV_FINDINFO;
+     TLVFINDINFO = LV_FINDINFO;
+     PLVFINDINFO = ^LV_FINDINFO;
+
+     LV_HITTESTINFO = record
+          pt : POINT;
+          flags : UINT;
+          iItem : longint;
+       end;
+     _LV_HITTESTINFO = LV_HITTESTINFO;
+     TLVHITTESTINFO = LV_HITTESTINFO;
+     PLVHITTESTINFO = ^LV_HITTESTINFO;
+
+     LV_KEYDOWN = record
+          hdr : NMHDR;
+          wVKey : WORD;
+          flags : UINT;
+       end;
+     tagLV_KEYDOWN = LV_KEYDOWN;
+     TLVKEYDOWN = LV_KEYDOWN;
+     PLVKEYDOWN = ^LV_KEYDOWN;
+
+     MAT2 = record
+          eM11 : FIXED;
+          eM12 : FIXED;
+          eM21 : FIXED;
+          eM22 : FIXED;
+       end;
+     _MAT2 = MAT2;
+     TMAT2 = MAT2;
+     PMAT2 = ^MAT2;
+
+     MDICREATESTRUCT = record
+          szClass : LPCTSTR;
+          szTitle : LPCTSTR;
+          hOwner : HANDLE;
+          x : longint;
+          y : longint;
+          cx : longint;
+          cy : longint;
+          style : DWORD;
+          lParam : LPARAM;
+       end;
+     LPMDICREATESTRUCT = ^MDICREATESTRUCT;
+     tagMDICREATESTRUCT = MDICREATESTRUCT;
+     TMDICREATESTRUCT = MDICREATESTRUCT;
+     PMDICREATESTRUCT = ^MDICREATESTRUCT;
+
+     MEASUREITEMSTRUCT = record
+          CtlType : UINT;
+          CtlID : UINT;
+          itemID : UINT;
+          itemWidth : UINT;
+          itemHeight : UINT;
+          itemData : DWORD;
+       end;
+     LPMEASUREITEMSTRUCT = ^MEASUREITEMSTRUCT;
+     tagMEASUREITEMSTRUCT = MEASUREITEMSTRUCT;
+     TMEASUREITEMSTRUCT = MEASUREITEMSTRUCT;
+     PMEASUREITEMSTRUCT = ^MEASUREITEMSTRUCT;
+
+     MEMORY_BASIC_INFORMATION = record
+          BaseAddress : PVOID;
+          AllocationBase : PVOID;
+          AllocationProtect : DWORD;
+          RegionSize : DWORD;
+          State : DWORD;
+          Protect : DWORD;
+          _Type : DWORD;
+       end;
+     PMEMORY_BASIC_INFORMATION = ^MEMORY_BASIC_INFORMATION;
+     _MEMORY_BASIC_INFORMATION = MEMORY_BASIC_INFORMATION;
+     TMEMORYBASICINFORMATION = MEMORY_BASIC_INFORMATION;
+     PMEMORYBASICINFORMATION = ^MEMORY_BASIC_INFORMATION;
+
+     MEMORYSTATUS = record
+          dwLength : DWORD;
+          dwMemoryLoad : DWORD;
+          dwTotalPhys : DWORD;
+          dwAvailPhys : DWORD;
+          dwTotalPageFile : DWORD;
+          dwAvailPageFile : DWORD;
+          dwTotalVirtual : DWORD;
+          dwAvailVirtual : DWORD;
+       end;
+     LPMEMORYSTATUS = ^MEMORYSTATUS;
+     _MEMORYSTATUS = MEMORYSTATUS;
+     TMEMORYSTATUS = MEMORYSTATUS;
+     PMEMORYSTATUS = ^MEMORYSTATUS;
+
+     MENUEX_TEMPLATE_HEADER = record
+          wVersion : WORD;
+          wOffset : WORD;
+          dwHelpId : DWORD;
+       end;
+     TMENUXTEMPLATEHEADER = MENUEX_TEMPLATE_HEADER;
+     PMENUXTEMPLATEHEADER = ^MENUEX_TEMPLATE_HEADER;
+
+     MENUEX_TEMPLATE_ITEM = record
+          dwType : DWORD;
+          dwState : DWORD;
+          uId : UINT;
+          bResInfo : BYTE;
+          szText : array[0..0] of WCHAR;
+          dwHelpId : DWORD;
+       end;
+     TMENUEXTEMPLATEITEM = MENUEX_TEMPLATE_ITEM;
+     PMENUEXTEMPLATEITEM = ^MENUEX_TEMPLATE_ITEM;
+
+     MENUITEMINFO = record
+          cbSize : UINT;
+          fMask : UINT;
+          fType : UINT;
+          fState : UINT;
+          wID : UINT;
+          hSubMenu : HMENU;
+          hbmpChecked : HBITMAP;
+          hbmpUnchecked : HBITMAP;
+          dwItemData : DWORD;
+          dwTypeData : LPTSTR;
+          cch : UINT;
+       end;
+     LPMENUITEMINFO = ^MENUITEMINFO;
+     LPCMENUITEMINFO = ^MENUITEMINFO;
+     tagMENUITEMINFO = MENUITEMINFO;
+     TMENUITEMINFO = MENUITEMINFO;
+     TMENUITEMINFOW = MENUITEMINFO;
+     PMENUITEMINFO = ^MENUITEMINFO;
+     PMENUITEMINFOW = ^MENUITEMINFO;
+
+     MENUITEMTEMPLATE = record
+          mtOption : WORD;
+          mtID : WORD;
+          mtString : array[0..0] of WCHAR;
+       end;
+     TMENUITEMTEMPLATE = MENUITEMTEMPLATE;
+     PMENUITEMTEMPLATE = ^MENUITEMTEMPLATE;
+
+     MENUITEMTEMPLATEHEADER = record
+          versionNumber : WORD;
+          offset : WORD;
+       end;
+     TMENUITEMTEMPLATEHEADER = MENUITEMTEMPLATEHEADER;
+     PMENUITEMTEMPLATEHEADER = ^MENUITEMTEMPLATEHEADER;
+
+     MENUTEMPLATE = record
+                    end;
+     LPMENUTEMPLATE = ^MENUTEMPLATE;
+     TMENUTEMPLATE = MENUTEMPLATE;
+     PMENUTEMPLATE = ^MENUTEMPLATE;
+
+     METAFILEPICT = record
+          mm : LONG;
+          xExt : LONG;
+          yExt : LONG;
+          hMF : HMETAFILE;
+       end;
+     LPMETAFILEPICT = ^METAFILEPICT;
+     tagMETAFILEPICT = METAFILEPICT;
+     TMETAFILEPICT = METAFILEPICT;
+     PMETAFILEPICT = ^METAFILEPICT;
+
+     METAHEADER = packed record
+          mtType : WORD;
+          mtHeaderSize : WORD;
+          mtVersion : WORD;
+          mtSize : DWORD;
+          mtNoObjects : WORD;
+          mtMaxRecord : DWORD;
+          mtNoParameters : WORD;
+       end;
+     tagMETAHEADER = METAHEADER;
+     TMETAHEADER = METAHEADER;
+     PMETAHEADER = ^METAHEADER;
+
+     METARECORD = record
+          rdSize : DWORD;
+          rdFunction : WORD;
+          rdParm : array[0..0] of WORD;
+       end;
+     LPMETARECORD = ^METARECORD;
+     tagMETARECORD = METARECORD;
+     TMETARECORD = METARECORD;
+     PMETARECORD = ^METARECORD;
+
+     MINIMIZEDMETRICS = record
+          cbSize : UINT;
+          iWidth : longint;
+          iHorzGap : longint;
+          iVertGap : longint;
+          iArrange : longint;
+       end;
+     LPMINIMIZEDMETRICS = ^MINIMIZEDMETRICS;
+     tagMINIMIZEDMETRICS = MINIMIZEDMETRICS;
+     TMINIMIZEDMETRICS = MINIMIZEDMETRICS;
+     PMINIMIZEDMETRICS = ^MINIMIZEDMETRICS;
+
+     MINMAXINFO = record
+          ptReserved : POINT;
+          ptMaxSize : POINT;
+          ptMaxPosition : POINT;
+          ptMinTrackSize : POINT;
+          ptMaxTrackSize : POINT;
+       end;
+     tagMINMAXINFO = MINMAXINFO;
+     TMINMAXINFO = MINMAXINFO;
+     PMINMAXINFO = ^MINMAXINFO;
+
+     MODEMDEVCAPS = record
+          dwActualSize : DWORD;
+          dwRequiredSize : DWORD;
+          dwDevSpecificOffset : DWORD;
+          dwDevSpecificSize : DWORD;
+          dwModemProviderVersion : DWORD;
+          dwModemManufacturerOffset : DWORD;
+          dwModemManufacturerSize : DWORD;
+          dwModemModelOffset : DWORD;
+          dwModemModelSize : DWORD;
+          dwModemVersionOffset : DWORD;
+          dwModemVersionSize : DWORD;
+          dwDialOptions : DWORD;
+          dwCallSetupFailTimer : DWORD;
+          dwInactivityTimeout : DWORD;
+          dwSpeakerVolume : DWORD;
+          dwSpeakerMode : DWORD;
+          dwModemOptions : DWORD;
+          dwMaxDTERate : DWORD;
+          dwMaxDCERate : DWORD;
+          abVariablePortion : array[0..0] of BYTE;
+       end;
+     LPMODEMDEVCAPS = ^MODEMDEVCAPS;
+     TMODEMDEVCAPS = MODEMDEVCAPS;
+     PMODEMDEVCAPS = ^MODEMDEVCAPS;
+
+     modemdevcaps_tag = MODEMDEVCAPS;
+
+     MODEMSETTINGS = record
+          dwActualSize : DWORD;
+          dwRequiredSize : DWORD;
+          dwDevSpecificOffset : DWORD;
+          dwDevSpecificSize : DWORD;
+          dwCallSetupFailTimer : DWORD;
+          dwInactivityTimeout : DWORD;
+          dwSpeakerVolume : DWORD;
+          dwSpeakerMode : DWORD;
+          dwPreferredModemOptions : DWORD;
+          dwNegotiatedModemOptions : DWORD;
+          dwNegotiatedDCERate : DWORD;
+          abVariablePortion : array[0..0] of BYTE;
+       end;
+     LPMODEMSETTINGS = ^MODEMSETTINGS;
+     TMODEMSETTINGS = MODEMSETTINGS;
+     PMODEMSETTINGS = ^MODEMSETTINGS;
+
+     modemsettings_tag = MODEMSETTINGS;
+
+     MONCBSTRUCT = record
+          cb : UINT;
+          dwTime : DWORD;
+          hTask : HANDLE;
+          dwRet : DWORD;
+          wType : UINT;
+          wFmt : UINT;
+          hConv : HCONV;
+          hsz1 : HSZ;
+          hsz2 : HSZ;
+          hData : HDDEDATA;
+          dwData1 : DWORD;
+          dwData2 : DWORD;
+          cc : CONVCONTEXT;
+          cbData : DWORD;
+          Data : array[0..7] of DWORD;
+       end;
+     tagMONCBSTRUCT = MONCBSTRUCT;
+     TMONCBSTRUCT = MONCBSTRUCT;
+     PMONCBSTRUCT = ^MONCBSTRUCT;
+
+     MONCONVSTRUCT = record
+          cb : UINT;
+          fConnect : WINBOOL;
+          dwTime : DWORD;
+          hTask : HANDLE;
+          hszSvc : HSZ;
+          hszTopic : HSZ;
+          hConvClient : HCONV;
+          hConvServer : HCONV;
+       end;
+     tagMONCONVSTRUCT = MONCONVSTRUCT;
+     TMONCONVSTRUCT = MONCONVSTRUCT;
+     PMONCONVSTRUCT = ^MONCONVSTRUCT;
+
+     MONERRSTRUCT = record
+          cb : UINT;
+          wLastError : UINT;
+          dwTime : DWORD;
+          hTask : HANDLE;
+       end;
+     tagMONERRSTRUCT = MONERRSTRUCT;
+     TMONERRSTRUCT = MONERRSTRUCT;
+     PMONERRSTRUCT = ^MONERRSTRUCT;
+
+     MONHSZSTRUCT = record
+          cb : UINT;
+          fsAction : WINBOOL;
+          dwTime : DWORD;
+          hsz : HSZ;
+          hTask : HANDLE;
+          str : array[0..0] of TCHAR;
+       end;
+     tagMONHSZSTRUCT = MONHSZSTRUCT;
+     TMONHSZSTRUCT = MONHSZSTRUCT;
+     PMONHSZSTRUCT = ^MONHSZSTRUCT;
+
+     MONITOR_INFO_1 = record
+          pName : LPTSTR;
+       end;
+     _MONITOR_INFO_1 = MONITOR_INFO_1;
+     TMONITORINFO1 = MONITOR_INFO_1;
+     PMONITORINFO1 = ^MONITOR_INFO_1;
+
+     MONITOR_INFO_2 = record
+          pName : LPTSTR;
+          pEnvironment : LPTSTR;
+          pDLLName : LPTSTR;
+       end;
+     _MONITOR_INFO_2 = MONITOR_INFO_2;
+     TMONITORINFO2 = MONITOR_INFO_2;
+     PMONITORINFO2 = ^MONITOR_INFO_2;
+
+     MONLINKSTRUCT = record
+          cb : UINT;
+          dwTime : DWORD;
+          hTask : HANDLE;
+          fEstablished : WINBOOL;
+          fNoData : WINBOOL;
+          hszSvc : HSZ;
+          hszTopic : HSZ;
+          hszItem : HSZ;
+          wFmt : UINT;
+          fServer : WINBOOL;
+          hConvServer : HCONV;
+          hConvClient : HCONV;
+       end;
+     tagMONLINKSTRUCT = MONLINKSTRUCT;
+     TMONLINKSTRUCT = MONLINKSTRUCT;
+     PMONLINKSTRUCT = ^MONLINKSTRUCT;
+
+     MONMSGSTRUCT = record
+          cb : UINT;
+          hwndTo : HWND;
+          dwTime : DWORD;
+          hTask : HANDLE;
+          wMsg : UINT;
+          wParam : WPARAM;
+          lParam : LPARAM;
+          dmhd : DDEML_MSG_HOOK_DATA;
+       end;
+     tagMONMSGSTRUCT = MONMSGSTRUCT;
+     TMONMSGSTRUCT = MONMSGSTRUCT;
+     PMONMSGSTRUCT = ^MONMSGSTRUCT;
+
+     MOUSEHOOKSTRUCT = record
+          pt : POINT;
+          hwnd : HWND;
+          wHitTestCode : UINT;
+          dwExtraInfo : DWORD;
+       end;
+     LPMOUSEHOOKSTRUCT = ^MOUSEHOOKSTRUCT;
+     tagMOUSEHOOKSTRUCT = MOUSEHOOKSTRUCT;
+     TMOUSEHOOKSTRUCT = MOUSEHOOKSTRUCT;
+     PMOUSEHOOKSTRUCT = ^MOUSEHOOKSTRUCT;
+
+     MOUSEKEYS = record
+          cbSize : DWORD;
+          dwFlags : DWORD;
+          iMaxSpeed : DWORD;
+          iTimeToMaxSpeed : DWORD;
+          iCtrlSpeed : DWORD;
+          dwReserved1 : DWORD;
+          dwReserved2 : DWORD;
+       end;
+     TMOUSEKEYS = MOUSEKEYS;
+     PMOUSEKEYS = ^MOUSEKEYS;
+
+     MSGBOXCALLBACK = procedure (lpHelpInfo:LPHELPINFO);
+     TMSGBOXCALLBACK = MSGBOXCALLBACK;
+
+     MSGBOXPARAMS = record
+          cbSize : UINT;
+          hwndOwner : HWND;
+          hInstance : HINST;
+          lpszText : LPCSTR;
+          lpszCaption : LPCSTR;
+          dwStyle : DWORD;
+          lpszIcon : LPCSTR;
+          dwContextHelpId : DWORD;
+          lpfnMsgBoxCallback : MSGBOXCALLBACK;
+          dwLanguageId : DWORD;
+       end;
+     LPMSGBOXPARAMS = ^MSGBOXPARAMS;
+     TMSGBOXPARAMS = MSGBOXPARAMS;
+     TMSGBOXPARAMSA = MSGBOXPARAMS;
+     PMSGBOXPARAMS = ^MSGBOXPARAMS;
+
+     MSGFILTER = record
+          nmhdr : NMHDR;
+          msg : UINT;
+          wParam : WPARAM;
+          lParam : LPARAM;
+       end;
+     _msgfilter = MSGFILTER;
+     Tmsgfilter = MSGFILTER;
+     Pmsgfilter = ^MSGFILTER;
+
+     MULTIKEYHELP = record
+          mkSize : DWORD;
+          mkKeylist : TCHAR;
+          szKeyphrase : array[0..0] of TCHAR;
+       end;
+     tagMULTIKEYHELP = MULTIKEYHELP;
+     TMULTIKEYHELP = MULTIKEYHELP;
+     PMULTIKEYHELP = ^MULTIKEYHELP;
+
+     EXTENDED_NAME_FORMAT=(
+     // unknown name type
+     NameUnknown = 0,
+     // CN=Spencer Katt, OU=Software, OU=Engineering, O=Widget, C=US
+     NameFullyQualifiedDN = 1,
+     // Engineering\SpencerK
+     NameSamCompatible = 2,
+     // Probably "Spencer Katt" but could be something else.  I.e. The
+     // display name is not necessarily the defining RDN.
+     NameDisplay = 3,
+     // [email protected] where xxx could be "SpencerK" or
+     // anything else.  Could be multi-valued to handle migration and aliasing.
+     NameDomainSimple = 4,
+     // [email protected] where xxx could be "SpencerK" or anything else.
+     // Could be multi-valued to handle migration and aliasing.
+     NameEnterpriseSimple = 5,
+     // String-ized GUID as returned by IIDFromString().
+     // eg: {4fa050f0-f561-11cf-bdd9-00aa003a77b6}
+     NameUniqueId = 6,
+     // engineering.widget.com/software/spencer katt
+     NameCanonical = 7,
+     // local logon name
+     NameWindowsCeLocal = $80000001);              //+winbase
+     PEXTENDED_NAME_FORMAT=^EXTENDED_NAME_FORMAT;  //+winbase
+
+     NAME_BUFFER = record
+          name : array[0..(NCBNAMSZ)-1] of UCHAR;
+          name_num : UCHAR;
+          name_flags : UCHAR;
+       end;
+     _NAME_BUFFER = NAME_BUFFER;
+     TNAMEBUFFER = NAME_BUFFER;
+     PNAMEBUFFER = ^NAME_BUFFER;
+
+     p_NCB = ^_NCB;
+     NCB = record
+          ncb_command : UCHAR;
+          ncb_retcode : UCHAR;
+          ncb_lsn : UCHAR;
+          ncb_num : UCHAR;
+          ncb_buffer : PUCHAR;
+          ncb_length : WORD;
+          ncb_callname : array[0..(NCBNAMSZ)-1] of UCHAR;
+          ncb_name : array[0..(NCBNAMSZ)-1] of UCHAR;
+          ncb_rto : UCHAR;
+          ncb_sto : UCHAR;
+          ncb_post : procedure (_para1:p_NCB);CDECL;
+          ncb_lana_num : UCHAR;
+          ncb_cmd_cplt : UCHAR;
+          ncb_reserve : array[0..9] of UCHAR;
+          ncb_event : HANDLE;
+       end;
+     _NCB = NCB;
+     TNCB = NCB;
+     PNCB = ^NCB;
+
+     NCCALCSIZE_PARAMS = record
+          rgrc : array[0..2] of RECT;
+          lppos : PWINDOWPOS;
+       end;
+     _NCCALCSIZE_PARAMS = NCCALCSIZE_PARAMS;
+     TNCCALCSIZEPARAMS = NCCALCSIZE_PARAMS;
+     PNCCALCSIZEPARAMS = ^NCCALCSIZE_PARAMS;
+
+     NDDESHAREINFO = record
+          lRevision : LONG;
+          lpszShareName : LPTSTR;
+          lShareType : LONG;
+          lpszAppTopicList : LPTSTR;
+          fSharedFlag : LONG;
+          fService : LONG;
+          fStartAppFlag : LONG;
+          nCmdShow : LONG;
+          qModifyId : array[0..1] of LONG;
+          cNumItems : LONG;
+          lpszItemList : LPTSTR;
+       end;
+     _NDDESHAREINFO = NDDESHAREINFO;
+     TNDDESHAREINFO = NDDESHAREINFO;
+     PNDDESHAREINFO = ^NDDESHAREINFO;
+
+     NETRESOURCE = record
+          dwScope : DWORD;
+          dwType : DWORD;
+          dwDisplayType : DWORD;
+          dwUsage : DWORD;
+          lpLocalName : LPTSTR;
+          lpRemoteName : LPTSTR;
+          lpComment : LPTSTR;
+          lpProvider : LPTSTR;
+       end;
+     LPNETRESOURCE = ^NETRESOURCE;
+     _NETRESOURCE = NETRESOURCE;
+     TNETRESOURCE = NETRESOURCE;
+     TNETRESOURCEA = NETRESOURCE;
+     PNETRESOURCE = ^NETRESOURCE;
+     PNETRESOURCEA = ^NETRESOURCE;
+
+     NETRESOURCEW = record  //+winnetwk
+          dwScope : DWORD;
+          dwType : DWORD;
+          dwDisplayType : DWORD;
+          dwUsage : DWORD;
+          lpLocalName : LPWSTR;
+          lpRemoteName : LPWSTR;
+          lpComment : LPWSTR;
+          lpProvider : LPWSTR;
+       end;
+     LPNETRESOURCEW = ^NETRESOURCEW; //+winnetwk
+     _NETRESOURCEW = NETRESOURCEW;   //+winnetwk
+
+     NEWCPLINFO = record
+          dwSize : DWORD;
+          dwFlags : DWORD;
+          dwHelpContext : DWORD;
+          lData : LONG;
+          hIcon : HICON;
+          szName : array[0..31] of TCHAR;
+          szInfo : array[0..63] of TCHAR;
+          szHelpFile : array[0..127] of TCHAR;
+       end;
+     tagNEWCPLINFO = NEWCPLINFO;
+     TNEWCPLINFO = NEWCPLINFO;
+     PNEWCPLINFO = ^NEWCPLINFO;
+
+     NEWTEXTMETRIC = record
+          tmHeight : LONG;
+          tmAscent : LONG;
+          tmDescent : LONG;
+          tmInternalLeading : LONG;
+          tmExternalLeading : LONG;
+          tmAveCharWidth : LONG;
+          tmMaxCharWidth : LONG;
+          tmWeight : LONG;
+          tmOverhang : LONG;
+          tmDigitizedAspectX : LONG;
+          tmDigitizedAspectY : LONG;
+          tmFirstChar : BCHAR;
+          tmLastChar : BCHAR;
+          tmDefaultChar : BCHAR;
+          tmBreakChar : BCHAR;
+          tmItalic : BYTE;
+          tmUnderlined : BYTE;
+          tmStruckOut : BYTE;
+          tmPitchAndFamily : BYTE;
+          tmCharSet : BYTE;
+          ntmFlags : DWORD;
+          ntmSizeEM : UINT;
+          ntmCellHeight : UINT;
+          ntmAvgWidth : UINT;
+       end;
+     tagNEWTEXTMETRIC = NEWTEXTMETRIC;
+     TNEWTEXTMETRIC = NEWTEXTMETRIC;
+     PNEWTEXTMETRIC = ^NEWTEXTMETRIC;
+
+     NEWTEXTMETRICEX = record
+          ntmentm : NEWTEXTMETRIC;
+          ntmeFontSignature : FONTSIGNATURE;
+       end;
+     tagNEWTEXTMETRICEX = NEWTEXTMETRICEX;
+     TNEWTEXTMETRICEX = NEWTEXTMETRICEX;
+     PNEWTEXTMETRICEX = ^NEWTEXTMETRICEX;
+
+     NM_LISTVIEW = record
+          hdr : NMHDR;
+          iItem : longint;
+          iSubItem : longint;
+          uNewState : UINT;
+          uOldState : UINT;
+          uChanged : UINT;
+          ptAction : POINT;
+          lParam : LPARAM;
+       end;
+     tagNM_LISTVIEW = NM_LISTVIEW;
+     TNMLISTVIEW = NM_LISTVIEW;
+     PNMLISTVIEW = ^NM_LISTVIEW;
+
+     TV_ITEM = record
+          mask : UINT;
+          hItem : HTREEITEM;
+          state : UINT;
+          stateMask : UINT;
+          pszText : LPTSTR;
+          cchTextMax : longint;
+          iImage : longint;
+          iSelectedImage : longint;
+          cChildren : longint;
+          lParam : LPARAM;
+       end;
+     LPTV_ITEM = ^TV_ITEM;
+     _TV_ITEM = TV_ITEM;
+     TTVITEM = TV_ITEM;
+     PTVITEM = ^TV_ITEM;
+
+     NM_TREEVIEW = record
+          hdr : NMHDR;
+          action : UINT;
+          itemOld : TV_ITEM;
+          itemNew : TV_ITEM;
+          ptDrag : POINT;
+       end;
+     LPNM_TREEVIEW = ^NM_TREEVIEW;
+     _NM_TREEVIEW = NM_TREEVIEW;
+     TNMTREEVIEW = NM_TREEVIEW;
+     PNMTREEVIEW = ^NM_TREEVIEW;
+
+     NM_UPDOWNW = record
+          hdr : NMHDR;
+          iPos : longint;
+          iDelta : longint;
+       end;
+     _NM_UPDOWN = NM_UPDOWNW;
+     TNMUPDOWN = NM_UPDOWNW;
+     PNMUPDOWN = ^NM_UPDOWNW;
+
+     NONCLIENTMETRICS = record
+          cbSize : UINT;
+          iBorderWidth : longint;
+          iScrollWidth : longint;
+          iScrollHeight : longint;
+          iCaptionWidth : longint;
+          iCaptionHeight : longint;
+          lfCaptionFont : LOGFONT;
+          iSmCaptionWidth : longint;
+          iSmCaptionHeight : longint;
+          lfSmCaptionFont : LOGFONT;
+          iMenuWidth : longint;
+          iMenuHeight : longint;
+          lfMenuFont : LOGFONT;
+          lfStatusFont : LOGFONT;
+          lfMessageFont : LOGFONT;
+       end;
+     LPNONCLIENTMETRICS = ^NONCLIENTMETRICS;
+     tagNONCLIENTMETRICS = NONCLIENTMETRICS;
+     TNONCLIENTMETRICS = NONCLIENTMETRICS;
+     PNONCLIENTMETRICS = ^NONCLIENTMETRICS;
+
+     SERVICE_ADDRESS = record
+          dwAddressType : DWORD;
+          dwAddressFlags : DWORD;
+          dwAddressLength : DWORD;
+          dwPrincipalLength : DWORD;
+          lpAddress : ^BYTE;
+          lpPrincipal : ^BYTE;
+       end;
+     _SERVICE_ADDRESS = SERVICE_ADDRESS;
+     TSERVICEADDRESS = SERVICE_ADDRESS;
+     PSERVICEADDRESS = ^SERVICE_ADDRESS;
+
+     SERVICE_ADDRESSES = record
+          dwAddressCount : DWORD;
+          Addresses : array[0..0] of SERVICE_ADDRESS;
+       end;
+     LPSERVICE_ADDRESSES = ^SERVICE_ADDRESSES;
+     _SERVICE_ADDRESSES = SERVICE_ADDRESSES;
+     TSERVICEADDRESSES = SERVICE_ADDRESSES;
+     PSERVICEADDRESSES = ^SERVICE_ADDRESSES;
+
+     GUID = system.tguid;        //winnt
+     LPGUID = ^GUID;
+     _GUID = GUID;
+     TGUID = GUID;
+     PGUID = ^GUID;
+
+     CLSID = GUID;
+     LPCLSID = ^CLSID;
+     TCLSID = CLSID;
+     PCLSID = ^CLSID;
+
+     SERVICE_INFO = record
+          lpServiceType : LPGUID;
+          lpServiceName : LPTSTR;
+          lpComment : LPTSTR;
+          lpLocale : LPTSTR;
+          dwDisplayHint : DWORD;
+          dwVersion : DWORD;
+          dwTime : DWORD;
+          lpMachineName : LPTSTR;
+          lpServiceAddress : LPSERVICE_ADDRESSES;
+          ServiceSpecificInfo : BLOB;
+       end;
+     _SERVICE_INFO = SERVICE_INFO;
+     TSERVICEINFO = SERVICE_INFO;
+     PSERVICEINFO = ^SERVICE_INFO;
+
+     NS_SERVICE_INFO = record
+          dwNameSpace : DWORD;
+          ServiceInfo : SERVICE_INFO;
+       end;
+     _NS_SERVICE_INFO = NS_SERVICE_INFO;
+     TNSSERVICEINFO = NS_SERVICE_INFO;
+     PNSSERVICEINFO = ^NS_SERVICE_INFO;
+
+     NUMBERFMT = record
+          NumDigits : UINT;
+          LeadingZero : UINT;
+          Grouping : UINT;
+          lpDecimalSep : LPTSTR;
+          lpThousandSep : LPTSTR;
+          NegativeOrder : UINT;
+       end;
+     _numberfmt = NUMBERFMT;
+     Tnumberfmt = NUMBERFMT;
+     Pnumberfmt = ^NUMBERFMT;
+
+     OFSTRUCT = record
+          cBytes : BYTE;
+          fFixedDisk : BYTE;
+          nErrCode : WORD;
+          Reserved1 : WORD;
+          Reserved2 : WORD;
+          szPathName : array[0..(OFS_MAXPATHNAME)-1] of CHAR;
+       end;
+     LPOFSTRUCT = ^OFSTRUCT;
+     _OFSTRUCT = OFSTRUCT;
+     TOFSTRUCT = OFSTRUCT;
+     POFSTRUCT = ^OFSTRUCT;
+
+     OPENFILENAMEW = record     //+commdlg
+          lStructSize : DWORD;
+          hwndOwner : HWND;
+          hInstance : HINST;
+          lpstrFilter : LPCWSTR;
+          lpstrCustomFilter : LPWSTR;
+          nMaxCustFilter : DWORD;
+          nFilterIndex : DWORD;
+          lpstrFile : LPWSTR;
+          nMaxFile : DWORD;
+          lpstrFileTitle : LPWSTR;
+          nMaxFileTitle : DWORD;
+          lpstrInitialDir : LPCWSTR;
+          lpstrTitle : LPCWSTR;
+          Flags : DWORD;
+          nFileOffset : WORD;
+          nFileExtension : WORD;
+          lpstrDefExt : LPCWSTR;
+          lCustData : LPARAM;
+          lpfnHook : LPOFNHOOKPROC;
+          lpTemplateName : LPCWSTR;
+       end;
+     LPOPENFILENAMEW = ^OPENFILENAMEW; //+commdlg
+     tagOFNW = OPENFILENAMEW; //+commdlg
+     LPOPENFILENAME = ^OPENFILENAMEW;
+     TOPENFILENAME = OPENFILENAMEW;
+     POPENFILENAME = ^OPENFILENAMEW;
+     TOPENFILENAMEW = OPENFILENAMEW;
+     POPENFILENAMEW = ^OPENFILENAMEW;
+
+     tagOFN = OPENFILENAMEW;
+     TOFN = OPENFILENAMEW;
+     POFN = ^OPENFILENAMEW;
+
+     OFNOTIFY = record
+          hdr : NMHDR;
+          lpOFN : LPOPENFILENAME;
+          pszFile : LPTSTR;
+       end;
+     LPOFNOTIFY = ^OFNOTIFY;
+     _OFNOTIFY = OFNOTIFY;
+     TOFNOTIFY = OFNOTIFY;
+     POFNOTIFY = ^OFNOTIFY;
+
+     OSVERSIONINFO = record
+          dwOSVersionInfoSize : DWORD;
+          dwMajorVersion : DWORD;
+          dwMinorVersion : DWORD;
+          dwBuildNumber : DWORD;
+          dwPlatformId : DWORD;
+          szCSDVersion : array[0..127] of TCHAR;
+       end;
+     LPOSVERSIONINFO = ^OSVERSIONINFO;
+     _OSVERSIONINFO = OSVERSIONINFO;
+     TOSVERSIONINFO = OSVERSIONINFO;
+     POSVERSIONINFO = ^OSVERSIONINFO;
+
+     OSVERSIONINFOW = record
+       dwOSVersionInfoSize : DWORD;
+       dwMajorVersion : DWORD;
+       dwMinorVersion : DWORD;
+       dwBuildNumber : DWORD;
+       dwPlatformId : DWORD;
+       szCSDVersion : array[0..127] of WCHAR;
+     end;
+     LPOSVERSIONINFOW = ^OSVERSIONINFOW;
+     _OSVERSIONINFOW = OSVERSIONINFOW;
+     TOSVERSIONINFOW = OSVERSIONINFOW;
+     POSVERSIONINFOW = ^OSVERSIONINFOW;
+
+
+
+
+
+     TEXTMETRIC = record
+          tmHeight : LONG;
+          tmAscent : LONG;
+          tmDescent : LONG;
+          tmInternalLeading : LONG;
+          tmExternalLeading : LONG;
+          tmAveCharWidth : LONG;
+          tmMaxCharWidth : LONG;
+          tmWeight : LONG;
+          tmOverhang : LONG;
+          tmDigitizedAspectX : LONG;
+          tmDigitizedAspectY : LONG;
+          tmFirstChar : BCHAR;
+          tmLastChar : BCHAR;
+          tmDefaultChar : BCHAR;
+          tmBreakChar : BCHAR;
+          tmItalic : BYTE;
+          tmUnderlined : BYTE;
+          tmStruckOut : BYTE;
+          tmPitchAndFamily : BYTE;
+          tmCharSet : BYTE;
+       end;
+     LPTEXTMETRIC = ^TEXTMETRIC;
+     tagTEXTMETRIC = TEXTMETRIC;
+     TTEXTMETRIC = TEXTMETRIC;
+     PTEXTMETRIC = ^TEXTMETRIC;
+
+     TEXTMETRICW = record
+          tmHeight : LONG;
+          tmAscent : LONG;
+          tmDescent : LONG;
+          tmInternalLeading : LONG;
+          tmExternalLeading : LONG;
+          tmAveCharWidth : LONG;
+          tmMaxCharWidth : LONG;
+          tmWeight : LONG;
+          tmOverhang : LONG;
+          tmDigitizedAspectX : LONG;
+          tmDigitizedAspectY : LONG;
+          tmFirstChar : WCHAR;
+          tmLastChar : WCHAR;
+          tmDefaultChar : WCHAR;
+          tmBreakChar : WCHAR;
+          tmItalic : BYTE;
+          tmUnderlined : BYTE;
+          tmStruckOut : BYTE;
+          tmPitchAndFamily : BYTE;
+          tmCharSet : BYTE;
+       end;
+     LPTEXTMETRICW = ^TEXTMETRICW;
+     tagTEXTMETRICW = TEXTMETRICW;
+     TTEXTMETRICW = TEXTMETRICW;
+     PTEXTMETRICW = ^TEXTMETRICW;
+
+
+     OUTLINETEXTMETRIC = record
+          otmSize : UINT;
+          otmTextMetrics : TEXTMETRIC;
+          otmFiller : BYTE;
+          otmPanoseNumber : PANOSE;
+          otmfsSelection : UINT;
+          otmfsType : UINT;
+          otmsCharSlopeRise : longint;
+          otmsCharSlopeRun : longint;
+          otmItalicAngle : longint;
+          otmEMSquare : UINT;
+          otmAscent : longint;
+          otmDescent : longint;
+          otmLineGap : UINT;
+          otmsCapEmHeight : UINT;
+          otmsXHeight : UINT;
+          otmrcFontBox : RECT;
+          otmMacAscent : longint;
+          otmMacDescent : longint;
+          otmMacLineGap : UINT;
+          otmusMinimumPPEM : UINT;
+          otmptSubscriptSize : POINT;
+          otmptSubscriptOffset : POINT;
+          otmptSuperscriptSize : POINT;
+          otmptSuperscriptOffset : POINT;
+          otmsStrikeoutSize : UINT;
+          otmsStrikeoutPosition : longint;
+          otmsUnderscoreSize : longint;
+          otmsUnderscorePosition : longint;
+          otmpFamilyName : PSTR;
+          otmpFaceName : PSTR;
+          otmpStyleName : PSTR;
+          otmpFullName : PSTR;
+       end;
+     LPOUTLINETEXTMETRIC = ^OUTLINETEXTMETRIC;
+     _OUTLINETEXTMETRIC = OUTLINETEXTMETRIC;
+     TOUTLINETEXTMETRIC = OUTLINETEXTMETRIC;
+     POUTLINETEXTMETRIC = ^OUTLINETEXTMETRIC;
+
+     OVERLAPPED = record
+          Internal : DWORD;
+          InternalHigh : DWORD;
+          Offset : DWORD;
+          OffsetHigh : DWORD;
+          hEvent : HANDLE;
+       end;
+     LPOVERLAPPED = ^OVERLAPPED;
+     _OVERLAPPED = OVERLAPPED;
+     TOVERLAPPED = OVERLAPPED;
+     POVERLAPPED = ^OVERLAPPED;
+
+     {PAGESETUPDLG = record conflicts with function PageSetupDlg }
+     TPAGESETUPDLG = record
+          lStructSize : DWORD;
+          hwndOwner : HWND;
+          hDevMode : HGLOBAL;
+          hDevNames : HGLOBAL;
+          Flags : DWORD;
+          ptPaperSize : POINT;
+          rtMinMargin : RECT;
+          rtMargin : RECT;
+          hInstance : HINST;
+          lCustData : LPARAM;
+          lpfnPageSetupHook : LPPAGESETUPHOOK;
+          lpfnPagePaintHook : LPPAGEPAINTHOOK;
+          lpPageSetupTemplateName : LPCTSTR;
+          hPageSetupTemplate : HGLOBAL;
+       end;
+     LPPAGESETUPDLG = ^TPAGESETUPDLG;
+     PPAGESETUPDLG = ^TPAGESETUPDLG;
+
+     tagPSD = TPAGESETUPDLG;
+     TPSD = TPAGESETUPDLG;
+     PPSD = ^TPAGESETUPDLG;
+
+     TPAGESETUPDLGW = record    //+commdlg
+          lStructSize : DWORD;
+          hwndOwner : HWND;
+          hDevMode : HGLOBAL;
+          hDevNames : HGLOBAL;
+          Flags : DWORD;
+          ptPaperSize : POINT;   // ignored in CE
+          rtMinMargin : RECT;
+          rtMargin : RECT;
+          hInstance : HINST;
+          lCustData : LPARAM;
+          lpfnPageSetupHook : LPPAGESETUPHOOK;
+          lpfnPagePaintHook : LPPAGEPAINTHOOK; // ignored in CE
+          lpPageSetupTemplateName : LPCWSTR;
+          hPageSetupTemplate : HGLOBAL;
+       end;
+     LPPAGESETUPDLGW = ^TPAGESETUPDLGW; //+commdlg
+     tagPSDW = TPAGESETUPDLGW;          //+commdlg
+
+     PAINTSTRUCT = record
+          hdc : HDC;
+          fErase : WINBOOL;
+          rcPaint : RECT;
+          fRestore : WINBOOL;
+          fIncUpdate : WINBOOL;
+          rgbReserved : array[0..31] of BYTE;
+       end;
+     LPPAINTSTRUCT = ^PAINTSTRUCT;
+     tagPAINTSTRUCT = PAINTSTRUCT;
+     TPAINTSTRUCT = PAINTSTRUCT;
+     PPAINTSTRUCT = ^PAINTSTRUCT;
+
+     PARAFORMAT = record
+          cbSize : UINT;
+          dwMask : DWORD;
+          wNumbering : WORD;
+          wReserved : WORD;
+          dxStartIndent : LONG;
+          dxRightIndent : LONG;
+          dxOffset : LONG;
+          wAlignment : WORD;
+          cTabCount : SHORT;
+          rgxTabs : array[0..(MAX_TAB_STOPS)-1] of LONG;
+       end;
+     _paraformat = PARAFORMAT;
+     Tparaformat = PARAFORMAT;
+     Pparaformat = ^PARAFORMAT;
+
+     PERF_COUNTER_BLOCK = record
+          ByteLength : DWORD;
+       end;
+     _PERF_COUNTER_BLOCK = PERF_COUNTER_BLOCK;
+     TPERFCOUNTERBLOCK = PERF_COUNTER_BLOCK;
+     PPERFCOUNTERBLOCK = ^PERF_COUNTER_BLOCK;
+
+     PERF_COUNTER_DEFINITION = record
+          ByteLength : DWORD;
+          CounterNameTitleIndex : DWORD;
+          CounterNameTitle : LPWSTR;
+          CounterHelpTitleIndex : DWORD;
+          CounterHelpTitle : LPWSTR;
+          DefaultScale : DWORD;
+          DetailLevel : DWORD;
+          CounterType : DWORD;
+          CounterSize : DWORD;
+          CounterOffset : DWORD;
+       end;
+     _PERF_COUNTER_DEFINITION = PERF_COUNTER_DEFINITION;
+     TPERFCOUNTERDEFINITION = PERF_COUNTER_DEFINITION;
+     PPERFCOUNTERDEFINITION = ^PERF_COUNTER_DEFINITION;
+
+     PERF_DATA_BLOCK = record
+          Signature : array[0..3] of WCHAR;
+          LittleEndian : DWORD;
+          Version : DWORD;
+          Revision : DWORD;
+          TotalByteLength : DWORD;
+          HeaderLength : DWORD;
+          NumObjectTypes : DWORD;
+          DefaultObject : DWORD;
+          SystemTime : SYSTEMTIME;
+          PerfTime : LARGE_INTEGER;
+          PerfFreq : LARGE_INTEGER;
+          PerfTime100nSec : LARGE_INTEGER;
+          SystemNameLength : DWORD;
+          SystemNameOffset : DWORD;
+       end;
+     _PERF_DATA_BLOCK = PERF_DATA_BLOCK;
+     TPERFDATABLOCK = PERF_DATA_BLOCK;
+     PPERFDATABLOCK = ^PERF_DATA_BLOCK;
+
+     PERF_INSTANCE_DEFINITION = record
+          ByteLength : DWORD;
+          ParentObjectTitleIndex : DWORD;
+          ParentObjectInstance : DWORD;
+          UniqueID : DWORD;
+          NameOffset : DWORD;
+          NameLength : DWORD;
+       end;
+     _PERF_INSTANCE_DEFINITION = PERF_INSTANCE_DEFINITION;
+     TPERFINSTANCEDEFINITION = PERF_INSTANCE_DEFINITION;
+     PPERFINSTANCEDEFINITION = PERF_INSTANCE_DEFINITION;
+
+     PERF_OBJECT_TYPE = record
+          TotalByteLength : DWORD;
+          DefinitionLength : DWORD;
+          HeaderLength : DWORD;
+          ObjectNameTitleIndex : DWORD;
+          ObjectNameTitle : LPWSTR;
+          ObjectHelpTitleIndex : DWORD;
+          ObjectHelpTitle : LPWSTR;
+          DetailLevel : DWORD;
+          NumCounters : DWORD;
+          DefaultCounter : DWORD;
+          NumInstances : DWORD;
+          CodePage : DWORD;
+          PerfTime : LARGE_INTEGER;
+          PerfFreq : LARGE_INTEGER;
+       end;
+     _PERF_OBJECT_TYPE = PERF_OBJECT_TYPE;
+     TPERFOBJECTTYPE = PERF_OBJECT_TYPE;
+     PPERFOBJECTTYPE = ^PERF_OBJECT_TYPE;
+
+     POLYTEXT = record
+          x : longint;
+          y : longint;
+          n : UINT;
+          lpstr : LPCTSTR;
+          uiFlags : UINT;
+          rcl : RECT;
+          pdx : ^longint;
+       end;
+     _POLYTEXT = POLYTEXT;
+     TPOLYTEXT = POLYTEXT;
+     PPOLYTEXT = ^POLYTEXT;
+
+     PORT_INFO_1 = record
+          pName : LPTSTR;
+       end;
+     _PORT_INFO_1 = PORT_INFO_1;
+     TPORTINFO1 = PORT_INFO_1;
+     PPORTINFO1 = ^PORT_INFO_1;
+
+     PORT_INFO_2 = record
+          pPortName : LPSTR;
+          pMonitorName : LPSTR;
+          pDescription : LPSTR;
+          fPortType : DWORD;
+          Reserved : DWORD;
+       end;
+     _PORT_INFO_2 = PORT_INFO_2;
+     TPORTINFO2 = PORT_INFO_2;
+     PPORTINFO2 = ^PORT_INFO_2;
+
+     PREVENT_MEDIA_REMOVAL = record
+          PreventMediaRemoval : BOOLEAN;
+       end;
+     _PREVENT_MEDIA_REMOVAL = PREVENT_MEDIA_REMOVAL;
+     TPREVENTMEDIAREMOVAL = PREVENT_MEDIA_REMOVAL;
+     PPREVENTMEDIAREMOVAL = ^PREVENT_MEDIA_REMOVAL;
+
+     {PRINTDLG = record conflicts with PrintDlg function }
+     TPRINTDLG = packed record
+          lStructSize : DWORD;
+          hwndOwner : HWND;
+          hDevMode : HANDLE;
+          hDevNames : HANDLE;
+          hDC : HDC;
+          Flags : DWORD;
+          nFromPage : WORD;
+          nToPage : WORD;
+          nMinPage : WORD;
+          nMaxPage : WORD;
+          nCopies : WORD;
+          hInstance : HINST;
+          lCustData : DWORD;
+          lpfnPrintHook : LPPRINTHOOKPROC;
+          lpfnSetupHook : LPSETUPHOOKPROC;
+          lpPrintTemplateName : LPCTSTR;
+          lpSetupTemplateName : LPCTSTR;
+          hPrintTemplate : HANDLE;
+          hSetupTemplate : HANDLE;
+       end;
+     LPPRINTDLG = ^TPRINTDLG;
+     PPRINTDLG = ^TPRINTDLG;
+
+     tagPD = TPRINTDLG;
+     TPD = TPRINTDLG;
+     PPD = ^TPRINTDLG;
+
+     PRINTER_DEFAULTS = record
+          pDatatype : LPTSTR;
+          pDevMode : LPDEVMODE;
+          DesiredAccess : ACCESS_MASK;
+       end;
+     _PRINTER_DEFAULTS = PRINTER_DEFAULTS;
+     TPRINTERDEFAULTS = PRINTER_DEFAULTS;
+     PPRINTERDEFAULTS = ^PRINTER_DEFAULTS;
+
+     PRINTER_INFO_1 = record
+          Flags : DWORD;
+          pDescription : LPTSTR;
+          pName : LPTSTR;
+          pComment : LPTSTR;
+       end;
+     LPPRINTER_INFO_1 = ^PRINTER_INFO_1;
+     PPRINTER_INFO_1 = ^PRINTER_INFO_1;
+     _PRINTER_INFO_1 = PRINTER_INFO_1;
+     TPRINTERINFO1 = PRINTER_INFO_1;
+     PPRINTERINFO1 = ^PRINTER_INFO_1;
+
+     PRINTER_INFO_2 = record
+          pServerName : LPTSTR;
+          pPrinterName : LPTSTR;
+          pShareName : LPTSTR;
+          pPortName : LPTSTR;
+          pDriverName : LPTSTR;
+          pComment : LPTSTR;
+          pLocation : LPTSTR;
+          pDevMode : LPDEVMODE;
+          pSepFile : LPTSTR;
+          pPrintProcessor : LPTSTR;
+          pDatatype : LPTSTR;
+          pParameters : LPTSTR;
+          pSecurityDescriptor : PSECURITY_DESCRIPTOR;
+          Attributes : DWORD;
+          Priority : DWORD;
+          DefaultPriority : DWORD;
+          StartTime : DWORD;
+          UntilTime : DWORD;
+          Status : DWORD;
+          cJobs : DWORD;
+          AveragePPM : DWORD;
+       end;
+     _PRINTER_INFO_2 = PRINTER_INFO_2;
+     TPRINTERINFO2 = PRINTER_INFO_2;
+     PPRINTERINFO2 = ^PRINTER_INFO_2;
+
+     PRINTER_INFO_3 = record
+          pSecurityDescriptor : PSECURITY_DESCRIPTOR;
+       end;
+     _PRINTER_INFO_3 = PRINTER_INFO_3;
+     TPRINTERINFO3 = PRINTER_INFO_3;
+     PPRINTERINFO3 = ^PRINTER_INFO_3;
+
+     PRINTER_INFO_4 = record
+          pPrinterName : LPTSTR;
+          pServerName : LPTSTR;
+          Attributes : DWORD;
+       end;
+     _PRINTER_INFO_4 = PRINTER_INFO_4;
+     TPRINTERINFO4 = PRINTER_INFO_4;
+     PPRINTERINFO4 = ^PRINTER_INFO_4;
+
+     PRINTER_INFO_5 = record
+          pPrinterName : LPTSTR;
+          pPortName : LPTSTR;
+          Attributes : DWORD;
+          DeviceNotSelectedTimeout : DWORD;
+          TransmissionRetryTimeout : DWORD;
+       end;
+     _PRINTER_INFO_5 = PRINTER_INFO_5;
+     TPRINTERINFO5 = PRINTER_INFO_5;
+     PPRINTERINFO5 = ^PRINTER_INFO_5;
+
+     PRINTER_NOTIFY_INFO_DATA = record
+          _Type : WORD;
+          Field : WORD;
+          Reserved : DWORD;
+          Id : DWORD;
+          NotifyData : record
+              case longint of
+                 0 : ( adwData : array[0..1] of DWORD );
+                 1 : ( Data : record
+                      cbBuf : DWORD;
+                      pBuf : LPVOID;
+                   end );
+              end;
+       end;
+     _PRINTER_NOTIFY_INFO_DATA = PRINTER_NOTIFY_INFO_DATA;
+     TPRINTERNOTIFYINFODATA = PRINTER_NOTIFY_INFO_DATA;
+     PPRINTERNOTIFYINFODATA = ^PRINTER_NOTIFY_INFO_DATA;
+
+     PRINTER_NOTIFY_INFO = record
+          Version : DWORD;
+          Flags : DWORD;
+          Count : DWORD;
+          aData : array[0..0] of PRINTER_NOTIFY_INFO_DATA;
+       end;
+     _PRINTER_NOTIFY_INFO = PRINTER_NOTIFY_INFO;
+     TPRINTERNOTIFYINFO = PRINTER_NOTIFY_INFO;
+     PPRINTERNOTIFYINFO = ^PRINTER_NOTIFY_INFO;
+
+     PRINTER_NOTIFY_OPTIONS_TYPE = record
+          _Type : WORD;
+          Reserved0 : WORD;
+          Reserved1 : DWORD;
+          Reserved2 : DWORD;
+          Count : DWORD;
+          pFields : PWORD;
+       end;
+     PPRINTER_NOTIFY_OPTIONS_TYPE = ^PRINTER_NOTIFY_OPTIONS_TYPE;
+     _PRINTER_NOTIFY_OPTIONS_TYPE = PRINTER_NOTIFY_OPTIONS_TYPE;
+     TPRINTERNOTIFYOPTIONSTYPE = PRINTER_NOTIFY_OPTIONS_TYPE;
+     PPRINTERNOTIFYOPTIONSTYPE = ^PRINTER_NOTIFY_OPTIONS_TYPE;
+
+     PRINTER_NOTIFY_OPTIONS = record
+          Version : DWORD;
+          Flags : DWORD;
+          Count : DWORD;
+          pTypes : PPRINTER_NOTIFY_OPTIONS_TYPE;
+       end;
+     _PRINTER_NOTIFY_OPTIONS = PRINTER_NOTIFY_OPTIONS;
+     TPRINTERNOTIFYOPTIONS = PRINTER_NOTIFY_OPTIONS;
+     PPRINTERNOTIFYOPTIONS = ^PRINTER_NOTIFY_OPTIONS;
+
+     PRINTPROCESSOR_INFO_1 = record
+          pName : LPTSTR;
+       end;
+     _PRINTPROCESSOR_INFO_1 = PRINTPROCESSOR_INFO_1;
+     TPRINTPROCESSORINFO1 = PRINTPROCESSOR_INFO_1;
+     PPRINTPROCESSORINFO1 = ^PRINTPROCESSOR_INFO_1;
+
+     PRIVILEGE_SET = record
+          PrivilegeCount : DWORD;
+          Control : DWORD;
+          Privilege : array[0..(ANYSIZE_ARRAY)-1] of LUID_AND_ATTRIBUTES;
+       end;
+     LPPRIVILEGE_SET = ^PRIVILEGE_SET;
+     PPRIVILEGE_SET = ^PRIVILEGE_SET;
+     _PRIVILEGE_SET = PRIVILEGE_SET;
+     TPRIVILEGESET = PRIVILEGE_SET;
+     PPRIVILEGESET = ^PRIVILEGE_SET;
+
+     PROCESS_HEAPENTRY = record
+          lpData : PVOID;
+          cbData : DWORD;
+          cbOverhead : BYTE;
+          iRegionIndex : BYTE;
+          wFlags : WORD;
+          dwCommittedSize : DWORD;
+          dwUnCommittedSize : DWORD;
+          lpFirstBlock : LPVOID;
+          lpLastBlock : LPVOID;
+          hMem : HANDLE;
+       end;
+     LPPROCESS_HEAP_ENTRY = ^PROCESS_HEAPENTRY;
+     _PROCESS_HEAP_ENTRY = PROCESS_HEAPENTRY;
+     TPROCESSHEAPENTRY = PROCESS_HEAPENTRY;
+     PPROCESSHEAPENTRY = ^PROCESS_HEAPENTRY;
+
+     PROCESS_INFORMATION = record
+          hProcess : HANDLE;
+          hThread : HANDLE;
+          dwProcessId : DWORD;
+          dwThreadId : DWORD;
+       end;
+     LPPROCESS_INFORMATION = ^PROCESS_INFORMATION;
+     _PROCESS_INFORMATION = PROCESS_INFORMATION;
+     TPROCESSINFORMATION = PROCESS_INFORMATION;
+     PPROCESSINFORMATION = ^PROCESS_INFORMATION;
+
+     LPFNPSPCALLBACK = function (_para1:HWND; _para2:UINT; _para3:LPVOID):UINT;
+     TFNPSPCALLBACK = LPFNPSPCALLBACK;
+
+     PROPSHEETPAGEA = record
+          dwSize : DWORD;
+          dwFlags : DWORD;
+          hInstance : HINST;
+          case longint of
+            0 : (pszTemplate : LPCTSTR);
+            1 : (pResource : LPCDLGTEMPLATE;
+                 case longint of
+                    0 : (hIcon : HICON);
+                    1 : (pszIcon : LPCTSTR;
+                         pszTitle : LPCTSTR;
+                         pfnDlgProc : DLGPROC;
+                         lParam : LPARAM;
+                         pfnCallback : LPFNPSPCALLBACK;
+                         pcRefParent : ^UINT;
+                        );
+                );
+       end;
+     LPPROPSHEETPAGEA = ^PROPSHEETPAGEA;
+     LPCPROPSHEETPAGEA = ^PROPSHEETPAGEA;
+
+     PROPSHEETPAGEW = record
+          dwSize : DWORD;
+          dwFlags : DWORD;
+          hInstance : HINST;
+          case longint of
+            0 : (pszTemplate : LPCWSTR);
+            1 : (pResource : LPCDLGTEMPLATE;
+                 case longint of
+                    0 : (hIcon : HICON);
+                    1 : (pszIcon : LPCWSTR;
+                         pszTitle : LPCWSTR;
+                         pfnDlgProc : DLGPROC;
+                         lParam : LPARAM;
+                         pfnCallback : LPFNPSPCALLBACK;
+                         pcRefParent : ^UINT;
+                        );
+                );
+       end;
+     LPPROPSHEETPAGEW = ^PROPSHEETPAGEW;
+     LPCPROPSHEETPAGEW = ^PROPSHEETPAGEW;
+
+{$IFDEF UNICODE}
+     LPPROPSHEETPAGE = ^PROPSHEETPAGEW;
+     LPCPROPSHEETPAGE = ^PROPSHEETPAGEW;
+     _PROPSHEETPAGE = PROPSHEETPAGEW;
+     PROPSHEETPAGE = PROPSHEETPAGEW;
+     TPROPSHEETPAGE = PROPSHEETPAGEW;
+     PPROPSHEETPAGE = ^PROPSHEETPAGEW;
+{$ELSE UNICODE}
+     LPPROPSHEETPAGE = ^PROPSHEETPAGEA;
+     LPCPROPSHEETPAGE = ^PROPSHEETPAGEA;
+     _PROPSHEETPAGE = PROPSHEETPAGEA;
+     PROPSHEETPAGE = PROPSHEETPAGEA;
+     TPROPSHEETPAGE = PROPSHEETPAGEA;
+     PPROPSHEETPAGE = ^PROPSHEETPAGEA;
+{$ENDIF UNICODE}
+
+     emptyrecord = record
+       end;
+     lpemptyrecord = ^emptyrecord;
+     HPROPSHEETPAGE = ^emptyrecord;
+
+     PROPSHEETHEADERA = record //prsht
+          dwSize : DWORD;
+          dwFlags : DWORD;
+          hwndParent : HWND;
+          hInstance : HINST;
+          case longint of
+              0 : (hIcon : HICON);
+              1 : (pszIcon : LPCTSTR;
+                   pszCaption : LPCTSTR;
+                   nPages : UINT;
+                   case longint of
+                      0 : (nStartPage : UINT);
+                      1 : (pStartPage : LPCTSTR;
+                           case longint of
+                              0 : (ppsp : LPCPROPSHEETPAGE);
+                              1 : (phpage : ^HPROPSHEETPAGE;
+                                   pfnCallback : PFNPROPSHEETCALLBACK;
+                                   case longint of
+                                     0 : (hbmWatermark : HBITMAP);
+                                     1 : (pszbmWatermark : LPCTSTR;
+                                          hplWatermark : HPALETTE;
+                                          case longint of
+                                             0 : (hbmHeader : HBITMAP);
+                                             1 : (pszbmHeader: PAnsiChar);
+                                         );
+                                  );
+                          );
+                  );
+       end;
+     LPPROPSHEETHEADERA = ^PROPSHEETHEADERA;
+     LPCPROPSHEETHEADERA = ^PROPSHEETHEADERA;
+     PPROPSHEETHEADERA = ^PROPSHEETHEADERA;
+
+     PROPSHEETHEADERW = record //prsht
+          dwSize : DWORD;
+          dwFlags : DWORD;
+          hwndParent : HWND;
+          hInstance : HINST;
+          case longint of
+              0 : (hIcon : HICON);
+              1 : (pszIcon : LPCWSTR;
+                   pszCaption : LPCWSTR;
+                   nPages : UINT;
+                   case longint of
+                      0 : (nStartPage : UINT);
+                      1 : (pStartPage : LPCWSTR;
+                           case longint of
+                              0 : (ppsp : LPCPROPSHEETPAGE);
+                              1 : (phpage : ^HPROPSHEETPAGE;
+                                   pfnCallback : PFNPROPSHEETCALLBACK;
+                                  );
+                          );
+                  );
+       end;
+
+     LPPROPSHEETHEADERW = ^PROPSHEETHEADERW;
+     LPCPROPSHEETHEADERW = ^PROPSHEETHEADERW;
+     PPROPSHEETHEADERW = ^PROPSHEETHEADERW;
+
+{$IFDEF UNICODE}
+     _PROPSHEETHEADER = PROPSHEETHEADERW;
+     PROPSHEETHEADER = PROPSHEETHEADERW;
+     TPROPSHEETHEADER = PROPSHEETHEADERW;
+     PPROPSHEETHEADER = ^PROPSHEETHEADERW;
+     LPPROPSHEETHEADER = ^PROPSHEETHEADERW;
+     LPCPROPSHEETHEADER = ^PROPSHEETHEADERW;
+{$ELSE UNICODE}
+     _PROPSHEETHEADER = PROPSHEETHEADERA;
+     PROPSHEETHEADER = PROPSHEETHEADERA;
+     TPROPSHEETHEADER = PROPSHEETHEADERA;
+     PPROPSHEETHEADER = ^PROPSHEETHEADERA;
+     LPPROPSHEETHEADER = ^PROPSHEETHEADERA;
+     LPCPROPSHEETHEADER = ^PROPSHEETHEADERA;
+{$ENDIF UNICODE}
+
+
+     { PropertySheet callbacks  }
+     LPFNADDPROPSHEETPAGE = function (_para1:HPROPSHEETPAGE; _para2:LPARAM):WINBOOL;
+     TFNADDPROPSHEETPAGE = LPFNADDPROPSHEETPAGE;
+
+     LPFNADDPROPSHEETPAGES = function (_para1:LPVOID; _para2:LPFNADDPROPSHEETPAGE; _para3:LPARAM):WINBOOL;
+     TFNADDPROPSHEETPAGES = LPFNADDPROPSHEETPAGES;
+
+     PROTOCOL_INFO = record
+          dwServiceFlags : DWORD;
+          iAddressFamily : WINT;
+          iMaxSockAddr : WINT;
+          iMinSockAddr : WINT;
+          iSocketType : WINT;
+          iProtocol : WINT;
+          dwMessageSize : DWORD;
+          lpProtocol : LPTSTR;
+       end;
+     _PROTOCOL_INFO = PROTOCOL_INFO;
+     TPROTOCOLINFO = PROTOCOL_INFO;
+     PPROTOCOLINFO = ^PROTOCOL_INFO;
+
+     PROVIDOR_INFO_1 = record
+          pName : LPTSTR;
+          pEnvironment : LPTSTR;
+          pDLLName : LPTSTR;
+       end;
+     _PROVIDOR_INFO_1 = PROVIDOR_INFO_1;
+     TPROVIDORINFO1 = PROVIDOR_INFO_1;
+     PPROVIDORINFO1 = ^PROVIDOR_INFO_1;
+
+     PSHNOTIFY = record
+          hdr : NMHDR;
+          lParam : LPARAM;
+       end;
+     LPPSHNOTIFY = ^PSHNOTIFY;
+     _PSHNOTIFY = PSHNOTIFY;
+     TPSHNOTIFY = PSHNOTIFY;
+     PPSHNOTIFY = ^PSHNOTIFY;
+
+     PUNCTUATION = record
+          iSize : UINT;
+          szPunctuation : LPSTR;
+       end;
+     _punctuation = PUNCTUATION;
+     Tpunctuation = PUNCTUATION;
+     Ppunctuation = ^PUNCTUATION;
+
+     QUERY_SERVICE_CONFIG = record
+          dwServiceType : DWORD;
+          dwStartType : DWORD;
+          dwErrorControl : DWORD;
+          lpBinaryPathName : LPTSTR;
+          lpLoadOrderGroup : LPTSTR;
+          dwTagId : DWORD;
+          lpDependencies : LPTSTR;
+          lpServiceStartName : LPTSTR;
+          lpDisplayName : LPTSTR;
+       end;
+     LPQUERY_SERVICE_CONFIG = ^QUERY_SERVICE_CONFIG;
+     _QUERY_SERVICE_CONFIG = QUERY_SERVICE_CONFIG;
+     TQUERYSERVICECONFIG = QUERY_SERVICE_CONFIG;
+     PQUERYSERVICECONFIG = ^QUERY_SERVICE_CONFIG;
+
+     QUERY_SERVICE_LOCK_STATUS = record
+          fIsLocked : DWORD;
+          lpLockOwner : LPTSTR;
+          dwLockDuration : DWORD;
+       end;
+     LPQUERY_SERVICE_LOCK_STATUS = ^QUERY_SERVICE_LOCK_STATUS;
+     _QUERY_SERVICE_LOCK_STATUS = QUERY_SERVICE_LOCK_STATUS;
+     TQUERYSERVICELOCKSTATUS = QUERY_SERVICE_LOCK_STATUS;
+     PQUERYSERVICELOCKSTATUS = ^QUERY_SERVICE_LOCK_STATUS;
+
+     RASAMB = record
+          dwSize : DWORD;
+          dwError : DWORD;
+          szNetBiosError : array[0..(NETBIOS_NAME_LEN + 1)-1] of TCHAR;
+          bLana : BYTE;
+       end;
+     _RASAMB = RASAMB;
+     TRASAMB = RASAMB;
+     PRASAMB = ^RASAMB;
+
+     RASCONN = record
+          dwSize : DWORD;
+          hrasconn : HRASCONN;
+          szEntryName : array[0..(RAS_MaxEntryName + 1)-1] of TCHAR;
+          szDeviceType : array[0..(RAS_MaxDeviceType + 1)-1] of CHAR;
+          szDeviceName : array[0..(RAS_MaxDeviceName + 1)-1] of CHAR;
+       end;
+     _RASCONN = RASCONN;
+     TRASCONN = RASCONN;
+     PRASCONN = ^RASCONN;
+
+     RASCONNSTATUS = record
+          dwSize : DWORD;
+          rasconnstate : RASCONNSTATE;
+          dwError : DWORD;
+          szDeviceType : array[0..(RAS_MaxDeviceType + 1)-1] of TCHAR;
+          szDeviceName : array[0..(RAS_MaxDeviceName + 1)-1] of TCHAR;
+       end;
+     _RASCONNSTATUS = RASCONNSTATUS;
+     TRASCONNSTATUS = RASCONNSTATUS;
+     PRASCONNSTATUS = ^RASCONNSTATUS;
+
+     RASDIALEXTENSIONS = record
+          dwSize : DWORD;
+          dwfOptions : DWORD;
+          hwndParent : HWND;
+          reserved : DWORD;
+       end;
+     _RASDIALEXTENSIONS = RASDIALEXTENSIONS;
+     TRASDIALEXTENSIONS = RASDIALEXTENSIONS;
+     PRASDIALEXTENSIONS = ^RASDIALEXTENSIONS;
+
+     RASDIALPARAMS = record
+          dwSize : DWORD;
+          szEntryName : array[0..(RAS_MaxEntryName + 1)-1] of TCHAR;
+          szPhoneNumber : array[0..(RAS_MaxPhoneNumber + 1)-1] of TCHAR;
+          szCallbackNumber : array[0..(RAS_MaxCallbackNumber + 1)-1] of TCHAR;
+          szUserName : array[0..(UNLEN + 1)-1] of TCHAR;
+          szPassword : array[0..(PWLEN + 1)-1] of TCHAR;
+          szDomain : array[0..(DNLEN + 1)-1] of TCHAR;
+       end;
+     _RASDIALPARAMS = RASDIALPARAMS;
+     TRASDIALPARAMS = RASDIALPARAMS;
+     PRASDIALPARAMS = ^RASDIALPARAMS;
+
+     RASENTRYNAME = record
+          dwSize : DWORD;
+          szEntryName : array[0..(RAS_MaxEntryName + 1)-1] of TCHAR;
+       end;
+     _RASENTRYNAME = RASENTRYNAME;
+     TRASENTRYNAME = RASENTRYNAME;
+     PRASENTRYNAME = ^RASENTRYNAME;
+
+     RASPPPIP = record
+          dwSize : DWORD;
+          dwError : DWORD;
+          szIpAddress : array[0..(RAS_MaxIpAddress + 1)-1] of TCHAR;
+       end;
+     _RASPPPIP = RASPPPIP;
+     TRASPPPIP = RASPPPIP;
+     PRASPPPIP = ^RASPPPIP;
+
+     RASPPPIPX = record
+          dwSize : DWORD;
+          dwError : DWORD;
+          szIpxAddress : array[0..(RAS_MaxIpxAddress + 1)-1] of TCHAR;
+       end;
+     _RASPPPIPX = RASPPPIPX;
+     TRASPPPIPX = RASPPPIPX;
+     PRASPPPIPX = ^RASPPPIPX;
+
+     RASPPPNBF = record
+          dwSize : DWORD;
+          dwError : DWORD;
+          dwNetBiosError : DWORD;
+          szNetBiosError : array[0..(NETBIOS_NAME_LEN + 1)-1] of TCHAR;
+          szWorkstationName : array[0..(NETBIOS_NAME_LEN + 1)-1] of TCHAR;
+          bLana : BYTE;
+       end;
+     _RASPPPNBF = RASPPPNBF;
+     TRASPPPNBF = RASPPPNBF;
+     PRASPPPNBF = ^RASPPPNBF;
+
+     RASTERIZER_STATUS = record
+          nSize : integer;
+          wFlags : integer;
+          nLanguageID : integer;
+       end;
+     LPRASTERIZER_STATUS = ^RASTERIZER_STATUS;
+     _RASTERIZER_STATUS = RASTERIZER_STATUS;
+     TRASTERIZERSTATUS = RASTERIZER_STATUS;
+     PRASTERIZERSTATUS = ^RASTERIZER_STATUS;
+
+     REASSIGN_BLOCKS = record
+          Reserved : WORD;
+          Count : WORD;
+          BlockNumber : array[0..0] of DWORD;
+       end;
+     _REASSIGN_BLOCKS = REASSIGN_BLOCKS;
+     TREASSIGNBLOCKS = REASSIGN_BLOCKS;
+     PREASSIGNBLOCKS = ^REASSIGN_BLOCKS;
+
+     REMOTE_NAME_INFO = record
+          lpUniversalName : LPTSTR;
+          lpConnectionName : LPTSTR;
+          lpRemainingPath : LPTSTR;
+       end;
+     _REMOTE_NAME_INFO = REMOTE_NAME_INFO;
+     TREMOTENAMEINFO = REMOTE_NAME_INFO;
+     PREMOTENAMEINFO = ^REMOTE_NAME_INFO;
+
+  (*
+   TODO: OLE
+  typedef struct _reobject {
+    DWORD  cbStruct;
+    LONG   cp;
+    CLSID  clsid;
+    LPOLEOBJECT      poleobj;
+    LPSTORAGE        pstg;
+    LPOLECLIENTSITE  polesite;
+    SIZEL  sizel;
+    DWORD  dvaspect;
+    DWORD  dwFlags;
+    DWORD  dwUser;
+  } REOBJECT;
+   *)
+
+     REPASTESPECIAL = record
+          dwAspect : DWORD;
+          dwParam : DWORD;
+       end;
+     _repastespecial = REPASTESPECIAL;
+     Trepastespecial = REPASTESPECIAL;
+     Prepastespecial = ^REPASTESPECIAL;
+
+     REQRESIZE = record
+          nmhdr : NMHDR;
+          rc : RECT;
+       end;
+     _reqresize = REQRESIZE;
+     Treqresize = REQRESIZE;
+     Preqresize = ^REQRESIZE;
+
+     RGNDATAHEADER = record
+          dwSize : DWORD;
+          iType : DWORD;
+          nCount : DWORD;
+          nRgnSize : DWORD;
+          rcBound : RECT;
+       end;
+     _RGNDATAHEADER = RGNDATAHEADER;
+     TRGNDATAHEADER = RGNDATAHEADER;
+     PRGNDATAHEADER = ^RGNDATAHEADER;
+
+     RGNDATA = record
+          rdh : RGNDATAHEADER;
+          Buffer : array[0..0] of char;
+       end;
+     LPRGNDATA = ^RGNDATA;
+     _RGNDATA = RGNDATA;
+     TRGNDATA = RGNDATA;
+     PRGNDATA = ^RGNDATA;
+
+     SCROLLINFO = record
+          cbSize : UINT;
+          fMask : UINT;
+          nMin : longint;
+          nMax : longint;
+          nPage : UINT;
+          nPos : longint;
+          nTrackPos : longint;
+       end;
+     LPSCROLLINFO = ^SCROLLINFO;
+     LPCSCROLLINFO = ^SCROLLINFO;
+     tagSCROLLINFO = SCROLLINFO;
+     TSCROLLINFO = SCROLLINFO;
+     PSCROLLINFO = ^SCROLLINFO;
+
+     SECURITY_ATTRIBUTES = record
+          nLength : DWORD;
+          lpSecurityDescriptor : LPVOID;
+          bInheritHandle : WINBOOL;
+       end;
+     LPSECURITY_ATTRIBUTES = ^SECURITY_ATTRIBUTES;
+     _SECURITY_ATTRIBUTES = SECURITY_ATTRIBUTES;
+     TSECURITYATTRIBUTES = SECURITY_ATTRIBUTES;
+     PSECURITYATTRIBUTES = ^SECURITY_ATTRIBUTES;
+
+     SECURITY_INFORMATION = DWORD;
+     PSECURITY_INFORMATION = ^SECURITY_INFORMATION;
+     TSECURITYINFORMATION = SECURITY_INFORMATION;
+     PSECURITYINFORMATION = ^SECURITY_INFORMATION;
+
+     SELCHANGE = record
+          nmhdr : NMHDR;
+          chrg : CHARRANGE;
+          seltyp : WORD;
+       end;
+     _selchange = SELCHANGE;
+     Tselchange = SELCHANGE;
+     Pselchange = ^SELCHANGE;
+
+     SERIALKEYS = record
+          cbSize : DWORD;
+          dwFlags : DWORD;
+          lpszActivePort : LPSTR;
+          lpszPort : LPSTR;
+          iBaudRate : DWORD;
+          iPortState : DWORD;
+       end;
+     LPSERIALKEYS = ^SERIALKEYS;
+     tagSERIALKEYS = SERIALKEYS;
+     TSERIALKEYS = SERIALKEYS;
+     PSERIALKEYS = ^SERIALKEYS;
+
+     SERVICE_TABLE_ENTRY = record
+          lpServiceName : LPTSTR;
+          lpServiceProc : LPSERVICE_MAIN_FUNCTION;
+       end;
+     LPSERVICE_TABLE_ENTRY = ^SERVICE_TABLE_ENTRY;
+     _SERVICE_TABLE_ENTRY = SERVICE_TABLE_ENTRY;
+     TSERVICETABLEENTRY = SERVICE_TABLE_ENTRY;
+     PSERVICETABLEENTRY = ^SERVICE_TABLE_ENTRY;
+
+     SERVICE_TYPE_VALUE_ABS = record
+          dwNameSpace : DWORD;
+          dwValueType : DWORD;
+          dwValueSize : DWORD;
+          lpValueName : LPTSTR;
+          lpValue : PVOID;
+       end;
+     _SERVICE_TYPE_VALUE_ABS = SERVICE_TYPE_VALUE_ABS;
+     TSERVICETYPEVALUEABS = SERVICE_TYPE_VALUE_ABS;
+     PSERVICETYPEVALUEABS = ^SERVICE_TYPE_VALUE_ABS;
+
+     SERVICE_TYPE_INFO_ABS = record
+          lpTypeName : LPTSTR;
+          dwValueCount : DWORD;
+          Values : array[0..0] of SERVICE_TYPE_VALUE_ABS;
+       end;
+     _SERVICE_TYPE_INFO_ABS = SERVICE_TYPE_INFO_ABS;
+     TSERVICETYPEINFOABS = SERVICE_TYPE_INFO_ABS;
+     PSERVICETYPEINFOABS = ^SERVICE_TYPE_INFO_ABS;
+
+     SESSION_BUFFER = record
+          lsn : UCHAR;
+          state : UCHAR;
+          local_name : array[0..(NCBNAMSZ)-1] of UCHAR;
+          remote_name : array[0..(NCBNAMSZ)-1] of UCHAR;
+          rcvs_outstanding : UCHAR;
+          sends_outstanding : UCHAR;
+       end;
+     _SESSION_BUFFER = SESSION_BUFFER;
+     TSESSIONBUFFER = SESSION_BUFFER;
+     PSESSIONBUFFER = ^SESSION_BUFFER;
+
+     SESSION_HEADER = record
+          sess_name : UCHAR;
+          num_sess : UCHAR;
+          rcv_dg_outstanding : UCHAR;
+          rcv_any_outstanding : UCHAR;
+       end;
+     _SESSION_HEADER = SESSION_HEADER;
+     TSESSIONHEADER = SESSION_HEADER;
+     PSESSIONHEADER = ^SESSION_HEADER;
+
+     SET_PARTITION_INFORMATION = record
+          PartitionType : BYTE;
+       end;
+     _SET_PARTITION_INFORMATION = SET_PARTITION_INFORMATION;
+     TSETPARTITIONINFORMATION = SET_PARTITION_INFORMATION;
+     PSETPARTITIONINFORMATION = ^SET_PARTITION_INFORMATION;
+
+     SHELLEXECUTEINFO = record //+shellapi
+          cbSize: DWORD;
+          fMask: ULONG;
+          hwnd: HWND;
+          lpVerb: LPCTSTR;
+          lpFile: LPCTSTR;
+          lpParameters: LPCTSTR;
+          lpDirectory: LPCTSTR;
+          nShow: Integer ;
+          hInstApp: HINST;
+          // Optional fields
+          lpIDList: LPVOID;
+          lpClass: LPCTSTR;
+          hkeyClass: HKEY;
+          dwHotKey: DWORD;
+          hIcon: HANDLE;
+          hProcess :HANDLE;
+        end;
+     _SHELLEXECUTEINFO=SHELLEXECUTEINFO;   //+shellapi
+     LPSHELLEXECUTEINFO=^SHELLEXECUTEINFO; //+shellapi
+
+     SHCONTF = (SHCONTF_FOLDERS := 32,SHCONTF_NONFOLDERS := 64,
+       SHCONTF_INCLUDEHIDDEN := 128);
+     tagSHCONTF = SHCONTF;
+     TSHCONTF = SHCONTF;
+
+     SHFILEINFO = record
+          hIcon : HICON;
+          iIcon : longint;
+          dwAttributes : DWORD;
+          szDisplayName : array[0..MAX_PATH-1] of TCHAR;
+          szTypeName : array[0..79] of TCHAR;
+       end;
+     _SHFILEINFO = SHFILEINFO;
+     TSHFILEINFO = SHFILEINFO;
+     PSHFILEINFO = ^SHFILEINFO;
+
+     FILEOP_FLAGS = WORD;
+     TFILEOPFLAGS = FILEOP_FLAGS;
+     PFILEOPFLAGS = ^FILEOP_FLAGS;
+
+     SHFILEOPSTRUCTW = record //+shellapi
+          wnd : HWND;
+          wFunc : UINT;
+          pFrom : LPCWSTR;
+          pTo : LPCWSTR;
+          fFlags : FILEOP_FLAGS;
+          fAnyOperationsAborted : WINBOOL;
+          hNameMappings : LPVOID;
+          lpszProgressTitle : LPCWSTR;
+       end;
+     LPSHFILEOPSTRUCTW = ^SHFILEOPSTRUCTW;
+     _SHFILEOPSTRUCT = SHFILEOPSTRUCTW;
+     TSHFILEOPSTRUCT = SHFILEOPSTRUCTW;
+     PSHFILEOPSTRUCT = ^SHFILEOPSTRUCTW;
+     TSHFILEOPSTRUCTW = SHFILEOPSTRUCTW;
+     PSHFILEOPSTRUCTW = ^SHFILEOPSTRUCTW;
+
+     SHGNO = (SHGDN_NORMAL := 0,SHGDN_INFOLDER := 1,
+       SHGDN_FORPARSING := $8000);
+     tagSHGDN = SHGNO;
+     TSHGDN = SHGNO;
+
+     SHNAMEMAPPING = record
+          pszOldPath : LPSTR;
+          pszNewPath : LPSTR;
+          cchOldPath : longint;
+          cchNewPath : longint;
+       end;
+     LPSHNAMEMAPPING = ^SHNAMEMAPPING;
+     _SHNAMEMAPPING = SHNAMEMAPPING;
+     TSHNAMEMAPPING = SHNAMEMAPPING;
+     PSHNAMEMAPPING = ^SHNAMEMAPPING;
+
+     SINGLE_LIST_ENTRY = record
+          Next : ^_SINGLE_LIST_ENTRY;
+       end;
+     _SINGLE_LIST_ENTRY = SINGLE_LIST_ENTRY;
+     TSINGLELISTENTRY = SINGLE_LIST_ENTRY;
+     PSINGLELISTENTRY = ^SINGLE_LIST_ENTRY;
+
+     SOUNDSENTRY = record
+          cbSize : UINT;
+          dwFlags : DWORD;
+          iFSTextEffect : DWORD;
+          iFSTextEffectMSec : DWORD;
+          iFSTextEffectColorBits : DWORD;
+          iFSGrafEffect : DWORD;
+          iFSGrafEffectMSec : DWORD;
+          iFSGrafEffectColor : DWORD;
+          iWindowsEffect : DWORD;
+          iWindowsEffectMSec : DWORD;
+          lpszWindowsEffectDLL : LPTSTR;
+          iWindowsEffectOrdinal : DWORD;
+       end;
+     LPSOUNDSENTRY = ^SOUNDSENTRY;
+     tagSOUNDSENTRY = SOUNDSENTRY;
+     TSOUNDSENTRY = SOUNDSENTRY;
+     PSOUNDSENTRY = ^SOUNDSENTRY;
+
+     STARTUPINFO = record
+          cb : DWORD;
+          lpReserved : LPTSTR;
+          lpDesktop : LPTSTR;
+          lpTitle : LPTSTR;
+          dwX : DWORD;
+          dwY : DWORD;
+          dwXSize : DWORD;
+          dwYSize : DWORD;
+          dwXCountChars : DWORD;
+          dwYCountChars : DWORD;
+          dwFillAttribute : DWORD;
+          dwFlags : DWORD;
+          wShowWindow : WORD;
+          cbReserved2 : WORD;
+          lpReserved2 : LPBYTE;
+          hStdInput : HANDLE;
+          hStdOutput : HANDLE;
+          hStdError : HANDLE;
+       end;
+     LPSTARTUPINFO = ^STARTUPINFO;
+     _STARTUPINFO = STARTUPINFO;
+     TSTARTUPINFO = STARTUPINFO;
+     PSTARTUPINFO = ^STARTUPINFO;
+
+     STICKYKEYS = record
+          cbSize : DWORD;
+          dwFlags : DWORD;
+       end;
+     LPSTICKYKEYS = ^STICKYKEYS;
+     tagSTICKYKEYS = STICKYKEYS;
+     TSTICKYKEYS = STICKYKEYS;
+     PSTICKYKEYS = ^STICKYKEYS;
+
+     STRRET = record
+          uType : UINT;
+          DUMMYUNIONNAME : record
+              case longint of
+                 0 : ( pOleStr : LPWSTR );
+                 1 : ( uOffset : UINT );
+                 2 : ( cStr : array[0..(MAX_PATH)-1] of char );
+              end;
+       end;
+     LPSTRRET = ^STRRET;
+     _STRRET = STRRET;
+     TSTRRET = STRRET;
+     PSTRRET = ^STRRET;
+
+     STYLEBUF = record
+          dwStyle : DWORD;
+          szDescription : array[0..31] of CHAR;
+       end;
+     LPSTYLEBUF = ^STYLEBUF;
+     _tagSTYLEBUF = STYLEBUF;
+     TSTYLEBUF = STYLEBUF;
+     PSTYLEBUF = ^STYLEBUF;
+
+     STYLESTRUCT = record
+          styleOld : DWORD;
+          styleNew : DWORD;
+       end;
+     LPSTYLESTRUCT = ^STYLESTRUCT;
+     tagSTYLESTRUCT = STYLESTRUCT;
+     TSTYLESTRUCT = STYLESTRUCT;
+     PSTYLESTRUCT = ^STYLESTRUCT;
+
+     SYSTEM_AUDIT_ACE = record
+          Header : ACE_HEADER;
+          Mask : ACCESS_MASK;
+          SidStart : DWORD;
+       end;
+     _SYSTEM_AUDIT_ACE = SYSTEM_AUDIT_ACE;
+     TSYSTEMAUDITACE = SYSTEM_AUDIT_ACE;
+     PSYSTEMAUDITACE = ^SYSTEM_AUDIT_ACE;
+
+     SYSTEM_INFO = record
+          u : record
+              case longint of
+                 0 : ( dwOemId : DWORD );
+                 1 : ( s : record
+                      wProcessorArchitecture : WORD;
+                      wReserved : WORD;
+                   end );
+              end;
+          dwPageSize : DWORD;
+          lpMinimumApplicationAddress : LPVOID;
+          lpMaximumApplicationAddress : LPVOID;
+          dwActiveProcessorMask : DWORD;
+          dwNumberOfProcessors : DWORD;
+          dwProcessorType : DWORD;
+          dwAllocationGranularity : DWORD;
+          wProcessorLevel : WORD;
+          wProcessorRevision : WORD;
+       end;
+     LPSYSTEM_INFO = ^SYSTEM_INFO;
+     _SYSTEM_INFO = SYSTEM_INFO;
+     TSYSTEMINFO = SYSTEM_INFO;
+     PSYSTEMINFO = ^SYSTEM_INFO;
+
+     SYSTEM_POWER_STATUS = record
+          ACLineStatus : BYTE;
+          BatteryFlag : BYTE;
+          BatteryLifePercent : BYTE;
+          Reserved1 : BYTE;
+          BatteryLifeTime : DWORD;
+          BatteryFullLifeTime : DWORD;
+       end;
+     _SYSTEM_POWER_STATUS = SYSTEM_POWER_STATUS;
+     TSYSTEMPOWERSTATUS = SYSTEM_POWER_STATUS;
+     PSYSTEMPOWERSTATUS = ^SYSTEM_POWER_STATUS;
+
+     LPSYSTEM_POWER_STATUS = ^emptyrecord;
+
+     TAPE_ERASE = record
+          _Type : ULONG;
+       end;
+     _TAPE_ERASE = TAPE_ERASE;
+     TTAPEERASE = TAPE_ERASE;
+     PTAPEERASE = ^TAPE_ERASE;
+
+     TAPE_GET_DRIVE_PARAMETERS = record
+          ECC : BOOLEAN;
+          Compression : BOOLEAN;
+          DataPadding : BOOLEAN;
+          ReportSetmarks : BOOLEAN;
+          DefaultBlockSize : ULONG;
+          MaximumBlockSize : ULONG;
+          MinimumBlockSize : ULONG;
+          MaximumPartitionCount : ULONG;
+          FeaturesLow : ULONG;
+          FeaturesHigh : ULONG;
+          EOTWarningZoneSize : ULONG;
+       end;
+     _TAPE_GET_DRIVE_PARAMETERS = TAPE_GET_DRIVE_PARAMETERS;
+     TTAPEGETDRIVEPARAMETERS = TAPE_GET_DRIVE_PARAMETERS;
+     PTAPEGETDRIVEPARAMETERS = ^TAPE_GET_DRIVE_PARAMETERS;
+
+     TAPE_GET_MEDIA_PARAMETERS = record
+          Capacity : LARGE_INTEGER;
+          Remaining : LARGE_INTEGER;
+          BlockSize : DWORD;
+          PartitionCount : DWORD;
+          WriteProtected : BOOLEAN;
+       end;
+     _TAPE_GET_MEDIA_PARAMETERS = TAPE_GET_MEDIA_PARAMETERS;
+     TTAPEGETMEDIAPARAMETERS = TAPE_GET_MEDIA_PARAMETERS;
+     PTAPEGETMEDIAPARAMETERS = ^TAPE_GET_MEDIA_PARAMETERS;
+
+     TAPE_GET_POSITION = record
+          _Type : ULONG;
+          Partition : ULONG;
+          OffsetLow : ULONG;
+          OffsetHigh : ULONG;
+       end;
+     _TAPE_GET_POSITION = TAPE_GET_POSITION;
+     TTAPEGETPOSITION = TAPE_GET_POSITION;
+     PTAPEGETPOSITION = ^TAPE_GET_POSITION;
+
+     TAPE_PREPARE = record
+          Operation : ULONG;
+       end;
+     _TAPE_PREPARE = TAPE_PREPARE;
+     TTAPEPREPARE = TAPE_PREPARE;
+     PTAPEPREPARE = ^TAPE_PREPARE;
+
+     TAPE_SET_DRIVE_PARAMETERS = record
+          ECC : BOOLEAN;
+          Compression : BOOLEAN;
+          DataPadding : BOOLEAN;
+          ReportSetmarks : BOOLEAN;
+          EOTWarningZoneSize : ULONG;
+       end;
+     _TAPE_SET_DRIVE_PARAMETERS = TAPE_SET_DRIVE_PARAMETERS;
+     TTAPESETDRIVEPARAMETERS = TAPE_SET_DRIVE_PARAMETERS;
+     PTAPESETDRIVEPARAMETERS = ^TAPE_SET_DRIVE_PARAMETERS;
+
+     TAPE_SET_MEDIA_PARAMETERS = record
+          BlockSize : ULONG;
+       end;
+     _TAPE_SET_MEDIA_PARAMETERS = TAPE_SET_MEDIA_PARAMETERS;
+     TTAPESETMEDIAPARAMETERS = TAPE_SET_MEDIA_PARAMETERS;
+     PTAPESETMEDIAPARAMETERS = ^TAPE_SET_MEDIA_PARAMETERS;
+
+     TAPE_SET_POSITION = record
+          Method : ULONG;
+          Partition : ULONG;
+          OffsetLow : ULONG;
+          OffsetHigh : ULONG;
+       end;
+     _TAPE_SET_POSITION = TAPE_SET_POSITION;
+     TTAPESETPOSITION = TAPE_SET_POSITION;
+     PTAPESETPOSITION = ^TAPE_SET_POSITION;
+
+     TAPE_WRITE_MARKS = record
+          _Type : ULONG;
+          Count : ULONG;
+       end;
+     _TAPE_WRITE_MARKS = TAPE_WRITE_MARKS;
+     TTAPEWRITEMARKS = TAPE_WRITE_MARKS;
+     PTAPEWRITEMARKS = ^TAPE_WRITE_MARKS;
+
+     TBADDBITMAP = record
+          hInst : HINST;
+          nID : UINT;
+       end;
+     LPTBADDBITMAP = ^TBADDBITMAP;
+     TTBADDBITMAP = TBADDBITMAP;
+     PTBADDBITMAP = ^TBADDBITMAP;
+
+     TBBUTTON = record
+          iBitmap : longint;
+          idCommand : longint;
+          fsState : BYTE;
+          fsStyle : BYTE;
+          dwData : DWORD;
+          iString : longint;
+       end;
+     LPTBBUTTON = ^TBBUTTON;
+     LPCTBBUTTON = ^TBBUTTON;
+     _TBBUTTON = TBBUTTON;
+     TTBBUTTON = TBBUTTON;
+     PTBBUTTON = ^TBBUTTON;
+
+     TBNOTIFY = record
+          hdr : NMHDR;
+          iItem : longint;
+          tbButton : TBBUTTON;
+          cchText : longint;
+          pszText : LPTSTR;
+       end;
+     LPTBNOTIFY = ^TBNOTIFY;
+     TTBNOTIFY = TBNOTIFY;
+     PTBNOTIFY = ^TBNOTIFY;
+
+     TBSAVEPARAMS = record
+          hkr : HKEY;
+          pszSubKey : LPCTSTR;
+          pszValueName : LPCTSTR;
+       end;
+     TTBSAVEPARAMS = TBSAVEPARAMS;
+     PTBSAVEPARAMS = ^TBSAVEPARAMS;
+
+     TC_HITTESTINFO = record
+          pt : POINT;
+          flags : UINT;
+       end;
+     _TC_HITTESTINFO = TC_HITTESTINFO;
+     TTCHITTESTINFO = TC_HITTESTINFO;
+     PTCHITTESTINFO = ^TC_HITTESTINFO;
+
+     TC_ITEM = record
+          mask : UINT;
+          lpReserved1 : UINT;
+          lpReserved2 : UINT;
+          pszText : LPTSTR;
+          cchTextMax : longint;
+          iImage : longint;
+          lParam : LPARAM;
+       end;
+     _TC_ITEM = TC_ITEM;
+     TTCITEM = TC_ITEM;
+     PTCITEM = ^TC_ITEM;
+
+     TC_ITEMHEADER = record
+          mask : UINT;
+          lpReserved1 : UINT;
+          lpReserved2 : UINT;
+          pszText : LPTSTR;
+          cchTextMax : longint;
+          iImage : longint;
+       end;
+     _TC_ITEMHEADER = TC_ITEMHEADER;
+     TTCITEMHEADER = TC_ITEMHEADER;
+     PTCITEMHEADER = ^TC_ITEMHEADER;
+
+     TC_KEYDOWN = record
+          hdr : NMHDR;
+          wVKey : WORD;
+          flags : UINT;
+       end;
+     _TC_KEYDOWN = TC_KEYDOWN;
+     TTCKEYDOWN = TC_KEYDOWN;
+     PTCKEYDOWN = ^TC_KEYDOWN;
+
+     TEXTRANGE = record
+          chrg : CHARRANGE;
+          lpstrText : LPSTR;
+       end;
+     _textrange = TEXTRANGE;
+     Ttextrange = TEXTRANGE;
+     Ptextrange = ^TEXTRANGE;
+
+     TIME_ZONE_INFORMATION = record
+          Bias : LONG;
+          StandardName : array[0..31] of WCHAR;
+          StandardDate : SYSTEMTIME;
+          StandardBias : LONG;
+          DaylightName : array[0..31] of WCHAR;
+          DaylightDate : SYSTEMTIME;
+          DaylightBias : LONG;
+       end;
+     LPTIME_ZONE_INFORMATION = ^TIME_ZONE_INFORMATION;
+     _TIME_ZONE_INFORMATION = TIME_ZONE_INFORMATION;
+     TTIMEZONEINFORMATION = TIME_ZONE_INFORMATION;
+     PTIMEZONEINFORMATION = ^TIME_ZONE_INFORMATION;
+
+     TOGGLEKEYS = record
+          cbSize : DWORD;
+          dwFlags : DWORD;
+       end;
+     tagTOGGLEKEYS = TOGGLEKEYS;
+     TTOGGLEKEYS = TOGGLEKEYS;
+     PTOGGLEKEYS = ^TOGGLEKEYS;
+
+     TOKEN_SOURCE = record
+          SourceName : array[0..7] of CHAR;
+          SourceIdentifier : LUID;
+       end;
+     _TOKEN_SOURCE = TOKEN_SOURCE;
+     TTOKENSOURCE = TOKEN_SOURCE;
+     PTOKENSOURCE = ^TOKEN_SOURCE;
+
+     TOKEN_CONTROL = record
+          TokenId : LUID;
+          AuthenticationId : LUID;
+          ModifiedId : LUID;
+          TokenSource : TOKEN_SOURCE;
+       end;
+     _TOKEN_CONTROL = TOKEN_CONTROL;
+     TTOKENCONTROL = TOKEN_CONTROL;
+     PTOKENCONTROL = ^TOKEN_CONTROL;
+
+     TOKEN_DEFAULT_DACL = record
+          DefaultDacl : PACL;
+       end;
+     _TOKEN_DEFAULT_DACL = TOKEN_DEFAULT_DACL;
+     TTOKENDEFAULTDACL = TOKEN_DEFAULT_DACL;
+     PTOKENDEFAULTDACL = ^TOKEN_DEFAULT_DACL;
+
+     TOKEN_GROUPS = record
+          GroupCount : DWORD;
+          Groups : array[0..(ANYSIZE_ARRAY)-1] of SID_AND_ATTRIBUTES;
+       end;
+     PTOKEN_GROUPS = ^TOKEN_GROUPS;
+     LPTOKEN_GROUPS = ^TOKEN_GROUPS;
+     _TOKEN_GROUPS = TOKEN_GROUPS;
+     TTOKENGROUPS = TOKEN_GROUPS;
+     PTOKENGROUPS = ^TOKEN_GROUPS;
+
+     TOKEN_OWNER = record
+          Owner : PSID;
+       end;
+     _TOKEN_OWNER = TOKEN_OWNER;
+     TTOKENOWNER = TOKEN_OWNER;
+     PTOKENOWNER = ^TOKEN_OWNER;
+
+     TOKEN_PRIMARY_GROUP = record
+          PrimaryGroup : PSID;
+       end;
+     _TOKEN_PRIMARY_GROUP = TOKEN_PRIMARY_GROUP;
+     TTOKENPRIMARYGROUP = TOKEN_PRIMARY_GROUP;
+     PTOKENPRIMARYGROUP = ^TOKEN_PRIMARY_GROUP;
+
+     TOKEN_PRIVILEGES = packed record
+          PrivilegeCount : DWORD;
+          Privileges : array[0..(ANYSIZE_ARRAY)-1] of LUID_AND_ATTRIBUTES;
+       end;
+
+     PTOKEN_PRIVILEGES = ^TOKEN_PRIVILEGES;
+     LPTOKEN_PRIVILEGES = ^TOKEN_PRIVILEGES;
+     _TOKEN_PRIVILEGES = TOKEN_PRIVILEGES;
+     TTOKENPRIVILEGES = TOKEN_PRIVILEGES;
+     PTOKENPRIVILEGES = ^TOKEN_PRIVILEGES;
+
+     TOKEN_STATISTICS = record
+          TokenId : LUID;
+          AuthenticationId : LUID;
+          ExpirationTime : LARGE_INTEGER;
+          TokenType : TOKEN_TYPE;
+          ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL;
+          DynamicCharged : DWORD;
+          DynamicAvailable : DWORD;
+          GroupCount : DWORD;
+          PrivilegeCount : DWORD;
+          ModifiedId : LUID;
+       end;
+     _TOKEN_STATISTICS = TOKEN_STATISTICS;
+     TTOKENSTATISTICS = TOKEN_STATISTICS;
+     PTOKENSTATISTICS = ^TOKEN_STATISTICS;
+
+     TOKEN_USER = record
+          User : SID_AND_ATTRIBUTES;
+       end;
+     _TOKEN_USER = TOKEN_USER;
+     TTOKENUSER = TOKEN_USER;
+     PTOKENUSER = ^TOKEN_USER;
+
+     TOOLINFO = record
+          cbSize : UINT;
+          uFlags : UINT;
+          hwnd : HWND;
+          uId : UINT;
+          rect : RECT;
+          hinst : HINST;
+          lpszText : LPTSTR;
+       end;
+     LPTOOLINFO = ^TOOLINFO;
+     TTOOLINFO = TOOLINFO;
+     PTOOLINFO = ^TOOLINFO;
+
+     TPMPARAMS = record
+          cbSize : UINT;
+          rcExclude : RECT;
+       end;
+     LPTPMPARAMS = ^TPMPARAMS;
+     tagTPMPARAMS = TPMPARAMS;
+     TTPMPARAMS = TPMPARAMS;
+     PTPMPARAMS = ^TPMPARAMS;
+
+     TRANSMIT_FILE_BUFFERS = record
+          Head : PVOID;
+          HeadLength : DWORD;
+          Tail : PVOID;
+          TailLength : DWORD;
+       end;
+     _TRANSMIT_FILE_BUFFERS = TRANSMIT_FILE_BUFFERS;
+     TTRANSMITFILEBUFFERS = TRANSMIT_FILE_BUFFERS;
+     PTRANSMITFILEBUFFERS = ^TRANSMIT_FILE_BUFFERS;
+
+     TTHITTESTINFO = record
+          hwnd : HWND;
+          pt : POINT;
+          ti : TOOLINFO;
+       end;
+     LPHITTESTINFO = ^TTHITTESTINFO;
+     _TT_HITTESTINFO = TTHITTESTINFO;
+     TTTHITTESTINFO = TTHITTESTINFO;
+     PTTHITTESTINFO = ^TTHITTESTINFO;
+
+     TTPOLYCURVE = record
+          wType : WORD;
+          cpfx : WORD;
+          apfx : array[0..0] of POINTFX;
+       end;
+     LPTTPOLYCURVE = ^TTPOLYCURVE;
+     tagTTPOLYCURVE = TTPOLYCURVE;
+     TTTPOLYCURVE = TTPOLYCURVE;
+     PTTPOLYCURVE = ^TTPOLYCURVE;
+
+     TTPOLYGONHEADER = record
+          cb : DWORD;
+          dwType : DWORD;
+          pfxStart : POINTFX;
+       end;
+     LPTTPOLYGONHEADER = ^TTPOLYGONHEADER;
+     _TTPOLYGONHEADER = TTPOLYGONHEADER;
+     TTTPOLYGONHEADER = TTPOLYGONHEADER;
+     PTTPOLYGONHEADER = ^TTPOLYGONHEADER;
+
+     TV_DISPINFO = record
+          hdr : NMHDR;
+          item : TV_ITEM;
+       end;
+     _TV_DISPINFO = TV_DISPINFO;
+     TTVDISPINFO = TV_DISPINFO;
+     PTVDISPINFO = ^TV_DISPINFO;
+
+     TV_HITTESTINFO = record
+          pt : POINT;
+          flags : UINT;
+          hItem : HTREEITEM;
+       end;
+     LPTV_HITTESTINFO = ^TV_HITTESTINFO;
+     _TVHITTESTINFO = TV_HITTESTINFO;
+     TTVHITTESTINFO = TV_HITTESTINFO;
+     PTVHITTESTINFO = ^TV_HITTESTINFO;
+
+     TV_INSERTSTRUCT = record
+          hParent : HTREEITEM;
+          hInsertAfter : HTREEITEM;
+          item : TV_ITEM;
+       end;
+     LPTV_INSERTSTRUCT = ^TV_INSERTSTRUCT;
+     _TV_INSERTSTRUCT = TV_INSERTSTRUCT;
+     TTVINSERTSTRUCT = TV_INSERTSTRUCT;
+     PTVINSERTSTRUCT = ^TV_INSERTSTRUCT;
+
+     TV_KEYDOWN = record
+          hdr : NMHDR;
+          wVKey : WORD;
+          flags : UINT;
+       end;
+     _TV_KEYDOWN = TV_KEYDOWN;
+     TTVKEYDOWN = TV_KEYDOWN;
+     PTVKEYDOWN = ^TV_KEYDOWN;
+
+     TV_SORTCB = record
+          hParent : HTREEITEM;
+          lpfnCompare : PFNTVCOMPARE;
+          lParam : LPARAM;
+       end;
+     LPTV_SORTCB = ^TV_SORTCB;
+     _TV_SORTCB = TV_SORTCB;
+     TTVSORTCB = TV_SORTCB;
+     PTVSORTCB = ^TV_SORTCB;
+
+     UDACCEL = record
+          nSec : UINT;
+          nInc : UINT;
+       end;
+     TUDACCEL = UDACCEL;
+     PUDACCEL = ^UDACCEL;
+
+
+     UNIVERSAL_NAME_INFO = record
+          lpUniversalName : LPTSTR;
+       end;
+     _UNIVERSAL_NAME_INFO = UNIVERSAL_NAME_INFO;
+     TUNIVERSALNAMEINFO = UNIVERSAL_NAME_INFO;
+     PUNIVERSALNAMEINFO = ^UNIVERSAL_NAME_INFO;
+
+     USEROBJECTFLAGS = record
+          fInherit : WINBOOL;
+          fReserved : WINBOOL;
+          dwFlags : DWORD;
+       end;
+     tagUSEROBJECTFLAGS = USEROBJECTFLAGS;
+     TUSEROBJECTFLAGS = USEROBJECTFLAGS;
+     PUSEROBJECTFLAGS = ^USEROBJECTFLAGS;
+
+     VALENT = record
+          ve_valuename : LPTSTR;
+          ve_valuelen : DWORD;
+          ve_valueptr : DWORD;
+          ve_type : DWORD;
+       end;
+     TVALENT = VALENT;
+     PVALENT = ^VALENT;
+
+     value_ent = VALENT;
+     Tvalue_ent = VALENT;
+     Pvalue_ent = ^VALENT;
+
+     VERIFY_INFORMATION = record
+          StartingOffset : LARGE_INTEGER;
+          Length : DWORD;
+       end;
+     _VERIFY_INFORMATION = VERIFY_INFORMATION;
+     TVERIFYINFORMATION = VERIFY_INFORMATION;
+     PVERIFYINFORMATION = ^VERIFY_INFORMATION;
+
+     VS_FIXEDFILEINFO = record
+          dwSignature : DWORD;
+          dwStrucVersion : DWORD;
+          dwFileVersionMS : DWORD;
+          dwFileVersionLS : DWORD;
+          dwProductVersionMS : DWORD;
+          dwProductVersionLS : DWORD;
+          dwFileFlagsMask : DWORD;
+          dwFileFlags : DWORD;
+          dwFileOS : DWORD;
+          dwFileType : DWORD;
+          dwFileSubtype : DWORD;
+          dwFileDateMS : DWORD;
+          dwFileDateLS : DWORD;
+       end;
+     _VS_FIXEDFILEINFO = VS_FIXEDFILEINFO;
+     TVSFIXEDFILEINFO = VS_FIXEDFILEINFO;
+     PVSFIXEDFILEINFO = ^VS_FIXEDFILEINFO;
+
+     WIN32_FIND_DATAW = record
+          dwFileAttributes : DWORD;
+          ftCreationTime : FILETIME;
+          ftLastAccessTime : FILETIME;
+          ftLastWriteTime : FILETIME;
+          nFileSizeHigh : DWORD;
+          nFileSizeLow : DWORD;
+          dwOID: DWORD;
+          cFileName : array[0..MAX_PATH] of WCHAR;
+       end;
+
+     LPWIN32_FIND_DATAW = ^WIN32_FIND_DATAW;
+     PWIN32_FIND_DATAW = ^WIN32_FIND_DATAW;
+     _WIN32_FIND_DATAW = WIN32_FIND_DATAW;
+     TWIN32FINDDATAW = WIN32_FIND_DATAW;
+     PWIN32FINDDATAW = ^WIN32_FIND_DATAW;
+
+     WIN32_FIND_DATA = WIN32_FIND_DATAW;
+     LPWIN32_FIND_DATA = ^WIN32_FIND_DATAW;
+     PWIN32_FIND_DATA = ^WIN32_FIND_DATAW;
+     _WIN32_FIND_DATA = WIN32_FIND_DATAW;
+     TWIN32FINDDATA = WIN32_FIND_DATAW;
+     PWIN32FINDDATA = ^WIN32_FIND_DATAW;
+
+     WIN32_STREAM_ID = record
+          dwStreamId : DWORD;
+          dwStreamAttributes : DWORD;
+          Size : LARGE_INTEGER;
+          dwStreamNameSize : DWORD;
+          cStreamName : ^WCHAR;
+       end;
+     _WIN32_STREAM_ID = WIN32_STREAM_ID;
+     TWIN32STREAMID = WIN32_STREAM_ID;
+     PWIN32STREAMID = ^WIN32_STREAM_ID;
+
+     WINDOWPLACEMENT = record
+          length : UINT;
+          flags : UINT;
+          showCmd : UINT;
+          ptMinPosition : POINT;
+          ptMaxPosition : POINT;
+          rcNormalPosition : RECT;
+       end;
+     _WINDOWPLACEMENT = WINDOWPLACEMENT;
+     TWINDOWPLACEMENT = WINDOWPLACEMENT;
+     PWINDOWPLACEMENT = ^WINDOWPLACEMENT;
+
+     WNDCLASS = record
+          style : UINT;
+          lpfnWndProc : WNDPROC;
+          cbClsExtra : longint;
+          cbWndExtra : longint;
+          hInstance : HANDLE;
+          hIcon : HICON;
+          hCursor : HCURSOR;
+          hbrBackground : HBRUSH;
+          lpszMenuName : LPCTSTR;
+          lpszClassName : LPCTSTR;
+       end;
+     LPWNDCLASS = ^WNDCLASS;
+     _WNDCLASS = WNDCLASS;
+     TWNDCLASSA = WNDCLASS;
+
+
+     WNDCLASSW = record
+          style : UINT;
+          lpfnWndProc : WNDPROC;
+          cbClsExtra : longint;
+          cbWndExtra : longint;
+          hInstance : HANDLE;
+          hIcon : HICON;
+          hCursor : HCURSOR;
+          hbrBackground : HBRUSH;
+          lpszMenuName : LPCWSTR;
+          lpszClassName : LPCWSTR;
+       end;
+     LPWNDCLASSW = ^WNDCLASSW;
+     _WNDCLASSW  = WNDCLASSW;
+     TWNDCLASSW  = WNDCLASSW;
+     PWNDCLASSW  = ^WNDCLASSW;
+     TWNDCLASS = WNDCLASSW;
+     PWNDCLASS = ^WNDCLASSW;
+
+     WNDCLASSEX = record
+          cbSize : UINT;
+          style : UINT;
+          lpfnWndProc : WNDPROC;
+          cbClsExtra : longint;
+          cbWndExtra : longint;
+          hInstance : HANDLE;
+          hIcon : HICON;
+          hCursor : HCURSOR;
+          hbrBackground : HBRUSH;
+          lpszMenuName : LPCTSTR;
+          lpszClassName : LPCTSTR;
+          hIconSm : HANDLE;
+       end;
+     LPWNDCLASSEX = ^WNDCLASSEX;
+     _WNDCLASSEX = WNDCLASSEX;
+     TWNDCLASSEX = WNDCLASSEX;
+     TWNDCLASSEXA = WNDCLASSEX;
+     PWNDCLASSEX = ^WNDCLASSEX;
+
+     WNDCLASSEXW = record
+          cbSize : UINT;
+          style : UINT;
+          lpfnWndProc : WNDPROC;
+          cbClsExtra : longint;
+          cbWndExtra : longint;
+          hInstance : HANDLE;
+          hIcon : HICON;
+          hCursor : HCURSOR;
+          hbrBackground : HBRUSH;
+          lpszMenuName : LPCWSTR;
+          lpszClassName : LPCWSTR;
+          hIconSm : HANDLE;
+       end;
+     LPWNDCLASSEXW = ^WNDCLASSEXW;
+     _WNDCLASSEXW  = WNDCLASSEXW;
+     TWNDCLASSEXW  = WNDCLASSEXW;
+     PWNDCLASSEXW  = ^WNDCLASSEXW;
+
+     CONNECTDLGSTRUCT = record
+          cbStructure : DWORD;
+          hwndOwner : HWND;
+          lpConnRes : LPNETRESOURCE;
+          dwFlags : DWORD;
+          dwDevNum : DWORD;
+       end;
+     LPCONNECTDLGSTRUCT = ^CONNECTDLGSTRUCT;
+     _CONNECTDLGSTRUCT = CONNECTDLGSTRUCT;
+     TCONNECTDLGSTRUCT = CONNECTDLGSTRUCT;
+     PCONNECTDLGSTRUCT = ^CONNECTDLGSTRUCT;
+
+     CONNECTDLGSTRUCTW = record //+winnetwk
+          cbStructure : DWORD;
+          hwndOwner : HWND;
+          lpConnRes : LPNETRESOURCEW;
+          dwFlags : DWORD;
+          dwDevNum : DWORD;
+       end;
+     LPCONNECTDLGSTRUCTW = ^CONNECTDLGSTRUCTW; //+winnetwk
+     _CONNECTDLGSTRUCTW = CONNECTDLGSTRUCTW;  //+winnetwk
+
+     DISCDLGSTRUCT = record
+          cbStructure : DWORD;
+          hwndOwner : HWND;
+          lpLocalName : LPTSTR;
+          lpRemoteName : LPTSTR;
+          dwFlags : DWORD;
+       end;
+     LPDISCDLGSTRUCT = ^DISCDLGSTRUCT;
+     _DISCDLGSTRUCT = DISCDLGSTRUCT;
+     TDISCDLGSTRUCT = DISCDLGSTRUCT;
+     TDISCDLGSTRUCTA = DISCDLGSTRUCT;
+     PDISCDLGSTRUCT = ^DISCDLGSTRUCT;
+
+     DISCDLGSTRUCTW = record  //+winnetwk
+          cbStructure : DWORD;
+          hwndOwner : HWND;
+          lpLocalName : LPWSTR;
+          lpRemoteName : LPWSTR;
+          dwFlags : DWORD;
+       end;
+     LPDISCDLGSTRUCTW = ^DISCDLGSTRUCTW; //+winnetwk
+     _DISCDLGSTRUCTW = DISCDLGSTRUCTW;   //+winnetwk
+
+     NETINFOSTRUCT = record
+          cbStructure : DWORD;
+          dwProviderVersion : DWORD;
+          dwStatus : DWORD;
+          dwCharacteristics : DWORD;
+          dwHandle : DWORD;
+          wNetType : WORD;
+          dwPrinters : DWORD;
+          dwDrives : DWORD;
+       end;
+     LPNETINFOSTRUCT = ^NETINFOSTRUCT;
+     _NETINFOSTRUCT = NETINFOSTRUCT;
+     TNETINFOSTRUCT = NETINFOSTRUCT;
+     PNETINFOSTRUCT = ^NETINFOSTRUCT;
+
+     NETCONNECTINFOSTRUCT = record
+          cbStructure : DWORD;
+          dwFlags : DWORD;
+          dwSpeed : DWORD;
+          dwDelay : DWORD;
+          dwOptDataSize : DWORD;
+       end;
+     LPNETCONNECTINFOSTRUCT = ^NETCONNECTINFOSTRUCT;
+     _NETCONNECTINFOSTRUCT = NETCONNECTINFOSTRUCT;
+     TNETCONNECTINFOSTRUCT = NETCONNECTINFOSTRUCT;
+     PNETCONNECTINFOSTRUCT = ^NETCONNECTINFOSTRUCT;
+
+     ENUMMETAFILEPROC = function (_para1:HDC; _para2:HANDLETABLE; _para3:METARECORD; _para4:longint; _para5:LPARAM):longint;
+
+     ENHMETAFILEPROC = function (_para1:HDC; _para2:HANDLETABLE; _para3:ENHMETARECORD; _para4:longint; _para5:LPARAM):longint;
+
+     ENUMFONTSPROC = function (_para1:LPLOGFONT; _para2:LPTEXTMETRIC; _para3:DWORD; _para4:LPARAM):longint;
+
+     FONTENUMPROC = function (var _para1:ENUMLOGFONT; var _para2:NEWTEXTMETRIC; _para3:longint; _para4:LPARAM):longint;
+
+     FONTENUMEXPROC = function (var _para1:ENUMLOGFONTEX;var _para2:NEWTEXTMETRICEX; _para3:longint; _para4:LPARAM):longint;
+
+     LPOVERLAPPED_COMPLETION_ROUTINE = procedure (_para1:DWORD; _para2:DWORD; _para3:LPOVERLAPPED);
+
+     { Structures for the extensions to OpenGL }
+
+     POINTFLOAT = record
+          x : Single;
+          y : Single;
+       end;
+     _POINTFLOAT = POINTFLOAT;
+     TPOINTFLOAT = POINTFLOAT;
+     PPOINTFLOAT = ^POINTFLOAT;
+
+     GLYPHMETRICSFLOAT = record
+          gmfBlackBoxX : Single;
+          gmfBlackBoxY : Single;
+          gmfptGlyphOrigin : POINTFLOAT;
+          gmfCellIncX : Single;
+          gmfCellIncY : Single;
+       end;
+     LPGLYPHMETRICSFLOAT = ^GLYPHMETRICSFLOAT;
+     _GLYPHMETRICSFLOAT = GLYPHMETRICSFLOAT;
+     TGLYPHMETRICSFLOAT = GLYPHMETRICSFLOAT;
+     PGLYPHMETRICSFLOAT = ^GLYPHMETRICSFLOAT;
+
+     LAYERPLANEDESCRIPTOR = record
+          nSize : WORD;
+          nVersion : WORD;
+          dwFlags : DWORD;
+          iPixelType : BYTE;
+          cColorBits : BYTE;
+          cRedBits : BYTE;
+          cRedShift : BYTE;
+          cGreenBits : BYTE;
+          cGreenShift : BYTE;
+          cBlueBits : BYTE;
+          cBlueShift : BYTE;
+          cAlphaBits : BYTE;
+          cAlphaShift : BYTE;
+          cAccumBits : BYTE;
+          cAccumRedBits : BYTE;
+          cAccumGreenBits : BYTE;
+          cAccumBlueBits : BYTE;
+          cAccumAlphaBits : BYTE;
+          cDepthBits : BYTE;
+          cStencilBits : BYTE;
+          cAuxBuffers : BYTE;
+          iLayerPlane : BYTE;
+          bReserved : BYTE;
+          crTransparent : COLORREF;
+       end;
+     LPLAYERPLANEDESCRIPTOR = ^LAYERPLANEDESCRIPTOR;
+     tagLAYERPLANEDESCRIPTOR = LAYERPLANEDESCRIPTOR;
+     TLAYERPLANEDESCRIPTOR = LAYERPLANEDESCRIPTOR;
+     PLAYERPLANEDESCRIPTOR = ^LAYERPLANEDESCRIPTOR;
+
+     PIXELFORMATDESCRIPTOR = record
+          nSize : WORD;
+          nVersion : WORD;
+          dwFlags : DWORD;
+          iPixelType : BYTE;
+          cColorBits : BYTE;
+          cRedBits : BYTE;
+          cRedShift : BYTE;
+          cGreenBits : BYTE;
+          cGreenShift : BYTE;
+          cBlueBits : BYTE;
+          cBlueShift : BYTE;
+          cAlphaBits : BYTE;
+          cAlphaShift : BYTE;
+          cAccumBits : BYTE;
+          cAccumRedBits : BYTE;
+          cAccumGreenBits : BYTE;
+          cAccumBlueBits : BYTE;
+          cAccumAlphaBits : BYTE;
+          cDepthBits : BYTE;
+          cStencilBits : BYTE;
+          cAuxBuffers : BYTE;
+          iLayerType : BYTE;
+          bReserved : BYTE;
+          dwLayerMask : DWORD;
+          dwVisibleMask : DWORD;
+          dwDamageMask : DWORD;
+       end;
+     LPPIXELFORMATDESCRIPTOR = ^PIXELFORMATDESCRIPTOR;
+     tagPIXELFORMATDESCRIPTOR = PIXELFORMATDESCRIPTOR;
+     TPIXELFORMATDESCRIPTOR = PIXELFORMATDESCRIPTOR;
+     PPIXELFORMATDESCRIPTOR = ^PIXELFORMATDESCRIPTOR;
+
+     USER_INFO_2 = record
+          usri2_name : LPWSTR;
+          usri2_password : LPWSTR;
+          usri2_password_age : DWORD;
+          usri2_priv : DWORD;
+          usri2_home_dir : LPWSTR;
+          usri2_comment : LPWSTR;
+          usri2_flags : DWORD;
+          usri2_script_path : LPWSTR;
+          usri2_auth_flags : DWORD;
+          usri2_full_name : LPWSTR;
+          usri2_usr_comment : LPWSTR;
+          usri2_parms : LPWSTR;
+          usri2_workstations : LPWSTR;
+          usri2_last_logon : DWORD;
+          usri2_last_logoff : DWORD;
+          usri2_acct_expires : DWORD;
+          usri2_max_storage : DWORD;
+          usri2_units_per_week : DWORD;
+          usri2_logon_hours : PBYTE;
+          usri2_bad_pw_count : DWORD;
+          usri2_num_logons : DWORD;
+          usri2_logon_server : LPWSTR;
+          usri2_country_code : DWORD;
+          usri2_code_page : DWORD;
+       end;
+     PUSER_INFO_2 = ^USER_INFO_2;
+     LPUSER_INFO_2 = ^USER_INFO_2;
+     TUSERINFO2 = USER_INFO_2;
+     PUSERINFO2 = ^USER_INFO_2;
+
+     USER_INFO_0 = record
+          usri0_name : LPWSTR;
+       end;
+     PUSER_INFO_0 = ^USER_INFO_0;
+     LPUSER_INFO_0 = ^USER_INFO_0;
+     TUSERINFO0 = USER_INFO_0;
+     PUSERINFO0 = ^USER_INFO_0;
+
+     USER_INFO_3 = record
+          usri3_name : LPWSTR;
+          usri3_password : LPWSTR;
+          usri3_password_age : DWORD;
+          usri3_priv : DWORD;
+          usri3_home_dir : LPWSTR;
+          usri3_comment : LPWSTR;
+          usri3_flags : DWORD;
+          usri3_script_path : LPWSTR;
+          usri3_auth_flags : DWORD;
+          usri3_full_name : LPWSTR;
+          usri3_usr_comment : LPWSTR;
+          usri3_parms : LPWSTR;
+          usri3_workstations : LPWSTR;
+          usri3_last_logon : DWORD;
+          usri3_last_logoff : DWORD;
+          usri3_acct_expires : DWORD;
+          usri3_max_storage : DWORD;
+          usri3_units_per_week : DWORD;
+          usri3_logon_hours : PBYTE;
+          usri3_bad_pw_count : DWORD;
+          usri3_num_logons : DWORD;
+          usri3_logon_server : LPWSTR;
+          usri3_country_code : DWORD;
+          usri3_code_page : DWORD;
+          usri3_user_id : DWORD;
+          usri3_primary_group_id : DWORD;
+          usri3_profile : LPWSTR;
+          usri3_home_dir_drive : LPWSTR;
+          usri3_password_expired : DWORD;
+       end;
+     PUSER_INFO_3 = ^USER_INFO_3;
+     LPUSER_INFO_3 = ^USER_INFO_3;
+     TUSERINFO3 = USER_INFO_3;
+     PUSERINFO3 = ^USER_INFO_3;
+
+     GROUP_INFO_2 = record
+          grpi2_name : LPWSTR;
+          grpi2_comment : LPWSTR;
+          grpi2_group_id : DWORD;
+          grpi2_attributes : DWORD;
+       end;
+     PGROUP_INFO_2 = ^GROUP_INFO_2;
+     TGROUPINFO2 = GROUP_INFO_2;
+     PGROUPINFO2 = ^GROUP_INFO_2;
+
+     LOCALGROUP_INFO_0 = record
+          lgrpi0_name : LPWSTR;
+       end;
+     PLOCALGROUP_INFO_0 = ^LOCALGROUP_INFO_0;
+     LPLOCALGROUP_INFO_0 = ^LOCALGROUP_INFO_0;
+     TLOCALGROUPINFO0 = LOCALGROUP_INFO_0;
+     PLOCALGROUPINFO0 = ^LOCALGROUP_INFO_0;
+
+  { PE executable header.   }
+  { Magic number, 0x5a4d  }
+  { Bytes on last page of file, 0x90  }
+  { Pages in file, 0x3  }
+  { Relocations, 0x0  }
+  { Size of header in paragraphs, 0x4  }
+  { Minimum extra paragraphs needed, 0x0  }
+  { Maximum extra paragraphs needed, 0xFFFF  }
+  { Initial (relative) SS value, 0x0  }
+  { Initial SP value, 0xb8  }
+  { Checksum, 0x0  }
+  { Initial IP value, 0x0  }
+  { Initial (relative) CS value, 0x0  }
+  { File address of relocation table, 0x40  }
+  { Overlay number, 0x0  }
+  { Reserved words, all 0x0  }
+  { OEM identifier (for e_oeminfo), 0x0  }
+  { OEM information; e_oemid specific, 0x0  }
+  { Reserved words, all 0x0  }
+  { File address of new exe header, 0x80  }
+  { We leave out the next two fields, since they aren't in the header file }
+  { DWORD dos_message[16];   text which always follows dos header  }
+  { DWORD nt_signature;      required NT signature, 0x4550  }
+
+     IMAGE_DOS_HEADER = record
+          e_magic : WORD;
+          e_cblp : WORD;
+          e_cp : WORD;
+          e_crlc : WORD;
+          e_cparhdr : WORD;
+          e_minalloc : WORD;
+          e_maxalloc : WORD;
+          e_ss : WORD;
+          e_sp : WORD;
+          e_csum : WORD;
+          e_ip : WORD;
+          e_cs : WORD;
+          e_lfarlc : WORD;
+          e_ovno : WORD;
+          e_res : array[0..3] of WORD;
+          e_oemid : WORD;
+          e_oeminfo : WORD;
+          e_res2 : array[0..9] of WORD;
+          e_lfanew : LONG;
+       end;
+     PIMAGE_DOS_HEADER = ^IMAGE_DOS_HEADER;
+     TIMAGEDOSHEADER = IMAGE_DOS_HEADER;
+     PIMAGEDOSHEADER = ^IMAGE_DOS_HEADER;
+
+      _NOTIFYICONDATAA = record
+          cbSize: DWORD;
+          Wnd: HWND;
+          uID: UINT;
+          uFlags: UINT;
+          uCallbackMessage: UINT;
+          hIcon: HICON;
+          szTip: array [0..63] of Char;
+     end;
+     _NOTIFYICONDATA = _NOTIFYICONDATAA;
+
+     _NOTIFYICONDATAW = record
+         cbSize: DWORD;
+         Wnd: HWND;
+         uID: UINT;
+         uFlags: UINT;
+         uCallbackMessage: UINT;
+         hIcon: HICON;
+         szTip: array [0..63] of Word;
+     end;
+     TNotifyIconDataA = _NOTIFYICONDATAA;
+     TNotifyIconDataW = _NOTIFYICONDATAW;
+     TNotifyIconData = TNotifyIconDataA;
+     NOTIFYICONDATAA = _NOTIFYICONDATAA;
+     NOTIFYICONDATAW = _NOTIFYICONDATAW;
+     NOTIFYICONDATA = NOTIFYICONDATAA;
+     PNotifyIconDataA = ^TNotifyIconDataA;
+     PNotifyIconDataW = ^TNotifyIconDataW;
+     PNotifyIconData = PNotifyIconDataA;
+
+     TWOHandleArray = array[0..MAXIMUM_WAIT_OBJECTS-1] of HANDLE;
+     PWOHandleArray = ^TWOHandleArray;
+
+ MMRESULT = Longint;
+
+type
+  PWaveFormatEx = ^TWaveFormatEx;
+  TWaveFormatEx = packed record
+    wFormatTag: Word;       { format type }
+    nChannels: Word;        { number of channels (i.e. mono, stereo, etc.) }
+    nSamplesPerSec: DWORD;  { sample rate }
+    nAvgBytesPerSec: DWORD; { for buffer estimation }
+    nBlockAlign: Word;      { block size of data }
+    wBitsPerSample: Word;   { number of bits per sample of mono data }
+    cbSize: Word;           { the count in bytes of the size of }
+  end;
+
+  _WIN32_FILE_ATTRIBUTE_DATA = packed record
+    dwFileAttributes:     DWORD;
+    ftCreationTime:       FILETIME;
+    ftLastAccessTime:     FILETIME;
+    ftLastWriteTime:      FILETIME;
+    nFileSizeHigh:        DWORD;
+    nFileSizeLow:         DWORD;
+    end;
+  WIN32_FILE_ATTRIBUTE_DATA   = _WIN32_FILE_ATTRIBUTE_DATA ;
+  LPWIN32_FILE_ATTRIBUTE_DATA = ^_WIN32_FILE_ATTRIBUTE_DATA;
+  TWIN32FILEATTRIBUTEDATA     = _WIN32_FILE_ATTRIBUTE_DATA ;
+  PWIN32FILEATTRIBUTEDATA     = ^_WIN32_FILE_ATTRIBUTE_DATA;
+
+  // TrackMouseEvent. NT or higher only.
+  TTrackMouseEvent = Record
+    cbSize : DWORD;
+    dwFlags : DWORD;
+    hwndTrack : HWND;
+    dwHoverTime : DWORD;
+  end;
+  PTrackMouseEvent = ^TTrackMouseEvent;
+
+{$endif read_interface}
+
+
+{$ifdef read_implementation}
+
+  function fBinary(var a : DCB) : DWORD;
+    begin
+       fBinary:=(a.flags and bm_DCB_fBinary) shr bp_DCB_fBinary;
+    end;
+
+  procedure set_fBinary(var a : DCB; __fBinary : DWORD);
+    begin
+       a.flags:=a.flags or ((__fBinary shl bp_DCB_fBinary) and bm_DCB_fBinary);
+    end;
+
+  function fParity(var a : DCB) : DWORD;
+    begin
+       fParity:=(a.flags and bm_DCB_fParity) shr bp_DCB_fParity;
+    end;
+
+  procedure set_fParity(var a : DCB; __fParity : DWORD);
+    begin
+       a.flags:=a.flags or ((__fParity shl bp_DCB_fParity) and bm_DCB_fParity);
+    end;
+
+  function fOutxCtsFlow(var a : DCB) : DWORD;
+    begin
+       fOutxCtsFlow:=(a.flags and bm_DCB_fOutxCtsFlow) shr bp_DCB_fOutxCtsFlow;
+    end;
+
+  procedure set_fOutxCtsFlow(var a : DCB; __fOutxCtsFlow : DWORD);
+    begin
+       a.flags:=a.flags or ((__fOutxCtsFlow shl bp_DCB_fOutxCtsFlow) and bm_DCB_fOutxCtsFlow);
+    end;
+
+  function fOutxDsrFlow(var a : DCB) : DWORD;
+    begin
+       fOutxDsrFlow:=(a.flags and bm_DCB_fOutxDsrFlow) shr bp_DCB_fOutxDsrFlow;
+    end;
+
+  procedure set_fOutxDsrFlow(var a : DCB; __fOutxDsrFlow : DWORD);
+    begin
+       a.flags:=a.flags or ((__fOutxDsrFlow shl bp_DCB_fOutxDsrFlow) and bm_DCB_fOutxDsrFlow);
+    end;
+
+  function fDtrControl(var a : DCB) : DWORD;
+    begin
+       fDtrControl:=(a.flags and bm_DCB_fDtrControl) shr bp_DCB_fDtrControl;
+    end;
+
+  procedure set_fDtrControl(var a : DCB; __fDtrControl : DWORD);
+    begin
+       a.flags:=a.flags or ((__fDtrControl shl bp_DCB_fDtrControl) and bm_DCB_fDtrControl);
+    end;
+
+  function fDsrSensitivity(var a : DCB) : DWORD;
+    begin
+       fDsrSensitivity:=(a.flags and bm_DCB_fDsrSensitivity) shr bp_DCB_fDsrSensitivity;
+    end;
+
+  procedure set_fDsrSensitivity(var a : DCB; __fDsrSensitivity : DWORD);
+    begin
+       a.flags:=a.flags or ((__fDsrSensitivity shl bp_DCB_fDsrSensitivity) and bm_DCB_fDsrSensitivity);
+    end;
+
+  function fTXContinueOnXoff(var a : DCB) : DWORD;
+    begin
+       fTXContinueOnXoff:=(a.flags and bm_DCB_fTXContinueOnXoff) shr bp_DCB_fTXContinueOnXoff;
+    end;
+
+  procedure set_fTXContinueOnXoff(var a : DCB; __fTXContinueOnXoff : DWORD);
+    begin
+       a.flags:=a.flags or ((__fTXContinueOnXoff shl bp_DCB_fTXContinueOnXoff) and bm_DCB_fTXContinueOnXoff);
+    end;
+
+  function fOutX(var a : DCB) : DWORD;
+    begin
+       fOutX:=(a.flags and bm_DCB_fOutX) shr bp_DCB_fOutX;
+    end;
+
+  procedure set_fOutX(var a : DCB; __fOutX : DWORD);
+    begin
+       a.flags:=a.flags or ((__fOutX shl bp_DCB_fOutX) and bm_DCB_fOutX);
+    end;
+
+  function fInX(var a : DCB) : DWORD;
+    begin
+       fInX:=(a.flags and bm_DCB_fInX) shr bp_DCB_fInX;
+    end;
+
+  procedure set_fInX(var a : DCB; __fInX : DWORD);
+    begin
+       a.flags:=a.flags or ((__fInX shl bp_DCB_fInX) and bm_DCB_fInX);
+    end;
+
+  function fErrorChar(var a : DCB) : DWORD;
+    begin
+       fErrorChar:=(a.flags and bm_DCB_fErrorChar) shr bp_DCB_fErrorChar;
+    end;
+
+  procedure set_fErrorChar(var a : DCB; __fErrorChar : DWORD);
+    begin
+       a.flags:=a.flags or ((__fErrorChar shl bp_DCB_fErrorChar) and bm_DCB_fErrorChar);
+    end;
+
+  function fNull(var a : DCB) : DWORD;
+    begin
+       fNull:=(a.flags and bm_DCB_fNull) shr bp_DCB_fNull;
+    end;
+
+  procedure set_fNull(var a : DCB; __fNull : DWORD);
+    begin
+       a.flags:=a.flags or ((__fNull shl bp_DCB_fNull) and bm_DCB_fNull);
+    end;
+
+  function fRtsControl(var a : DCB) : DWORD;
+    begin
+       fRtsControl:=(a.flags and bm_DCB_fRtsControl) shr bp_DCB_fRtsControl;
+    end;
+
+  procedure set_fRtsControl(var a : DCB; __fRtsControl : DWORD);
+    begin
+       a.flags:=a.flags or ((__fRtsControl shl bp_DCB_fRtsControl) and bm_DCB_fRtsControl);
+    end;
+
+  function fAbortOnError(var a : DCB) : DWORD;
+    begin
+       fAbortOnError:=(a.flags and bm_DCB_fAbortOnError) shr bp_DCB_fAbortOnError;
+    end;
+
+  procedure set_fAbortOnError(var a : DCB; __fAbortOnError : DWORD);
+    begin
+       a.flags:=a.flags or ((__fAbortOnError shl bp_DCB_fAbortOnError) and bm_DCB_fAbortOnError);
+    end;
+
+  function fDummy2(var a : DCB) : DWORD;
+    begin
+       fDummy2:=(a.flags and bm_DCB_fDummy2) shr bp_DCB_fDummy2;
+    end;
+
+  procedure set_fDummy2(var a : DCB; __fDummy2 : DWORD);
+    begin
+       a.flags:=a.flags or ((__fDummy2 shl bp_DCB_fDummy2) and bm_DCB_fDummy2);
+    end;
+
+  function fCtsHold(var a : COMSTAT) : DWORD;
+    begin
+       fCtsHold:=(a.flag0 and bm_COMSTAT_fCtsHold) shr bp_COMSTAT_fCtsHold;
+    end;
+
+  procedure set_fCtsHold(var a : COMSTAT; __fCtsHold : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fCtsHold shl bp_COMSTAT_fCtsHold) and bm_COMSTAT_fCtsHold);
+    end;
+
+  function fDsrHold(var a : COMSTAT) : DWORD;
+    begin
+       fDsrHold:=(a.flag0 and bm_COMSTAT_fDsrHold) shr bp_COMSTAT_fDsrHold;
+    end;
+
+  procedure set_fDsrHold(var a : COMSTAT; __fDsrHold : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fDsrHold shl bp_COMSTAT_fDsrHold) and bm_COMSTAT_fDsrHold);
+    end;
+
+  function fRlsdHold(var a : COMSTAT) : DWORD;
+    begin
+       fRlsdHold:=(a.flag0 and bm_COMSTAT_fRlsdHold) shr bp_COMSTAT_fRlsdHold;
+    end;
+
+  procedure set_fRlsdHold(var a : COMSTAT; __fRlsdHold : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fRlsdHold shl bp_COMSTAT_fRlsdHold) and bm_COMSTAT_fRlsdHold);
+    end;
+
+  function fXoffHold(var a : COMSTAT) : DWORD;
+    begin
+       fXoffHold:=(a.flag0 and bm_COMSTAT_fXoffHold) shr bp_COMSTAT_fXoffHold;
+    end;
+
+  procedure set_fXoffHold(var a : COMSTAT; __fXoffHold : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fXoffHold shl bp_COMSTAT_fXoffHold) and bm_COMSTAT_fXoffHold);
+    end;
+
+  function fXoffSent(var a : COMSTAT) : DWORD;
+    begin
+       fXoffSent:=(a.flag0 and bm_COMSTAT_fXoffSent) shr bp_COMSTAT_fXoffSent;
+    end;
+
+  procedure set_fXoffSent(var a : COMSTAT; __fXoffSent : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fXoffSent shl bp_COMSTAT_fXoffSent) and bm_COMSTAT_fXoffSent);
+    end;
+
+  function fEof(var a : COMSTAT) : DWORD;
+    begin
+       fEof:=(a.flag0 and bm_COMSTAT_fEof) shr bp_COMSTAT_fEof;
+    end;
+
+  procedure set_fEof(var a : COMSTAT; __fEof : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fEof shl bp_COMSTAT_fEof) and bm_COMSTAT_fEof);
+    end;
+
+  function fTxim(var a : COMSTAT) : DWORD;
+    begin
+       fTxim:=(a.flag0 and bm_COMSTAT_fTxim) shr bp_COMSTAT_fTxim;
+    end;
+
+  procedure set_fTxim(var a : COMSTAT; __fTxim : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fTxim shl bp_COMSTAT_fTxim) and bm_COMSTAT_fTxim);
+    end;
+
+  function fReserved(var a : COMSTAT) : DWORD;
+    begin
+       fReserved:=(a.flag0 and bm_COMSTAT_fReserved) shr bp_COMSTAT_fReserved;
+    end;
+
+  procedure set_fReserved(var a : COMSTAT; __fReserved : DWORD);
+    begin
+       a.flag0:=a.flag0 or ((__fReserved shl bp_COMSTAT_fReserved) and bm_COMSTAT_fReserved);
+    end;
+
+  function bAppReturnCode(var a : DDEACK) : word;
+    begin
+       bAppReturnCode:=(a.flag0 and bm_DDEACK_bAppReturnCode) shr bp_DDEACK_bAppReturnCode;
+    end;
+
+  procedure set_bAppReturnCode(var a : DDEACK; __bAppReturnCode : word);
+    begin
+       a.flag0:=a.flag0 or ((__bAppReturnCode shl bp_DDEACK_bAppReturnCode) and bm_DDEACK_bAppReturnCode);
+    end;
+
+  function reserved(var a : DDEACK) : word;
+    begin
+       reserved:=(a.flag0 and bm_DDEACK_reserved) shr bp_DDEACK_reserved;
+    end;
+
+  procedure set_reserved(var a : DDEACK; __reserved : word);
+    begin
+       a.flag0:=a.flag0 or ((__reserved shl bp_DDEACK_reserved) and bm_DDEACK_reserved);
+    end;
+
+  function fBusy(var a : DDEACK) : word;
+    begin
+       fBusy:=(a.flag0 and bm_DDEACK_fBusy) shr bp_DDEACK_fBusy;
+    end;
+
+  procedure set_fBusy(var a : DDEACK; __fBusy : word);
+    begin
+       a.flag0:=a.flag0 or ((__fBusy shl bp_DDEACK_fBusy) and bm_DDEACK_fBusy);
+    end;
+
+  function fAck(var a : DDEACK) : word;
+    begin
+       fAck:=(a.flag0 and bm_DDEACK_fAck) shr bp_DDEACK_fAck;
+    end;
+
+  procedure set_fAck(var a : DDEACK; __fAck : word);
+    begin
+       a.flag0:=a.flag0 or ((__fAck shl bp_DDEACK_fAck) and bm_DDEACK_fAck);
+    end;
+
+  function reserved(var a : DDEADVISE) : word;
+    begin
+       reserved:=(a.flag0 and bm_DDEADVISE_reserved) shr bp_DDEADVISE_reserved;
+    end;
+
+  procedure set_reserved(var a : DDEADVISE; __reserved : word);
+    begin
+       a.flag0:=a.flag0 or ((__reserved shl bp_DDEADVISE_reserved) and bm_DDEADVISE_reserved);
+    end;
+
+  function fDeferUpd(var a : DDEADVISE) : word;
+    begin
+       fDeferUpd:=(a.flag0 and bm_DDEADVISE_fDeferUpd) shr bp_DDEADVISE_fDeferUpd;
+    end;
+
+  procedure set_fDeferUpd(var a : DDEADVISE; __fDeferUpd : word);
+    begin
+       a.flag0:=a.flag0 or ((__fDeferUpd shl bp_DDEADVISE_fDeferUpd) and bm_DDEADVISE_fDeferUpd);
+    end;
+
+  function fAckReq(var a : DDEADVISE) : word;
+    begin
+       fAckReq:=(a.flag0 and bm_DDEADVISE_fAckReq) shr bp_DDEADVISE_fAckReq;
+    end;
+
+  procedure set_fAckReq(var a : DDEADVISE; __fAckReq : word);
+    begin
+       a.flag0:=a.flag0 or ((__fAckReq shl bp_DDEADVISE_fAckReq) and bm_DDEADVISE_fAckReq);
+    end;
+
+  function unused(var a : DDEDATA) : word;
+    begin
+       unused:=(a.flag0 and bm_DDEDATA_unused) shr bp_DDEDATA_unused;
+    end;
+
+  procedure set_unused(var a : DDEDATA; __unused : word);
+    begin
+       a.flag0:=a.flag0 or ((__unused shl bp_DDEDATA_unused) and bm_DDEDATA_unused);
+    end;
+
+  function fResponse(var a : DDEDATA) : word;
+    begin
+       fResponse:=(a.flag0 and bm_DDEDATA_fResponse) shr bp_DDEDATA_fResponse;
+    end;
+
+  procedure set_fResponse(var a : DDEDATA; __fResponse : word);
+    begin
+       a.flag0:=a.flag0 or ((__fResponse shl bp_DDEDATA_fResponse) and bm_DDEDATA_fResponse);
+    end;
+
+  function fRelease(var a : DDEDATA) : word;
+    begin
+       fRelease:=(a.flag0 and bm_DDEDATA_fRelease) shr bp_DDEDATA_fRelease;
+    end;
+
+  procedure set_fRelease(var a : DDEDATA; __fRelease : word);
+    begin
+       a.flag0:=a.flag0 or ((__fRelease shl bp_DDEDATA_fRelease) and bm_DDEDATA_fRelease);
+    end;
+
+  function reserved(var a : DDEDATA) : word;
+    begin
+       reserved:=(a.flag0 and bm_DDEDATA_reserved) shr bp_DDEDATA_reserved;
+    end;
+
+  procedure set_reserved(var a : DDEDATA; __reserved : word);
+    begin
+       a.flag0:=a.flag0 or ((__reserved shl bp_DDEDATA_reserved) and bm_DDEDATA_reserved);
+    end;
+
+  function fAckReq(var a : DDEDATA) : word;
+    begin
+       fAckReq:=(a.flag0 and bm_DDEDATA_fAckReq) shr bp_DDEDATA_fAckReq;
+    end;
+
+  procedure set_fAckReq(var a : DDEDATA; __fAckReq : word);
+    begin
+       a.flag0:=a.flag0 or ((__fAckReq shl bp_DDEDATA_fAckReq) and bm_DDEDATA_fAckReq);
+    end;
+
+  function unused(var a : DDELN) : word;
+    begin
+       unused:=(a.flag0 and bm_DDELN_unused) shr bp_DDELN_unused;
+    end;
+
+  procedure set_unused(var a : DDELN; __unused : word);
+    begin
+       a.flag0:=a.flag0 or ((__unused shl bp_DDELN_unused) and bm_DDELN_unused);
+    end;
+
+  function fRelease(var a : DDELN) : word;
+    begin
+       fRelease:=(a.flag0 and bm_DDELN_fRelease) shr bp_DDELN_fRelease;
+    end;
+
+  procedure set_fRelease(var a : DDELN; __fRelease : word);
+    begin
+       a.flag0:=a.flag0 or ((__fRelease shl bp_DDELN_fRelease) and bm_DDELN_fRelease);
+    end;
+
+  function fDeferUpd(var a : DDELN) : word;
+    begin
+       fDeferUpd:=(a.flag0 and bm_DDELN_fDeferUpd) shr bp_DDELN_fDeferUpd;
+    end;
+
+  procedure set_fDeferUpd(var a : DDELN; __fDeferUpd : word);
+    begin
+       a.flag0:=a.flag0 or ((__fDeferUpd shl bp_DDELN_fDeferUpd) and bm_DDELN_fDeferUpd);
+    end;
+
+  function fAckReq(var a : DDELN) : word;
+    begin
+       fAckReq:=(a.flag0 and bm_DDELN_fAckReq) shr bp_DDELN_fAckReq;
+    end;
+
+  procedure set_fAckReq(var a : DDELN; __fAckReq : word);
+    begin
+       a.flag0:=a.flag0 or ((__fAckReq shl bp_DDELN_fAckReq) and bm_DDELN_fAckReq);
+    end;
+
+  function unused(var a : DDEPOKE) : word;
+    begin
+       unused:=(a.flag0 and bm_DDEPOKE_unused) shr bp_DDEPOKE_unused;
+    end;
+
+  procedure set_unused(var a : DDEPOKE; __unused : word);
+    begin
+       a.flag0:=a.flag0 or ((__unused shl bp_DDEPOKE_unused) and bm_DDEPOKE_unused);
+    end;
+
+  function fRelease(var a : DDEPOKE) : word;
+    begin
+       fRelease:=(a.flag0 and bm_DDEPOKE_fRelease) shr bp_DDEPOKE_fRelease;
+    end;
+
+  procedure set_fRelease(var a : DDEPOKE; __fRelease : word);
+    begin
+       a.flag0:=a.flag0 or ((__fRelease shl bp_DDEPOKE_fRelease) and bm_DDEPOKE_fRelease);
+    end;
+
+  function fReserved(var a : DDEPOKE) : word;
+    begin
+       fReserved:=(a.flag0 and bm_DDEPOKE_fReserved) shr bp_DDEPOKE_fReserved;
+    end;
+
+  procedure set_fReserved(var a : DDEPOKE; __fReserved : word);
+    begin
+       a.flag0:=a.flag0 or ((__fReserved shl bp_DDEPOKE_fReserved) and bm_DDEPOKE_fReserved);
+    end;
+
+  function unused(var a : DDEUP) : word;
+    begin
+       unused:=(a.flag0 and bm_DDEUP_unused) shr bp_DDEUP_unused;
+    end;
+
+  procedure set_unused(var a : DDEUP; __unused : word);
+    begin
+       a.flag0:=a.flag0 or ((__unused shl bp_DDEUP_unused) and bm_DDEUP_unused);
+    end;
+
+  function fAck(var a : DDEUP) : word;
+    begin
+       fAck:=(a.flag0 and bm_DDEUP_fAck) shr bp_DDEUP_fAck;
+    end;
+
+  procedure set_fAck(var a : DDEUP; __fAck : word);
+    begin
+       a.flag0:=a.flag0 or ((__fAck shl bp_DDEUP_fAck) and bm_DDEUP_fAck);
+    end;
+
+  function fRelease(var a : DDEUP) : word;
+    begin
+       fRelease:=(a.flag0 and bm_DDEUP_fRelease) shr bp_DDEUP_fRelease;
+    end;
+
+  procedure set_fRelease(var a : DDEUP; __fRelease : word);
+    begin
+       a.flag0:=a.flag0 or ((__fRelease shl bp_DDEUP_fRelease) and bm_DDEUP_fRelease);
+    end;
+
+  function fReserved(var a : DDEUP) : word;
+    begin
+       fReserved:=(a.flag0 and bm_DDEUP_fReserved) shr bp_DDEUP_fReserved;
+    end;
+
+  procedure set_fReserved(var a : DDEUP; __fReserved : word);
+    begin
+       a.flag0:=a.flag0 or ((__fReserved shl bp_DDEUP_fReserved) and bm_DDEUP_fReserved);
+    end;
+
+  function fAckReq(var a : DDEUP) : word;
+    begin
+       fAckReq:=(a.flag0 and bm_DDEUP_fAckReq) shr bp_DDEUP_fAckReq;
+    end;
+
+  procedure set_fAckReq(var a : DDEUP; __fAckReq : word);
+    begin
+       a.flag0:=a.flag0 or ((__fAckReq shl bp_DDEUP_fAckReq) and bm_DDEUP_fAckReq);
+    end;
+
+{$endif read_implementation}
+

+ 1807 - 0
rtl/wince/wininc/tapi.inc

@@ -0,0 +1,1807 @@
+{
+    This file is part of the Free Pascal run time library.
+    Copyright (c) 2007 Free Pascal development team.
+
+    See the file COPYING.FPC, included in this distribution,
+    for details about the copyright.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+
+{ Declarations for tapi WinCE API, note than on WinCE tapi functions originally
+  based in coredll.dll
+}
+
+{ this port based on Windows Mobile 5 Smartphone Edition SDK
+  contact S0vNark0m for more information [email protected] (en, ru)
+}
+
+{$ifdef read_interface}
+
+//*****************************************************************************
+// consts
+//*****************************************************************************
+
+const
+
+  TAPI_CURRENT_VERSION = $00020000;
+
+  { Messages for Phones and Lines }
+
+  LINE_ADDRESSSTATE = 0;
+  LINE_CALLINFO = 1;
+  LINE_CALLSTATE = 2;
+  LINE_CLOSE = 3;
+  LINE_DEVSPECIFIC = 4;
+  LINE_DEVSPECIFICFEATURE = 5;
+  LINE_GATHERDIGITS = 6;
+  LINE_GENERATE = 7;
+  LINE_LINEDEVSTATE = 8;
+  LINE_MONITORDIGITS = 9;
+  LINE_MONITORMEDIA = 10;
+  LINE_MONITORTONE = 11;
+  LINE_REPLY = 12;
+  LINE_REQUEST = 13;
+  PHONE_BUTTON = 14;
+  PHONE_CLOSE = 15;
+  PHONE_DEVSPECIFIC = 16;
+  PHONE_REPLY = 17;
+  PHONE_STATE = 18;
+  LINE_CREATE = 19;       { TAPI v1.4 }
+  PHONE_CREATE = 20;       { TAPI v1.4 }
+
+  LINE_AGENTSPECIFIC = 21;       { TAPI v2.0 }
+  LINE_AGENTSTATUS = 22;       { TAPI v2.0 }
+  LINE_APPNEWCALL = 23;       { TAPI v2.0 }
+  LINE_PROXYREQUEST = 24;       { TAPI v2.0 }
+  LINE_REMOVE = 25;       { TAPI v2.0 }
+  PHONE_REMOVE = 26;       { TAPI v2.0 }
+
+  INITIALIZE_NEGOTIATION = $FFFFFFFF;
+
+  LINEADDRCAPFLAGS_FWDNUMRINGS = $00000001;
+  LINEADDRCAPFLAGS_PICKUPGROUPID = $00000002;
+  LINEADDRCAPFLAGS_SECURE = $00000004;
+  LINEADDRCAPFLAGS_BLOCKIDDEFAULT = $00000008;
+  LINEADDRCAPFLAGS_BLOCKIDOVERRIDE = $00000010;
+  LINEADDRCAPFLAGS_DIALED = $00000020;
+  LINEADDRCAPFLAGS_ORIGOFFHOOK = $00000040;
+  LINEADDRCAPFLAGS_DESTOFFHOOK = $00000080;
+  LINEADDRCAPFLAGS_FWDCONSULT = $00000100;
+  LINEADDRCAPFLAGS_SETUPCONFNULL = $00000200;
+  LINEADDRCAPFLAGS_AUTORECONNECT = $00000400;
+  LINEADDRCAPFLAGS_COMPLETIONID = $00000800;
+  LINEADDRCAPFLAGS_TRANSFERHELD = $00001000;
+  LINEADDRCAPFLAGS_TRANSFERMAKE = $00002000;
+  LINEADDRCAPFLAGS_CONFERENCEHELD = $00004000;
+  LINEADDRCAPFLAGS_CONFERENCEMAKE = $00008000;
+  LINEADDRCAPFLAGS_PARTIALDIAL = $00010000;
+  LINEADDRCAPFLAGS_FWDSTATUSVALID = $00020000;
+  LINEADDRCAPFLAGS_FWDINTEXTADDR = $00040000;
+  LINEADDRCAPFLAGS_FWDBUSYNAADDR = $00080000;
+  LINEADDRCAPFLAGS_ACCEPTTOALERT = $00100000;
+  LINEADDRCAPFLAGS_CONFDROP = $00200000;
+  LINEADDRCAPFLAGS_PICKUPCALLWAIT = $00400000;
+  LINEADDRCAPFLAGS_PREDICTIVEDIALER = $00800000;       { TAPI v2.0 }
+  LINEADDRCAPFLAGS_QUEUE = $01000000;       { TAPI v2.0 }
+  LINEADDRCAPFLAGS_ROUTEPOINT = $02000000;       { TAPI v2.0 }
+  LINEADDRCAPFLAGS_HOLDMAKESNEW = $04000000;       { TAPI v2.0 }
+  LINEADDRCAPFLAGS_NOINTERNALCALLS = $08000000;       { TAPI v2.0 }
+  LINEADDRCAPFLAGS_NOEXTERNALCALLS = $10000000;       { TAPI v2.0 }
+  LINEADDRCAPFLAGS_SETCALLINGID = $20000000;       { TAPI v2.0 }
+
+  LINEADDRESSMODE_ADDRESSID = $00000001;
+  LINEADDRESSMODE_DIALABLEADDR = $00000002;
+
+  LINEADDRESSSHARING_PRIVATE = $00000001;
+  LINEADDRESSSHARING_BRIDGEDEXCL = $00000002;
+  LINEADDRESSSHARING_BRIDGEDNEW = $00000004;
+  LINEADDRESSSHARING_BRIDGEDSHARED = $00000008;
+  LINEADDRESSSHARING_MONITORED = $00000010;
+
+  LINEADDRESSSTATE_OTHER = $00000001;
+  LINEADDRESSSTATE_DEVSPECIFIC = $00000002;
+  LINEADDRESSSTATE_INUSEZERO = $00000004;
+  LINEADDRESSSTATE_INUSEONE = $00000008;
+  LINEADDRESSSTATE_INUSEMANY = $00000010;
+  LINEADDRESSSTATE_NUMCALLS = $00000020;
+  LINEADDRESSSTATE_FORWARD = $00000040;
+  LINEADDRESSSTATE_TERMINALS = $00000080;
+  LINEADDRESSSTATE_CAPSCHANGE = $00000100;       { TAPI v1.4 }
+
+  LINEADDRESSTYPE_PHONENUMBER = $00000001;
+  LINEADDRESSTYPE_SDP = $00000002;
+  LINEADDRESSTYPE_EMAILNAME = $00000004;
+  LINEADDRESSTYPE_DOMAINNAME = $00000008;
+  LINEADDRESSTYPE_IPADDRESS = $00000010;
+
+  LINEADDRFEATURE_FORWARD = $00000001;
+  LINEADDRFEATURE_MAKECALL = $00000002;
+  LINEADDRFEATURE_PICKUP = $00000004;
+  LINEADDRFEATURE_SETMEDIACONTROL = $00000008;
+  LINEADDRFEATURE_SETTERMINAL = $00000010;
+  LINEADDRFEATURE_SETUPCONF = $00000020;
+  LINEADDRFEATURE_UNCOMPLETECALL = $00000040;
+  LINEADDRFEATURE_UNPARK = $00000080;
+  LINEADDRFEATURE_PICKUPHELD = $00000100;       { TAPI v2.0 }
+  LINEADDRFEATURE_PICKUPGROUP = $00000200;       { TAPI v2.0 }
+  LINEADDRFEATURE_PICKUPDIRECT = $00000400;       { TAPI v2.0 }
+  LINEADDRFEATURE_PICKUPWAITING = $00000800;       { TAPI v2.0 }
+  LINEADDRFEATURE_FORWARDFWD = $00001000;       { TAPI v2.0 }
+  LINEADDRFEATURE_FORWARDDND = $00002000;       { TAPI v2.0 }
+
+  LINEAGENTFEATURE_SETAGENTGROUP = $00000001;       { TAPI v2.0 }
+  LINEAGENTFEATURE_SETAGENTSTATE = $00000002;       { TAPI v2.0 }
+  LINEAGENTFEATURE_SETAGENTACTIVITY = $00000004;       { TAPI v2.0 }
+  LINEAGENTFEATURE_AGENTSPECIFIC = $00000008;       { TAPI v2.0 }
+  LINEAGENTFEATURE_GETAGENTACTIVITYLIST = $00000010;       { TAPI v2.0 }
+  LINEAGENTFEATURE_GETAGENTGROUP = $00000020;       { TAPI v2.0 }
+
+  LINEAGENTSTATE_LOGGEDOFF = $00000001;       { TAPI v2.0 }
+  LINEAGENTSTATE_NOTREADY = $00000002;       { TAPI v2.0 }
+  LINEAGENTSTATE_READY = $00000004;       { TAPI v2.0 }
+  LINEAGENTSTATE_BUSYACD = $00000008;       { TAPI v2.0 }
+  LINEAGENTSTATE_BUSYINCOMING = $00000010;       { TAPI v2.0 }
+  LINEAGENTSTATE_BUSYOUTBOUND = $00000020;       { TAPI v2.0 }
+  LINEAGENTSTATE_BUSYOTHER = $00000040;       { TAPI v2.0 }
+  LINEAGENTSTATE_WORKINGAFTERCALL = $00000080;       { TAPI v2.0 }
+  LINEAGENTSTATE_UNKNOWN = $00000100;       { TAPI v2.0 }
+  LINEAGENTSTATE_UNAVAIL = $00000200;       { TAPI v2.0 }
+
+  LINEAGENTSTATUS_GROUP = $00000001;       { TAPI v2.0 }
+  LINEAGENTSTATUS_STATE = $00000002;       { TAPI v2.0 }
+  LINEAGENTSTATUS_NEXTSTATE = $00000004;       { TAPI v2.0 }
+  LINEAGENTSTATUS_ACTIVITY = $00000008;       { TAPI v2.0 }
+  LINEAGENTSTATUS_ACTIVITYLIST = $00000010;       { TAPI v2.0 }
+  LINEAGENTSTATUS_GROUPLIST = $00000020;       { TAPI v2.0 }
+  LINEAGENTSTATUS_CAPSCHANGE = $00000040;       { TAPI v2.0 }
+  LINEAGENTSTATUS_VALIDSTATES = $00000080;       { TAPI v2.0 }
+  LINEAGENTSTATUS_VALIDNEXTSTATES = $00000100;       { TAPI v2.0 }
+
+  LINEANSWERMODE_NONE = $00000001;
+  LINEANSWERMODE_DROP = $00000002;
+  LINEANSWERMODE_HOLD = $00000004;
+  LINEBEARERMODE_VOICE = $00000001;
+  LINEBEARERMODE_SPEECH = $00000002;
+  LINEBEARERMODE_MULTIUSE = $00000004;
+  LINEBEARERMODE_DATA = $00000008;
+  LINEBEARERMODE_ALTSPEECHDATA = $00000010;
+  LINEBEARERMODE_NONCALLSIGNALING = $00000020;
+  LINEBEARERMODE_PASSTHROUGH = $00000040;       { TAPI v1.4 }
+  LINEBEARERMODE_RESTRICTEDDATA = $00000080;       { TAPI v2.0 }
+
+  LINEBUSYMODE_STATION = $00000001;
+  LINEBUSYMODE_TRUNK = $00000002;
+  LINEBUSYMODE_UNKNOWN = $00000004;
+  LINEBUSYMODE_UNAVAIL = $00000008;
+
+  LINECALLCOMPLCOND_BUSY = $00000001;
+  LINECALLCOMPLCOND_NOANSWER = $00000002;
+
+  LINECALLCOMPLMODE_CAMPON = $00000001;
+  LINECALLCOMPLMODE_CALLBACK = $00000002;
+  LINECALLCOMPLMODE_INTRUDE = $00000004;
+  LINECALLCOMPLMODE_MESSAGE = $00000008;
+
+  LINECALLFEATURE_ACCEPT = $00000001;
+  LINECALLFEATURE_ADDTOCONF = $00000002;
+  LINECALLFEATURE_ANSWER = $00000004;
+  LINECALLFEATURE_BLINDTRANSFER = $00000008;
+  LINECALLFEATURE_COMPLETECALL = $00000010;
+  LINECALLFEATURE_COMPLETETRANSF = $00000020;
+  LINECALLFEATURE_DIAL = $00000040;
+  LINECALLFEATURE_DROP = $00000080;
+  LINECALLFEATURE_GATHERDIGITS = $00000100;
+  LINECALLFEATURE_GENERATEDIGITS = $00000200;
+  LINECALLFEATURE_GENERATETONE = $00000400;
+  LINECALLFEATURE_HOLD = $00000800;
+  LINECALLFEATURE_MONITORDIGITS = $00001000;
+  LINECALLFEATURE_MONITORMEDIA = $00002000;
+  LINECALLFEATURE_MONITORTONES = $00004000;
+  LINECALLFEATURE_PARK = $00008000;
+  LINECALLFEATURE_PREPAREADDCONF = $00010000;
+  LINECALLFEATURE_REDIRECT = $00020000;
+  LINECALLFEATURE_REMOVEFROMCONF = $00040000;
+  LINECALLFEATURE_SECURECALL = $00080000;
+  LINECALLFEATURE_SENDUSERUSER = $00100000;
+  LINECALLFEATURE_SETCALLPARAMS = $00200000;
+  LINECALLFEATURE_SETMEDIACONTROL = $00400000;
+  LINECALLFEATURE_SETTERMINAL = $00800000;
+  LINECALLFEATURE_SETUPCONF = $01000000;
+  LINECALLFEATURE_SETUPTRANSFER = $02000000;
+  LINECALLFEATURE_SWAPHOLD = $04000000;
+  LINECALLFEATURE_UNHOLD = $08000000;
+  LINECALLFEATURE_RELEASEUSERUSERINFO = $10000000;       { TAPI v1.4 }
+  LINECALLFEATURE_SETTREATMENT = $20000000;       { TAPI v2.0 }
+  LINECALLFEATURE_SETQOS = $40000000;       { TAPI v2.0 }
+  LINECALLFEATURE_SETCALLDATA = $80000000;       { TAPI v2.0 }
+
+  LINECALLFEATURE2_NOHOLDCONFERENCE = $00000001;       { TAPI v2.0 }
+  LINECALLFEATURE2_ONESTEPTRANSFER = $00000002;       { TAPI v2.0 }
+  LINECALLFEATURE2_COMPLCAMPON = $00000004;       { TAPI v2.0 }
+  LINECALLFEATURE2_COMPLCALLBACK = $00000008;       { TAPI v2.0 }
+  LINECALLFEATURE2_COMPLINTRUDE = $00000010;       { TAPI v2.0 }
+  LINECALLFEATURE2_COMPLMESSAGE = $00000020;       { TAPI v2.0 }
+  LINECALLFEATURE2_TRANSFERNORM = $00000040;       { TAPI v2.0 }
+  LINECALLFEATURE2_TRANSFERCONF = $00000080;       { TAPI v2.0 }
+  LINECALLFEATURE2_PARKDIRECT = $00000100;       { TAPI v2.0 }
+  LINECALLFEATURE2_PARKNONDIRECT = $00000200;       { TAPI v2.0 }
+
+  LINECALLINFOSTATE_OTHER = $00000001;
+  LINECALLINFOSTATE_DEVSPECIFIC = $00000002;
+  LINECALLINFOSTATE_BEARERMODE = $00000004;
+  LINECALLINFOSTATE_RATE = $00000008;
+  LINECALLINFOSTATE_MEDIAMODE = $00000010;
+  LINECALLINFOSTATE_APPSPECIFIC = $00000020;
+  LINECALLINFOSTATE_CALLID = $00000040;
+  LINECALLINFOSTATE_RELATEDCALLID = $00000080;
+  LINECALLINFOSTATE_ORIGIN = $00000100;
+  LINECALLINFOSTATE_REASON = $00000200;
+  LINECALLINFOSTATE_COMPLETIONID = $00000400;
+  LINECALLINFOSTATE_NUMOWNERINCR = $00000800;
+  LINECALLINFOSTATE_NUMOWNERDECR = $00001000;
+  LINECALLINFOSTATE_NUMMONITORS = $00002000;
+  LINECALLINFOSTATE_TRUNK = $00004000;
+  LINECALLINFOSTATE_CALLERID = $00008000;
+  LINECALLINFOSTATE_CALLEDID = $00010000;
+  LINECALLINFOSTATE_CONNECTEDID = $00020000;
+  LINECALLINFOSTATE_REDIRECTIONID = $00040000;
+  LINECALLINFOSTATE_REDIRECTINGID = $00080000;
+  LINECALLINFOSTATE_DISPLAY = $00100000;
+  LINECALLINFOSTATE_USERUSERINFO = $00200000;
+  LINECALLINFOSTATE_HIGHLEVELCOMP = $00400000;
+  LINECALLINFOSTATE_LOWLEVELCOMP = $00800000;
+  LINECALLINFOSTATE_CHARGINGINFO = $01000000;
+  LINECALLINFOSTATE_TERMINAL = $02000000;
+  LINECALLINFOSTATE_DIALPARAMS = $04000000;
+  LINECALLINFOSTATE_MONITORMODES = $08000000;
+  LINECALLINFOSTATE_TREATMENT = $10000000;       { TAPI v2.0 }
+  LINECALLINFOSTATE_QOS = $20000000;       { TAPI v2.0 }
+  LINECALLINFOSTATE_CALLDATA = $40000000;       { TAPI v2.0 }
+
+  LINECALLORIGIN_OUTBOUND = $00000001;
+  LINECALLORIGIN_INTERNAL = $00000002;
+  LINECALLORIGIN_EXTERNAL = $00000004;
+  LINECALLORIGIN_UNKNOWN = $00000010;
+  LINECALLORIGIN_UNAVAIL = $00000020;
+  LINECALLORIGIN_CONFERENCE = $00000040;
+  LINECALLORIGIN_INBOUND = $00000080;       { TAPI v1.4 }
+
+  LINECALLPARAMFLAGS_SECURE = $00000001;
+  LINECALLPARAMFLAGS_IDLE = $00000002;
+  LINECALLPARAMFLAGS_BLOCKID = $00000004;
+  LINECALLPARAMFLAGS_ORIGOFFHOOK = $00000008;
+  LINECALLPARAMFLAGS_DESTOFFHOOK = $00000010;
+  LINECALLPARAMFLAGS_NOHOLDCONFERENCE = $00000020;       { TAPI v2.0 }
+  LINECALLPARAMFLAGS_PREDICTIVEDIAL = $00000040;       { TAPI v2.0 }
+  LINECALLPARAMFLAGS_ONESTEPTRANSFER = $00000080;       { TAPI v2.0 }
+
+  LINECALLPARTYID_BLOCKED = $00000001;
+  LINECALLPARTYID_OUTOFAREA = $00000002;
+  LINECALLPARTYID_NAME = $00000004;
+  LINECALLPARTYID_ADDRESS = $00000008;
+  LINECALLPARTYID_PARTIAL = $00000010;
+  LINECALLPARTYID_UNKNOWN = $00000020;
+  LINECALLPARTYID_UNAVAIL = $00000040;
+
+  LINECALLPRIVILEGE_NONE = $00000001;
+  LINECALLPRIVILEGE_MONITOR = $00000002;
+  LINECALLPRIVILEGE_OWNER = $00000004;
+
+  LINECALLREASON_DIRECT = $00000001;
+  LINECALLREASON_FWDBUSY = $00000002;
+  LINECALLREASON_FWDNOANSWER = $00000004;
+  LINECALLREASON_FWDUNCOND = $00000008;
+  LINECALLREASON_PICKUP = $00000010;
+  LINECALLREASON_UNPARK = $00000020;
+  LINECALLREASON_REDIRECT = $00000040;
+  LINECALLREASON_CALLCOMPLETION = $00000080;
+  LINECALLREASON_TRANSFER = $00000100;
+  LINECALLREASON_REMINDER = $00000200;
+  LINECALLREASON_UNKNOWN = $00000400;
+  LINECALLREASON_UNAVAIL = $00000800;
+  LINECALLREASON_INTRUDE = $00001000;       { TAPI v1.4 }
+  LINECALLREASON_PARKED = $00002000;       { TAPI v1.4 }
+  LINECALLREASON_CAMPEDON = $00004000;       { TAPI v2.0 }
+  LINECALLREASON_ROUTEREQUEST = $00008000;       { TAPI v2.0 }
+
+  LINECALLSELECT_LINE = $00000001;
+  LINECALLSELECT_ADDRESS = $00000002;
+  LINECALLSELECT_CALL = $00000004;
+  LINECALLSELECT_DEVICEID = $00000008;       { TAPI v2.1 }
+  LINECALLSELECT_CALLID = $00000010;       { TAPI v3.0 }
+
+  LINECALLSTATE_IDLE = $00000001;
+  LINECALLSTATE_OFFERING = $00000002;
+  LINECALLSTATE_ACCEPTED = $00000004;
+  LINECALLSTATE_DIALTONE = $00000008;
+  LINECALLSTATE_DIALING = $00000010;
+  LINECALLSTATE_RINGBACK = $00000020;
+  LINECALLSTATE_BUSY = $00000040;
+  LINECALLSTATE_SPECIALINFO = $00000080;
+  LINECALLSTATE_CONNECTED = $00000100;
+  LINECALLSTATE_PROCEEDING = $00000200;
+  LINECALLSTATE_ONHOLD = $00000400;
+  LINECALLSTATE_CONFERENCED = $00000800;
+  LINECALLSTATE_ONHOLDPENDCONF = $00001000;
+  LINECALLSTATE_ONHOLDPENDTRANSFER = $00002000;
+  LINECALLSTATE_DISCONNECTED = $00004000;
+  LINECALLSTATE_UNKNOWN = $00008000;
+
+  LINECALLTREATMENT_SILENCE = $00000001;       { TAPI v2.0 }
+  LINECALLTREATMENT_RINGBACK = $00000002;       { TAPI v2.0 }
+  LINECALLTREATMENT_BUSY = $00000003;       { TAPI v2.0 }
+  LINECALLTREATMENT_MUSIC = $00000004;       { TAPI v2.0 }
+
+  LINECARDOPTION_PREDEFINED = $00000001;       { TAPI v1.4 }
+  LINECARDOPTION_HIDDEN = $00000002;       { TAPI v1.4 }
+
+  LINECONNECTEDMODE_ACTIVE = $00000001;       { TAPI v1.4 }
+  LINECONNECTEDMODE_INACTIVE = $00000002;       { TAPI v1.4 }
+  LINECONNECTEDMODE_ACTIVEHELD = $00000004;       { TAPI v2.0 }
+  LINECONNECTEDMODE_INACTIVEHELD = $00000008;       { TAPI v2.0 }
+  LINECONNECTEDMODE_CONFIRMED = $00000010;       { TAPI v2.0 }
+
+  LINEDEVCAPFLAGS_CROSSADDRCONF = $00000001;
+  LINEDEVCAPFLAGS_HIGHLEVCOMP = $00000002;
+  LINEDEVCAPFLAGS_LOWLEVCOMP = $00000004;
+  LINEDEVCAPFLAGS_MEDIACONTROL = $00000008;
+  LINEDEVCAPFLAGS_MULTIPLEADDR = $00000010;
+  LINEDEVCAPFLAGS_CLOSEDROP = $00000020;
+  LINEDEVCAPFLAGS_DIALBILLING = $00000040;
+  LINEDEVCAPFLAGS_DIALQUIET = $00000080;
+  LINEDEVCAPFLAGS_DIALDIALTONE = $00000100;
+  LINEDEVCAPFLAGS_MSP = $00000200;       { TAPI v3.0 }
+  LINEDEVCAPFLAGS_CALLHUB = $00000400;       { TAPI v3.0 }
+  LINEDEVCAPFLAGS_CALLHUBTRACKING = $00000800;       { TAPI v3.0 }
+  LINEDEVCAPFLAGS_PRIVATEOBJECTS = $00001000;       { TAPI v3.0 }
+
+  LINEDEVSTATE_OTHER = $00000001;
+  LINEDEVSTATE_RINGING = $00000002;
+  LINEDEVSTATE_CONNECTED = $00000004;
+  LINEDEVSTATE_DISCONNECTED = $00000008;
+  LINEDEVSTATE_MSGWAITON = $00000010;
+  LINEDEVSTATE_MSGWAITOFF = $00000020;
+  LINEDEVSTATE_INSERVICE = $00000040;
+  LINEDEVSTATE_OUTOFSERVICE = $00000080;
+  LINEDEVSTATE_MAINTENANCE = $00000100;
+  LINEDEVSTATE_OPEN = $00000200;
+  LINEDEVSTATE_CLOSE = $00000400;
+  LINEDEVSTATE_NUMCALLS = $00000800;
+  LINEDEVSTATE_NUMCOMPLETIONS = $00001000;
+  LINEDEVSTATE_TERMINALS = $00002000;
+  LINEDEVSTATE_ROAMMODE = $00004000;
+  LINEDEVSTATE_BATTERY = $00008000;
+  LINEDEVSTATE_SIGNAL = $00010000;
+  LINEDEVSTATE_DEVSPECIFIC = $00020000;
+  LINEDEVSTATE_REINIT = $00040000;
+  LINEDEVSTATE_LOCK = $00080000;
+  LINEDEVSTATE_CAPSCHANGE = $00100000;       { TAPI v1.4 }
+  LINEDEVSTATE_CONFIGCHANGE = $00200000;       { TAPI v1.4 }
+  LINEDEVSTATE_TRANSLATECHANGE = $00400000;       { TAPI v1.4 }
+  LINEDEVSTATE_COMPLCANCEL = $00800000;       { TAPI v1.4 }
+  LINEDEVSTATE_REMOVED = $01000000;       { TAPI v1.4 }
+
+  LINEDEVSTATUSFLAGS_CONNECTED = $00000001;
+  LINEDEVSTATUSFLAGS_MSGWAIT = $00000002;
+  LINEDEVSTATUSFLAGS_INSERVICE = $00000004;
+  LINEDEVSTATUSFLAGS_LOCKED = $00000008;
+
+  LINEDIALTONEMODE_NORMAL = $00000001;
+  LINEDIALTONEMODE_SPECIAL = $00000002;
+  LINEDIALTONEMODE_INTERNAL = $00000004;
+  LINEDIALTONEMODE_EXTERNAL = $00000008;
+  LINEDIALTONEMODE_UNKNOWN = $00000010;
+  LINEDIALTONEMODE_UNAVAIL = $00000020;
+
+  LINEDIGITMODE_PULSE = $00000001;
+  LINEDIGITMODE_DTMF = $00000002;
+  LINEDIGITMODE_DTMFEND = $00000004;
+
+  LINEDISCONNECTMODE_NORMAL = $00000001;
+  LINEDISCONNECTMODE_UNKNOWN = $00000002;
+  LINEDISCONNECTMODE_REJECT = $00000004;
+  LINEDISCONNECTMODE_PICKUP = $00000008;
+  LINEDISCONNECTMODE_FORWARDED = $00000010;
+  LINEDISCONNECTMODE_BUSY = $00000020;
+  LINEDISCONNECTMODE_NOANSWER = $00000040;
+  LINEDISCONNECTMODE_BADADDRESS = $00000080;
+  LINEDISCONNECTMODE_UNREACHABLE = $00000100;
+  LINEDISCONNECTMODE_CONGESTION = $00000200;
+  LINEDISCONNECTMODE_INCOMPATIBLE = $00000400;
+  LINEDISCONNECTMODE_UNAVAIL = $00000800;
+  LINEDISCONNECTMODE_NODIALTONE = $00001000;       { TAPI v1.4 }
+  LINEDISCONNECTMODE_NUMBERCHANGED = $00002000;       { TAPI v2.0 }
+  LINEDISCONNECTMODE_OUTOFORDER = $00004000;       { TAPI v2.0 }
+  LINEDISCONNECTMODE_TEMPFAILURE = $00008000;       { TAPI v2.0 }
+  LINEDISCONNECTMODE_QOSUNAVAIL = $00010000;       { TAPI v2.0 }
+  LINEDISCONNECTMODE_BLOCKED = $00020000;       { TAPI v2.0 }
+  LINEDISCONNECTMODE_DONOTDISTURB = $00040000;       { TAPI v2.0 }
+  LINEDISCONNECTMODE_CANCELLED = $00080000;       { TAPI v2.0 }
+
+  LINEERR_ALLOCATED = $80000001;
+  LINEERR_BADDEVICEID = $80000002;
+  LINEERR_BEARERMODEUNAVAIL = $80000003;
+  LINEERR_CALLUNAVAIL = $80000005;
+  LINEERR_COMPLETIONOVERRUN = $80000006;
+  LINEERR_CONFERENCEFULL = $80000007;
+  LINEERR_DIALBILLING = $80000008;
+  LINEERR_DIALDIALTONE = $80000009;
+  LINEERR_DIALPROMPT = $8000000A;
+  LINEERR_DIALQUIET = $8000000B;
+  LINEERR_INCOMPATIBLEAPIVERSION = $8000000C;
+  LINEERR_INCOMPATIBLEEXTVERSION = $8000000D;
+  LINEERR_INIFILECORRUPT = $8000000E;
+  LINEERR_INUSE = $8000000F;
+  LINEERR_INVALADDRESS = $80000010;
+  LINEERR_INVALADDRESSID = $80000011;
+  LINEERR_INVALADDRESSMODE = $80000012;
+  LINEERR_INVALADDRESSSTATE = $80000013;
+  LINEERR_INVALAPPHANDLE = $80000014;
+  LINEERR_INVALAPPNAME = $80000015;
+  LINEERR_INVALBEARERMODE = $80000016;
+  LINEERR_INVALCALLCOMPLMODE = $80000017;
+  LINEERR_INVALCALLHANDLE = $80000018;
+  LINEERR_INVALCALLPARAMS = $80000019;
+  LINEERR_INVALCALLPRIVILEGE = $8000001A;
+  LINEERR_INVALCALLSELECT = $8000001B;
+  LINEERR_INVALCALLSTATE = $8000001C;
+  LINEERR_INVALCALLSTATELIST = $8000001D;
+  LINEERR_INVALCARD = $8000001E;
+  LINEERR_INVALCOMPLETIONID = $8000001F;
+  LINEERR_INVALCONFCALLHANDLE = $80000020;
+  LINEERR_INVALCONSULTCALLHANDLE = $80000021;
+  LINEERR_INVALCOUNTRYCODE = $80000022;
+  LINEERR_INVALDEVICECLASS = $80000023;
+  LINEERR_INVALDEVICEHANDLE = $80000024;
+  LINEERR_INVALDIALPARAMS = $80000025;
+  LINEERR_INVALDIGITLIST = $80000026;
+  LINEERR_INVALDIGITMODE = $80000027;
+  LINEERR_INVALDIGITS = $80000028;
+  LINEERR_INVALEXTVERSION = $80000029;
+  LINEERR_INVALGROUPID = $8000002A;
+  LINEERR_INVALLINEHANDLE = $8000002B;
+  LINEERR_INVALLINESTATE = $8000002C;
+  LINEERR_INVALLOCATION = $8000002D;
+  LINEERR_INVALMEDIALIST = $8000002E;
+  LINEERR_INVALMEDIAMODE = $8000002F;
+  LINEERR_INVALMESSAGEID = $80000030;
+  LINEERR_INVALPARAM = $80000032;
+  LINEERR_INVALPARKID = $80000033;
+  LINEERR_INVALPARKMODE = $80000034;
+  LINEERR_INVALPOINTER = $80000035;
+  LINEERR_INVALPRIVSELECT = $80000036;
+  LINEERR_INVALRATE = $80000037;
+  LINEERR_INVALREQUESTMODE = $80000038;
+  LINEERR_INVALTERMINALID = $80000039;
+  LINEERR_INVALTERMINALMODE = $8000003A;
+  LINEERR_INVALTIMEOUT = $8000003B;
+  LINEERR_INVALTONE = $8000003C;
+  LINEERR_INVALTONELIST = $8000003D;
+  LINEERR_INVALTONEMODE = $8000003E;
+  LINEERR_INVALTRANSFERMODE = $8000003F;
+  LINEERR_LINEMAPPERFAILED = $80000040;
+  LINEERR_NOCONFERENCE = $80000041;
+  LINEERR_NODEVICE = $80000042;
+  LINEERR_NODRIVER = $80000043;
+  LINEERR_NOMEM = $80000044;
+  LINEERR_NOREQUEST = $80000045;
+  LINEERR_NOTOWNER = $80000046;
+  LINEERR_NOTREGISTERED = $80000047;
+  LINEERR_OPERATIONFAILED = $80000048;
+  LINEERR_OPERATIONUNAVAIL = $80000049;
+  LINEERR_RATEUNAVAIL = $8000004A;
+  LINEERR_RESOURCEUNAVAIL = $8000004B;
+  LINEERR_REQUESTOVERRUN = $8000004C;
+  LINEERR_STRUCTURETOOSMALL = $8000004D;
+  LINEERR_TARGETNOTFOUND = $8000004E;
+  LINEERR_TARGETSELF = $8000004F;
+  LINEERR_UNINITIALIZED = $80000050;
+  LINEERR_USERUSERINFOTOOBIG = $80000051;
+  LINEERR_REINIT = $80000052;
+  LINEERR_ADDRESSBLOCKED = $80000053;
+  LINEERR_BILLINGREJECTED = $80000054;
+  LINEERR_INVALFEATURE = $80000055;
+  LINEERR_NOMULTIPLEINSTANCE = $80000056;
+  LINEERR_INVALAGENTID = $80000057;       { TAPI v2.0 }
+  LINEERR_INVALAGENTGROUP = $80000058;       { TAPI v2.0 }
+  LINEERR_INVALPASSWORD = $80000059;       { TAPI v2.0 }
+  LINEERR_INVALAGENTSTATE = $8000005A;       { TAPI v2.0 }
+  LINEERR_INVALAGENTACTIVITY = $8000005B;       { TAPI v2.0 }
+  LINEERR_DIALVOICEDETECT = $8000005C;       { TAPI v2.0 }
+
+  LINEFEATURE_DEVSPECIFIC = $00000001;
+  LINEFEATURE_DEVSPECIFICFEAT = $00000002;
+  LINEFEATURE_FORWARD = $00000004;
+  LINEFEATURE_MAKECALL = $00000008;
+  LINEFEATURE_SETMEDIACONTROL = $00000010;
+  LINEFEATURE_SETTERMINAL = $00000020;
+  LINEFEATURE_SETDEVSTATUS = $00000040;       { TAPI v2.0 }
+  LINEFEATURE_FORWARDFWD = $00000080;       { TAPI v2.0 }
+  LINEFEATURE_FORWARDDND = $00000100;       { TAPI v2.0 }
+
+  LINEFORWARDMODE_UNCOND = $00000001;
+  LINEFORWARDMODE_UNCONDINTERNAL = $00000002;
+  LINEFORWARDMODE_UNCONDEXTERNAL = $00000004;
+  LINEFORWARDMODE_UNCONDSPECIFIC = $00000008;
+  LINEFORWARDMODE_BUSY = $00000010;
+  LINEFORWARDMODE_BUSYINTERNAL = $00000020;
+  LINEFORWARDMODE_BUSYEXTERNAL = $00000040;
+  LINEFORWARDMODE_BUSYSPECIFIC = $00000080;
+  LINEFORWARDMODE_NOANSW = $00000100;
+  LINEFORWARDMODE_NOANSWINTERNAL = $00000200;
+  LINEFORWARDMODE_NOANSWEXTERNAL = $00000400;
+  LINEFORWARDMODE_NOANSWSPECIFIC = $00000800;
+  LINEFORWARDMODE_BUSYNA = $00001000;
+  LINEFORWARDMODE_BUSYNAINTERNAL = $00002000;
+  LINEFORWARDMODE_BUSYNAEXTERNAL = $00004000;
+  LINEFORWARDMODE_BUSYNASPECIFIC = $00008000;
+  LINEFORWARDMODE_UNKNOWN = $00010000;       { TAPI v1.4 }
+  LINEFORWARDMODE_UNAVAIL = $00020000;       { TAPI v1.4 }
+
+  LINEGATHERTERM_BUFFERFULL = $00000001;
+  LINEGATHERTERM_TERMDIGIT = $00000002;
+  LINEGATHERTERM_FIRSTTIMEOUT = $00000004;
+  LINEGATHERTERM_INTERTIMEOUT = $00000008;
+  LINEGATHERTERM_CANCEL = $00000010;
+
+  LINEGENERATETERM_DONE = $00000001;
+  LINEGENERATETERM_CANCEL = $00000002;
+
+ { These constants are mutually exclusive - there's no way to specify more }
+ { than one at a time (and it doesn't make sense, either) so they're }
+ { ordinal rather than bits. }
+
+  LINEINITIALIZEEXOPTION_USEHIDDENWINDOW = $00000001;       { TAPI v2.0 }
+  LINEINITIALIZEEXOPTION_USEEVENT = $00000002;       { TAPI v2.0 }
+  LINEINITIALIZEEXOPTION_USECOMPLETIONPORT = $00000003;       { TAPI v2.0 }
+
+  LINELOCATIONOPTION_PULSEDIAL = $00000001;       { TAPI v1.4 }
+
+  LINEMAPPER = $FFFFFFFF;
+
+  LINEMEDIACONTROL_NONE = $00000001;
+  LINEMEDIACONTROL_START = $00000002;
+  LINEMEDIACONTROL_RESET = $00000004;
+  LINEMEDIACONTROL_PAUSE = $00000008;
+  LINEMEDIACONTROL_RESUME = $00000010;
+  LINEMEDIACONTROL_RATEUP = $00000020;
+  LINEMEDIACONTROL_RATEDOWN = $00000040;
+  LINEMEDIACONTROL_RATENORMAL = $00000080;
+  LINEMEDIACONTROL_VOLUMEUP = $00000100;
+  LINEMEDIACONTROL_VOLUMEDOWN = $00000200;
+  LINEMEDIACONTROL_VOLUMENORMAL = $00000400;
+
+  LINEMEDIAMODE_UNKNOWN = $00000002;
+  LINEMEDIAMODE_INTERACTIVEVOICE = $00000004;
+  LINEMEDIAMODE_AUTOMATEDVOICE = $00000008;
+  LINEMEDIAMODE_DATAMODEM = $00000010;
+  LINEMEDIAMODE_G3FAX = $00000020;
+  LINEMEDIAMODE_TDD = $00000040;
+  LINEMEDIAMODE_G4FAX = $00000080;
+  LINEMEDIAMODE_DIGITALDATA = $00000100;
+  LINEMEDIAMODE_TELETEX = $00000200;
+  LINEMEDIAMODE_VIDEOTEX = $00000400;
+  LINEMEDIAMODE_TELEX = $00000800;
+  LINEMEDIAMODE_MIXED = $00001000;
+  LINEMEDIAMODE_ADSI = $00002000;
+  LINEMEDIAMODE_VOICEVIEW = $00004000;       { TAPI v1.4 }
+  LAST_LINEMEDIAMODE = $00004000;
+
+  LINEOFFERINGMODE_ACTIVE = $00000001;       { TAPI v1.4 }
+  LINEOFFERINGMODE_INACTIVE = $00000002;       { TAPI v1.4 }
+
+  LINEOPENOPTION_SINGLEADDRESS = $80000000;       { TAPI v2.0 }
+  LINEOPENOPTION_PROXY = $40000000;       { TAPI v2.0 }
+
+  LINEPARKMODE_DIRECTED = $00000001;
+  LINEPARKMODE_NONDIRECTED = $00000002;
+
+  LINEPROXYREQUEST_SETAGENTGROUP = $00000001;       { TAPI v2.0 }
+  LINEPROXYREQUEST_SETAGENTSTATE = $00000002;       { TAPI v2.0 }
+  LINEPROXYREQUEST_SETAGENTACTIVITY = $00000003;       { TAPI v2.0 }
+  LINEPROXYREQUEST_GETAGENTCAPS = $00000004;       { TAPI v2.0 }
+  LINEPROXYREQUEST_GETAGENTSTATUS = $00000005;       { TAPI v2.0 }
+  LINEPROXYREQUEST_AGENTSPECIFIC = $00000006;       { TAPI v2.0 }
+  LINEPROXYREQUEST_GETAGENTACTIVITYLIST = $00000007;       { TAPI v2.0 }
+  LINEPROXYREQUEST_GETAGENTGROUPLIST = $00000008;       { TAPI v2.0 }
+
+  LINEREMOVEFROMCONF_NONE = $00000001;
+  LINEREMOVEFROMCONF_LAST = $00000002;
+  LINEREMOVEFROMCONF_ANY = $00000003;
+
+  LINEREQUESTMODE_MAKECALL = $00000001;
+  LINEREQUESTMODE_MEDIACALL = $00000002;
+  LINEREQUESTMODE_DROP = $00000004;
+
+  LAST_LINEREQUESTMODE = LINEREQUESTMODE_MEDIACALL;
+
+  LINEROAMMODE_UNKNOWN = $00000001;
+  LINEROAMMODE_UNAVAIL = $00000002;
+  LINEROAMMODE_HOME = $00000004;
+  LINEROAMMODE_ROAMA = $00000008;
+  LINEROAMMODE_ROAMB = $00000010;
+
+  LINESPECIALINFO_NOCIRCUIT = $00000001;
+  LINESPECIALINFO_CUSTIRREG = $00000002;
+  LINESPECIALINFO_REORDER = $00000004;
+  LINESPECIALINFO_UNKNOWN = $00000008;
+  LINESPECIALINFO_UNAVAIL = $00000010;
+
+  LINETERMDEV_PHONE = $00000001;
+  LINETERMDEV_HEADSET = $00000002;
+  LINETERMDEV_SPEAKER = $00000004;
+
+  LINETERMMODE_BUTTONS = $00000001;
+  LINETERMMODE_LAMPS = $00000002;
+  LINETERMMODE_DISPLAY = $00000004;
+  LINETERMMODE_RINGER = $00000008;
+  LINETERMMODE_HOOKSWITCH = $00000010;
+  LINETERMMODE_MEDIATOLINE = $00000020;
+  LINETERMMODE_MEDIAFROMLINE = $00000040;
+  LINETERMMODE_MEDIABIDIRECT = $00000080;
+
+  LINETERMSHARING_PRIVATE = $00000001;
+  LINETERMSHARING_SHAREDEXCL = $00000002;
+  LINETERMSHARING_SHAREDCONF = $00000004;
+
+  LINETOLLLISTOPTION_ADD = $00000001;
+  LINETOLLLISTOPTION_REMOVE = $00000002;
+
+  LINETONEMODE_CUSTOM = $00000001;
+  LINETONEMODE_RINGBACK = $00000002;
+  LINETONEMODE_BUSY = $00000004;
+  LINETONEMODE_BEEP = $00000008;
+  LINETONEMODE_BILLING = $00000010;
+
+  LINETRANSFERMODE_TRANSFER = $00000001;
+  LINETRANSFERMODE_CONFERENCE = $00000002;
+
+  LINETRANSLATEOPTION_CARDOVERRIDE = $00000001;
+  LINETRANSLATEOPTION_CANCELCALLWAITING = $00000002;       { TAPI v1.4 }
+  LINETRANSLATEOPTION_FORCELOCAL = $00000004;       { TAPI v1.4 }
+  LINETRANSLATEOPTION_FORCELD = $00000008;       { TAPI v1.4 }
+  LINETRANSLATERESULT_CANONICAL = $00000001;
+  LINETRANSLATERESULT_INTERNATIONAL = $00000002;
+  LINETRANSLATERESULT_LONGDISTANCE = $00000004;
+  LINETRANSLATERESULT_LOCAL = $00000008;
+  LINETRANSLATERESULT_INTOLLLIST = $00000010;
+  LINETRANSLATERESULT_NOTINTOLLLIST = $00000020;
+  LINETRANSLATERESULT_DIALBILLING = $00000040;
+  LINETRANSLATERESULT_DIALQUIET = $00000080;
+  LINETRANSLATERESULT_DIALDIALTONE = $00000100;
+  LINETRANSLATERESULT_DIALPROMPT = $00000200;
+  LINETRANSLATERESULT_VOICEDETECT = $00000400;       { TAPI v2.0 }
+
+  PHONEBUTTONFUNCTION_UNKNOWN = $00000000;
+  PHONEBUTTONFUNCTION_CONFERENCE = $00000001;
+  PHONEBUTTONFUNCTION_TRANSFER = $00000002;
+  PHONEBUTTONFUNCTION_DROP = $00000003;
+  PHONEBUTTONFUNCTION_HOLD = $00000004;
+  PHONEBUTTONFUNCTION_RECALL = $00000005;
+  PHONEBUTTONFUNCTION_DISCONNECT = $00000006;
+  PHONEBUTTONFUNCTION_CONNECT = $00000007;
+  PHONEBUTTONFUNCTION_MSGWAITON = $00000008;
+  PHONEBUTTONFUNCTION_MSGWAITOFF = $00000009;
+  PHONEBUTTONFUNCTION_SELECTRING = $0000000A;
+  PHONEBUTTONFUNCTION_ABBREVDIAL = $0000000B;
+  PHONEBUTTONFUNCTION_FORWARD = $0000000C;
+  PHONEBUTTONFUNCTION_PICKUP = $0000000D;
+  PHONEBUTTONFUNCTION_RINGAGAIN = $0000000E;
+  PHONEBUTTONFUNCTION_PARK = $0000000F;
+  PHONEBUTTONFUNCTION_REJECT = $00000010;
+  PHONEBUTTONFUNCTION_REDIRECT = $00000011;
+  PHONEBUTTONFUNCTION_MUTE = $00000012;
+  PHONEBUTTONFUNCTION_VOLUMEUP = $00000013;
+  PHONEBUTTONFUNCTION_VOLUMEDOWN = $00000014;
+  PHONEBUTTONFUNCTION_SPEAKERON = $00000015;
+  PHONEBUTTONFUNCTION_SPEAKEROFF = $00000016;
+  PHONEBUTTONFUNCTION_FLASH = $00000017;
+  PHONEBUTTONFUNCTION_DATAON = $00000018;
+  PHONEBUTTONFUNCTION_DATAOFF = $00000019;
+  PHONEBUTTONFUNCTION_DONOTDISTURB = $0000001A;
+  PHONEBUTTONFUNCTION_INTERCOM = $0000001B;
+  PHONEBUTTONFUNCTION_BRIDGEDAPP = $0000001C;
+  PHONEBUTTONFUNCTION_BUSY = $0000001D;
+  PHONEBUTTONFUNCTION_CALLAPP = $0000001E;
+  PHONEBUTTONFUNCTION_DATETIME = $0000001F;
+  PHONEBUTTONFUNCTION_DIRECTORY = $00000020;
+  PHONEBUTTONFUNCTION_COVER = $00000021;
+  PHONEBUTTONFUNCTION_CALLID = $00000022;
+  PHONEBUTTONFUNCTION_LASTNUM = $00000023;
+  PHONEBUTTONFUNCTION_NIGHTSRV = $00000024;
+  PHONEBUTTONFUNCTION_SENDCALLS = $00000025;
+  PHONEBUTTONFUNCTION_MSGINDICATOR = $00000026;
+  PHONEBUTTONFUNCTION_REPDIAL = $00000027;
+  PHONEBUTTONFUNCTION_SETREPDIAL = $00000028;
+  PHONEBUTTONFUNCTION_SYSTEMSPEED = $00000029;
+  PHONEBUTTONFUNCTION_STATIONSPEED = $0000002A;
+  PHONEBUTTONFUNCTION_CAMPON = $0000002B;
+  PHONEBUTTONFUNCTION_SAVEREPEAT = $0000002C;
+  PHONEBUTTONFUNCTION_QUEUECALL = $0000002D;
+  PHONEBUTTONFUNCTION_NONE = $0000002E;
+
+  PHONEBUTTONMODE_DUMMY = $00000001;
+  PHONEBUTTONMODE_CALL = $00000002;
+  PHONEBUTTONMODE_FEATURE = $00000004;
+  PHONEBUTTONMODE_KEYPAD = $00000008;
+  PHONEBUTTONMODE_LOCAL = $00000010;
+  PHONEBUTTONMODE_DISPLAY = $00000020;
+
+  PHONEBUTTONSTATE_UP = $00000001;
+  PHONEBUTTONSTATE_DOWN = $00000002;
+  PHONEBUTTONSTATE_UNKNOWN = $00000004;       { TAPI v1.4 }
+  PHONEBUTTONSTATE_UNAVAIL = $00000008;       { TAPI v1.4 }
+
+  PHONEERR_ALLOCATED = $90000001;
+  PHONEERR_BADDEVICEID = $90000002;
+  PHONEERR_INCOMPATIBLEAPIVERSION = $90000003;
+  PHONEERR_INCOMPATIBLEEXTVERSION = $90000004;
+  PHONEERR_INIFILECORRUPT = $90000005;
+  PHONEERR_INUSE = $90000006;
+  PHONEERR_INVALAPPHANDLE = $90000007;
+  PHONEERR_INVALAPPNAME = $90000008;
+  PHONEERR_INVALBUTTONLAMPID = $90000009;
+  PHONEERR_INVALBUTTONMODE = $9000000A;
+  PHONEERR_INVALBUTTONSTATE = $9000000B;
+  PHONEERR_INVALDATAID = $9000000C;
+  PHONEERR_INVALDEVICECLASS = $9000000D;
+  PHONEERR_INVALEXTVERSION = $9000000E;
+  PHONEERR_INVALHOOKSWITCHDEV = $9000000F;
+  PHONEERR_INVALHOOKSWITCHMODE = $90000010;
+  PHONEERR_INVALLAMPMODE = $90000011;
+  PHONEERR_INVALPARAM = $90000012;
+  PHONEERR_INVALPHONEHANDLE = $90000013;
+  PHONEERR_INVALPHONESTATE = $90000014;
+  PHONEERR_INVALPOINTER = $90000015;
+  PHONEERR_INVALPRIVILEGE = $90000016;
+  PHONEERR_INVALRINGMODE = $90000017;
+  PHONEERR_NODEVICE = $90000018;
+  PHONEERR_NODRIVER = $90000019;
+  PHONEERR_NOMEM = $9000001A;
+  PHONEERR_NOTOWNER = $9000001B;
+  PHONEERR_OPERATIONFAILED = $9000001C;
+  PHONEERR_OPERATIONUNAVAIL = $9000001D;
+  PHONEERR_RESOURCEUNAVAIL = $9000001F;
+  PHONEERR_REQUESTOVERRUN = $90000020;
+  PHONEERR_STRUCTURETOOSMALL = $90000021;
+  PHONEERR_UNINITIALIZED = $90000022;
+  PHONEERR_REINIT = $90000023;
+
+  PHONEFEATURE_GETBUTTONINFO = $00000001;       { TAPI v2.0 }
+  PHONEFEATURE_GETDATA = $00000002;       { TAPI v2.0 }
+  PHONEFEATURE_GETDISPLAY = $00000004;       { TAPI v2.0 }
+  PHONEFEATURE_GETGAINHANDSET = $00000008;       { TAPI v2.0 }
+  PHONEFEATURE_GETGAINSPEAKER = $00000010;       { TAPI v2.0 }
+  PHONEFEATURE_GETGAINHEADSET = $00000020;       { TAPI v2.0 }
+  PHONEFEATURE_GETHOOKSWITCHHANDSET = $00000040;       { TAPI v2.0 }
+  PHONEFEATURE_GETHOOKSWITCHSPEAKER = $00000080;       { TAPI v2.0 }
+  PHONEFEATURE_GETHOOKSWITCHHEADSET = $00000100;       { TAPI v2.0 }
+  PHONEFEATURE_GETLAMP = $00000200;       { TAPI v2.0 }
+  PHONEFEATURE_GETRING = $00000400;       { TAPI v2.0 }
+  PHONEFEATURE_GETVOLUMEHANDSET = $00000800;       { TAPI v2.0 }
+  PHONEFEATURE_GETVOLUMESPEAKER = $00001000;       { TAPI v2.0 }
+  PHONEFEATURE_GETVOLUMEHEADSET = $00002000;       { TAPI v2.0 }
+  PHONEFEATURE_SETBUTTONINFO = $00004000;       { TAPI v2.0 }
+  PHONEFEATURE_SETDATA = $00008000;       { TAPI v2.0 }
+  PHONEFEATURE_SETDISPLAY = $00010000;       { TAPI v2.0 }
+  PHONEFEATURE_SETGAINHANDSET = $00020000;       { TAPI v2.0 }
+  PHONEFEATURE_SETGAINSPEAKER = $00040000;       { TAPI v2.0 }
+  PHONEFEATURE_SETGAINHEADSET = $00080000;       { TAPI v2.0 }
+  PHONEFEATURE_SETHOOKSWITCHHANDSET = $00100000;       { TAPI v2.0 }
+  PHONEFEATURE_SETHOOKSWITCHSPEAKER = $00200000;       { TAPI v2.0 }
+  PHONEFEATURE_SETHOOKSWITCHHEADSET = $00400000;       { TAPI v2.0 }
+  PHONEFEATURE_SETLAMP = $00800000;       { TAPI v2.0 }
+  PHONEFEATURE_SETRING = $01000000;       { TAPI v2.0 }
+  PHONEFEATURE_SETVOLUMEHANDSET = $02000000;       { TAPI v2.0 }
+  PHONEFEATURE_SETVOLUMESPEAKER = $04000000;       { TAPI v2.0 }
+  PHONEFEATURE_SETVOLUMEHEADSET = $08000000;       { TAPI v2.0 }
+
+  PHONEHOOKSWITCHDEV_HANDSET = $00000001;
+  PHONEHOOKSWITCHDEV_SPEAKER = $00000002;
+  PHONEHOOKSWITCHDEV_HEADSET = $00000004;
+
+  PHONEHOOKSWITCHMODE_ONHOOK = $00000001;
+  PHONEHOOKSWITCHMODE_MIC = $00000002;
+  PHONEHOOKSWITCHMODE_SPEAKER = $00000004;
+  PHONEHOOKSWITCHMODE_MICSPEAKER = $00000008;
+  PHONEHOOKSWITCHMODE_UNKNOWN = $00000010;
+
+  PHONEINITIALIZEEXOPTION_USEHIDDENWINDOW = $00000001;       { TAPI v2.0 }
+  PHONEINITIALIZEEXOPTION_USEEVENT = $00000002;       { TAPI v2.0 }
+  PHONEINITIALIZEEXOPTION_USECOMPLETIONPORT = $00000003;       { TAPI v2.0 }
+
+  PHONELAMPMODE_DUMMY = $00000001;
+  PHONELAMPMODE_OFF = $00000002;
+  PHONELAMPMODE_STEADY = $00000004;
+  PHONELAMPMODE_WINK = $00000008;
+  PHONELAMPMODE_FLASH = $00000010;
+  PHONELAMPMODE_FLUTTER = $00000020;
+  PHONELAMPMODE_BROKENFLUTTER = $00000040;
+  PHONELAMPMODE_UNKNOWN = $00000080;
+
+  PHONEPRIVILEGE_MONITOR = $00000001;
+  PHONEPRIVILEGE_OWNER = $00000002;
+
+  PHONESTATE_OTHER = $00000001;
+  PHONESTATE_CONNECTED = $00000002;
+  PHONESTATE_DISCONNECTED = $00000004;
+  PHONESTATE_OWNER = $00000008;
+  PHONESTATE_MONITORS = $00000010;
+  PHONESTATE_DISPLAY = $00000020;
+  PHONESTATE_LAMP = $00000040;
+  PHONESTATE_RINGMODE = $00000080;
+  PHONESTATE_RINGVOLUME = $00000100;
+  PHONESTATE_HANDSETHOOKSWITCH = $00000200;
+  PHONESTATE_HANDSETVOLUME = $00000400;
+  PHONESTATE_HANDSETGAIN = $00000800;
+  PHONESTATE_SPEAKERHOOKSWITCH = $00001000;
+  PHONESTATE_SPEAKERVOLUME = $00002000;
+  PHONESTATE_SPEAKERGAIN = $00004000;
+  PHONESTATE_HEADSETHOOKSWITCH = $00008000;
+  PHONESTATE_HEADSETVOLUME = $00010000;
+  PHONESTATE_HEADSETGAIN = $00020000;
+  PHONESTATE_SUSPEND = $00040000;
+  PHONESTATE_RESUME = $00080000;
+  PHONESTATE_DEVSPECIFIC = $00100000;
+  PHONESTATE_REINIT = $00200000;
+  PHONESTATE_CAPSCHANGE = $00400000;       { TAPI v1.4 }
+  PHONESTATE_REMOVED = $00800000;       { TAPI v1.4 }
+
+  PHONESTATUSFLAGS_CONNECTED = $00000001;
+  PHONESTATUSFLAGS_SUSPENDED = $00000002;
+
+  STRINGFORMAT_ASCII = $00000001;
+  STRINGFORMAT_DBCS = $00000002;
+  STRINGFORMAT_UNICODE = $00000003;
+  STRINGFORMAT_BINARY = $00000004;
+
+  TAPI_REPLY = WM_USER + 99;
+
+  TAPIERR_CONNECTED = 0;
+  TAPIERR_DROPPED = -(1);
+  TAPIERR_NOREQUESTRECIPIENT = -(2);
+  TAPIERR_REQUESTQUEUEFULL = -(3);
+  TAPIERR_INVALDESTADDRESS = -(4);
+  TAPIERR_INVALWINDOWHANDLE = -(5);
+  TAPIERR_INVALDEVICECLASS = -(6);
+  TAPIERR_INVALDEVICEID = -(7);
+  TAPIERR_DEVICECLASSUNAVAIL = -(8);
+  TAPIERR_DEVICEIDUNAVAIL = -(9);
+  TAPIERR_DEVICEINUSE = -(10);
+  TAPIERR_DESTBUSY = -(11);
+  TAPIERR_DESTNOANSWER = -(12);
+  TAPIERR_DESTUNAVAIL = -(13);
+  TAPIERR_UNKNOWNWINHANDLE = -(14);
+  TAPIERR_UNKNOWNREQUESTID = -(15);
+  TAPIERR_REQUESTFAILED = -(16);
+  TAPIERR_REQUESTCANCELLED = -(17);
+  TAPIERR_INVALPOINTER = -(18);
+
+  TAPIMAXDESTADDRESSSIZE = 80;
+  TAPIMAXAPPNAMESIZE = 40;
+  TAPIMAXCALLEDPARTYSIZE = 40;
+  TAPIMAXCOMMENTSIZE = 80;
+  TAPIMAXDEVICECLASSSIZE = 40;
+  TAPIMAXDEVICEIDSIZE = 40;
+
+//*****************************************************************************
+// types
+//*****************************************************************************
+
+type
+
+  HCALL = HANDLE;
+  LPHCALL = ^HCALL;
+
+  HLINE = HANDLE;
+  LPHLINE = ^HLINE;
+
+  HPHONE = HANDLE;
+  LPHPHONE = ^HPHONE;
+
+  HLINEAPP = HANDLE;
+  LPHLINEAPP = ^HLINEAPP;
+
+  HPHONEAPP = HANDLE;
+  LPHPHONEAPP = ^HPHONEAPP;
+
+  LINECALLBACK = procedure (hDevice:DWORD; dwMessage:DWORD; dwInstance:DWORD; dwParam1:DWORD; dwParam2:DWORD;
+                 dwParam3:DWORD);
+
+  PHONECALLBACK = procedure (hDevice:DWORD; dwMessage:DWORD; dwInstance:DWORD; dwParam1:DWORD; dwParam2:DWORD;
+                  dwParam3:DWORD);
+
+  lineaddresscaps_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwLineDeviceID : DWORD;
+       dwAddressSize : DWORD;
+       dwAddressOffset : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+       dwAddressSharing : DWORD;
+       dwAddressStates : DWORD;
+       dwCallInfoStates : DWORD;
+       dwCallerIDFlags : DWORD;
+       dwCalledIDFlags : DWORD;
+       dwConnectedIDFlags : DWORD;
+       dwRedirectionIDFlags : DWORD;
+       dwRedirectingIDFlags : DWORD;
+       dwCallStates : DWORD;
+       dwDialToneModes : DWORD;
+       dwBusyModes : DWORD;
+       dwSpecialInfo : DWORD;
+       dwDisconnectModes : DWORD;
+       dwMaxNumActiveCalls : DWORD;
+       dwMaxNumOnHoldCalls : DWORD;
+       dwMaxNumOnHoldPendingCalls : DWORD;
+       dwMaxNumConference : DWORD;
+       dwMaxNumTransConf : DWORD;
+       dwAddrCapFlags : DWORD;
+       dwCallFeatures : DWORD;
+       dwRemoveFromConfCaps : DWORD;
+       dwRemoveFromConfState : DWORD;
+       dwTransferModes : DWORD;
+       dwParkModes : DWORD;
+       dwForwardModes : DWORD;
+       dwMaxForwardEntries : DWORD;
+       dwMaxSpecificEntries : DWORD;
+       dwMinFwdNumRings : DWORD;
+       dwMaxFwdNumRings : DWORD;
+       dwMaxCallCompletions : DWORD;
+       dwCallCompletionConds : DWORD;
+       dwCallCompletionModes : DWORD;
+       dwNumCompletionMessages : DWORD;
+       dwCompletionMsgTextEntrySize : DWORD;
+       dwCompletionMsgTextSize : DWORD;
+       dwCompletionMsgTextOffset : DWORD;
+
+       dwAddressFeatures : DWORD; // TAPI v1.4
+
+       dwPredictiveAutoTransferStates : DWORD; // TAPI v2.0
+       dwNumCallTreatments : DWORD;            // TAPI v2.0
+       dwCallTreatmentListSize : DWORD;        // TAPI v2.0
+       dwCallTreatmentListOffset : DWORD;      // TAPI v2.0
+       dwDeviceClassesSize : DWORD;            // TAPI v2.0
+       dwDeviceClassesOffset : DWORD;          // TAPI v2.0
+       dwMaxCallDataSize : DWORD;              // TAPI v2.0
+       dwCallFeatures2 : DWORD;                // TAPI v2.0
+       dwMaxNoAnswerTimeout : DWORD;           // TAPI v2.0
+       dwConnectedModes : DWORD;               // TAPI v2.0
+       dwOfferingModes : DWORD;                // TAPI v2.0
+       dwAvailableMediaModes : DWORD;          // TAPI v2.0
+    end;
+  TLINEADDRESSCAPS = lineaddresscaps_tag;
+  LPLINEADDRESSCAPS = ^lineaddresscaps_tag;
+
+  lineaddressstatus_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwNumInUse : DWORD;
+       dwNumActiveCalls : DWORD;
+       dwNumOnHoldCalls : DWORD;
+       dwNumOnHoldPendCalls : DWORD;
+       dwAddressFeatures : DWORD;
+       dwNumRingsNoAnswer : DWORD;
+       dwForwardNumEntries : DWORD;
+       dwForwardSize : DWORD;
+       dwForwardOffset : DWORD;
+       dwTerminalModesSize : DWORD;
+       dwTerminalModesOffset : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+    end;
+  TLINEADDRESSSTATUS = lineaddressstatus_tag;
+  LPLINEADDRESSSTATUS = ^lineaddressstatus_tag;
+
+  linedialparams_tag = record
+       dwDialPause : DWORD;
+       dwDialSpeed : DWORD;
+       dwDigitDuration : DWORD;
+       dwWaitForDialtone : DWORD;
+    end;
+  TLINEDIALPARAMS = linedialparams_tag;
+  LPLINEDIALPARAMS = ^linedialparams_tag;
+
+  linecallinfo_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       hLine : HLINE;
+       dwLineDeviceID : DWORD;
+       dwAddressID : DWORD;
+       dwBearerMode : DWORD;
+       dwRate : DWORD;
+       dwMediaMode : DWORD;
+       dwAppSpecific : DWORD;
+       dwCallID : DWORD;
+       dwRelatedCallID : DWORD;
+       dwCallParamFlags : DWORD;
+       dwCallStates : DWORD;
+       dwMonitorDigitModes : DWORD;
+       dwMonitorMediaModes : DWORD;
+       DialParams : TLINEDIALPARAMS;
+       dwOrigin : DWORD;
+       dwReason : DWORD;
+       dwCompletionID : DWORD;
+       dwNumOwners : DWORD;
+       dwNumMonitors : DWORD;
+       dwCountryCode : DWORD;
+       dwTrunk : DWORD;
+       dwCallerIDFlags : DWORD;
+       dwCallerIDSize : DWORD;
+       dwCallerIDOffset : DWORD;
+       dwCallerIDNameSize : DWORD;
+       dwCallerIDNameOffset : DWORD;
+       dwCalledIDFlags : DWORD;
+       dwCalledIDSize : DWORD;
+       dwCalledIDOffset : DWORD;
+       dwCalledIDNameSize : DWORD;
+       dwCalledIDNameOffset : DWORD;
+       dwConnectedIDFlags : DWORD;
+       dwConnectedIDSize : DWORD;
+       dwConnectedIDOffset : DWORD;
+       dwConnectedIDNameSize : DWORD;
+       dwConnectedIDNameOffset : DWORD;
+       dwRedirectionIDFlags : DWORD;
+       dwRedirectionIDSize : DWORD;
+       dwRedirectionIDOffset : DWORD;
+       dwRedirectionIDNameSize : DWORD;
+       dwRedirectionIDNameOffset : DWORD;
+       dwRedirectingIDFlags : DWORD;
+       dwRedirectingIDSize : DWORD;
+       dwRedirectingIDOffset : DWORD;
+       dwRedirectingIDNameSize : DWORD;
+       dwRedirectingIDNameOffset : DWORD;
+       dwAppNameSize : DWORD;
+       dwAppNameOffset : DWORD;
+       dwDisplayableAddressSize : DWORD;
+       dwDisplayableAddressOffset : DWORD;
+       dwCalledPartySize : DWORD;
+       dwCalledPartyOffset : DWORD;
+       dwCommentSize : DWORD;
+       dwCommentOffset : DWORD;
+       dwDisplaySize : DWORD;
+       dwDisplayOffset : DWORD;
+       dwUserUserInfoSize : DWORD;
+       dwUserUserInfoOffset : DWORD;
+       dwHighLevelCompSize : DWORD;
+       dwHighLevelCompOffset : DWORD;
+       dwLowLevelCompSize : DWORD;
+       dwLowLevelCompOffset : DWORD;
+       dwChargingInfoSize : DWORD;
+       dwChargingInfoOffset : DWORD;
+       dwTerminalModesSize : DWORD;
+       dwTerminalModesOffset : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+       dwCallTreatment : DWORD;                // TAPI v2.0
+       dwCallDataSize : DWORD;                 // TAPI v2.0
+       dwCallDataOffset : DWORD;               // TAPI v2.0
+       dwSendingFlowspecSize : DWORD;          // TAPI v2.0
+       dwSendingFlowspecOffset : DWORD;        // TAPI v2.0
+       dwReceivingFlowspecSize : DWORD;        // TAPI v2.0
+       dwReceivingFlowspecOffset : DWORD;      // TAPI v2.0
+       dwAddressType : DWORD;                  // TAPI v3.0
+    end;
+  TLINECALLINFO = linecallinfo_tag;
+  LPLINECALLINFO = ^linecallinfo_tag;
+
+  linecalllist_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwCallsNumEntries : DWORD;
+       dwCallsSize : DWORD;
+       dwCallsOffset : DWORD;
+    end;
+  TLINECALLLIST = linecalllist_tag;
+  LPLINECALLLIST = ^linecalllist_tag;
+
+  linecallparams_tag = record                 // Defaults:
+       dwTotalSize : DWORD;
+       dwBearerMode : DWORD;                  // voice
+       dwMinRate : DWORD;                     // (3.1kHz)
+       dwMaxRate : DWORD;                     // (3.1kHz)
+       dwMediaMode : DWORD;                   // interactiveVoice
+       dwCallParamFlags : DWORD;              // 0
+       dwAddressMode : DWORD;
+       dwAddressID : DWORD;                   // (any available)
+       DialParams : TLINEDIALPARAMS;           // (0, 0, 0, 0)
+       dwOrigAddressSize : DWORD;             // 0
+       dwOrigAddressOffset : DWORD;
+       dwDisplayableAddressSize : DWORD;
+       dwDisplayableAddressOffset : DWORD;
+       dwCalledPartySize : DWORD;             // 0
+       dwCalledPartyOffset : DWORD;
+       dwCommentSize : DWORD;                 // 0
+       dwCommentOffset : DWORD;
+       dwUserUserInfoSize : DWORD;            // 0
+       dwUserUserInfoOffset : DWORD;
+       dwHighLevelCompSize : DWORD;           // 0
+       dwHighLevelCompOffset : DWORD;
+       dwLowLevelCompSize : DWORD;            // 0
+       dwLowLevelCompOffset : DWORD;
+       dwDevSpecificSize : DWORD;             // 0
+       dwDevSpecificOffset : DWORD;
+       dwPredictiveAutoTransferStates : DWORD;      // TAPI v2.0
+       dwTargetAddressSize : DWORD;                 // TAPI v2.0
+       dwTargetAddressOffset : DWORD;               // TAPI v2.0
+       dwSendingFlowspecSize : DWORD;               // TAPI v2.0
+       dwSendingFlowspecOffset : DWORD;             // TAPI v2.0
+       dwReceivingFlowspecSize : DWORD;             // TAPI v2.0
+       dwReceivingFlowspecOffset : DWORD;           // TAPI v2.0
+       dwDeviceClassSize : DWORD;                   // TAPI v2.0
+       dwDeviceClassOffset : DWORD;                 // TAPI v2.0
+       dwDeviceConfigSize : DWORD;                  // TAPI v2.0
+       dwDeviceConfigOffset : DWORD;                // TAPI v2.0
+       dwCallDataSize : DWORD;                      // TAPI v2.0
+       dwCallDataOffset : DWORD;                    // TAPI v2.0
+       dwNoAnswerTimeout : DWORD;                   // TAPI v2.0
+       dwCallingPartyIDSize : DWORD;                // TAPI v2.0
+       dwCallingPartyIDOffset : DWORD;              // TAPI v2.0
+       dwAddressType : DWORD;                       // TAPI v3.0
+    end;
+  TLINECALLPARAMS = linecallparams_tag;
+  LPLINECALLPARAMS = ^linecallparams_tag;
+
+  linecallstatus_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwCallState : DWORD;
+       dwCallStateMode : DWORD;
+       dwCallPrivilege : DWORD;
+       dwCallFeatures : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+
+       dwCallFeatures2 : DWORD;                    // TAPI v2.0
+       tStateEntryTime : SYSTEMTIME;               // TAPI v2.0
+    end;
+  TLINECALLSTATUS = linecallstatus_tag;
+  LPLINECALLSTATUS = ^linecallstatus_tag;
+
+  linecalltreatmententry_tag = record
+       dwCallTreatmentID : DWORD;                  // TAPI v2.0
+       dwCallTreatmentNameSize : DWORD;            // TAPI v2.0
+       dwCallTreatmentNameOffset : DWORD;          // TAPI v2.0
+    end;
+  TLINECALLTREATMENTENTRY = linecalltreatmententry_tag;
+  LPLINECALLTREATMENTENTRY = ^linecalltreatmententry_tag;
+
+  linecardentry_tag = record
+       dwPermanentCardID : DWORD;
+       dwCardNameSize : DWORD;
+       dwCardNameOffset : DWORD;
+       dwCardNumberDigits : DWORD;                // TAPI v1.4
+       dwSameAreaRuleSize : DWORD;                // TAPI v1.4
+       dwSameAreaRuleOffset : DWORD;              // TAPI v1.4
+       dwLongDistanceRuleSize : DWORD;            // TAPI v1.4
+       dwLongDistanceRuleOffset : DWORD;          // TAPI v1.4
+       dwInternationalRuleSize : DWORD;           // TAPI v1.4
+       dwInternationalRuleOffset : DWORD;         // TAPI v1.4
+       dwOptions : DWORD;                         // TAPI v1.4
+    end;
+  TLINECARDENTRY = linecardentry_tag;
+  LPLINECARDENTRY = ^linecardentry_tag;
+
+  linecountryentry_tag = record                   // TAPI v1.4
+       dwCountryID : DWORD;                       // TAPI v1.4
+       dwCountryCode : DWORD;                     // TAPI v1.4
+       dwNextCountryID : DWORD;                   // TAPI v1.4
+       dwCountryNameSize : DWORD;                 // TAPI v1.4
+       dwCountryNameOffset : DWORD;               // TAPI v1.4
+       dwSameAreaRuleSize : DWORD;                // TAPI v1.4
+       dwSameAreaRuleOffset : DWORD;              // TAPI v1.4
+       dwLongDistanceRuleSize : DWORD;            // TAPI v1.4
+       dwLongDistanceRuleOffset : DWORD;          // TAPI v1.4
+       dwInternationalRuleSize : DWORD;           // TAPI v1.4
+       dwInternationalRuleOffset : DWORD;         // TAPI v1.4
+    end;
+  TLINECOUNTRYENTRY = linecountryentry_tag;
+  LPLINECOUNTRYENTRY = ^linecountryentry_tag;
+
+  linecountrylist_tag = record
+       dwTotalSize : DWORD;                       // TAPI v1.4
+       dwNeededSize : DWORD;                      // TAPI v1.4
+       dwUsedSize : DWORD;                        // TAPI v1.4
+       dwNumCountries : DWORD;                    // TAPI v1.4
+       dwCountryListSize : DWORD;                 // TAPI v1.4
+       dwCountryListOffset : DWORD;               // TAPI v1.4
+    end;
+  TLINECOUNTRYLIST = linecountrylist_tag;
+  LPLINECOUNTRYLIST = ^linecountrylist_tag;
+
+  linedevcaps_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwProviderInfoSize : DWORD;
+       dwProviderInfoOffset : DWORD;
+       dwSwitchInfoSize : DWORD;
+       dwSwitchInfoOffset : DWORD;
+       dwPermanentLineID : DWORD;
+       dwLineNameSize : DWORD;
+       dwLineNameOffset : DWORD;
+       dwStringFormat : DWORD;
+       dwAddressModes : DWORD;
+       dwNumAddresses : DWORD;
+       dwBearerModes : DWORD;
+       dwMaxRate : DWORD;
+       dwMediaModes : DWORD;
+       dwGenerateToneModes : DWORD;
+       dwGenerateToneMaxNumFreq : DWORD;
+       dwGenerateDigitModes : DWORD;
+       dwMonitorToneMaxNumFreq : DWORD;
+       dwMonitorToneMaxNumEntries : DWORD;
+       dwMonitorDigitModes : DWORD;
+       dwGatherDigitsMinTimeout : DWORD;
+       dwGatherDigitsMaxTimeout : DWORD;
+       dwMedCtlDigitMaxListSize : DWORD;
+       dwMedCtlMediaMaxListSize : DWORD;
+       dwMedCtlToneMaxListSize : DWORD;
+       dwMedCtlCallStateMaxListSize : DWORD;
+       dwDevCapFlags : DWORD;
+       dwMaxNumActiveCalls : DWORD;
+       dwAnswerMode : DWORD;
+       dwRingModes : DWORD;
+       dwLineStates : DWORD;
+       dwUUIAcceptSize : DWORD;
+       dwUUIAnswerSize : DWORD;
+       dwUUIMakeCallSize : DWORD;
+       dwUUIDropSize : DWORD;
+       dwUUISendUserUserInfoSize : DWORD;
+       dwUUICallInfoSize : DWORD;
+       MinDialParams : TLINEDIALPARAMS;
+       MaxDialParams : TLINEDIALPARAMS;
+       DefaultDialParams : TLINEDIALPARAMS;
+       dwNumTerminals : DWORD;
+       dwTerminalCapsSize : DWORD;
+       dwTerminalCapsOffset : DWORD;
+       dwTerminalTextEntrySize : DWORD;
+       dwTerminalTextSize : DWORD;
+       dwTerminalTextOffset : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+
+       dwLineFeatures : DWORD;                    // TAPI v1.4
+
+       dwSettableDevStatus : DWORD;               // TAPI v2.0
+       dwDeviceClassesSize : DWORD;               // TAPI v2.0
+       dwDeviceClassesOffset : DWORD;             // TAPI v2.0
+       PermanentLineGuid : GUID;                  // TAPI v2.2
+       dwAddressTypes : DWORD;                    // TAPI v3.0
+       ProtocolGuid : GUID;                       // TAPI v3.0
+       dwAvailableTracking : DWORD;               // TAPI v3.0
+    end;
+  TLINEDEVCAPS = linedevcaps_tag;
+  LPLINEDEVCAPS = ^linedevcaps_tag;
+
+  linedevstatus_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwNumOpens : DWORD;
+       dwOpenMediaModes : DWORD;
+       dwNumActiveCalls : DWORD;
+       dwNumOnHoldCalls : DWORD;
+       dwNumOnHoldPendCalls : DWORD;
+       dwLineFeatures : DWORD;
+       dwNumCallCompletions : DWORD;
+       dwRingMode : DWORD;
+       dwSignalLevel : DWORD;
+       dwBatteryLevel : DWORD;
+       dwRoamMode : DWORD;
+       dwDevStatusFlags : DWORD;
+       dwTerminalModesSize : DWORD;
+       dwTerminalModesOffset : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+
+       dwAvailableMediaModes : DWORD;             // TAPI v2.0
+       dwAppInfoSize : DWORD;                     // TAPI v2.0
+       dwAppInfoOffset : DWORD;                   // TAPI v2.0
+    end;
+  LINEDEVSTATUS = linedevstatus_tag;
+  LPLINEDEVSTATUS = ^linedevstatus_tag;
+
+  lineextensionid_tag = record
+       dwExtensionID0 : DWORD;
+       dwExtensionID1 : DWORD;
+       dwExtensionID2 : DWORD;
+       dwExtensionID3 : DWORD;
+    end;
+  TLINEEXTENSIONID = lineextensionid_tag;
+  LPLINEEXTENSIONID = ^lineextensionid_tag;
+
+  lineforward_tag = record
+       dwForwardMode : DWORD;
+       dwCallerAddressSize : DWORD;
+       dwCallerAddressOffset : DWORD;
+       dwDestCountryCode : DWORD;
+       dwDestAddressSize : DWORD;
+       dwDestAddressOffset : DWORD;
+    end;
+  TLINEFORWARD = lineforward_tag;
+  LPLINEFORWARD = ^lineforward_tag;
+
+  lineforwardlist_tag = record
+       dwTotalSize : DWORD;
+       dwNumEntries : DWORD;
+       ForwardList : array[0..0] of TLINEFORWARD;
+    end;
+  TLINEFORWARDLIST = lineforwardlist_tag;
+  LPLINEFORWARDLIST = ^lineforwardlist_tag;
+
+  linegeneratetone_tag = record
+       dwFrequency : DWORD;
+       dwCadenceOn : DWORD;
+       dwCadenceOff : DWORD;
+       dwVolume : DWORD;
+    end;
+  TLINEGENERATETONE = linegeneratetone_tag;
+  LPLINEGENERATETONE = ^linegeneratetone_tag;
+
+  lineinitializeexparams_tag = record
+       dwTotalSize : DWORD;                       // TAPI v2.0
+       dwNeededSize : DWORD;                      // TAPI v2.0
+       dwUsedSize : DWORD;                        // TAPI v2.0
+       dwOptions : DWORD;                         // TAPI v2.0
+
+       Handles : record
+           case longint of
+              0 : ( hEvent : HANDLE );            // TAPI v2.0
+              1 : ( hCompletionPort : HANDLE );   // TAPI v2.0
+           end;
+       dwCompletionKey : DWORD;                   // TAPI v2.0
+    end;
+  TLINEINITIALIZEEXPARAMS = lineinitializeexparams_tag;
+  LPLINEINITIALIZEEXPARAMS = ^lineinitializeexparams_tag;
+
+  linelocationentry_tag = record
+       dwPermanentLocationID : DWORD;
+       dwLocationNameSize : DWORD;
+       dwLocationNameOffset : DWORD;
+       dwCountryCode : DWORD;
+       dwCityCodeSize : DWORD;
+       dwCityCodeOffset : DWORD;
+       dwPreferredCardID : DWORD;
+
+       dwLocalAccessCodeSize : DWORD;             // TAPI v1.4
+       dwLocalAccessCodeOffset : DWORD;           // TAPI v1.4
+       dwLongDistanceAccessCodeSize : DWORD;      // TAPI v1.4
+       dwLongDistanceAccessCodeOffset : DWORD;    // TAPI v1.4
+       dwTollPrefixListSize : DWORD;              // TAPI v1.4
+       dwTollPrefixListOffset : DWORD;            // TAPI v1.4
+       dwCountryID : DWORD;                       // TAPI v1.4
+       dwOptions : DWORD;                         // TAPI v1.4
+       dwCancelCallWaitingSize : DWORD;           // TAPI v1.4
+       dwCancelCallWaitingOffset : DWORD;         // TAPI v1.4
+    end;
+  TLINELOCATIONENTRY = linelocationentry_tag;
+  LPLINELOCATIONENTRY = ^linelocationentry_tag;
+
+  linemediacontrolcallstate_tag = record
+       dwCallStates : DWORD;
+       dwMediaControl : DWORD;
+    end;
+  TLINEMEDIACONTROLCALLSTATE = linemediacontrolcallstate_tag;
+  LPLINEMEDIACONTROLCALLSTATE = ^linemediacontrolcallstate_tag;
+
+  linemediacontroldigit_tag = record
+       dwDigit : DWORD;
+       dwDigitModes : DWORD;
+       dwMediaControl : DWORD;
+    end;
+  TLINEMEDIACONTROLDIGIT = linemediacontroldigit_tag;
+  LPLINEMEDIACONTROLDIGIT = ^linemediacontroldigit_tag;
+
+  linemediacontrolmedia_tag = record
+       dwMediaModes : DWORD;
+       dwDuration : DWORD;
+       dwMediaControl : DWORD;
+    end;
+  TLINEMEDIACONTROLMEDIA = linemediacontrolmedia_tag;
+  LPLINEMEDIACONTROLMEDIA = ^linemediacontrolmedia_tag;
+
+  linemediacontroltone_tag = record
+       dwAppSpecific : DWORD;
+       dwDuration : DWORD;
+       dwFrequency1 : DWORD;
+       dwFrequency2 : DWORD;
+       dwFrequency3 : DWORD;
+       dwMediaControl : DWORD;
+    end;
+  TLINEMEDIACONTROLTONE = linemediacontroltone_tag;
+  LPLINEMEDIACONTROLTONE = ^linemediacontroltone_tag;
+
+  linemessage_tag = record
+       hDevice : DWORD;                           // TAPI v2.0
+       dwMessageID : DWORD;                       // TAPI v2.0
+       dwCallbackInstance : DWORD;                // TAPI v2.0
+       dwParam1 : DWORD;                          // TAPI v2.0
+       dwParam2 : DWORD;                          // TAPI v2.0
+       dwParam3 : DWORD;                          // TAPI v2.0
+    end;
+  TLINEMESSAGE = linemessage_tag;
+  LPLINEMESSAGE = ^linemessage_tag;
+
+  linemonitortone_tag = record
+       dwAppSpecific : DWORD;
+       dwDuration : DWORD;
+       dwFrequency1 : DWORD;
+       dwFrequency2 : DWORD;
+       dwFrequency3 : DWORD;
+    end;
+  TLINEMONITORTONE = linemonitortone_tag;
+  LPLINEMONITORTONE = ^linemonitortone_tag;
+
+  lineproviderentry_tag = record
+       dwPermanentProviderID : DWORD;             // TAPI v1.4
+       dwProviderFilenameSize : DWORD;            // TAPI v1.4
+       dwProviderFilenameOffset : DWORD;          // TAPI v1.4
+    end;
+  TLINEPROVIDERENTRY = lineproviderentry_tag;
+  LPLINEPROVIDERENTRY = ^lineproviderentry_tag;
+
+  lineproviderlist_tag = record
+       dwTotalSize : DWORD;                       // TAPI v1.4
+       dwNeededSize : DWORD;                      // TAPI v1.4
+       dwUsedSize : DWORD;                        // TAPI v1.4
+       dwNumProviders : DWORD;                    // TAPI v1.4
+       dwProviderListSize : DWORD;                // TAPI v1.4
+       dwProviderListOffset : DWORD;              // TAPI v1.4
+    end;
+  TLINEPROVIDERLIST = lineproviderlist_tag;
+  LPLINEPROVIDERLIST = ^lineproviderlist_tag;
+
+  linetermcaps_tag = record
+       dwTermDev : DWORD;
+       dwTermModes : DWORD;
+       dwTermSharing : DWORD;
+    end;
+  TLINETERMCAPS = linetermcaps_tag;
+  LPLINETERMCAPS = ^linetermcaps_tag;
+
+  linetranslatecaps_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwNumLocations : DWORD;
+       dwLocationListSize : DWORD;
+       dwLocationListOffset : DWORD;
+       dwCurrentLocationID : DWORD;
+       dwNumCards : DWORD;
+       dwCardListSize : DWORD;
+       dwCardListOffset : DWORD;
+       dwCurrentPreferredCardID : DWORD;
+    end;
+  TLINETRANSLATECAPS = linetranslatecaps_tag;
+  LPLINETRANSLATECAPS = ^linetranslatecaps_tag;
+
+  linetranslateoutput_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwDialableStringSize : DWORD;
+       dwDialableStringOffset : DWORD;
+       dwDisplayableStringSize : DWORD;
+       dwDisplayableStringOffset : DWORD;
+       dwCurrentCountry : DWORD;
+       dwDestCountry : DWORD;
+       dwTranslateResults : DWORD;
+    end;
+  TLINETRANSLATEOUTPUT = linetranslateoutput_tag;
+  LPLINETRANSLATEOUTPUT = ^linetranslateoutput_tag;
+
+  phonebuttoninfo_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwButtonMode : DWORD;
+       dwButtonFunction : DWORD;
+       dwButtonTextSize : DWORD;
+       dwButtonTextOffset : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+
+       dwButtonState : DWORD;                     // TAPI v1.4
+    end;
+  TPHONEBUTTONINFO = phonebuttoninfo_tag;
+  LPPHONEBUTTONINFO = ^phonebuttoninfo_tag;
+
+  phonecaps_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwProviderInfoSize : DWORD;
+       dwProviderInfoOffset : DWORD;
+       dwPhoneInfoSize : DWORD;
+       dwPhoneInfoOffset : DWORD;
+       dwPermanentPhoneID : DWORD;
+       dwPhoneNameSize : DWORD;
+       dwPhoneNameOffset : DWORD;
+       dwStringFormat : DWORD;
+       dwPhoneStates : DWORD;
+       dwHookSwitchDevs : DWORD;
+       dwHandsetHookSwitchModes : DWORD;
+       dwSpeakerHookSwitchModes : DWORD;
+       dwHeadsetHookSwitchModes : DWORD;
+       dwVolumeFlags : DWORD;
+       dwGainFlags : DWORD;
+       dwDisplayNumRows : DWORD;
+       dwDisplayNumColumns : DWORD;
+       dwNumRingModes : DWORD;
+       dwNumButtonLamps : DWORD;
+       dwButtonModesSize : DWORD;
+       dwButtonModesOffset : DWORD;
+       dwButtonFunctionsSize : DWORD;
+       dwButtonFunctionsOffset : DWORD;
+       dwLampModesSize : DWORD;
+       dwLampModesOffset : DWORD;
+       dwNumSetData : DWORD;
+       dwSetDataSize : DWORD;
+       dwSetDataOffset : DWORD;
+       dwNumGetData : DWORD;
+       dwGetDataSize : DWORD;
+       dwGetDataOffset : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+       dwDeviceClassesSize : DWORD;               // TAPI v2.0
+       dwDeviceClassesOffset : DWORD;             // TAPI v2.0
+       dwPhoneFeatures : DWORD;                   // TAPI v2.0
+       dwSettableHandsetHookSwitchModes : DWORD;  // TAPI v2.0
+       dwSettableSpeakerHookSwitchModes : DWORD;  // TAPI v2.0
+       dwSettableHeadsetHookSwitchModes : DWORD;  // TAPI v2.0
+       dwMonitoredHandsetHookSwitchModes : DWORD; // TAPI v2.0
+       dwMonitoredSpeakerHookSwitchModes : DWORD; // TAPI v2.0
+       dwMonitoredHeadsetHookSwitchModes : DWORD; // TAPI v2.0
+       PermanentPhoneGuid : GUID;                 // TAPI v2.2
+    end;
+  TPHONECAPS = phonecaps_tag;
+  LPPHONECAPS = ^phonecaps_tag;
+
+  phoneextensionid_tag = record
+       dwExtensionID0 : DWORD;
+       dwExtensionID1 : DWORD;
+       dwExtensionID2 : DWORD;
+       dwExtensionID3 : DWORD;
+    end;
+  TPHONEEXTENSIONID = phoneextensionid_tag;
+  LPPHONEEXTENSIONID = ^phoneextensionid_tag;
+
+  phoneinitializeexparams_tag = record
+       dwTotalSize : DWORD;                       // TAPI v2.0
+       dwNeededSize : DWORD;                      // TAPI v2.0
+       dwUsedSize : DWORD;                        // TAPI v2.0
+       dwOptions : DWORD;                         // TAPI v2.0
+
+       Handles : record
+           case longint of
+              0 : ( hEvent : HANDLE );            // TAPI v2.0
+              1 : ( hCompletionPort : HANDLE );   // TAPI v2.0
+           end;
+
+       dwCompletionKey : DWORD;                   // TAPI v2.0
+    end;
+  TPHONEINITIALIZEEXPARAMS = phoneinitializeexparams_tag;
+  LPPHONEINITIALIZEEXPARAMS = ^phoneinitializeexparams_tag;
+
+  phonemessage_tag = record
+       hDevice : DWORD;                           // TAPI v2.0
+       dwMessageID : DWORD;                       // TAPI v2.0
+       dwCallbackInstance : DWORD;                // TAPI v2.0
+       dwParam1 : DWORD;                          // TAPI v2.0
+       dwParam2 : DWORD;                          // TAPI v2.0
+       dwParam3 : DWORD;                          // TAPI v2.0
+    end;
+  TPHONEMESSAGE = phonemessage_tag;
+  LPPHONEMESSAGE = ^phonemessage_tag;
+
+  phonestatus_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwStatusFlags : DWORD;
+       dwNumOwners : DWORD;
+       dwNumMonitors : DWORD;
+       dwRingMode : DWORD;
+       dwRingVolume : DWORD;
+       dwHandsetHookSwitchMode : DWORD;
+       dwHandsetVolume : DWORD;
+       dwHandsetGain : DWORD;
+       dwSpeakerHookSwitchMode : DWORD;
+       dwSpeakerVolume : DWORD;
+       dwSpeakerGain : DWORD;
+       dwHeadsetHookSwitchMode : DWORD;
+       dwHeadsetVolume : DWORD;
+       dwHeadsetGain : DWORD;
+       dwDisplaySize : DWORD;
+       dwDisplayOffset : DWORD;
+       dwLampModesSize : DWORD;
+       dwLampModesOffset : DWORD;
+       dwOwnerNameSize : DWORD;
+       dwOwnerNameOffset : DWORD;
+       dwDevSpecificSize : DWORD;
+       dwDevSpecificOffset : DWORD;
+
+       dwPhoneFeatures : DWORD;                   // TAPI v2.0
+    end;
+  TPHONESTATUS = phonestatus_tag;
+  LPPHONESTATUS = ^phonestatus_tag;
+
+  varstring_tag = record
+       dwTotalSize : DWORD;
+       dwNeededSize : DWORD;
+       dwUsedSize : DWORD;
+       dwStringFormat : DWORD;
+       dwStringSize : DWORD;
+       dwStringOffset : DWORD;
+    end;
+  TVARSTRING = varstring_tag;
+  LPVARSTRING = ^varstring_tag;
+
+//*****************************************************************************
+// functions
+//*****************************************************************************
+
+function lineAccept(hCall:HCALL; lpsUserUserInfo:LPCSTR; dwSize:DWORD):LONG;external KernelDLL name 'lineAccept';
+function lineAddProvider(lpszProviderFilename:LPCWSTR; hwndOwner:HWND;
+ lpdwPermanentProviderID:LPDWORD):LONG;external KernelDLL name 'lineAddProvider';
+function lineAddToConference(hConfCall:HCALL; hConsultCall:HCALL):LONG;external KernelDLL name 'lineAddToConference';
+function lineAnswer(hCall:HCALL; lpsUserUserInfo:LPCSTR; dwSize:DWORD):LONG;external KernelDLL name 'lineAnswer';
+function lineBlindTransfer(hCall:HCALL; lpszDestAddressW:LPCWSTR;
+ dwCountryCode:DWORD):LONG;external KernelDLL name 'lineBlindTransfer';
+function lineClose(hLine:HLINE):LONG;external KernelDLL name 'lineClose';
+function lineCompleteTransfer(hCall:HCALL; hConsultCall:HCALL; lphConfCall:LPHCALL;
+ dwTransferMode:DWORD):LONG;external KernelDLL name 'lineCompleteTransfer';
+function lineConfigDialogEdit(dwDeviceID:DWORD; hwndOwner:HWND; lpszDeviceClass:LPCWSTR; lpDeviceConfigIn:LPVOID;
+ dwSize:DWORD; lpDeviceConfigOut:LPVARSTRING):LONG;external KernelDLL name 'lineConfigDialogEdit';
+function lineDeallocateCall(hCall:HCALL):LONG;external KernelDLL name 'lineDeallocateCall';
+function lineDevSpecific(hLine:HLINE; dwAddressID:DWORD; hCall:HCALL; lpParams:LPVOID;
+ dwSize:DWORD):LONG;external KernelDLL name 'lineDevSpecific';
+function lineDial(hCall:HCALL; lpszDestAddress:LPCWSTR; dwCountryCode:DWORD):LONG;external KernelDLL name 'lineDial';
+function lineDrop(hCall:HCALL; lpsUserUserInfo:LPCSTR; dwSize:DWORD):LONG;external KernelDLL name 'lineDrop';
+function lineForward(hLine:HLINE; bAllAddresses:DWORD; dwAddressID:DWORD; lpForwardList:LPLINEFORWARDLIST;
+ dwNumRingsNoAnswer:DWORD; lphConsultCall:LPHCALL; lpCallParams:LPLINECALLPARAMS):LONG;external KernelDLL name 'lineForward';
+function lineGenerateDigits(hCall:HCALL; dwDigitMode:DWORD; lpszDigits:LPCWSTR;  dwDuration:DWORD):LONG;
+ external KernelDLL name 'lineGenerateDigits';
+function lineGenerateTone(hCall:HCALL; dwToneMode:DWORD; dwDuration:DWORD; dwNumTones:DWORD; lpTones:LPLINEGENERATETONE):LONG;
+ external KernelDLL name 'lineGenerateTone';
+function lineGetAddressCaps(hLineApp:HLINEAPP; dwDeviceID:DWORD; dwAddressID:DWORD; dwAPIVersion:DWORD;
+ dwExtVersion:DWORD; lpAddressCaps:LPLINEADDRESSCAPS):LONG;external KernelDLL name 'lineGetAddressCaps';
+function lineGetAddressID(hLine:HLINE; lpdwAddressID:LPDWORD; dwAddressMode:DWORD; lpsAddress:LPCWSTR;
+ dwSize:DWORD):LONG;external KernelDLL name 'lineGetAddressID';
+function tAddressStatus(hLine:HLINE; dwAddressID:DWORD;  lpAddressStatus:LPLINEADDRESSSTATUS):LONG;
+ external KernelDLL name 'lineGetAddressStatus';
+function lineGetAppPriority(lpszAppFilename:LPCWSTR; dwMediaMode:DWORD; lpExtensionID:LPLINEEXTENSIONID;
+ dwRequestMode:DWORD; lpExtensionName:LPVARSTRING; lpdwPriority:LPDWORD):LONG;external KernelDLL name 'lineGetAppPriority'; { TAPI v1.4 }
+function lineGetCallInfo(hCall:HCALL; lpCallInfo:LPLINECALLINFO):LONG;external KernelDLL name 'lineGetCallInfo';
+function lineGetCallStatus(hCall:HCALL; lpCallStatus:LPLINECALLSTATUS):LONG;external KernelDLL name 'lineGetCallStatus';
+function lineGetConfRelatedCalls(hCall:HCALL; lpCallList:LPLINECALLLIST):LONG;external KernelDLL name 'lineGetConfRelatedCalls';
+function lineGetDevCaps(hLineApp:HLINEAPP; dwDeviceID:DWORD; dwAPIVersion:DWORD; dwExtVersion:DWORD;
+ lpLineDevCaps:LPLINEDEVCAPS):LONG;external KernelDLL name 'lineGetDevCaps';
+function lineGetDevConfig(dwDeviceID:DWORD; lpDeviceConfig:LPVARSTRING; lpszDeviceClass:LPCWSTR):LONG;
+ external KernelDLL name 'lineGetDevConfig';
+function lineGetNewCalls(hLine:HLINE; dwAddressID:DWORD; dwSelect:DWORD; lpCallList:LPLINECALLLIST):LONG;
+ external KernelDLL name 'lineGetNewCalls';
+function lineGetIcon(dwDeviceID:DWORD; lpszDeviceClass:LPCWSTR; lphIcon:LPHICON):LONG;external KernelDLL name 'lineGetIcon';
+function lineGetID(hLine:HLINE; dwAddressID:DWORD; hCall:HCALL; dwSelect:DWORD; lpDeviceID:LPVARSTRING;
+               lpszDeviceClass:LPCWSTR):LONG;external KernelDLL name 'lineGetID';
+function lineGetLineDevStatus(hLine:HLINE; lpLineDevStatus:LPLINEDEVSTATUS):LONG;external KernelDLL name 'lineGetLineDevStatus';
+function lineGetMessage(hLineApp:HLINEAPP; lpMessage:LPLINEMESSAGE; dwTimeout:DWORD):LONG;external KernelDLL name 'lineGetMessage';
+function lineGetNumRings(hLine:HLINE; dwAddressID:DWORD; lpdwNumRings:LPDWORD):LONG;external KernelDLL name 'lineGetNumRings';
+function lineGetProviderList(dwAPIVersion:DWORD; lpProviderList:LPLINEPROVIDERLIST):LONG;
+ external KernelDLL name 'lineGetProviderList'; { TAPI v1.4 }
+function lineGetStatusMessages(hLine:HLINE; lpdwLineStates:LPDWORD; lpdwAddressStates:LPDWORD):LONG;
+ external KernelDLL name 'lineGetStatusMessages';
+function lineGetTranslateCaps(hLineApp:HLINEAPP; dwAPIVersion:DWORD; lpTranslateCaps:LPLINETRANSLATECAPS):LONG;
+ external KernelDLL name 'lineGetTranslateCaps';
+function lineHandoff(hCall:HCALL; lpszFileName:LPCWSTR; dwMediaMode:DWORD):LONG;external KernelDLL name 'lineHandoff';
+function lineHold(hCall:HCALL):LONG;external KernelDLL name 'lineHold';
+function lineInitialize(lphLineApp:LPHLINEAPP; hInstance:HINST; lpfnCallback:LINECALLBACK; lpszAppName:LPCWSTR;
+ lpdwNumDevs:LPDWORD):LONG;external KernelDLL name 'lineInitialize';
+function lineInitializeEx(lphLineApp:LPHLINEAPP; hInstance:HINST; lpfnCallback:LINECALLBACK; lpszFriendlyAppName:LPCWSTR;
+ lpdwNumDevs:LPDWORD; lpdwAPIVersion:LPDWORD; lpLineInitializeExParams:LPLINEINITIALIZEEXPARAMS):LONG;
+ external KernelDLL name 'lineInitializeEx';
+function lineMakeCall(hLine:HLINE; lphCall:LPHCALL; lpszDestAddress:LPCWSTR; dwCountryCode:DWORD;
+ lpCallParams:LPLINECALLPARAMS):LONG;external KernelDLL name 'lineMakeCall';
+function lineMonitorDigits(hCall:HCALL; dwDigitModes:DWORD):LONG;external KernelDLL name 'lineMonitorDigits';
+function lineMonitorMedia(hCall:HCALL; dwMediaModes:DWORD):LONG;external KernelDLL name 'lineMonitorMedia';
+function lineNegotiateAPIVersion(hLineApp:HLINEAPP; dwDeviceID:DWORD; dwAPILowVersion:DWORD; dwAPIHighVersion:DWORD;
+ lpdwAPIVersion:LPDWORD; lpExtensionID:LPLINEEXTENSIONID):LONG;external KernelDLL name 'lineNegotiateAPIVersion';
+function lineNegotiateExtVersion(hLineApp:HLINEAPP; dwDeviceID:DWORD; dwAPIVersion:DWORD; dwExtLowVersion:DWORD;
+ dwExtHighVersion:DWORD; lpdwExtVersion:LPDWORD):LONG;external KernelDLL name 'lineNegotiateExtVersion';
+function lineOpen(hLineApp:HLINEAPP; dwDeviceID:DWORD; lphLine:LPHLINE; dwAPIVersion:DWORD; dwExtVersion:DWORD;
+ dwCallbackInstance:DWORD; dwPrivileges:DWORD; dwMediaModes:DWORD; lpCallParams:LPLINECALLPARAMS):LONG;
+ external KernelDLL name 'lineOpen';
+function linePickup(hLine:HLINE; dwAddressID:DWORD; lphCall:LPHCALL; lpszDestAddress:LPCWSTR; lpszGroupID:LPCWSTR):LONG;
+ external KernelDLL name 'linePickup';
+function linePrepareAddToConference(hConfCall:HCALL; lphConsultCall:LPHCALL; lpCallParams:LPLINECALLPARAMS):LONG;
+ external KernelDLL name 'linePrepareAddToConference';
+function lineRedirect(hCall:HCALL; lpszDestAddress:LPCWSTR; dwCountryCode:DWORD):LONG;external KernelDLL name 'lineRedirect';
+function lineReleaseUserUserInfo(hCall:HCALL):LONG;external KernelDLL name 'lineReleaseUserUserInfo'; { TAPI v1.4 }
+function lineRemoveFromConference(hCall:HCALL):LONG;external KernelDLL name 'lineRemoveFromConference';
+function lineSendUserUserInfo(hCall:HCALL; lpsUserUserInfo:LPCSTR; dwSize:DWORD):LONG;external KernelDLL name 'lineSendUserUserInfo';
+function lineSetAppPriority(lpszAppFilename:LPCWSTR; dwMediaMode:DWORD; lpExtensionID:LPLINEEXTENSIONID; dwRequestMode:DWORD;
+ lpszExtensionName:LPCWSTR; dwPriority:DWORD):LONG;external KernelDLL name 'lineSetAppPriority'; { TAPI v1.4 }
+function lineSetCallParams(hCall:HCALL; dwBearerMode:DWORD; dwMinRate:DWORD; dwMaxRate:DWORD; lpDialParams:LPLINEDIALPARAMS):LONG;
+ external KernelDLL name 'lineSetCallParams';
+function lineSetCallPrivilege(hCall:HCALL; dwCallPrivilege:DWORD):LONG;external KernelDLL name 'lineSetCallPrivilege';
+function lineSetCurrentLocation(hLineApp:HLINEAPP; dwLocation:DWORD):LONG;external KernelDLL name 'lineSetCurrentLocation';
+function lineSetDevConfig(dwDeviceID:DWORD; lpDeviceConfig:LPVOID; dwSize:DWORD; lpszDeviceClass:LPCWSTR):LONG;
+ external KernelDLL name 'lineSetDevConfig';
+function lineSetMediaMode(hCall:HCALL; dwMediaModes:DWORD):LONG;external KernelDLL name 'lineSetMediaMode';
+function lineSetNumRings(hLine:HLINE; dwAddressID:DWORD; dwNumRings:DWORD):LONG;external KernelDLL name 'lineSetNumRings';
+function lineSetStatusMessages(hLine:HLINE; dwLineStates:DWORD; dwAddressStates:DWORD):LONG;
+ external KernelDLL name 'lineSetStatusMessages';
+function lineSetTerminal(hLine:HLINE; dwAddressID:DWORD; hCall:HCALL; dwSelect:DWORD; dwTerminalModes:DWORD;
+ dwTerminalID:DWORD; bEnable:DWORD):LONG;external KernelDLL name 'lineSetTerminal';
+function lineSetTollList(hLineApp:HLINEAPP; dwDeviceID:DWORD; lpszAddressIn:LPCWSTR; dwTollListOption:DWORD):LONG;
+ external KernelDLL name 'lineSetTollList';
+function lineSetupConference(hCall:HCALL; hLine:HLINE; lphConfCall:LPHCALL; lphConsultCall:LPHCALL; dwNumParties:DWORD;
+ lpCallParams:LPLINECALLPARAMS):LONG;external KernelDLL name 'lineSetupConference';
+function lineSetupTransfer(hCall:HCALL; lphConsultCall:LPHCALL; lpCallParams:LPLINECALLPARAMS):LONG;
+ external KernelDLL name 'lineSetupTransfer';
+function lineShutdown(hLineApp:HLINEAPP):LONG;external KernelDLL name 'lineShutdown';
+function lineSwapHold(hActiveCall:HCALL; hHeldCall:HCALL):LONG;external KernelDLL name 'lineSwapHold';
+function lineTranslateAddress(hLineApp:HLINEAPP; dwDeviceID:DWORD; dwAPIVersion:DWORD; lpszAddressIn:LPCWSTR; dwCard:DWORD;
+ dwTranslateOptions:DWORD; lpTranslateOutput:LPLINETRANSLATEOUTPUT):LONG;external KernelDLL name 'lineTranslateAddress';
+function lineTranslateDialog(hLineApp:HLINEAPP; dwDeviceID:DWORD; dwAPIVersion:DWORD; hwndOwner:HWND;
+ lpszAddressIn:LPCWSTR):LONG;external KernelDLL name 'lineTranslateDialog'; { TAPI v1.4 }
+function lineUnhold(hCall:HCALL):LONG;external KernelDLL name 'lineUnhold';
+
+function phoneClose(hPhone:HPHONE):LONG;external KernelDLL name 'phoneClose';
+function phoneConfigDialog(dwDeviceID:DWORD; hwndOwner:HWND; lpszDeviceClass:LPCWSTR):LONG;external KernelDLL name 'phoneConfigDialog';
+function phoneDevSpecific(hPhone:HPHONE; lpParams:LPVOID; dwSize:DWORD):LONG;external KernelDLL name 'phoneDevSpecific';
+function phoneGetDevCaps(hPhoneApp:HPHONEAPP; dwDeviceID:DWORD; dwAPIVersion:DWORD; dwExtVersion:DWORD;
+ lpPhoneCaps:LPPHONECAPS):LONG;external KernelDLL name 'phoneGetDevCaps';
+function phoneGetGain(hPhone:HPHONE; dwHookSwitchDev:DWORD; lpdwGain:LPDWORD):LONG;external KernelDLL name 'phoneGetGain';
+function phoneGetHookSwitch(hPhone:HPHONE; lpdwHookSwitchDevs:LPDWORD):LONG;external KernelDLL name 'phoneGetHookSwitch';
+function phoneGetIcon(dwDeviceID:DWORD; lpszDeviceClass:LPCWSTR; lphIcon:LPHICON):LONG;external KernelDLL name 'phoneGetIcon';
+function phoneGetID(hPhone:HPHONE; lpDeviceID:LPVARSTRING; lpszDeviceClass:LPCWSTR):LONG;external KernelDLL name 'phoneGetID';
+function phoneGetMessage(hPhoneApp:HPHONEAPP; lpMessage:LPPHONEMESSAGE; dwTimeout:DWORD):LONG;external KernelDLL name 'phoneGetMessage';
+function phoneGetRing(hPhone:HPHONE; lpdwRingMode:LPDWORD; lpdwVolume:LPDWORD):LONG;external KernelDLL name 'phoneGetRing';
+function phoneGetStatus(hPhone:HPHONE; lpPhoneStatus:LPPHONESTATUS):LONG;external KernelDLL name 'phoneGetStatus';
+function phoneGetStatusMessages(hPhone:HPHONE; lpdwPhoneStates:LPDWORD; lpdwButtonModes:LPDWORD; lpdwButtonStates:LPDWORD):LONG;
+ external KernelDLL name 'phoneGetStatusMessages';
+function phoneGetVolume(hPhone:HPHONE; dwHookSwitchDev:DWORD; lpdwVolume:LPDWORD):LONG;external KernelDLL name 'phoneGetVolume';
+function phoneInitializeEx(lphPhoneApp:LPHPHONEAPP; hInstance:HINST; lpfnCallback:PHONECALLBACK; lpszFriendlyAppName:LPCWSTR;
+ lpdwNumDevs:LPDWORD; lpdwAPIVersion:LPDWORD; lpPhoneInitializeExParams:LPPHONEINITIALIZEEXPARAMS):LONG;
+ external KernelDLL name 'phoneInitializeEx';
+function phoneNegotiateAPIVersion(hPhoneApp:HPHONEAPP; dwDeviceID:DWORD; dwAPILowVersion:DWORD; dwAPIHighVersion:DWORD;
+ lpdwAPIVersion:LPDWORD; lpExtensionID:LPPHONEEXTENSIONID):LONG;external KernelDLL name 'phoneNegotiateAPIVersion';
+function phoneNegotiateExtVersion(hPhoneApp:HPHONEAPP; dwDeviceID:DWORD; dwAPIVersion:DWORD; dwExtLowVersion:DWORD;
+ dwExtHighVersion:DWORD; lpdwExtVersion:LPDWORD):LONG;external KernelDLL name 'phoneNegotiateExtVersion';
+function phoneOpen(hPhoneApp:HPHONEAPP; dwDeviceID:DWORD; lphPhone:LPHPHONE; dwAPIVersion:DWORD; dwExtVersion:DWORD;
+ dwCallbackInstance:DWORD; dwPrivilege:DWORD):LONG;external KernelDLL name 'phoneOpen';
+function phoneSetGain(hPhone:HPHONE; dwHookSwitchDev:DWORD; dwGain:DWORD):LONG;external KernelDLL name 'phoneSetGain';
+function phoneSetHookSwitch(hPhone:HPHONE; dwHookSwitchDevs:DWORD; dwHookSwitchMode:DWORD):LONG;
+ external KernelDLL name 'phoneSetHookSwitch';
+function phoneSetRing(hPhone:HPHONE; dwRingMode:DWORD; dwVolume:DWORD):LONG;external KernelDLL name 'phoneSetRing';
+function phoneSetStatusMessages(hPhone:HPHONE; dwPhoneStates:DWORD; dwButtonModes:DWORD; dwButtonStates:DWORD):LONG;
+ external KernelDLL name 'phoneSetStatusMessages';
+function phoneSetVolume(hPhone:HPHONE; dwHookSwitchDev:DWORD; dwVolume:DWORD):LONG;external KernelDLL name 'phoneSetVolume';
+function phoneShutdown(hPhoneApp:HPHONEAPP):LONG;external KernelDLL name 'phoneShutdown';
+
+function TAPIERROR_FORMATMESSAGE(const AErrCode: Longword): Longword; // C Macros conversion, may be wrong
+
+{$endif read_interface}
+
+{$ifdef read_implementation}
+
+function TAPIERROR_FORMATMESSAGE(const AErrCode: Longword): Longword;
+begin
+ if AErrCode>$FFFF0000 then Exit(AErrCode and $0000FFFF);
+ if (AErrCode and $10000000)<>0 then Exit(AErrCode-$90000000+$F000);
+ Exit(AErrCode-$80000000+$E000);
+end;
+
+{$endif read_implementation}

+ 34 - 0
tests/test/units/classes/tmakeobjinst.pp

@@ -0,0 +1,34 @@
+{ %opt=-S2 }
+{ %target=win32 }
+uses
+  windows,messages,classes;
+
+type
+  tc1 = class
+    procedure p(var msg : TMessage);
+  end;
+
+  tf = function (Window: HWND; Message, WParam: WPARAM;LParam: LPARAM): HRESULT; stdcall;
+
+procedure tc1.p(var msg : TMessage);
+  begin
+    if (msg.msg<>1) or (msg.wparam<>2) or (msg.lparam<>3) then
+      halt(1);
+    msg.result:=4;
+  end;
+
+var
+  f : tf;
+  c : tc1;
+begin
+  c:=tc1.create;
+  f:=tf(MakeObjectInstance(@c.p));
+
+  if f(0,1,2,3)<>4 then
+    halt(1);
+
+  c.free;
+
+  FreeObjectInstance(f);
+  writeln('ok');
+end.