home *** CD-ROM | disk | FTP | other *** search
/ Solo Programadores 22 / SOLO_22.iso / packages / win32ada / data.z / win32-windowsx.adb < prev    next >
Encoding:
Text File  |  1995-12-01  |  231.2 KB  |  5,306 lines

  1. -- $Source: /home/harp/1/proto/monoBANK/winnt/win32-windowsx.adb,v $ 
  2. -- $Revision: 1.5 $ $Date: 95/02/07 12:57:11 $ $Author: mg $ 
  3. -------------------------------------------------------------------------------
  4. --
  5. -- THIS FILE AND ANY ASSOCIATED DOCUMENTATION IS FURNISHED "AS IS" WITHOUT 
  6. -- WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
  7. -- TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR 
  8. -- PURPOSE.  The user assumes the entire risk as to the accuracy and the 
  9. -- use of this file.
  10. --
  11. -- Copyright (c) Intermetrics, Inc. 1995
  12. -- Royalty-free, unlimited, worldwide, non-exclusive use, modification, 
  13. -- reproduction and further distribution of this file is permitted.
  14. --
  15. -------------------------------------------------------------------------------
  16.  
  17.  
  18. with Ada.Unchecked_Conversion;
  19. with Interfaces.C;
  20. with Win32.Utils;
  21. with Win32.Wingdi;
  22. with Win32.Winuser;
  23.  
  24. package body Win32.Windowsx is
  25.  
  26.     use type Interfaces.C.Int;
  27.     use type Interfaces.C.Long;
  28.     use type Interfaces.C.Short;
  29.  
  30.     function LOCHAR (wp: Win32.WPARAM) return Win32.Tchar.TCHAR is
  31.         function To_TCHAR is new Ada.Unchecked_Conversion(Win32.BYTE,
  32.                     Win32.Tchar.TCHAR);
  33.     begin
  34.         return To_TCHAR(
  35.                 Win32.Utils.LOBYTE(
  36.                  Win32.Utils.LOWORD(
  37.                   Win32.DWORD(wp))));
  38.     end LOCHAR;
  39.  
  40.     function GetInstanceModule(hInstance: Win32.Windef.HMODULE) 
  41.                                return Win32.Windef.HMODULE is
  42.                                                             -- windowsx.h: 20
  43.     begin
  44.         return Win32.Windef.HMODULE(hInstance);
  45.     end GetInstanceModule;
  46.  
  47.     function GlobalPtrHandle(lp: Win32.LPCVOID) return Win32.Windef.HGLOBAL is
  48.                                         -- windowsx.h: 22
  49.     begin
  50.         return Win32.Winbase.GlobalHandle(lp);
  51.     end GlobalPtrHandle;
  52.  
  53.     function GlobalLockPtr(lp: Win32.LPCVOID) return Win32.BOOL is
  54.                                                             -- windowsx.h:25
  55.         function To_BOOL is new Ada.Unchecked_Conversion(Win32.LPVOID, 
  56.                         Win32.BOOL);
  57.     begin
  58.         return To_BOOL(Win32.Winbase.GlobalLock(GlobalPtrHandle(lp)));
  59.     end GlobalLockPtr;
  60.  
  61.     function GlobalUnlockPtr(lp: Win32.LPCVOID) return Win32.BOOL is
  62.                                                 -- windowsx.h:27
  63.     begin
  64.         return Win32.Winbase.GlobalUnlock(GlobalPtrHandle(lp));
  65.     end GlobalUnlockPtr;
  66.  
  67.     function GlobalAllocPtr(flags: Win32.UINT;
  68.                             cb   : Win32.DWORD) return Win32.LPVOID is
  69.                                         -- windowsx.h: 30
  70.     begin
  71.         return Win32.Winbase.GlobalLock(Win32.Winbase.GlobalAlloc(flags, cb));
  72.     end GlobalAllocPtr;
  73.  
  74.     function GlobalReAllocPtr(lp   : Win32.LPCVOID;
  75.                               cbNew: Win32.DWORD;
  76.                               flags: Win32.UINT) return Win32.LPVOID is
  77.                                         -- windowsx.h: 32
  78.         garbage : Win32.BOOL;
  79.     begin
  80.         garbage := GlobalUnlockPtr(lp);
  81.         return Win32.Winbase.GlobalLock(
  82.                 Win32.Winbase.GlobalReAlloc(GlobalPtrHandle(lp), 
  83.                                             cbNew, flags));
  84.     end GlobalReAllocPtr;
  85.  
  86.     function GlobalFreePtr(lp: Win32.LPCVOID) return Win32.BOOL is
  87.                                         -- windowsx.h: 34
  88.         function To_BOOL is new Ada.Unchecked_Conversion(Win32.Windef.HGLOBAL,
  89.                     Win32.BOOL);
  90.         garbage : Win32.BOOL;
  91.     begin
  92.         garbage := GlobalUnlockPtr(lp);
  93.         return To_BOOL(Win32.Winbase.GlobalFree(GlobalPtrHandle(lp)));
  94.     end GlobalFreePtr;
  95.  
  96.     function  DeletePen(hpen : Win32.Windef.HPEN) return Win32.BOOL is
  97.                                                             -- windowsx.h:39
  98.     begin
  99.         return Win32.Wingdi.DeleteObject(Win32.Windef.HGDIOBJ(hpen));
  100.     end DeletePen;
  101.  
  102.     function  SelectPen(hdc  : Win32.Windef.HDC;
  103.                         hpen : Win32.Windef.HPEN)
  104.                               return Win32.Windef.HPEN is   -- windowsx.h:40
  105.     begin
  106.         return Win32.Windef.HPEN(
  107.                 Win32.Wingdi.SelectObject(hdc, Win32.Windef.HGDIOBJ(hpen)));
  108.     end SelectPen;
  109.  
  110.     function  GetStockPen(i : Win32.INT) return Win32.Windef.HPEN is
  111.                                                             -- windowsx.h:41
  112.     begin
  113.         return Win32.Windef.HPEN(Win32.Wingdi.GetStockObject(i));
  114.     end GetStockPen;
  115.  
  116.     function  DeleteBrush(hbr : Win32.Windef.HBRUSH) return Win32.BOOL is
  117.                                                             -- windowsx.h:43
  118.     begin
  119.         return Win32.Wingdi.DeleteObject(Win32.Windef.HGDIOBJ(hbr));
  120.     end DeleteBrush;
  121.  
  122.     function  SelectBrush(hdc : Win32.Windef.HDC;
  123.                           hbr : Win32.Windef.HBRUSH)
  124.                               return Win32.Windef.HBRUSH is -- windowsx.h:44
  125.     begin
  126.         return Win32.Windef.HBRUSH(
  127.                 Win32.Wingdi.SelectObject(hdc, Win32.Windef.HGDIOBJ(hbr)));
  128.     end SelectBrush;
  129.  
  130.     function  GetStockBrush(i : Win32.INT) return Win32.Windef.HBRUSH is
  131.                                                             -- windowsx.h:45
  132.     begin
  133.         return Win32.Windef.HBRUSH(Win32.Wingdi.GetStockObject(i));
  134.     end GetStockBrush;
  135.  
  136.     function  DeleteRgn(hrgn : Win32.Windef.HRGN) return Win32.BOOL is
  137.                                                             -- windowsx.h:47 
  138.     begin
  139.         return Win32.Wingdi.DeleteObject(Win32.Windef.HGDIOBJ(hrgn));
  140.     end DeleteRgn;
  141.  
  142.     function  CopyRgn(hrgnDst : Win32.Windef.HRGN;
  143.                       hrgnSrc : Win32.Windef.HRGN) return Win32.INT is 
  144.                                 -- windowsx.h:49
  145.         function To_HRGN is new Ada.Unchecked_Conversion(integer,
  146.                 Win32.Windef.HRGN);
  147.     begin
  148.         return Win32.Wingdi.CombineRgn(hrgnDst, hrgnSrc,        
  149.                                         To_HRGN(0), 
  150.                                         Win32.Wingdi.RGN_COPY);
  151.     end CopyRgn;
  152.  
  153.     function  IntersectRgn(hrgnResult : Win32.Windef.HRGN;
  154.                            hrgnA      : Win32.Windef.HRGN;
  155.                            hrgnB      : Win32.Windef.HRGN) 
  156.                                         return Win32.INT is
  157.                                                             -- windowsx.h:50
  158.     begin
  159.         return Win32.Wingdi.CombineRgn(hrgnResult, hrgnA, hrgnB, 
  160.                                         Win32.Wingdi.RGN_AND);
  161.     end IntersectRgn;
  162.  
  163.     function  SubtractRgn(hrgnResult : Win32.Windef.HRGN;
  164.                           hrgnA      : Win32.Windef.HRGN;
  165.                           hrgnB      : Win32.Windef.HRGN) 
  166.                                        return Win32.INT is
  167.                                                             -- windowsx.h:51
  168.     begin
  169.         return Win32.Wingdi.CombineRgn(hrgnResult, hrgnA, hrgnB, 
  170.                                         Win32.Wingdi.RGN_DIFF);
  171.     end SubtractRgn;
  172.  
  173.  
  174.     function  UnionRgn(hrgnResult : Win32.Windef.HRGN;
  175.                        hrgnA      : Win32.Windef.HRGN;
  176.                        hrgnB      : Win32.Windef.HRGN) 
  177.                                      return Win32.INT is    -- windowsx.h:52
  178.     begin
  179.         return Win32.Wingdi.CombineRgn(hrgnResult, hrgnA, hrgnB, 
  180.                                         Win32.Wingdi.RGN_OR);
  181.     end UnionRgn;
  182.  
  183.     function  XorRgn(hrgnResult : Win32.Windef.HRGN;
  184.                      hrgnA      : Win32.Windef.HRGN;
  185.                      hrgnB      : Win32.Windef.HRGN) 
  186.                                      return Win32.INT is    -- windowsx.h:53
  187.     begin
  188.         return Win32.Wingdi.CombineRgn(hrgnResult, hrgnA, hrgnB, 
  189.                                         Win32.Wingdi.RGN_XOR);
  190.     end XorRgn; 
  191.  
  192.     function  DeletePalette(hpal : Win32.Windef.HPALETTE) return Win32.BOOL is
  193.                                                             -- windowsx.h:55 
  194.     begin
  195.         return Win32.Wingdi.DeleteObject(Win32.Windef.HGDIOBJ(hpal));
  196.     end DeletePalette;
  197.  
  198.     function  DeleteFont(hfont : Win32.Windef.HFONT) return Win32.BOOL is
  199.                                                             -- windowsx.h:57 
  200.     begin
  201.         return Win32.Wingdi.DeleteObject(Win32.Windef.HGDIOBJ(hfont));
  202.     end DeleteFont;
  203.  
  204.     function  SelectFont(hdc   : Win32.Windef.HDC;
  205.                          hfont : Win32.Windef.HFONT)
  206.                               return Win32.Windef.HFONT is  -- windowsx.h:58
  207.     begin
  208.         return Win32.Windef.HFONT(
  209.                 Win32.Wingdi.SelectObject(hdc, Win32.Windef.HGDIOBJ(hfont)));
  210.     end SelectFont;
  211.  
  212.     function  GetStockFont(i : Win32.INT) return Win32.Windef.HFONT is
  213.                                                             -- windowsx.h:59
  214.     begin
  215.         return Win32.Windef.HFONT(Win32.Wingdi.GetStockObject(i));
  216.     end GetStockFont;
  217.  
  218.     function  DeleteBitmap(hbm : Win32.Windef.HBITMAP) return Win32.BOOL is
  219.                                                             -- windowsx.h:61 
  220.     begin
  221.         return Win32.Wingdi.DeleteObject(Win32.Windef.HGDIOBJ(hbm));
  222.     end DeleteBitmap;
  223.  
  224.     function  SelectBitmap(hdc : Win32.Windef.HDC;
  225.                            hbm : Win32.Windef.HBITMAP)
  226.                               return Win32.Windef.HBITMAP is-- windowsx.h:62
  227.     begin
  228.         return Win32.Windef.HBITMAP(
  229.                 Win32.Wingdi.SelectObject(hdc, Win32.Windef.HGDIOBJ(hbm)));
  230.     end SelectBitmap;
  231.  
  232.     function InsetRect(lprc: Win32.Windef.LPRECT;
  233.                        dx  : Win32.INT;
  234.                        dy  : Win32.INT)
  235.                                return Win32.BOOL is         -- windowsx.h:64
  236.         use Interfaces.C;
  237.     begin
  238.         return Win32.Winuser.InflateRect(lprc, -dx, -dy);
  239.     end InsetRect;
  240.  
  241.     function GetWindowInstance(hwnd : Win32.Windef.HWND) 
  242.                                return Win32.Windef.HMODULE is
  243.                                                             -- windowsx.h:68
  244.         function To_HMODULE is new Ada.Unchecked_Conversion(Win32.LONG,
  245.                 Win32.Windef.HMODULE);
  246.     begin
  247.         return To_HMODULE(
  248.                 Win32.Winuser.GetWindowLong(
  249.                         hwnd, 
  250.                         Win32.Winuser.GWL_HINSTANCE));
  251.     end GetWindowInstance;
  252.  
  253.     function GetWindowStyle(hwnd: Win32.Windef.HWND) 
  254.                                return Win32.DWORD is        -- windowsx.h:70 
  255.     begin
  256.         return Win32.DWORD(
  257.                 Win32.Winuser.GetWindowLong(hwnd, Win32.Winuser.GWL_STYLE));
  258.     end GetWindowStyle;
  259.  
  260.     function GetWindowExStyle(hwnd: Win32.Windef.HWND) 
  261.                                return Win32.DWORD is        -- windowsx.h:71
  262.     begin
  263.         return Win32.DWORD(
  264.                 Win32.Winuser.GetWindowLong(hwnd, Win32.Winuser.GWL_EXSTYLE));
  265.     end GetWindowExStyle;
  266.  
  267.     function GetWindowOwner(hwnd: Win32.Windef.HWND)  
  268.                             return Win32.Windef.HWND is
  269.                                                             -- windowsx.h:73
  270.     begin
  271.         return Win32.Winuser.GetWindow(hwnd, Win32.Winuser.GW_OWNER);
  272.     end GetWindowOwner;
  273.  
  274.     function GetFirstSibling(hwnd: Win32.Windef.HWND)  
  275.                         return Win32.Windef.HWND is         -- windowsx.h:76 
  276.     begin
  277.         return Win32.Winuser.GetWindow(hwnd, Win32.Winuser.GW_HWNDFIRST);
  278.     end GetFirstSibling;
  279.  
  280.     function GetLastSibling(hwnd: Win32.Windef.HWND)  
  281.                                 return Win32.Windef.HWND is -- windowsx.h:77  
  282.     begin
  283.         return Win32.Winuser.GetWindow(hwnd, Win32.Winuser.GW_HWNDLAST);
  284.     end GetLastSibling;
  285.  
  286.     function GetNextSibling(hwnd: Win32.Windef.HWND)  
  287.                         return Win32.Windef.HWND is         -- windowsx.h:78   
  288.     begin
  289.         return Win32.Winuser.GetWindow(hwnd, Win32.Winuser.GW_HWNDNEXT);
  290.     end GetNextSibling;
  291.  
  292.     function GetPrevSibling(hwnd: Win32.Windef.HWND)  
  293.                         return Win32.Windef.HWND is         -- windowsx.h:79   
  294.     begin
  295.         return Win32.Winuser.GetWindow(hwnd, Win32.Winuser.GW_HWNDPREV);
  296.     end GetPrevSibling;
  297.  
  298.     procedure SetWindowRedraw(hwnd   : Win32.Windef.HWND;
  299.                               fRedraw: Win32.BOOL) is       -- windowsx.h:83
  300.         garbage : Win32.LRESULT;
  301.     begin
  302.         garbage := Win32.Winuser.SendMessage(hwnd, 
  303.                                         Win32.Winuser.WM_SETREDRAW, 
  304.                                         Win32.WPARAM(fRedraw), 0);
  305.     end SetWindowRedraw;
  306.  
  307.    function SubclassWindow(hwnd : Win32.Windef.HWND;
  308.                             lpfn : Win32.Windef.FARPROC)
  309.                             return Win32.Winuser.WNDPROC is -- windowsx.h:86
  310.  
  311.         function To_WNDPROC is new Ada.Unchecked_Conversion(Win32.LONG,
  312.                 Win32.Winuser.WNDPROC);
  313.         function To_LPARAM is new Ada.Unchecked_Conversion(
  314.                 Win32.Windef.FARPROC,Win32.LPARAM);
  315.     begin
  316.         return To_WNDPROC(
  317.                 Win32.Winuser.SetWindowLong(hwnd,
  318.                                             Win32.Winuser.GWL_WNDPROC,
  319.                                             To_LPARAM(lpfn)));
  320.     end SubclassWindow;
  321.  
  322.  
  323.     function IsRestored(hwnd: Win32.Windef.HWND) return Win32.BOOL is
  324.                                                             -- windowsx.h:91
  325.         use Interfaces.C;
  326.     begin
  327.         --if ((Win32.Utils.LOWORD(GetWindowStyle(hwnd)) and
  328.         --    (Win32.Winuser.WS_MINIMIZE or Win32.Winuser.WS_MAXIMIZE)) = 0) then
  329.         if ((GetWindowStyle(hwnd) and
  330.             (Win32.Winuser.WS_MINIMIZE or Win32.Winuser.WS_MAXIMIZE)) = 0) then
  331.                 return Win32.TRUE;
  332.         else
  333.                 return Win32.FALSE;
  334.         end if;
  335.     end IsRestored;
  336.  
  337.     function MapWindowRect(hwndFrom: Win32.Windef.HWND; 
  338.                            hwndTo  : Win32.Windef.HWND; 
  339.                            lprc    : Win32.Windef.LPPOINT)
  340.                            return Win32.INT is              -- windowsx.h: 97
  341.     begin
  342.         return Win32.Winuser.MapWindowPoints(hwndFrom, hwndTo, lprc, 2);
  343.     end MapWindowRect;
  344.  
  345.     function IsLButtonDown return Win32.BOOL is             -- windowsx.h:100
  346.     begin
  347.         if (Win32.Winuser.GetKeyState(Win32.Winuser.VK_LBUTTON) < 0) then
  348.             return 1;
  349.         else    
  350.             return 0;
  351.         end if;
  352.     end IsLButtonDown;
  353.  
  354.     function IsRButtonDown return Win32.BOOL is             -- windowsx.h:101
  355.     begin
  356.         if (Win32.Winuser.GetKeyState(Win32.Winuser.VK_RBUTTON) < 0) then
  357.             return 1;
  358.         else    
  359.             return 0;
  360.         end if;
  361.     end IsRButtonDown;
  362.  
  363.     function IsMButtonDown return Win32.BOOL is             -- windowsx.h:102
  364.     begin
  365.         if (Win32.Winuser.GetKeyState(Win32.Winuser.VK_MBUTTON) < 0) then
  366.             return 1;
  367.         else    
  368.             return 0;
  369.         end if;
  370.     end IsMButtonDown;
  371.  
  372.     function SubclassDialog(hwndDlg: Win32.Windef.HWND;  
  373.                             lpfn   : Win32.Winuser.DLGPROC)
  374.                             return Win32.Winuser.DLGPROC is -- windowsx.h:104
  375.  
  376.         function To_LPARAM is new Ada.Unchecked_Conversion(
  377.                 Win32.Winuser.DLGPROC, Win32.LPARAM);
  378.         function To_DLGPROC is new Ada.Unchecked_Conversion(Win32.LONG,
  379.                 Win32.Winuser.DLGPROC);
  380.     begin
  381.         return to_DLGPROC(
  382.                 Win32.Winuser.SetWindowLong(hwndDlg,
  383.                                             Win32.Winuser.DWL_DLGPROC,
  384.                                             To_LPARAM(lpfn)));
  385.     end SubclassDialog;
  386.                                                 
  387.     function SetDlgMsgResult(hwnd  : Win32.Windef.HWND;   
  388.                              msg   : Win32.UINT; 
  389.                              result: Win32.LRESULT) return Win32.BOOL is
  390.                                                             -- windowsx.h:107
  391.         use Win32.Winuser;
  392.         garbage : Win32.LONG;
  393.     begin
  394.         case msg is
  395.         when      WM_CTLCOLORMSGBOX      |
  396.                   WM_CTLCOLOREDIT        |
  397.                   WM_CTLCOLORLISTBOX     |
  398.                   WM_CTLCOLORBTN         |
  399.                   WM_CTLCOLORDLG         |
  400.                   WM_CTLCOLORSCROLLBAR   |
  401.                   WM_CTLCOLORSTATIC      |
  402.                   WM_COMPAREITEM         |
  403.                   WM_VKEYTOITEM          |
  404.                   WM_CHARTOITEM          |
  405.                   WM_QUERYDRAGICON       |
  406.                   WM_INITDIALOG           =>
  407.                 return Win32.BOOL(result);
  408.         when others =>
  409.                  garbage := SetWindowLong(hwnd, 
  410.                                      DWL_MSGRESULT, 
  411.                                      Win32.LPARAM(Win32.LRESULT(result)));
  412.                 return Win32.TRUE;
  413.         end case;
  414.     end SetDlgMsgResult;
  415.  
  416.     function DefDlgProcEx(hwnd       : Win32.Windef.HWND;   
  417.                           msg        : Win32.UINT; 
  418.                           wParam     : Win32.WPARAM; 
  419.                           lParam     : Win32.LPARAM;  
  420.                           pfRecursion: Win32.LPBOOL) 
  421.                                        return Win32.LRESULT is
  422.                                                             -- windowsx.h:122
  423.     begin
  424.         pfRecursion.all := Win32.TRUE;
  425.         return Win32.Winuser.DefDlgProc(hwnd, msg, wParam, lParam);
  426.     end DefDlgProcEx;
  427.  
  428.     function To_LRESULT is new Ada.Unchecked_Conversion(Win32.UINT, 
  429.                 Win32.LRESULT);
  430.     function To_LRESULT is new Ada.Unchecked_Conversion(Win32.DWORD, 
  431.                 Win32.LRESULT);
  432.  
  433.     function To_HDC is new Ada.Unchecked_Conversion(Win32.WPARAM,
  434.                 Win32.Windef.HDC);
  435.     function HDC_To_DWORD is new Ada.Unchecked_Conversion(Win32.Windef.HDC,
  436.                 Win32.DWORD);
  437.  
  438.     function To_HWND is new Ada.Unchecked_Conversion(Win32.WPARAM, 
  439.                 Win32.Windef.HWND);
  440.     function To_HWND is new Ada.Unchecked_Conversion(Win32.LPARAM,
  441.                 Win32.Windef.HWND);
  442.     function To_HWND is new Ada.Unchecked_Conversion(Win32.DWORD,
  443.                 Win32.Windef.HWND);
  444.  
  445.     function To_LPARAM is new Ada.Unchecked_Conversion(Win32.Windef.HWND, 
  446.                 LPARAM);
  447.     function HMENU_To_LPARAM is new Ada.Unchecked_Conversion(
  448.                 Win32.Windef.HMENU, LPARAM);
  449.  
  450.     function HANDLE_WM_COMPACTING(hwnd  : Win32.Windef.HWND;
  451.                                   wParam: Win32.WPARAM; 
  452.                                   lParam: Win32.LPARAM;
  453.                                   fn    : LPCOMPACTINGPROC) 
  454.                                   return Win32.LONG is
  455.     begin
  456.         fn(hwnd, Win32.UINT(wParam));
  457.         return 0;
  458.     end HANDLE_WM_COMPACTING;
  459.  
  460.     procedure FORWARD_WM_COMPACTING(hwnd        : Win32.Windef.HWND;
  461.                                     compactRatio: Win32.UINT;
  462.                                     fn          : LPDEFFN) is
  463.         garbage: Win32.LRESULT;
  464.     begin
  465.         garbage := fn(hwnd, Win32.Winuser.WM_COMPACTING, 
  466.                         Win32.WPARAM(compactRatio), 0);
  467.     end FORWARD_WM_COMPACTING;
  468.  
  469.     function To_LPCTSTR is new Ada.Unchecked_Conversion(
  470.                 Win32.LPARAM, Win32.Winnt.LPCTSTR);
  471.  
  472.     function HANDLE_WM_WININICHANGE(hwnd  : Win32.Windef.HWND;
  473.                                     wParam: Win32.WPARAM;
  474.                                     lParam: Win32.LPARAM;
  475.                                     fn    : LPWININICHANGEPROC)
  476.                                     return Win32.LRESULT is -- windowsx.h:140
  477.  
  478.     begin
  479.         fn(hwnd, To_LPCTSTR(lParam));
  480.         return 0;
  481.     end HANDLE_WM_WININICHANGE;
  482.  
  483.     function To_LPARAM is new Ada.Unchecked_Conversion( 
  484.                 Win32.LPCSTR, Win32.LPARAM);
  485.     --function To_LPARAM is new Ada.Unchecked_Conversion( 
  486.     --            Win32.Winnt.LPCTSTR, Win32.LPARAM);
  487.  
  488.  
  489.     procedure FORWARD_WM_WININICHANGE(hwnd           : Win32.Windef.HWND;
  490.                                       lpszSectionName: Win32.Winnt.LPCTSTR;
  491.                                       fn             : LPDEFFN) is
  492.                                                             -- windowsx.h:142
  493.         garbage: Win32.LRESULT;
  494.     begin
  495.         garbage := fn(hwnd, Win32.Winuser.WM_WININICHANGE, 0, 
  496.                         To_LPARAM(lpszSectionName));
  497.     end FORWARD_WM_WININICHANGE;
  498.  
  499.     function HANDLE_WM_SYSCOLORCHANGE(hwnd  : Win32.Windef.HWND;
  500.                                       wParam: Win32.WPARAM;
  501.                                       lParam: Win32.LPARAM;
  502.                                       fn    : LPSYSCOLORCHANGEPROC)
  503.                                       return Win32.LRESULT is
  504.                                                             -- windowsx.h:146
  505.     begin
  506.         fn(hwnd);
  507.         return 0;
  508.     end HANDLE_WM_SYSCOLORCHANGE;
  509.  
  510.     procedure FORWARD_WM_SYSCOLORCHANGE(hwnd: Win32.Windef.HWND;
  511.                                         fn  : LPDEFFN) is   -- windowsx.h:148
  512.         garbage: Win32.LRESULT;
  513.     begin
  514.         garbage := fn(hwnd, Win32.Winuser.WM_SYSCOLORCHANGE, 0, 0);
  515.     end FORWARD_WM_SYSCOLORCHANGE;
  516.  
  517.     function HANDLE_WM_QUERYNEWPALETTE(hwnd  : Win32.Windef.HWND;
  518.                                        wParam: Win32.WPARAM;
  519.                                        lParam: Win32.LPARAM;
  520.                                        fn    : LPQUERYNEWPALETTEFN)
  521.                                        return Win32.LRESULT is
  522.                                                             -- windowsx.h:152
  523.     begin
  524.         return Win32.Winuser.MAKELRESULT(Win32.WORD(fn(hwnd)), 0);
  525.     end HANDLE_WM_QUERYNEWPALETTE;
  526.  
  527.     function FORWARD_WM_QUERYNEWPALETTE(hwnd: Win32.Windef.HWND;
  528.                                         fn  : LPDEFFN)
  529.                                         return Win32.BOOL is-- windowsx.h:154
  530.     begin
  531.         return Win32.BOOL(
  532.                 Win32.DWORD(
  533.                  fn(hwnd, Win32.Winuser.WM_QUERYNEWPALETTE, 0, 0)));
  534.     end FORWARD_WM_QUERYNEWPALETTE;
  535.  
  536.     function To_DWORD is new Ada.Unchecked_Conversion(
  537.                 Win32.Windef.HWND, Win32.DWORD);
  538.  
  539.  
  540.     function HANDLE_WM_PALETTEISCHANGING(hwnd  : Win32.Windef.HWND;
  541.                                          wParam: Win32.WPARAM;
  542.                                          lParam: Win32.LPARAM;
  543.                                          fn    : LPPALETTEISCHANGINGPROC)
  544.                                          return Win32.LRESULT is
  545.                                                             -- windowsx.h:158
  546.     begin
  547.         fn(hwnd, To_HWND(wParam));
  548.         return 0;
  549.     end HANDLE_WM_PALETTEISCHANGING;
  550.  
  551.  
  552.     procedure FORWARD_WM_PALETTEISCHANGING(
  553.                 hwnd             : Win32.Windef.HWND;
  554.                 hwndPaletteChange: Win32.Windef.HWND;
  555.                 fn               : LPDEFFN) is              -- windowsx.h:160
  556.         garbage: Win32.LRESULT;
  557.     begin
  558.         garbage := fn(hwnd, Win32.Winuser.WM_PALETTEISCHANGING, 
  559.                       Win32.WPARAM(To_DWORD(hwndPaletteChange)), 
  560.                       0);
  561.     end FORWARD_WM_PALETTEISCHANGING;
  562.  
  563.     function HANDLE_WM_PALETTECHANGED(hwnd  : Win32.Windef.HWND;
  564.                                       wParam: Win32.WPARAM;
  565.                                       lParam: Win32.LPARAM;
  566.                                       fn    : LPPALETTECHANGEDPROC)
  567.                                       return Win32.LRESULT is
  568.                                                             -- windowsx.h:164
  569.     begin
  570.         fn(hwnd, To_HWND(wParam));
  571.         return 0;
  572.     end HANDLE_WM_PALETTECHANGED;
  573.  
  574.     procedure FORWARD_WM_PALETTECHANGED(hwnd             : Win32.Windef.HWND;
  575.                                         hwndPaletteChange: Win32.Windef.HWND;
  576.                                         fn               : LPDEFFN) is
  577.                                                             -- windowsx.h:166
  578.         garbage: Win32.LRESULT;
  579.     begin
  580.         garbage := fn(hwnd, Win32.Winuser.WM_PALETTECHANGED, 
  581.                       Win32.WPARAM(To_DWORD(hwndPaletteChange)), 
  582.                       0);
  583.     end FORWARD_WM_PALETTECHANGED;
  584.  
  585.     function HANDLE_WM_FONTCHANGE(hwnd  : Win32.Windef.HWND;
  586.                                   wParam: Win32.WPARAM;
  587.                                   lParam: Win32.LPARAM;
  588.                                   fn    : LPFONTCHANGEPROC)
  589.                                   return Win32.LRESULT is   -- windowsx.h:170
  590.     begin
  591.         fn(hwnd);
  592.         return 0;
  593.     end HANDLE_WM_FONTCHANGE;
  594.  
  595.     procedure FORWARD_WM_FONTCHANGE(hwnd: Win32.Windef.HWND;
  596.                                     fn  : LPDEFFN) is       -- windowsx.h:172
  597.         garbage: Win32.LRESULT;
  598.     begin
  599.         garbage := fn(hwnd, Win32.Winuser.WM_FONTCHANGE, 0, 0);
  600.     end FORWARD_WM_FONTCHANGE;
  601.  
  602.     function HANDLE_WM_SPOOLERSTATUS(hwnd  : Win32.Windef.HWND;
  603.                                      wParam: Win32.WPARAM;
  604.                                      lParam: Win32.LPARAM;
  605.                                      fn    : LPSPOOLERSTATUSPROC)
  606.                                      return Win32.LRESULT is-- windowsx.h:176
  607.     begin
  608.         fn(hwnd, 
  609.            Win32.UINT(wParam), 
  610.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))));
  611.         return 0;
  612.     end HANDLE_WM_SPOOLERSTATUS;
  613.  
  614.     procedure FORWARD_WM_SPOOLERSTATUS(hwnd       : Win32.Windef.HWND;
  615.                                        status     : Win32.UINT;
  616.                                        cJobInQueue: Win32.INT;
  617.                                        fn         : LPDEFFN) is
  618.                                                             -- windowsx.h:178
  619.         garbage: Win32.LRESULT;
  620.     begin
  621.         garbage := fn(hwnd, Win32.Winuser.WM_SPOOLERSTATUS, 
  622.                         Win32.WPARAM(status), 
  623.                         Win32.Winuser.MAKELPARAM(Win32.WORD(cJobInQueue), 0));
  624.     end FORWARD_WM_SPOOLERSTATUS;
  625.  
  626.     function HANDLE_WM_DEVMODECHANGE(hwnd  : Win32.Windef.HWND;
  627.                                      wParam: Win32.WPARAM;
  628.                                      lParam: Win32.LPARAM;
  629.                                      fn    : LPDEVMODECHANGEPROC)
  630.                                      return Win32.LRESULT is-- windowsx.h:182
  631.     begin
  632.         fn(hwnd, To_LPCTSTR(lParam));
  633.         return 0;
  634.     end HANDLE_WM_DEVMODECHANGE;
  635.  
  636.     procedure FORWARD_WM_DEVMODECHANGE(hwnd          : Win32.Windef.HWND;
  637.                                        lpszDeviceName: Win32.Winnt.LPCTSTR;
  638.                                        fn            : LPDEFFN) is
  639.                                                             -- windowsx.h:184
  640.         garbage: Win32.LRESULT;
  641.     begin
  642.         garbage := fn(hwnd, Win32.Winuser.WM_DEVMODECHANGE, 0, 
  643.                         To_LPARAM(lpszDeviceName));
  644.     end FORWARD_WM_DEVMODECHANGE;
  645.  
  646.     function HANDLE_WM_TIMECHANGE(hwnd  : Win32.Windef.HWND;
  647.                                   wParam: Win32.WPARAM;
  648.                                   lParam: Win32.LPARAM;
  649.                                   fn    : LPTIMECHANGEPROC)
  650.                                   return Win32.LRESULT is   -- windowsx.h:188
  651.     begin
  652.         fn(hwnd);
  653.         return 0;
  654.     end HANDLE_WM_TIMECHANGE;
  655.  
  656.     procedure FORWARD_WM_TIMECHANGE(hwnd: Win32.Windef.HWND;
  657.                                     fn  : LPDEFFN) is       -- windowsx.h:190
  658.         garbage: Win32.LRESULT;
  659.     begin
  660.         garbage := fn(hwnd, Win32.Winuser.WM_TIMECHANGE, 0, 0);
  661.     end FORWARD_WM_TIMECHANGE;
  662.  
  663.     function HANDLE_WM_POWER(hwnd  : Win32.Windef.HWND;
  664.                              wParam: Win32.WPARAM;
  665.                              lParam: Win32.LPARAM;
  666.                              fn    : LPPOWERPROC)
  667.                              return Win32.LRESULT is        -- windowsx.h:194
  668.     begin
  669.         fn(hwnd, Win32.INT(wParam));
  670.         return 0;
  671.     end HANDLE_WM_POWER;
  672.  
  673.     procedure FORWARD_WM_POWER(hwnd: Win32.Windef.HWND;
  674.                                code: Win32.INT;
  675.                                fn  : LPDEFFN) is            -- windowsx.h:196
  676.         garbage: Win32.LRESULT;
  677.     begin
  678.         garbage := fn(hwnd, Win32.Winuser.WM_POWER, Win32.WPARAM(code), 0);
  679.     end FORWARD_WM_POWER;
  680.  
  681.     function HANDLE_WM_QUERYENDSESSION(hwnd  : Win32.Windef.HWND;
  682.                                        wParam: Win32.WPARAM;
  683.                                        lParam: Win32.LPARAM;
  684.                                        fn    : LPQUERYENDSESSIONFN)
  685.                                        return Win32.LRESULT is
  686.                                                             -- windowsx.h:200
  687.     begin
  688.         return Win32.Winuser.MAKELRESULT(Win32.WORD(Win32.BOOL(fn(hwnd))), 0);
  689.     end HANDLE_WM_QUERYENDSESSION;
  690.  
  691.     function FORWARD_WM_QUERYENDSESSION(hwnd: Win32.Windef.HWND;
  692.                                         fn  : LPDEFFN)
  693.                                         return Win32.BOOL is-- windowsx.h:202
  694.     begin
  695.         return Win32.BOOL(Win32.DWORD(
  696.                 fn(hwnd, Win32.Winuser.WM_QUERYENDSESSION, 0, 0)));
  697.     end FORWARD_WM_QUERYENDSESSION;
  698.  
  699.     function HANDLE_WM_ENDSESSION(hwnd  : Win32.Windef.HWND;
  700.                                   wParam: Win32.WPARAM;
  701.                                   lParam: Win32.LPARAM;
  702.                                   fn    : LPENDSESSIONPROC)
  703.                                   return Win32.LRESULT is   -- windowsx.h:206
  704.     begin
  705.         fn(hwnd, Win32.BOOL(wParam));
  706.         return 0;
  707.     end HANDLE_WM_ENDSESSION;
  708.  
  709.     procedure FORWARD_WM_ENDSESSION(hwnd   : Win32.Windef.HWND;
  710.                                     fEnding: Win32.BOOL;
  711.                                     fn     : LPDEFFN) is    -- windowsx.h:208
  712.         garbage: Win32.LRESULT;
  713.     begin
  714.         garbage := fn(hwnd, Win32.Winuser.WM_ENDSESSION, 
  715.                         Win32.WPARAM(fEnding), 0);
  716.     end FORWARD_WM_ENDSESSION;
  717.  
  718.     function HANDLE_WM_QUIT(hwnd  : Win32.Windef.HWND;
  719.                             wParam: Win32.WPARAM;
  720.                             lParam: Win32.LPARAM;
  721.                             fn    : LPQUITPROC)
  722.                             return Win32.LRESULT is         -- windowsx.h:212
  723.     begin
  724.         fn(hwnd, Win32.INT(wParam));
  725.         return 0;
  726.     end HANDLE_WM_QUIT;
  727.  
  728.     procedure FORWARD_WM_QUIT(hwnd    : Win32.Windef.HWND;
  729.                               exitCode: Win32.INT;
  730.                               fn      : LPDEFFN) is         -- windowsx.h:214
  731.         garbage: Win32.LRESULT;
  732.     begin
  733.         garbage := fn(hwnd, Win32.Winuser.WM_QUIT, Win32.WPARAM(exitCode), 0);
  734.     end FORWARD_WM_QUIT;
  735.  
  736.  
  737.         function To_LPCREATESTRUCT is new Ada.Unchecked_Conversion(
  738.                 Win32.LPARAM, Win32.Winuser.LPCREATESTRUCT);
  739.  
  740.     function HANDLE_WM_CREATE(hwnd  : Win32.Windef.HWND;
  741.                               wParam: Win32.WPARAM;
  742.                               lParam: Win32.LPARAM;
  743.                               fn    : LPCREATEFN)
  744.                               return Win32.LRESULT is       -- windowsx.h:223
  745.         res : Win32.BOOL;
  746.     begin
  747.         res := fn(hwnd, To_LPCREATESTRUCT(lParam)); 
  748.         if (res = 0) then
  749.             return 0;
  750.         else
  751.             return LRESULT(-1);
  752.         end if;
  753.     end HANDLE_WM_CREATE;
  754.  
  755.         function To_LPARAM is new Ada.Unchecked_Conversion(
  756.                  Win32.Winuser.LPCREATESTRUCT, Win32.LPARAM);
  757.  
  758.     function FORWARD_WM_CREATE(hwnd          : Win32.Windef.HWND;
  759.                                lpCreateStruct: Win32.Winuser.LPCREATESTRUCT;
  760.                                fn            : LPDEFFN)
  761.                                return Win32.BOOL is         -- windowsx.h:225
  762.     begin
  763.         return Win32.BOOL(
  764.                 Win32.DWORD(
  765.                  fn(hwnd, Win32.Winuser.WM_CREATE, 0, 
  766.                         To_LPARAM(lpCreateStruct))));
  767.     end FORWARD_WM_CREATE;
  768.  
  769.     function HANDLE_WM_NCCREATE(hwnd  : Win32.Windef.HWND;
  770.                                 wParam: Win32.WPARAM;
  771.                                 lParam: Win32.LPARAM;
  772.                                 fn    : LPNCCREATEFN)
  773.                                 return Win32.LRESULT is     -- windowsx.h:229
  774.     begin
  775.         return To_LRESULT(
  776.                 Win32.DWORD(fn(hwnd, To_LPCREATESTRUCT(lParam))));
  777.     end HANDLE_WM_NCCREATE;
  778.  
  779.     function FORWARD_WM_NCCREATE(hwnd          : Win32.Windef.HWND;
  780.                                  lpCreateStruct: Win32.Winuser.LPCREATESTRUCT;
  781.                                  fn            : LPDEFFN)
  782.                                  return Win32.BOOL is       -- windowsx.h:231
  783.     begin
  784.         return Win32.BOOL(Win32.DWORD(
  785.                 fn(hwnd, Win32.Winuser.WM_NCCREATE, 0, 
  786.                         To_LPARAM(lpCreateStruct))));
  787.     end FORWARD_WM_NCCREATE;
  788.  
  789.     function HANDLE_WM_DESTROY(hwnd  : Win32.Windef.HWND;
  790.                                wParam: Win32.WPARAM;
  791.                                lParam: Win32.LPARAM;
  792.                                fn    : LPDESTROYPROC)
  793.                                return Win32.LRESULT is      -- windowsx.h:235
  794.     begin
  795.         fn(hwnd);
  796.         return 0;
  797.     end HANDLE_WM_DESTROY;
  798.  
  799.     procedure FORWARD_WM_DESTROY(hwnd: Win32.Windef.HWND;
  800.                                  fn  : LPDEFFN) is          -- windowsx.h:237
  801.         garbage: Win32.LRESULT;
  802.     begin
  803.         garbage := fn(hwnd, Win32.Winuser.WM_DESTROY, 0, 0);
  804.     end FORWARD_WM_DESTROY;
  805.  
  806.     function HANDLE_WM_NCDESTROY(hwnd  : Win32.Windef.HWND;
  807.                                  wParam: Win32.WPARAM;
  808.                                  lParam: Win32.LPARAM;
  809.                                  fn    : LPNCDESTROYPROC)
  810.                                  return Win32.LRESULT is    -- windowsx.h:241
  811.     begin
  812.         fn(hwnd);
  813.         return 0;
  814.     end HANDLE_WM_NCDESTROY;
  815.  
  816.     procedure FORWARD_WM_NCDESTROY(hwnd: Win32.Windef.HWND;
  817.                                    fn  : LPDEFFN) is        -- windowsx.h:243
  818.         garbage: Win32.LRESULT;
  819.     begin
  820.         garbage := fn(hwnd, Win32.Winuser.WM_NCDESTROY, 0, 0);
  821.     end FORWARD_WM_NCDESTROY;
  822.  
  823.     function HANDLE_WM_SHOWWINDOW(hwnd  : Win32.Windef.HWND;
  824.                                   wParam: Win32.WPARAM;
  825.                                   lParam: Win32.LPARAM;
  826.                                   fn    : LPSHOWWINDOWPROC)
  827.                                   return Win32.LRESULT is   -- windowsx.h:247
  828.     begin
  829.         fn(hwnd, Win32.BOOL(wParam), Win32.UINT(lParam));
  830.         return 0;
  831.     end HANDLE_WM_SHOWWINDOW;
  832.  
  833.     procedure FORWARD_WM_SHOWWINDOW(hwnd  : Win32.Windef.HWND;
  834.                                     fShow : Win32.BOOL;
  835.                                     status: Win32.UINT;
  836.                                     fn    : LPDEFFN) is     -- windowsx.h:249
  837.         garbage: Win32.LRESULT;
  838.     begin
  839.         garbage := fn(hwnd, Win32.Winuser.WM_SHOWWINDOW, 
  840.                         Win32.WPARAM(fShow), Win32.LPARAM(status));
  841.     end FORWARD_WM_SHOWWINDOW;
  842.  
  843.     function HANDLE_WM_SETREDRAW(hwnd  : Win32.Windef.HWND;
  844.                                  wParam: Win32.WPARAM;
  845.                                  lParam: Win32.LPARAM;
  846.                                  fn    : LPSETREDRAWPROC)
  847.                                  return Win32.LRESULT is    -- windowsx.h:253
  848.     begin
  849.         fn(hwnd, BOOL(wParam));
  850.         return 0;
  851.     end HANDLE_WM_SETREDRAW;
  852.  
  853.     procedure FORWARD_WM_SETREDRAW(hwnd   : Win32.Windef.HWND;
  854.                                    fRedraw: Win32.BOOL;
  855.                                    fn     : LPDEFFN) is     -- windowsx.h:255
  856.         garbage: Win32.LRESULT;
  857.     begin
  858.         garbage := fn(hwnd, Win32.Winuser.WM_SETREDRAW, Win32.WPARAM(fRedraw), 0);
  859.     end FORWARD_WM_SETREDRAW;
  860.  
  861.     function HANDLE_WM_ENABLE(hwnd  : Win32.Windef.HWND;
  862.                               wParam: Win32.WPARAM;
  863.                               lParam: Win32.LPARAM;
  864.                               fn    : LPENABLEPROC)
  865.                               return Win32.LRESULT is       -- windowsx.h:259
  866.     begin
  867.         fn(hwnd, BOOL(wParam));
  868.         return 0;
  869.     end HANDLE_WM_ENABLE;
  870.  
  871.     procedure FORWARD_WM_ENABLE(hwnd   : Win32.Windef.HWND;
  872.                                 fEnable: Win32.BOOL;
  873.                                 fn     : LPDEFFN) is        -- windowsx.h:261
  874.         garbage: Win32.LRESULT;
  875.     begin
  876.         garbage := fn(hwnd, Win32.Winuser.WM_ENABLE, Win32.WPARAM(fEnable), 0);
  877.     end FORWARD_WM_ENABLE;
  878.  
  879.  
  880.         function To_LPTSTR is new Ada.Unchecked_Conversion(Win32.LPARAM,
  881.                 Win32.Winnt.LPTSTR);
  882.  
  883.     function HANDLE_WM_SETTEXT(hwnd  : Win32.Windef.HWND;
  884.                                wParam: Win32.WPARAM;
  885.                                lParam: Win32.LPARAM;
  886.                                fn    : LPSETTEXTPROC)
  887.                                return Win32.LRESULT is      -- windowsx.h:265
  888.  
  889.     begin
  890.         fn(hwnd, To_LPCTSTR(lParam));
  891.         return 0;
  892.     end HANDLE_WM_SETTEXT;
  893.  
  894.     procedure FORWARD_WM_SETTEXT(hwnd    : Win32.Windef.HWND;
  895.                                  lpszText: Win32.Winnt.LPCTSTR;
  896.                                  fn      : LPDEFFN) is      -- windowsx.h:267
  897.         garbage: Win32.LRESULT;
  898.     begin
  899.         garbage := fn(hwnd, Win32.Winuser.WM_SETTEXT, 0, To_LPARAM(lpszText));
  900.     end FORWARD_WM_SETTEXT;
  901.  
  902.     function HANDLE_WM_GETTEXT(hwnd  : Win32.Windef.HWND;
  903.                                wParam: Win32.WPARAM;
  904.                                lParam: Win32.LPARAM;
  905.                                fn    : LPGETTEXTFN)
  906.                                return Win32.LRESULT is      -- windowsx.h:271
  907.     begin
  908.         return To_LRESULT(
  909.                 Win32.DWORD(
  910.                  fn(hwnd, Win32.INT(wParam), To_LPTSTR(lParam))));
  911.     end HANDLE_WM_GETTEXT;
  912.  
  913.     function FORWARD_WM_GETTEXT(hwnd      : Win32.Windef.HWND;
  914.                                 cchTextMax: Win32.INT;
  915.                                 lpszText  : Win32.Winnt.LPTSTR;
  916.                                 fn        : LPDEFFN)
  917.                                 return Win32.INT is         -- windowsx.h:273
  918.         function To_LPARAM is new Ada.Unchecked_Conversion(
  919.                 Win32.Winnt.LPTSTR, Win32.LPARAM);
  920.     begin
  921.         return Win32.INT(
  922.                 fn(hwnd, Win32.Winuser.WM_GETTEXT, 
  923.                          Win32.WPARAM(cchTextMax),
  924.                          To_LPARAM(lpszText)));
  925.     end FORWARD_WM_GETTEXT;
  926.  
  927.     function HANDLE_WM_GETTEXTLENGTH(hwnd  : Win32.Windef.HWND;
  928.                                      wParam: Win32.WPARAM;
  929.                                      lParam: Win32.LPARAM;
  930.                                      fn    : LPGETTEXTLENGTHFN)
  931.                                      return Win32.LRESULT is-- windowsx.h:277
  932.     begin
  933.         return To_LRESULT(Win32.DWORD(fn(hwnd)));
  934.     end HANDLE_WM_GETTEXTLENGTH;
  935.  
  936.     function FORWARD_WM_GETTEXTLENGTH(hwnd: Win32.Windef.HWND;
  937.                                       fn  : LPDEFFN)
  938.                                       return Win32.INT is   -- windowsx.h:279
  939.     begin
  940.         return Win32.INT(Win32.DWORD(
  941.                 fn(hwnd, Win32.Winuser.WM_GETTEXTLENGTH, 0, 0)));
  942.     end FORWARD_WM_GETTEXTLENGTH;
  943.  
  944.     function To_LPWINDOWPOS is new Ada.Unchecked_Conversion(Win32.LPARAM,
  945.                 Win32.Winuser.LPWINDOWPOS);
  946.     function To_LPARAM is new Ada.Unchecked_Conversion(
  947.                 Win32.Winuser.LPWINDOWPOS, Win32.LPARAM);
  948.  
  949.     function HANDLE_WM_WINDOWPOSCHANGING(
  950.         hwnd  : Win32.Windef.HWND;
  951.         wParam: Win32.WPARAM;
  952.         lParam: Win32.LPARAM;
  953.         fn    : LPWINDOWPOSCHANGINGFN)
  954.         return Win32.LRESULT is                             -- windowsx.h:283
  955.     begin
  956.         return To_LRESULT(
  957.                 Win32.DWORD(fn(hwnd, To_LPWINDOWPOS(lParam))));
  958.     end HANDLE_WM_WINDOWPOSCHANGING;
  959.  
  960.     function FORWARD_WM_WINDOWPOSCHANGING(hwnd  : Win32.Windef.HWND;
  961.                                           lpwpos: Win32.Winuser.LPWINDOWPOS;
  962.                                           fn    : LPDEFFN)
  963.                                           return Win32.BOOL is
  964.                                                             -- windowsx.h:285
  965.     begin
  966.         return Win32.BOOL(Win32.DWORD(          
  967.                 fn(hwnd, Win32.Winuser.WM_WINDOWPOSCHANGING, 
  968.                         0, To_LPARAM(lpwpos))));
  969.     end FORWARD_WM_WINDOWPOSCHANGING;
  970.  
  971.     function To_LPCWINDOWPOS is new Ada.Unchecked_Conversion(Win32.LPARAM,
  972.                 LPCWINDOWPOS);
  973.     function To_LPARAM is new Ada.Unchecked_Conversion(LPCWINDOWPOS,
  974.                 Win32.LPARAM);
  975.  
  976.     function HANDLE_WM_WINDOWPOSCHANGED(hwnd  : Win32.Windef.HWND;
  977.                                         wParam: Win32.WPARAM;
  978.                                         lParam: Win32.LPARAM;
  979.                                         fn    : LPWINDOWPOSCHANGEDPROC)
  980.                                         return Win32.LRESULT is
  981.                                                             -- windowsx.h:289
  982.     begin
  983.         fn(hwnd, To_LPCWINDOWPOS(lParam));
  984.         return 0;
  985.     end HANDLE_WM_WINDOWPOSCHANGED;
  986.  
  987.     procedure FORWARD_WM_WINDOWPOSCHANGED(hwnd   : Win32.Windef.HWND;
  988.                                           lpwpos : LPCWINDOWPOS;
  989.                                           fn     : LPDEFFN) is
  990.                                                             -- windowsx.h:291
  991.         garbage: Win32.LRESULT;
  992.     begin
  993.         garbage := fn(hwnd, Win32.Winuser.WM_WINDOWPOSCHANGED, 
  994.                         0, To_LPARAM(lpwpos));
  995.     end FORWARD_WM_WINDOWPOSCHANGED;
  996.  
  997.     function HANDLE_WM_MOVE(hwnd  : Win32.Windef.HWND;
  998.                             wParam: Win32.WPARAM;
  999.                             lParam: Win32.LPARAM;
  1000.                             fn    : LPMOVEPROC)
  1001.                             return Win32.LRESULT is         -- windowsx.h:295
  1002.     begin
  1003.         fn(hwnd, 
  1004.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1005.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))));
  1006.         return 0;
  1007.     end HANDLE_WM_MOVE;
  1008.  
  1009.     procedure FORWARD_WM_MOVE(hwnd: Win32.Windef.HWND;
  1010.                               x   : Win32.INT;
  1011.                               y   : Win32.INT;
  1012.                               fn  : LPDEFFN) is             -- windowsx.h:297
  1013.         garbage: Win32.LRESULT;
  1014.     begin
  1015.         garbage := fn(hwnd, Win32.Winuser.WM_MOVE, 0, 
  1016.                       Win32.Winuser.MAKELPARAM(Win32.WORD(x), Win32.WORD(y)));
  1017.     end FORWARD_WM_MOVE;
  1018.  
  1019.     function HANDLE_WM_SIZE(hwnd  : Win32.Windef.HWND;
  1020.                             wParam: Win32.WPARAM;
  1021.                             lParam: Win32.LPARAM;
  1022.                             fn    : LPSIZEPROC)
  1023.                             return Win32.LRESULT is         -- windowsx.h:301
  1024.     begin
  1025.         fn(hwnd, Win32.UINT(wParam), 
  1026.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1027.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))));
  1028.         return 0;
  1029.     end HANDLE_WM_SIZE;
  1030.  
  1031.     procedure FORWARD_WM_SIZE(hwnd : Win32.Windef.HWND;
  1032.                               state: Win32.UINT;
  1033.                               cx   : Win32.INT;
  1034.                               cy   : Win32.INT;
  1035.                               fn   : LPDEFFN) is            -- windowsx.h:303
  1036.         garbage: Win32.LRESULT;
  1037.     begin
  1038.         garbage := fn(hwnd, Win32.Winuser.WM_SIZE, 
  1039.                         Win32.WPARAM(state), 
  1040.                         Win32.Winuser.MAKELPARAM(WORD(cx), Win32.WORD(cy)));
  1041.     end FORWARD_WM_SIZE;
  1042.  
  1043.     function HANDLE_WM_CLOSE(hwnd  : Win32.Windef.HWND;
  1044.                              wParam: Win32.WPARAM;
  1045.                              lParam: Win32.LPARAM;
  1046.                              fn    : LPCLOSEPROC)
  1047.                              return Win32.LRESULT is        -- windowsx.h:307
  1048.     begin
  1049.         fn(hwnd);
  1050.         return 0;
  1051.     end HANDLE_WM_CLOSE;
  1052.  
  1053.     procedure FORWARD_WM_CLOSE(hwnd: Win32.Windef.HWND;
  1054.                                fn  : LPDEFFN) is            -- windowsx.h:309
  1055.         garbage: Win32.LRESULT;
  1056.     begin
  1057.         garbage := fn(hwnd, Win32.Winuser.WM_CLOSE, 0, 0);
  1058.     end FORWARD_WM_CLOSE;
  1059.  
  1060.     function HANDLE_WM_QUERYOPEN(hwnd  : Win32.Windef.HWND;
  1061.                                  wParam: Win32.WPARAM;
  1062.                                  lParam: Win32.LPARAM;
  1063.                                  fn    : LPQUERYOPENFN)
  1064.                                  return Win32.LRESULT is    -- windowsx.h:313
  1065.     begin
  1066.         return Win32.Winuser.MAKELRESULT(Win32.WORD(fn(hwnd)),0);
  1067.     end HANDLE_WM_QUERYOPEN;
  1068.  
  1069.     function FORWARD_WM_QUERYOPEN(hwnd: Win32.Windef.HWND;
  1070.                                   fn  : LPDEFFN)
  1071.                                   return Win32.BOOL is      -- windowsx.h:315
  1072.     begin
  1073.         return Win32.BOOL(Win32.DWORD(
  1074.                 fn(hwnd, Win32.Winuser.WM_QUERYOPEN, 0, 0)));
  1075.     end FORWARD_WM_QUERYOPEN;
  1076.  
  1077.     function HANDLE_WM_GETMINMAXINFO(hwnd  : Win32.Windef.HWND;
  1078.                                      wParam: Win32.WPARAM;
  1079.                                      lParam: Win32.LPARAM;
  1080.                                      fn    : LPGETMINMAXINFOPROC)
  1081.                                      return Win32.LRESULT is-- windowsx.h:319
  1082.  
  1083.         function To_LPMINMAXINFO is new Ada.Unchecked_Conversion(Win32.LPARAM,
  1084.                 Win32.Winuser.LPMINMAXINFO);
  1085.     begin
  1086.         fn(hwnd, To_LPMINMAXINFO(lParam));
  1087.         return 0;
  1088.     end HANDLE_WM_GETMINMAXINFO;
  1089.  
  1090.     procedure FORWARD_WM_GETMINMAXINFO(
  1091.                 hwnd        : Win32.Windef.HWND;
  1092.                 lpMinMaxInfo: Win32.Winuser.LPMINMAXINFO;
  1093.                 fn          : LPDEFFN) is                   -- windowsx.h:321
  1094.  
  1095.         function To_LPARAM is new Ada.Unchecked_Conversion(
  1096.                 Win32.Winuser.LPMINMAXINFO, Win32.LPARAM);
  1097.         garbage: Win32.LRESULT;
  1098.     begin
  1099.         garbage := fn(hwnd, Win32.Winuser.WM_GETMINMAXINFO, 
  1100.                         0, To_LPARAM(lpMinMaxInfo));
  1101.     end FORWARD_WM_GETMINMAXINFO;
  1102.  
  1103.     function HANDLE_WM_PAINT(hwnd  : Win32.Windef.HWND;
  1104.                              wParam: Win32.WPARAM;
  1105.                              lParam: Win32.LPARAM;
  1106.                              fn    : LPPAINTPROC)
  1107.                              return Win32.LRESULT is        -- windowsx.h:325
  1108.     begin
  1109.         fn(hwnd);
  1110.         return 0;
  1111.     end HANDLE_WM_PAINT;
  1112.  
  1113.     procedure FORWARD_WM_PAINT(hwnd: Win32.Windef.HWND;
  1114.                                fn  : LPDEFFN) is            -- windowsx.h:327
  1115.         garbage: Win32.LRESULT;
  1116.     begin
  1117.         garbage := fn(hwnd, Win32.Winuser.WM_PAINT, 0, 0);
  1118.     end FORWARD_WM_PAINT;
  1119.  
  1120.     function HANDLE_WM_ERASEBKGND(hwnd  : Win32.Windef.HWND;
  1121.                                   wParam: Win32.WPARAM;
  1122.                                   lParam: Win32.LPARAM;
  1123.                                   fn    : LPERASEBKGNDFN)
  1124.                                   return Win32.LRESULT is   -- windowsx.h:331
  1125.     begin
  1126.         return To_LRESULT(
  1127.                 Win32.DWORD(
  1128.                  fn(hwnd, To_HDC(wParam))));
  1129.     end HANDLE_WM_ERASEBKGND;
  1130.  
  1131.     function FORWARD_WM_ERASEBKGND(hwnd: Win32.Windef.HWND;
  1132.                                    hdc : Win32.Windef.HDC;
  1133.                                    fn  : LPDEFFN)
  1134.                                    return Win32.BOOL is     -- windowsx.h:333
  1135.     begin
  1136.         return Win32.BOOL(Win32.DWORD(
  1137.                 fn(hwnd, Win32.Winuser.WM_ERASEBKGND, 
  1138.                          Win32.WPARAM(HDC_To_DWORD(hdc)),
  1139.                          0)));
  1140.     end FORWARD_WM_ERASEBKGND;
  1141.  
  1142.     function HANDLE_WM_ICONERASEBKGND(hwnd  : Win32.Windef.HWND;
  1143.                                       wParam: Win32.WPARAM;
  1144.                                       lParam: Win32.LPARAM;
  1145.                                       fn    : LPICONERASEBKGNDFN)
  1146.                                       return Win32.LRESULT is
  1147.                                                             -- windowsx.h:337
  1148.     begin
  1149.         return To_LRESULT(
  1150.                 Win32.DWORD(
  1151.                  fn(hwnd, To_HDC(wParam))));
  1152.     end HANDLE_WM_ICONERASEBKGND;
  1153.  
  1154.     function FORWARD_WM_ICONERASEBKGND(hwnd: Win32.Windef.HWND;
  1155.                                        hdc : Win32.Windef.HDC;
  1156.                                        fn  : LPDEFFN)
  1157.                                        return Win32.BOOL is -- windowsx.h:339
  1158.     begin
  1159.         return Win32.BOOL(
  1160.                 Win32.DWORD(
  1161.                  fn(hwnd, Win32.Winuser.WM_ICONERASEBKGND, 
  1162.                           Win32.WPARAM(HDC_To_DWORD(hdc)),
  1163.                           0)));
  1164.     end FORWARD_WM_ICONERASEBKGND;
  1165.  
  1166.     function HANDLE_WM_NCPAINT(hwnd  : Win32.Windef.HWND;
  1167.                                wParam: Win32.WPARAM;
  1168.                                lParam: Win32.LPARAM;
  1169.                                fn    : LPNCPAINTPROC)
  1170.                                return Win32.LRESULT is      -- windowsx.h:343
  1171.  
  1172.         function To_HRGN is new Ada.Unchecked_Conversion(Win32.WPARAM,
  1173.                 Win32.Windef.HRGN);
  1174.     begin
  1175.         fn(hwnd, To_HRGN(wParam));
  1176.         return 0;
  1177.     end HANDLE_WM_NCPAINT;
  1178.  
  1179.     procedure FORWARD_WM_NCPAINT(hwnd: Win32.Windef.HWND;
  1180.                                  hrgn: Win32.Windef.HRGN;
  1181.                                  fn  : LPDEFFN) is          -- windowsx.h:345
  1182.  
  1183.         function To_DWORD is new Ada.Unchecked_Conversion(Win32.Windef.HRGN,
  1184.                 Win32.DWORD);
  1185.         garbage: Win32.LRESULT;
  1186.     begin
  1187.         garbage := fn(hwnd, Win32.Winuser.WM_NCPAINT, 
  1188.                         Win32.WPARAM(To_DWORD(hrgn)), 0);
  1189.     end FORWARD_WM_NCPAINT;
  1190.  
  1191.     function HANDLE_WM_NCCALCSIZE(hwnd  : Win32.Windef.HWND;
  1192.                                   wParam: Win32.WPARAM;
  1193.                                   lParam: Win32.LPARAM;
  1194.                                   fn    : LPNCCALCSIZEFN)
  1195.                                   return Win32.LRESULT is   -- windowsx.h:349
  1196.  
  1197.         function To_LPNCCALCSIZE is new Ada.Unchecked_Conversion(       
  1198.                 Win32.LPARAM, Win32.Winuser.LPNCCALCSIZE_PARAMS);
  1199.     begin
  1200.         return To_LRESULT(Win32.DWORD(fn(hwnd, 0, To_LPNCCALCSIZE(lParam))));
  1201.     end HANDLE_WM_NCCALCSIZE;
  1202.  
  1203.     function FORWARD_WM_NCCALCSIZE(
  1204.                 hwnd           : Win32.Windef.HWND;
  1205.                 fCalcValidRects: Win32.BOOL;
  1206.                 lpcsp          : Win32.Winuser.LPNCCALCSIZE_PARAMS;
  1207.                 fn             : LPDEFFN)
  1208.                 return Win32.UINT is                        -- windowsx.h:351
  1209.  
  1210.         function To_LPARAM is new Ada.Unchecked_Conversion(
  1211.                 Win32.Winuser.LPNCCALCSIZE_PARAMS, Win32.LPARAM);
  1212.     begin
  1213.         return Win32.UINT(
  1214.                 Win32.DWORD(
  1215.                  fn(hwnd, Win32.Winuser.WM_NCCALCSIZE, 0, To_LPARAM(lpcsp))));
  1216.     end FORWARD_WM_NCCALCSIZE;
  1217.  
  1218.     function HANDLE_WM_NCHITTEST(hwnd  : Win32.Windef.HWND;
  1219.                                  wParam: Win32.WPARAM;
  1220.                                  lParam: Win32.LPARAM;
  1221.                                  fn    : LPNCHITTESTFN)
  1222.                                  return Win32.LRESULT is    -- windowsx.h:355
  1223.     begin
  1224.         return To_LRESULT(
  1225.                 Win32.DWORD(
  1226.                  fn(hwnd, 
  1227.                     Win32.INT(Win32.SHORT(
  1228.                         Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1229.                     Win32.INT(Win32.SHORT(
  1230.                         Win32.Utils.HIWORD(Win32.DWORD(lParam)))))));
  1231.     end HANDLE_WM_NCHITTEST;
  1232.  
  1233.     function FORWARD_WM_NCHITTEST(hwnd: Win32.Windef.HWND;
  1234.                                   x   : Win32.INT;
  1235.                                   y   : Win32.INT;
  1236.                                   fn  : LPDEFFN)
  1237.                                   return Win32.UINT is      -- windowsx.h:357
  1238.     begin
  1239.         return Win32.UINT(
  1240.                 Win32.DWORD(
  1241.                  fn(hwnd, Win32.Winuser.WM_NCHITTEST, 0, 
  1242.                         Win32.Winuser.MAKELPARAM(WORD(x), Win32.WORD(y)))));
  1243.     end FORWARD_WM_NCHITTEST;
  1244.  
  1245.     function HANDLE_WM_QUERYDRAGICON(hwnd  : Win32.Windef.HWND;
  1246.                                      wParam: Win32.WPARAM;
  1247.                                      lParam: Win32.LPARAM;
  1248.                                      fn    : LPQUERYDRAGICONFN)
  1249.                                      return Win32.LRESULT is-- windowsx.h:361
  1250.  
  1251.         function To_UINT is new Ada.Unchecked_Conversion(
  1252.                 Win32.Windef.HICON, Win32.UINT);
  1253.     begin
  1254.         return To_LRESULT(Win32.DWORD(To_UINT(fn(hwnd))));
  1255.     end HANDLE_WM_QUERYDRAGICON;
  1256.  
  1257.     function FORWARD_WM_QUERYDRAGICON(hwnd: Win32.Windef.HWND;
  1258.                                       fn  : LPDEFFN)
  1259.                                       return Win32.Windef.HICON is
  1260.                                                             -- windowsx.h:363
  1261.         function To_HICON is new Ada.Unchecked_Conversion(Win32.UINT,
  1262.                 Win32.Windef.HICON);
  1263.     begin
  1264.         return To_HICON(Win32.UINT(Win32.DWORD(
  1265.                 fn(hwnd, Win32.Winuser.WM_QUERYDRAGICON, 0, 0))));
  1266.     end FORWARD_WM_QUERYDRAGICON;
  1267.  
  1268.     function HANDLE_WM_DROPFILES(hwnd  : Win32.Windef.HWND;
  1269.                                  wParam: Win32.WPARAM;
  1270.                                  lParam: Win32.LPARAM;
  1271.                                  fn    : LPDROPFILESPROC)
  1272.                                  return Win32.LRESULT is    -- windowsx.h:368
  1273.  
  1274.         function To_HDROP is new Ada.Unchecked_Conversion(
  1275.                 Win32.WPARAM, Win32.Shellapi.HDROP);
  1276.     begin
  1277.         fn(hwnd, To_HDROP(wParam));
  1278.         return 0;
  1279.     end HANDLE_WM_DROPFILES;
  1280.  
  1281.     procedure FORWARD_WM_DROPFILES(hwnd : Win32.Windef.HWND;
  1282.                                    hdrop: Win32.Shellapi.HDROP;
  1283.                                    fn   : LPDEFFN) is       -- windowsx.h:370
  1284.  
  1285.         function To_WPARAM is new Ada.Unchecked_Conversion (
  1286.                 Win32.Shellapi.HDROP, Win32.WPARAM);
  1287.         garbage: Win32.LRESULT;
  1288.     begin
  1289.         garbage := fn(hwnd, Win32.Winuser.WM_DROPFILES, 
  1290.                         To_WPARAM(hdrop), 0);
  1291.     end FORWARD_WM_DROPFILES;
  1292.  
  1293.     function HANDLE_WM_ACTIVATE(hwnd  : Win32.Windef.HWND;
  1294.                                 wParam: Win32.WPARAM;
  1295.                                 lParam: Win32.LPARAM;
  1296.                                 fn    : LPACTIVATEPROC)
  1297.                                 return Win32.LRESULT is     -- windowsx.h:375
  1298.     begin
  1299.         fn(hwnd, Win32.UINT(Win32.Utils.LOWORD(Win32.DWORD(wParam))),
  1300.                  To_HWND(lParam), 
  1301.                  Win32.BOOL(Win32.Utils.HIWORD(Win32.DWORD(wParam))));
  1302.         return 0;
  1303.     end HANDLE_WM_ACTIVATE;
  1304.  
  1305.     procedure FORWARD_WM_ACTIVATE(hwnd        : Win32.Windef.HWND;
  1306.                                   state       : Win32.UINT;
  1307.                                   hwndActDeact: Win32.Windef.HWND;
  1308.                                   fMinimized  : Win32.BOOL;
  1309.                                   fn          : LPDEFFN) is -- windowsx.h:377
  1310.         garbage: Win32.LRESULT;
  1311.     begin
  1312.         garbage := fn(hwnd, Win32.Winuser.WM_ACTIVATE, 
  1313.                       Win32.Winuser.MAKEWPARAM(WORD(state), 
  1314.                       Win32.WORD(fMinimized)), 
  1315.                       To_LPARAM(hwndActDeact));
  1316.     end FORWARD_WM_ACTIVATE;
  1317.  
  1318.     function HANDLE_WM_ACTIVATEAPP(hwnd  : Win32.Windef.HWND;
  1319.                                    wParam: Win32.WPARAM;
  1320.                                    lParam: Win32.LPARAM;
  1321.                                    fn    : LPACTIVATEAPPPROC)
  1322.                                    return Win32.LRESULT is  -- windowsx.h:381
  1323.     begin
  1324.         fn(hwnd, Win32.BOOL(wParam), Win32.DWORD(lParam));
  1325.         return 0;
  1326.     end HANDLE_WM_ACTIVATEAPP;
  1327.  
  1328.     procedure FORWARD_WM_ACTIVATEAPP(hwnd      : Win32.Windef.HWND;
  1329.                                      fActivate : Win32.BOOL;
  1330.                                      dwThreadId: Win32.DWORD;
  1331.                                      fn        : LPDEFFN) is-- windowsx.h:383
  1332.         garbage: Win32.LRESULT;
  1333.     begin
  1334.         garbage := fn(hwnd, Win32.Winuser.WM_ACTIVATEAPP, 
  1335.                         Win32.WPARAM(fActivate), Win32.LPARAM(dwThreadId));
  1336.     end FORWARD_WM_ACTIVATEAPP;
  1337.  
  1338.     function HANDLE_WM_NCACTIVATE(hwnd  : Win32.Windef.HWND;
  1339.                                   wParam: Win32.WPARAM;
  1340.                                   lParam: Win32.LPARAM;
  1341.                                   fn    : LPNCACTIVATEFN)
  1342.                                   return Win32.LRESULT is   -- windowsx.h:387
  1343.     begin
  1344.         return To_LRESULT(
  1345.                 Win32.DWORD(
  1346.                  fn(hwnd, Win32.BOOL(wParam), To_HWND(Win32.LPARAM'(0)), 0)));
  1347.     end HANDLE_WM_NCACTIVATE;
  1348.  
  1349.     function FORWARD_WM_NCACTIVATE(hwnd        : Win32.Windef.HWND;
  1350.                                    fActive     : Win32.BOOL;
  1351.                                    hwndActDeact: Win32.Windef.HWND;
  1352.                                    fMinimized  : Win32.BOOL;
  1353.                                    fn          : LPDEFFN)
  1354.                                    return Win32.BOOL is     -- windowsx.h:389
  1355.     begin
  1356.         return Win32.BOOL(
  1357.                 Win32.DWORD(
  1358.                  fn(hwnd, Win32.Winuser.WM_NCACTIVATE, Win32.WPARAM(fActive), 
  1359.                         0)));
  1360.     end FORWARD_WM_NCACTIVATE;
  1361.  
  1362.     function HANDLE_WM_SETFOCUS(hwnd  : Win32.Windef.HWND;
  1363.                                 wParam: Win32.WPARAM;
  1364.                                 lParam: Win32.LPARAM;
  1365.                                 fn    : LPSETFOCUSPROC)
  1366.                                 return Win32.LRESULT is     -- windowsx.h:393
  1367.     begin
  1368.         fn(hwnd, To_HWND(wParam));
  1369.         return 0;
  1370.     end HANDLE_WM_SETFOCUS;
  1371.  
  1372.     procedure FORWARD_WM_SETFOCUS(hwnd        : Win32.Windef.HWND;
  1373.                                   hwndOldFocus: Win32.Windef.HWND;
  1374.                                   fn          : LPDEFFN) is -- windowsx.h:395
  1375.         garbage: Win32.LRESULT;
  1376.     begin
  1377.         garbage := fn(hwnd, Win32.Winuser.WM_SETFOCUS, 
  1378.                             Win32.WPARAM(To_DWORD(hwndOldFocus)),
  1379.                             0);
  1380.     end FORWARD_WM_SETFOCUS;
  1381.  
  1382.     function HANDLE_WM_KILLFOCUS(hwnd  : Win32.Windef.HWND;
  1383.                                  wParam: Win32.WPARAM;
  1384.                                  lParam: Win32.LPARAM;
  1385.                                  fn    : LPKILLFOCUSPROC)
  1386.                                  return Win32.LRESULT is    -- windowsx.h:399
  1387.     begin
  1388.         fn(hwnd, To_HWND(wParam));
  1389.         return 0;
  1390.     end HANDLE_WM_KILLFOCUS;
  1391.  
  1392.     procedure FORWARD_WM_KILLFOCUS(hwnd        : Win32.Windef.HWND;
  1393.                                    hwndNewFocus: Win32.Windef.HWND;
  1394.                                    fn          : LPDEFFN) is-- windowsx.h:401
  1395.         garbage: Win32.LRESULT;
  1396.     begin
  1397.         garbage := fn(hwnd, Win32.Winuser.WM_KILLFOCUS, 
  1398.                             Win32.WPARAM(To_DWORD(hwndNewFocus)),
  1399.                             0);
  1400.     end FORWARD_WM_KILLFOCUS;
  1401.  
  1402.     function HANDLE_WM_KEYDOWN(hwnd  : Win32.Windef.HWND;
  1403.                                wParam: Win32.WPARAM;
  1404.                                lParam: Win32.LPARAM;
  1405.                                fn    : LPKEYPROC)
  1406.                                return Win32.LRESULT is      -- windowsx.h:405
  1407.     begin
  1408.         fn(hwnd, Win32.UINT(wParam), Win32.TRUE, 
  1409.                 Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))),
  1410.                 Win32.UINT(Win32.Utils.HIWORD(Win32.DWORD(lParam))));
  1411.         return 0;
  1412.     end HANDLE_WM_KEYDOWN;
  1413.  
  1414.     procedure FORWARD_WM_KEYDOWN(hwnd   : Win32.Windef.HWND;
  1415.                                  vk     : Win32.UINT;
  1416.                                  fDown  : Win32.BOOL;
  1417.                                  cRepeat: Win32.INT;
  1418.                                  flags  : Win32.UINT;
  1419.                                  fn     : LPDEFFN) is       -- windowsx.h:407
  1420.         garbage: Win32.LRESULT;
  1421.     begin
  1422.         garbage := fn(hwnd, Win32.Winuser.WM_KEYDOWN, Win32.WPARAM(vk), 
  1423.                         Win32.Winuser.MAKELPARAM(Win32.WORD(cRepeat), 
  1424.                                                  Win32.WORD(flags)));
  1425.     end FORWARD_WM_KEYDOWN;
  1426.  
  1427.     function HANDLE_WM_KEYUP(hwnd  : Win32.Windef.HWND;
  1428.                              wParam: Win32.WPARAM;
  1429.                              lParam: Win32.LPARAM;
  1430.                              fn    : LPKEYPROC)
  1431.                              return Win32.LRESULT is        -- windowsx.h:411
  1432.     begin
  1433.         fn(hwnd, Win32.UINT(wParam), Win32.FALSE, 
  1434.                 Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))),
  1435.                 Win32.UINT(Win32.Utils.HIWORD(Win32.DWORD(lParam))));
  1436.         return 0;
  1437.     end HANDLE_WM_KEYUP;
  1438.  
  1439.     procedure FORWARD_WM_KEYUP(hwnd   : Win32.Windef.HWND;
  1440.                                vk     : Win32.UINT;
  1441.                                fDown  : Win32.BOOL;
  1442.                                cRepeat: Win32.INT;
  1443.                                flags  : Win32.UINT;
  1444.                                fn     : LPDEFFN) is         -- windowsx.h:413
  1445.         garbage: Win32.LRESULT;
  1446.     begin
  1447.         garbage := fn(hwnd, Win32.Winuser.WM_KEYUP, Win32.WPARAM(vk), 
  1448.                         Win32.Winuser.MAKELPARAM(Win32.WORD(cRepeat), 
  1449.                                                  Win32.WORD(flags)));
  1450.     end FORWARD_WM_KEYUP;
  1451.  
  1452.     function To_BYTE is new Ada.Unchecked_Conversion(Win32.Tchar.TCHAR, 
  1453.                 Win32.BYTE);
  1454.  
  1455.     function HANDLE_WM_CHAR(hwnd  : Win32.Windef.HWND;
  1456.                             wParam: Win32.WPARAM;
  1457.                             lParam: Win32.LPARAM;
  1458.                             fn    : LPCHARPROC)
  1459.                             return Win32.LRESULT is         -- windowsx.h:417
  1460.     begin
  1461.         fn(hwnd, LOCHAR(wParam),
  1462.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))));
  1463.         return 0;
  1464.     end HANDLE_WM_CHAR;
  1465.  
  1466.     procedure FORWARD_WM_CHAR(hwnd   : Win32.Windef.HWND;
  1467.                               ch     : Win32.Tchar.TCHAR;
  1468.                               cRepeat: Win32.INT;
  1469.                               fn     : LPDEFFN) is          -- windowsx.h:419
  1470.         garbage: Win32.LRESULT;
  1471.     begin
  1472.         garbage := fn(hwnd, Win32.Winuser.WM_CHAR, 
  1473.                         Win32.WPARAM(Win32.Utils.MAKEWORD(To_BYTE(ch), 0)), 
  1474.                         Win32.Winuser.MAKELPARAM(WORD(cRepeat),0));
  1475.     end FORWARD_WM_CHAR;
  1476.  
  1477.     function HANDLE_WM_DEADCHAR(hwnd  : Win32.Windef.HWND;
  1478.                                 wParam: Win32.WPARAM;
  1479.                                 lParam: Win32.LPARAM;
  1480.                                 fn    : LPDEADCHARPROC)
  1481.                                 return Win32.LRESULT is     -- windowsx.h:423
  1482.     begin
  1483.         fn(hwnd, LOCHAR(wParam),
  1484.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))));
  1485.         return 0;
  1486.     end HANDLE_WM_DEADCHAR;
  1487.  
  1488.     procedure FORWARD_WM_DEADCHAR(hwnd   : Win32.Windef.HWND;
  1489.                                   ch     : Win32.Tchar.TCHAR;
  1490.                                   cRepeat: Win32.INT;
  1491.                                   fn     : LPDEFFN) is      -- windowsx.h:425
  1492.         garbage: Win32.LRESULT;
  1493.     begin
  1494.         garbage := fn(hwnd, Win32.Winuser.WM_DEADCHAR, 
  1495.                       Win32.WPARAM(Win32.Utils.MAKEWORD(To_BYTE(ch), 0)), 
  1496.                       Win32.Winuser.MAKELPARAM(Win32.WORD(cRepeat),0));
  1497.     end FORWARD_WM_DEADCHAR;
  1498.  
  1499.     function HANDLE_WM_SYSKEYDOWN(hwnd  : Win32.Windef.HWND;
  1500.                                   wParam: Win32.WPARAM;
  1501.                                   lParam: Win32.LPARAM;
  1502.                                   fn    : LPSYSKEYPROC)
  1503.                                   return Win32.LRESULT is   -- windowsx.h:429
  1504.     begin
  1505.         fn(hwnd, Win32.UINT(wParam), Win32.TRUE, 
  1506.                 Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))),
  1507.                 Win32.UINT(Win32.Utils.HIWORD(Win32.DWORD(lParam))));
  1508.         return 0;
  1509.     end HANDLE_WM_SYSKEYDOWN;
  1510.  
  1511.     procedure FORWARD_WM_SYSKEYDOWN(hwnd   : Win32.Windef.HWND;
  1512.                                     vk     : Win32.UINT;
  1513.                                     fDown  : Win32.BOOL;
  1514.                                     cRepeat: Win32.INT;
  1515.                                     flags: Win32.UINT;
  1516.                                     fn     : LPDEFFN) is    -- windowsx.h:431
  1517.         garbage: Win32.LRESULT;
  1518.     begin
  1519.         garbage := fn(hwnd, Win32.Winuser.WM_SYSKEYDOWN, Win32.WPARAM(vk), 
  1520.                         Win32.Winuser.MAKELPARAM(Win32.WORD(cRepeat), 
  1521.                                                  Win32.WORD(flags)));
  1522.     end FORWARD_WM_SYSKEYDOWN;
  1523.  
  1524.     function HANDLE_WM_SYSKEYUP(hwnd  : Win32.Windef.HWND;
  1525.                                 wParam: Win32.WPARAM;
  1526.                                 lParam: Win32.LPARAM;
  1527.                                 fn    : LPSYSKEYPROC)
  1528.                                 return Win32.LRESULT is     -- windowsx.h:435
  1529.     begin
  1530.         fn(hwnd, Win32.UINT(wParam), Win32.FALSE, 
  1531.                 Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))),
  1532.                 Win32.UINT(Win32.Utils.HIWORD(Win32.DWORD(lParam))));
  1533.         return 0;
  1534.     end HANDLE_WM_SYSKEYUP;
  1535.  
  1536.     procedure FORWARD_WM_SYSKEYUP(hwnd   : Win32.Windef.HWND;
  1537.                                   vk     : Win32.UINT;
  1538.                                   fDown  : Win32.BOOL;
  1539.                                   cRepeat: Win32.INT;
  1540.                                   flags  : Win32.UINT;
  1541.                                   fn     : LPDEFFN) is      -- windowsx.h:437
  1542.         garbage: Win32.LRESULT;
  1543.     begin
  1544.         garbage := fn(hwnd, Win32.Winuser.WM_SYSKEYUP, Win32.WPARAM(vk), 
  1545.                         Win32.Winuser.MAKELPARAM(Win32.WORD(cRepeat), 
  1546.                                                  Win32.WORD(flags)));
  1547.     end FORWARD_WM_SYSKEYUP;
  1548.  
  1549.  
  1550.     function HANDLE_WM_SYSCHAR(hwnd  : Win32.Windef.HWND;
  1551.                                wParam: Win32.WPARAM;
  1552.                                lParam: Win32.LPARAM;
  1553.                                fn    : LPSYSCHARPROC)
  1554.                                return Win32.LRESULT is      -- windowsx.h:441
  1555.     begin
  1556.         fn(hwnd, LOCHAR(wParam),
  1557.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))));
  1558.         return 0;
  1559.     end HANDLE_WM_SYSCHAR;
  1560.  
  1561.     procedure FORWARD_WM_SYSCHAR(hwnd   : Win32.Windef.HWND;
  1562.                                  ch     : Win32.Tchar.TCHAR;
  1563.                                  cRepeat: Win32.INT;
  1564.                                  fn     : LPDEFFN) is       -- windowsx.h:443
  1565.         garbage: Win32.LRESULT;
  1566.     begin
  1567.         garbage := fn(hwnd, Win32.Winuser.WM_SYSCHAR, 
  1568.                       Win32.WPARAM(Win32.Utils.MAKEWORD(To_BYTE(ch), 0)), 
  1569.                         Win32.Winuser.MAKELPARAM(Win32.WORD(cRepeat), 0));
  1570.     end FORWARD_WM_SYSCHAR;
  1571.  
  1572.     function HANDLE_WM_SYSDEADCHAR(hwnd  : Win32.Windef.HWND;
  1573.                                    wParam: Win32.WPARAM;
  1574.                                    lParam: Win32.LPARAM;
  1575.                                    fn    : LPSYSDEADCHARPROC)
  1576.                                    return Win32.LRESULT is  -- windowsx.h:447
  1577.     begin
  1578.         fn(hwnd, LOCHAR(wParam),
  1579.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))));
  1580.         return 0;
  1581.     end HANDLE_WM_SYSDEADCHAR;
  1582.  
  1583.     procedure FORWARD_WM_SYSDEADCHAR(hwnd   : Win32.Windef.HWND;
  1584.                                      ch     : Win32.Tchar.TCHAR;
  1585.                                      cRepeat: Win32.INT;
  1586.                                      fn     : LPDEFFN) is   -- windowsx.h:449
  1587.  
  1588.         garbage: Win32.LRESULT;
  1589.     begin
  1590.         garbage := fn(hwnd, Win32.Winuser.WM_SYSDEADCHAR, 
  1591.                         Win32.WPARAM(Win32.Utils.MAKEWORD(To_BYTE(ch), 0)), 
  1592.                         Win32.Winuser.MAKELPARAM(Win32.WORD(cRepeat), 0));
  1593.     end FORWARD_WM_SYSDEADCHAR;
  1594.  
  1595.     function HANDLE_WM_MOUSEMOVE(hwnd  : Win32.Windef.HWND;
  1596.                                  wParam: Win32.WPARAM;
  1597.                                  lParam: Win32.LPARAM;
  1598.                                  fn    : LPMOUSEMOVEPROC)
  1599.                                  return Win32.LRESULT is    -- windowsx.h:453
  1600.     begin
  1601.         fn(hwnd, 
  1602.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1603.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  1604.            Win32.UINT(wParam));
  1605.         return 0;
  1606.     end HANDLE_WM_MOUSEMOVE;
  1607.  
  1608.     procedure FORWARD_WM_MOUSEMOVE(hwnd    : Win32.Windef.HWND;
  1609.                                    x       : Win32.INT;
  1610.                                    y       : Win32.INT;
  1611.                                    keyFlags: Win32.UINT;
  1612.                                    fn      : LPDEFFN) is    -- windowsx.h:455
  1613.         garbage: Win32.LRESULT;
  1614.     begin
  1615.         garbage := fn(hwnd, Win32.Winuser.WM_MOUSEMOVE, 
  1616.                         Win32.WPARAM(keyFlags), 
  1617.                         Win32.Winuser.MAKELPARAM(Win32.WORD(x), 
  1618.                                                  Win32.WORD(y)));
  1619.     end FORWARD_WM_MOUSEMOVE;
  1620.  
  1621.     function HANDLE_WM_LBUTTONDOWN(hwnd  : Win32.Windef.HWND;
  1622.                                    wParam: Win32.WPARAM;
  1623.                                    lParam: Win32.LPARAM;
  1624.                                    fn    : LPLBUTTONDOWNPROC)
  1625.                                    return Win32.LRESULT is  -- windowsx.h:459
  1626.     begin
  1627.         fn(hwnd, Win32.FALSE,
  1628.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1629.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  1630.            Win32.UINT(wParam));
  1631.         return 0;
  1632.     end HANDLE_WM_LBUTTONDOWN;
  1633.  
  1634.     procedure FORWARD_WM_LBUTTONDOWN(hwnd        : Win32.Windef.HWND;
  1635.                                      fDoubleClick: Win32.BOOL;
  1636.                                      x           : Win32.INT;
  1637.                                      y           : Win32.INT;
  1638.                                      keyFlags    : Win32.UINT;
  1639.                                      fn          : LPDEFFN) is
  1640.                                                             -- windowsx.h:461
  1641.         garbage : Win32.LRESULT;
  1642.         uMsg    : Win32.UINT;
  1643.     begin
  1644.         if (fDoubleClick = Win32.FALSE) then
  1645.                 uMsg := Win32.Winuser.WM_LBUTTONDOWN;
  1646.         else
  1647.                 uMsg := Win32.Winuser.WM_LBUTTONDBLCLK;
  1648.         end if;
  1649.         garbage := fn(hwnd, uMsg, Win32.WPARAM(keyFlags), 
  1650.                        Win32.Winuser.MAKELPARAM(Win32.WORD(x), Win32.WORD(y)));
  1651.     end FORWARD_WM_LBUTTONDOWN;
  1652.  
  1653.     function HANDLE_WM_LBUTTONDBLCLK(hwnd  : Win32.Windef.HWND;
  1654.                                      wParam: Win32.WPARAM;
  1655.                                      lParam: Win32.LPARAM;
  1656.                                      fn    : LPLBUTTONDOWNPROC)
  1657.                                      return Win32.LRESULT is-- windowsx.h:465
  1658.     begin
  1659.         fn(hwnd, Win32.TRUE, 
  1660.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))),
  1661.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  1662.            Win32.UINT(wParam));
  1663.         return 0;
  1664.     end HANDLE_WM_LBUTTONDBLCLK;
  1665.  
  1666.     function HANDLE_WM_LBUTTONUP(hwnd  : Win32.Windef.HWND;
  1667.                                  wParam: Win32.WPARAM;
  1668.                                  lParam: Win32.LPARAM;
  1669.                                  fn    : LPLBUTTONUPPROC)
  1670.                                  return Win32.LRESULT is    -- windowsx.h:469
  1671.     begin
  1672.         fn(hwnd, 
  1673.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1674.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  1675.            Win32.UINT(wParam));
  1676.         return 0;
  1677.     end HANDLE_WM_LBUTTONUP;
  1678.  
  1679.     procedure FORWARD_WM_LBUTTONUP(hwnd    : Win32.Windef.HWND;
  1680.                                    x       : Win32.INT;
  1681.                                    y       : Win32.INT;
  1682.                                    keyFlags: Win32.UINT;
  1683.                                    fn      : LPDEFFN) is    -- windowsx.h:471
  1684.         garbage: Win32.LRESULT;
  1685.     begin
  1686.         garbage := fn(hwnd, Win32.Winuser.WM_LBUTTONUP, Win32.WPARAM(keyFlags),
  1687.                        Win32.Winuser.MAKELPARAM(Win32.WORD(x), Win32.WORD(y)));
  1688.     end FORWARD_WM_LBUTTONUP;
  1689.  
  1690.     function HANDLE_WM_RBUTTONDOWN(hwnd  : Win32.Windef.HWND;
  1691.                                    wParam: Win32.WPARAM;
  1692.                                    lParam: Win32.LPARAM;
  1693.                                    fn    : LPRBUTTONDOWNPROC)
  1694.                                    return Win32.LRESULT is  -- windowsx.h:475
  1695.     begin
  1696.         fn(hwnd, Win32.FALSE, 
  1697.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1698.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  1699.            Win32.UINT(wParam));
  1700.         return 0;
  1701.     end HANDLE_WM_RBUTTONDOWN;
  1702.  
  1703.     procedure FORWARD_WM_RBUTTONDOWN(hwnd        : Win32.Windef.HWND;
  1704.                                      fDoubleClick: Win32.BOOL;
  1705.                                      x           : Win32.INT;
  1706.                                      y           : Win32.INT;
  1707.                                      keyFlags    : Win32.UINT;
  1708.                                      fn          : LPDEFFN) is
  1709.                                                             -- windowsx.h:477
  1710.         garbage : Win32.LRESULT;
  1711.         uMsg    : Win32.UINT;
  1712.     begin
  1713.         if (fDoubleClick = Win32.FALSE) then
  1714.                 uMsg := Win32.Winuser.WM_RBUTTONDOWN;
  1715.         else
  1716.                 uMsg := Win32.Winuser.WM_RBUTTONDBLCLK;
  1717.         end if;
  1718.         garbage := fn(hwnd, uMsg, Win32.WPARAM(keyFlags), 
  1719.                         Win32.Winuser.MAKELPARAM(Win32.WORD(x), Win32.WORD(y)));
  1720.     end FORWARD_WM_RBUTTONDOWN;
  1721.  
  1722.     function HANDLE_WM_RBUTTONDBLCLK(hwnd  : Win32.Windef.HWND;
  1723.                                      wParam: Win32.WPARAM;
  1724.                                      lParam: Win32.LPARAM;
  1725.                                      fn    : LPRBUTTONDOWNPROC)
  1726.                                      return Win32.LRESULT is-- windowsx.h:481
  1727.     begin
  1728.         fn(hwnd, Win32.TRUE, 
  1729.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1730.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  1731.            Win32.UINT(wParam));
  1732.         return 0;
  1733.     end HANDLE_WM_RBUTTONDBLCLK;
  1734.  
  1735.     function HANDLE_WM_RBUTTONUP(hwnd  : Win32.Windef.HWND;
  1736.                                  wParam: Win32.WPARAM;
  1737.                                  lParam: Win32.LPARAM;
  1738.                                  fn    : LPRBUTTONUPPROC)
  1739.                                  return Win32.LRESULT is    -- windowsx.h:485
  1740.     begin
  1741.         fn(hwnd, 
  1742.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1743.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  1744.            Win32.UINT(wParam));
  1745.         return 0;
  1746.     end HANDLE_WM_RBUTTONUP;
  1747.  
  1748.     procedure FORWARD_WM_RBUTTONUP(hwnd    : Win32.Windef.HWND;
  1749.                                    x       : Win32.INT;
  1750.                                    y       : Win32.INT;
  1751.                                    keyFlags: Win32.UINT;
  1752.                                    fn      : LPDEFFN) is    -- windowsx.h:487
  1753.         garbage: Win32.LRESULT;
  1754.     begin
  1755.         garbage := fn(hwnd, Win32.Winuser.WM_RBUTTONUP, 
  1756.                       Win32.WPARAM(keyFlags), 
  1757.                       Win32.Winuser.MAKELPARAM(Win32.WORD(x), Win32.WORD(y)));
  1758.     end FORWARD_WM_RBUTTONUP;
  1759.  
  1760.     function HANDLE_WM_MBUTTONDOWN(hwnd  : Win32.Windef.HWND;
  1761.                                    wParam: Win32.WPARAM;
  1762.                                    lParam: Win32.LPARAM;
  1763.                                    fn    : LPMBUTTONDOWNPROC)
  1764.                                    return Win32.LRESULT is  -- windowsx.h:491
  1765.     begin
  1766.         fn(hwnd, Win32.FALSE, 
  1767.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1768.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  1769.            Win32.UINT(wParam));
  1770.         return 0;
  1771.     end HANDLE_WM_MBUTTONDOWN;
  1772.  
  1773.     procedure FORWARD_WM_MBUTTONDOWN(hwnd        : Win32.Windef.HWND;
  1774.                                      fDoubleClick: Win32.BOOL;
  1775.                                      x           : Win32.INT;
  1776.                                      y           : Win32.INT;
  1777.                                      keyFlags    : Win32.UINT;
  1778.                                      fn          : LPDEFFN) is
  1779.                                                             -- windowsx.h:493
  1780.         garbage : Win32.LRESULT;
  1781.         uMsg    : Win32.UINT;
  1782.     begin
  1783.         if (fDoubleClick = Win32.FALSE) then
  1784.                 uMsg := Win32.Winuser.WM_MBUTTONDOWN;
  1785.         else
  1786.                 uMsg := Win32.Winuser.WM_MBUTTONDBLCLK;
  1787.         end if;
  1788.         garbage := fn(hwnd, uMsg, Win32.WPARAM(keyFlags), 
  1789.                       Win32.Winuser.MAKELPARAM(Win32.WORD(x), Win32.WORD(y)));
  1790.     end FORWARD_WM_MBUTTONDOWN;
  1791.  
  1792.     function HANDLE_WM_MBUTTONDBLCLK(hwnd  : Win32.Windef.HWND;
  1793.                                      wParam: Win32.WPARAM;
  1794.                                      lParam: Win32.LPARAM;
  1795.                                      fn    : LPMBUTTONDOWNPROC)
  1796.                                      return Win32.LRESULT is-- windowsx.h:497
  1797.     begin
  1798.         fn(hwnd, Win32.TRUE, 
  1799.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1800.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  1801.            Win32.UINT(wParam));
  1802.         return 0;
  1803.     end HANDLE_WM_MBUTTONDBLCLK;
  1804.  
  1805.     function HANDLE_WM_MBUTTONUP(hwnd  : Win32.Windef.HWND;
  1806.                                  wParam: Win32.WPARAM;
  1807.                                  lParam: Win32.LPARAM;
  1808.                                  fn    : LPMBUTTONUPPROC)
  1809.                                  return Win32.LRESULT is    -- windowsx.h:501
  1810.     begin
  1811.         fn(hwnd, 
  1812.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1813.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  1814.            Win32.UINT(wParam));
  1815.         return 0;
  1816.     end HANDLE_WM_MBUTTONUP;
  1817.  
  1818.     procedure FORWARD_WM_MBUTTONUP(hwnd    : Win32.Windef.HWND;
  1819.                                    x       : Win32.INT;
  1820.                                    y       : Win32.INT;
  1821.                                    keyFlags: Win32.UINT;
  1822.                                    fn      : LPDEFFN) is    -- windowsx.h:503
  1823.         garbage: Win32.LRESULT;
  1824.     begin
  1825.         garbage := fn(hwnd, Win32.Winuser.WM_MBUTTONUP, 
  1826.                       Win32.WPARAM(keyFlags), 
  1827.                       Win32.Winuser.MAKELPARAM(Win32.WORD(x), Win32.WORD(y)));
  1828.     end FORWARD_WM_MBUTTONUP;
  1829.  
  1830.     function HANDLE_WM_NCMOUSEMOVE(hwnd  : Win32.Windef.HWND;
  1831.                                    wParam: Win32.WPARAM;
  1832.                                    lParam: Win32.LPARAM;
  1833.                                    fn    : LPNCMOUSEMOVEPROC)
  1834.                                    return Win32.LRESULT is  -- windowsx.h:507
  1835.     begin
  1836.         fn(hwnd, 
  1837.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))),
  1838.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))),   
  1839.            Win32.UINT(wParam));
  1840.         return 0;
  1841.     end HANDLE_WM_NCMOUSEMOVE;
  1842.  
  1843.     procedure FORWARD_WM_NCMOUSEMOVE(hwnd       : Win32.Windef.HWND;
  1844.                                      x          : Win32.INT;
  1845.                                      y          : Win32.INT;
  1846.                                      codeHitTest: Win32.UINT;
  1847.                                      fn         : LPDEFFN) is
  1848.                                                             -- windowsx.h:509
  1849.         garbage: Win32.LRESULT;
  1850.     begin
  1851.         garbage := fn(hwnd, Win32.Winuser.WM_NCMOUSEMOVE, 
  1852.                       Win32.WPARAM(codeHitTest), 
  1853.                       Win32.Winuser.MAKELPARAM(Win32.WORD(x), Win32.WORD(y)));
  1854.     end FORWARD_WM_NCMOUSEMOVE;
  1855.  
  1856.     function HANDLE_WM_NCLBUTTONDOWN(hwnd  : Win32.Windef.HWND;
  1857.                                      wParam: Win32.WPARAM;
  1858.                                      lParam: Win32.LPARAM;
  1859.                                      fn    : LPNCLBUTTONDOWNPROC)
  1860.                                      return Win32.LRESULT is-- windowsx.h:513
  1861.     begin
  1862.         fn(hwnd, Win32.FALSE, 
  1863.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1864.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  1865.            Win32.UINT(wParam));
  1866.         return 0;
  1867.     end HANDLE_WM_NCLBUTTONDOWN;
  1868.  
  1869.     procedure FORWARD_WM_NCLBUTTONDOWN(hwnd        : Win32.Windef.HWND;
  1870.                                        fDoubleClick: Win32.BOOL;
  1871.                                        x           : Win32.INT;
  1872.                                        y           : Win32.INT;
  1873.                                        codeHitTest : Win32.UINT;
  1874.                                        fn          : LPDEFFN) is
  1875.                                                             -- windowsx.h:515
  1876.         garbage : Win32.LRESULT;
  1877.         uMsg    : Win32.UINT;
  1878.     begin
  1879.         if (fDoubleClick = Win32.FALSE) then
  1880.                 uMsg := Win32.Winuser.WM_NCLBUTTONDOWN;
  1881.         else
  1882.                 uMsg := Win32.Winuser.WM_NCLBUTTONDBLCLK;
  1883.         end if;
  1884.         garbage := fn(hwnd, uMsg, Win32.WPARAM(codeHitTest), 
  1885.                       Win32.Winuser.MAKELPARAM(Win32.WORD(x), Win32.WORD(y)));
  1886.     end FORWARD_WM_NCLBUTTONDOWN;
  1887.  
  1888.     function HANDLE_WM_NCLBUTTONDBLCLK(hwnd  : Win32.Windef.HWND;
  1889.                                        wParam: Win32.WPARAM;
  1890.                                        lParam: Win32.LPARAM;
  1891.                                        fn    : LPNCLBUTTONDOWNPROC)
  1892.                                        return Win32.LRESULT is
  1893.                                                             -- windowsx.h:519
  1894.     begin
  1895.         fn(hwnd, Win32.TRUE, 
  1896.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1897.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  1898.            Win32.UINT(wParam));
  1899.         return 0;
  1900.     end HANDLE_WM_NCLBUTTONDBLCLK;
  1901.  
  1902.     function HANDLE_WM_NCLBUTTONUP(hwnd  : Win32.Windef.HWND;
  1903.                                    wParam: Win32.WPARAM;
  1904.                                    lParam: Win32.LPARAM;
  1905.                                    fn    : LPNCLBUTTONUPPROC)
  1906.                                    return Win32.LRESULT is  -- windowsx.h:523
  1907.     begin
  1908.         fn(hwnd, 
  1909.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))),
  1910.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  1911.            Win32.UINT(wParam));
  1912.         return 0;
  1913.     end HANDLE_WM_NCLBUTTONUP;
  1914.  
  1915.     procedure FORWARD_WM_NCLBUTTONUP(hwnd       : Win32.Windef.HWND;
  1916.                                      x          : Win32.INT;
  1917.                                      y          : Win32.INT;
  1918.                                      codeHitTest: Win32.UINT;
  1919.                                      fn         : LPDEFFN) is
  1920.                                                             -- windowsx.h:525
  1921.         garbage: Win32.LRESULT;
  1922.     begin
  1923.         garbage := fn(hwnd, Win32.Winuser.WM_NCLBUTTONUP, 
  1924.                         Win32.WPARAM(codeHitTest), 
  1925.                         Win32.Winuser.MAKELPARAM(Win32.WORD(x), Win32.WORD(y)));
  1926.     end FORWARD_WM_NCLBUTTONUP;
  1927.  
  1928.     function HANDLE_WM_NCRBUTTONDOWN(hwnd  : Win32.Windef.HWND;
  1929.                                      wParam: Win32.WPARAM;
  1930.                                      lParam: Win32.LPARAM;
  1931.                                      fn    : LPNCRBUTTONDOWNPROC)
  1932.                                      return Win32.LRESULT is-- windowsx.h:529
  1933.     begin
  1934.         fn(hwnd, Win32.FALSE, 
  1935.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1936.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  1937.            Win32.UINT(wParam));
  1938.         return 0;
  1939.     end HANDLE_WM_NCRBUTTONDOWN;
  1940.  
  1941.     procedure FORWARD_WM_NCRBUTTONDOWN(hwnd        : Win32.Windef.HWND;
  1942.                                        fDoubleClick: Win32.BOOL;
  1943.                                        x           : Win32.INT;
  1944.                                        y           : Win32.INT;
  1945.                                        codeHitTest : Win32.UINT;
  1946.                                        fn          : LPDEFFN) is
  1947.                                                             -- windowsx.h:531
  1948.         garbage : Win32.LRESULT;
  1949.         uMsg    : Win32.UINT;
  1950.     begin
  1951.         if (fDoubleClick = Win32.FALSE) then
  1952.                 uMsg := Win32.Winuser.WM_NCRBUTTONDOWN;
  1953.         else
  1954.                 uMsg := Win32.Winuser.WM_NCRBUTTONDBLCLK;
  1955.         end if;
  1956.         garbage := fn(hwnd, uMsg, Win32.WPARAM(codeHitTest), 
  1957.                       Win32.Winuser.MAKELPARAM(Win32.WORD(x), Win32.WORD(y)));
  1958.     end FORWARD_WM_NCRBUTTONDOWN;
  1959.  
  1960.     function HANDLE_WM_NCRBUTTONDBLCLK(hwnd  : Win32.Windef.HWND;
  1961.                                        wParam: Win32.WPARAM;
  1962.                                        lParam: Win32.LPARAM;
  1963.                                        fn    : LPNCRBUTTONDOWNPROC)
  1964.                                        return Win32.LRESULT is
  1965.                                                             -- windowsx.h:535
  1966.     begin
  1967.         fn(hwnd, Win32.TRUE, 
  1968.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1969.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  1970.            Win32.UINT(wParam));
  1971.         return 0;
  1972.     end HANDLE_WM_NCRBUTTONDBLCLK;
  1973.  
  1974.     function HANDLE_WM_NCRBUTTONUP(hwnd  : Win32.Windef.HWND;
  1975.                                    wParam: Win32.WPARAM;
  1976.                                    lParam: Win32.LPARAM;
  1977.                                    fn    : LPNCRBUTTONUPPROC)
  1978.                                    return Win32.LRESULT is  -- windowsx.h:539
  1979.     begin
  1980.         fn(hwnd, 
  1981.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  1982.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  1983.            Win32.UINT(wParam));
  1984.         return 0;
  1985.     end HANDLE_WM_NCRBUTTONUP;
  1986.  
  1987.     procedure FORWARD_WM_NCRBUTTONUP(hwnd       : Win32.Windef.HWND;
  1988.                                      x          : Win32.INT;
  1989.                                      y          : Win32.INT;
  1990.                                      codeHitTest: Win32.UINT;
  1991.                                      fn         : LPDEFFN) is
  1992.                                                             -- windowsx.h:541
  1993.         garbage: Win32.LRESULT;
  1994.     begin
  1995.         garbage := fn(hwnd, Win32.Winuser.WM_NCRBUTTONUP, 
  1996.                         Win32.WPARAM(codeHitTest), 
  1997.                         Win32.Winuser.MAKELPARAM(Win32.WORD(x), Win32.WORD(y)));
  1998.     end FORWARD_WM_NCRBUTTONUP;
  1999.  
  2000.     function HANDLE_WM_NCMBUTTONDOWN(hwnd  : Win32.Windef.HWND;
  2001.                                      wParam: Win32.WPARAM;
  2002.                                      lParam: Win32.LPARAM;
  2003.                                      fn    : LPNCMBUTTONDOWNPROC)
  2004.                                      return Win32.LRESULT is-- windowsx.h:545
  2005.     begin
  2006.         fn(hwnd, Win32.FALSE, 
  2007.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  2008.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  2009.            Win32.UINT(wParam));
  2010.         return 0;
  2011.     end HANDLE_WM_NCMBUTTONDOWN;
  2012.  
  2013.     procedure FORWARD_WM_NCMBUTTONDOWN(hwnd        : Win32.Windef.HWND;
  2014.                                        fDoubleClick: Win32.BOOL;
  2015.                                        x           : Win32.INT;
  2016.                                        y           : Win32.INT;
  2017.                                        codeHitTest : Win32.UINT;
  2018.                                        fn          : LPDEFFN) is
  2019.                                                             -- windowsx.h:547
  2020.         garbage : Win32.LRESULT;
  2021.         uMsg    : Win32.UINT;
  2022.     begin
  2023.         if (fDoubleClick = Win32.FALSE) then
  2024.                 uMsg := Win32.Winuser.WM_NCMBUTTONDOWN;
  2025.         else
  2026.                 uMsg := Win32.Winuser.WM_NCMBUTTONDBLCLK;
  2027.         end if;
  2028.         garbage := fn(hwnd, uMsg, Win32.WPARAM(codeHitTest), 
  2029.                       Win32.Winuser.MAKELPARAM(Win32.WORD(x), Win32.WORD(y)));
  2030.     end FORWARD_WM_NCMBUTTONDOWN;
  2031.  
  2032.     function HANDLE_WM_NCMBUTTONDBLCLK(hwnd  : Win32.Windef.HWND;
  2033.                                        wParam: Win32.WPARAM;
  2034.                                        lParam: Win32.LPARAM;
  2035.                                        fn    : LPNCMBUTTONDOWNPROC)
  2036.                                        return Win32.LRESULT is
  2037.                                                             -- windowsx.h:551
  2038.     begin
  2039.         fn(hwnd, Win32.TRUE, 
  2040.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))), 
  2041.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  2042.            Win32.UINT(wParam));
  2043.         return 0;
  2044.     end HANDLE_WM_NCMBUTTONDBLCLK;
  2045.  
  2046.     function HANDLE_WM_NCMBUTTONUP(hwnd  : Win32.Windef.HWND;
  2047.                                    wParam: Win32.WPARAM;
  2048.                                    lParam: Win32.LPARAM;
  2049.                                    fn    : LPNCMBUTTONUPPROC)
  2050.                                    return Win32.LRESULT is  -- windowsx.h:555
  2051.     begin
  2052.         fn(hwnd, 
  2053.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))),
  2054.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))), 
  2055.            Win32.UINT(wParam));
  2056.         return 0;
  2057.     end HANDLE_WM_NCMBUTTONUP;
  2058.  
  2059.     procedure FORWARD_WM_NCMBUTTONUP(hwnd       : Win32.Windef.HWND;
  2060.                                      x          : Win32.INT;
  2061.                                      y          : Win32.INT;
  2062.                                      codeHitTest: Win32.UINT;
  2063.                                      fn         : LPDEFFN) is
  2064.                                                             -- windowsx.h:557
  2065.         garbage: Win32.LRESULT;
  2066.     begin
  2067.         garbage := fn(hwnd, Win32.Winuser.WM_NCMBUTTONUP, 
  2068.                       Win32.WPARAM(codeHitTest), 
  2069.                       Win32.Winuser.MAKELPARAM(Win32.WORD(x), Win32.WORD(y)));
  2070.     end FORWARD_WM_NCMBUTTONUP;
  2071.  
  2072.     function HANDLE_WM_MOUSEACTIVATE(hwnd  : Win32.Windef.HWND;
  2073.                                      wParam: Win32.WPARAM;
  2074.                                      lParam: Win32.LPARAM;
  2075.                                      fn    : LPMOUSEACTIVATEFN)
  2076.                                      return Win32.LRESULT is-- windowsx.h:561
  2077.     begin
  2078.         return To_LRESULT(
  2079.                 Win32.DWORD(
  2080.                  fn(hwnd, To_HWND(wParam),
  2081.                     Win32.UINT(Win32.Utils.LOWORD(Win32.DWORD(lParam))), 
  2082.                     Win32.UINT(Win32.Utils.HIWORD(Win32.DWORD(lParam))))));
  2083.     end HANDLE_WM_MOUSEACTIVATE;
  2084.  
  2085.     function FORWARD_WM_MOUSEACTIVATE(hwnd        : Win32.Windef.HWND;
  2086.                                       hwndTopLevel: Win32.Windef.HWND;
  2087.                                       codeHitTest : Win32.UINT;
  2088.                                       msg         : Win32.UINT;
  2089.                                       fn          : LPDEFFN)
  2090.                                       return Win32.INT is   -- windowsx.h:563
  2091.     begin
  2092.         return Win32.INT(
  2093.                 Win32.DWORD(
  2094.                  fn(hwnd, Win32.Winuser.WM_MOUSEACTIVATE, 
  2095.                     Win32.WPARAM(To_DWORD(hwndTopLevel)), 
  2096.                     Win32.Winuser.MAKELPARAM(Win32.WORD(codeHitTest), 
  2097.                                              Win32.WORD(msg)))));
  2098.     end FORWARD_WM_MOUSEACTIVATE;
  2099.  
  2100.     function HANDLE_WM_CANCELMODE(hwnd  : Win32.Windef.HWND;
  2101.                                   wParam: Win32.WPARAM;
  2102.                                   lParam: Win32.LPARAM;
  2103.                                   fn    : LPCANCELMODEPROC)
  2104.                                   return Win32.LRESULT is   -- windowsx.h:567
  2105.     begin
  2106.         fn(hwnd);
  2107.         return 0;
  2108.     end HANDLE_WM_CANCELMODE;
  2109.  
  2110.     procedure FORWARD_WM_CANCELMODE(hwnd: Win32.Windef.HWND;
  2111.                                     fn  : LPDEFFN) is       -- windowsx.h:569
  2112.         garbage: Win32.LRESULT;
  2113.     begin
  2114.         garbage := fn(hwnd, Win32.Winuser.WM_CANCELMODE, 0, 0);
  2115.     end FORWARD_WM_CANCELMODE;
  2116.  
  2117.     function HANDLE_WM_TIMER(hwnd  : Win32.Windef.HWND;
  2118.                              wParam: Win32.WPARAM;
  2119.                              lParam: Win32.LPARAM;
  2120.                              fn    : LPTIMERPROC)
  2121.                              return Win32.LRESULT is        -- windowsx.h:573
  2122.     begin
  2123.         fn(hwnd, Win32.UINT(wParam));
  2124.         return 0;
  2125.     end HANDLE_WM_TIMER;
  2126.  
  2127.     procedure FORWARD_WM_TIMER(hwnd: Win32.Windef.HWND;
  2128.                                id  : Win32.UINT;
  2129.                                fn  : LPDEFFN) is            -- windowsx.h:575
  2130.         garbage: Win32.LRESULT;
  2131.     begin
  2132.         garbage := fn(hwnd, Win32.Winuser.WM_TIMER, Win32.WPARAM(id), 0);
  2133.     end FORWARD_WM_TIMER;
  2134.  
  2135.     function To_HMENU is new Ada.Unchecked_Conversion(Win32.LPARAM, 
  2136.                 Win32.Windef.HMENU);
  2137.     function To_HMENU is new Ada.Unchecked_Conversion(Win32.WPARAM, 
  2138.                 Win32.Windef.HMENU);
  2139.     --function To_DWORD is new Ada.Unchecked_Conversion(Win32.Windef.HMENU, 
  2140.     --            Win32.DWORD);
  2141.  
  2142.     function HANDLE_WM_INITMENU(hwnd  : Win32.Windef.HWND;
  2143.                                 wParam: Win32.WPARAM;
  2144.                                 lParam: Win32.LPARAM;
  2145.                                 fn    : LPINITMENUPROC)
  2146.                                 return Win32.LRESULT is     -- windowsx.h:579
  2147.     begin
  2148.         fn(hwnd, To_HMENU(wParam));
  2149.         return 0;
  2150.     end HANDLE_WM_INITMENU;
  2151.  
  2152.     procedure FORWARD_WM_INITMENU(hwnd : Win32.Windef.HWND;
  2153.                                   hMenu: Win32.Windef.HMENU;
  2154.                                   fn   : LPDEFFN) is        -- windowsx.h:581
  2155.         garbage: Win32.LRESULT;
  2156.     begin
  2157.         garbage := fn(hwnd, 
  2158.                       Win32.Winuser.WM_INITMENU, 
  2159.                       Win32.WPARAM(To_DWORD(hMenu)), 
  2160.                       0);
  2161.     end FORWARD_WM_INITMENU;
  2162.  
  2163.     function HANDLE_WM_INITMENUPOPUP(hwnd  : Win32.Windef.HWND;
  2164.                                      wParam: Win32.WPARAM;
  2165.                                      lParam: Win32.LPARAM;
  2166.                                      fn    : LPINITMENUPOPUPPROC)
  2167.                                      return Win32.LRESULT is-- windowsx.h:585
  2168.     begin
  2169.         fn(hwnd, To_HMENU(wParam), 
  2170.                 Win32.UINT(Win32.Utils.LOWORD(Win32.DWORD(lParam))), 
  2171.                 Win32.BOOL(Win32.Utils.HIWORD(Win32.DWORD(lParam))));
  2172.         return 0;
  2173.     end HANDLE_WM_INITMENUPOPUP;
  2174.  
  2175.     procedure FORWARD_WM_INITMENUPOPUP(hwnd       : Win32.Windef.HWND;
  2176.                                        hMenu      : Win32.Windef.HMENU;
  2177.                                        item       : Win32.UINT;
  2178.                                        fSystemMenu: Win32.BOOL;
  2179.                                        fn         : LPDEFFN) is
  2180.                                                             -- windowsx.h:587
  2181.         garbage: Win32.LRESULT;
  2182.     begin
  2183.         garbage := fn(hwnd, Win32.Winuser.WM_INITMENUPOPUP, 
  2184.                       Win32.WPARAM(To_DWORD(hMenu)), 
  2185.                       Win32.Winuser.MAKELPARAM(Win32.WORD(item),
  2186.                                                Win32.WORD(fSystemMenu)));
  2187.     end FORWARD_WM_INITMENUPOPUP;
  2188.  
  2189.     function HANDLE_WM_MENUSELECT(hwnd  : Win32.Windef.HWND;
  2190.                                   wParam: Win32.WPARAM;
  2191.                                   lParam: Win32.LPARAM;
  2192.                                   fn    : LPMENUSELECTPROC)
  2193.                                   return Win32.LRESULT is   -- windowsx.h:591
  2194.         use Interfaces.C;
  2195.         item       : Win32.INT;
  2196.         hMenuPopup : Win32.Windef.HMENU := To_HMENU(Win32.LPARAM'(0));
  2197.         flags      : Win32.UINT;
  2198.     begin
  2199.         if ((Win32.Utils.HIWORD(DWORD(wParam)) and Win32.Winuser.MF_POPUP) = 
  2200.                 Win32.FALSE) then
  2201.                 item := Win32.INT(Win32.Utils.LOWORD(DWORD(wParam)));
  2202.         else
  2203.                 item := 0;
  2204.         end if;
  2205.  
  2206.         if ((Win32.Utils.HIWORD(DWORD(wParam)) and 
  2207.                 Win32.Winuser.MF_POPUP) /= Win32.FALSE) then
  2208.                 hMenuPopup := 
  2209.                         Win32.Winuser.GetSubMenu(To_HMENU(lParam), 
  2210.                             Win32.INT(Win32.Utils.LOWORD(DWORD(wParam)))); 
  2211.         end if;
  2212.         
  2213.         if (Win32.SHORT(Win32.Utils.HIWORD(DWORD(wParam))) = -1) then
  2214.                 flags := 16#FFFFFFFF#;
  2215.         else
  2216.                 flags := UINT(Win32.Utils.HIWORD(DWORD(wParam)));
  2217.         end if;
  2218.  
  2219.         fn(hwnd, To_HMENU(lParam), item, hMenuPopup, flags);
  2220.         return 0;
  2221.     end HANDLE_WM_MENUSELECT;
  2222.  
  2223.     procedure FORWARD_WM_MENUSELECT(hwnd      : Win32.Windef.HWND;
  2224.                                     hmenu     : Win32.Windef.HMENU;
  2225.                                     item      : Win32.INT;
  2226.                                     hmenuPopup: Win32.Windef.HMENU;
  2227.                                     flags     : Win32.UINT;
  2228.                                     fn        : LPDEFFN) is -- windowsx.h:596
  2229.         function To_BOOL is new Ada.Unchecked_Conversion(Win32.Windef.HMENU,
  2230.                 Win32.BOOL);
  2231.         garbage: Win32.LRESULT;
  2232.         lParam : Win32.LPARAM;
  2233.     begin
  2234.         if (To_BOOL(hmenu) /= Win32.FALSE) then
  2235.                 lParam := HMENU_To_LPARAM(hmenu);
  2236.         else
  2237.                 lParam := HMENU_To_LPARAM(hmenuPopup);
  2238.         end if;
  2239.         garbage := fn(hwnd, Win32.Winuser.WM_MENUSELECT, 
  2240.                       Win32.Winuser.MAKEWPARAM(Win32.WORD(item), 
  2241.                                                Win32.WORD(flags)),
  2242.                       lParam);    
  2243.     end FORWARD_WM_MENUSELECT;
  2244.  
  2245.     function HANDLE_WM_MENUCHAR(hwnd  : Win32.Windef.HWND;
  2246.                                 wParam: Win32.WPARAM;
  2247.                                 lParam: Win32.LPARAM;
  2248.                                 fn    : LPMENUCHARFN)
  2249.                                 return Win32.LRESULT is     -- windowsx.h:600
  2250.     begin
  2251.         return To_LRESULT(Win32.DWORD(
  2252.                         fn(hwnd, 
  2253.                            Win32.UINT(Win32.Utils.LOWORD(DWORD(wParam))), 
  2254.                            Win32.UINT(Win32.Utils.HIWORD(DWORD(wParam))), 
  2255.                            To_HMENU(lParam))));
  2256.     end HANDLE_WM_MENUCHAR;
  2257.  
  2258.  
  2259.         function To_DWORD is new Ada.Unchecked_Conversion (Win32.LRESULT,
  2260.                 Win32.DWORD);
  2261.  
  2262.     function FORWARD_WM_MENUCHAR(hwnd : Win32.Windef.HWND;
  2263.                                  ch   : Win32.UINT;
  2264.                                  flags: Win32.UINT;
  2265.                                  hMenu: Win32.Windef.HMENU;
  2266.                                  fn   : LPDEFFN)
  2267.                                  return Win32.DWORD is      -- windowsx.h:602
  2268.     begin
  2269.         return To_DWORD(
  2270.                 fn(hwnd, Win32.Winuser.WM_MENUCHAR, 
  2271.                    Win32.Winuser.MAKEWPARAM(Win32.WORD(flags), Win32.WORD(ch)),
  2272.                    HMENU_To_LPARAM(hMenu)));
  2273.     end FORWARD_WM_MENUCHAR;
  2274.  
  2275.     function HANDLE_WM_COMMAND(hwnd  : Win32.Windef.HWND;
  2276.                                wParam: Win32.WPARAM;
  2277.                                lParam: Win32.LPARAM;
  2278.                                fn    : LPCOMMANDPROC)
  2279.                                return Win32.LRESULT is      -- windowsx.h:606
  2280.     begin
  2281.         fn(hwnd, Win32.INT(Win32.Utils.LOWORD(Win32.DWORD(wParam))), 
  2282.                  To_HWND(lParam), 
  2283.                  Win32.UINT(Win32.Utils.HIWORD(Win32.DWORD(wParam))));
  2284.         return 0;
  2285.     end HANDLE_WM_COMMAND;
  2286.  
  2287.     procedure FORWARD_WM_COMMAND(hwnd      : Win32.Windef.HWND;
  2288.                                  id        : Win32.INT;
  2289.                                  hwndCtl   : Win32.Windef.HWND;
  2290.                                  codeNotify: Win32.UINT;
  2291.                                  fn        : LPDEFFN) is    -- windowsx.h:608
  2292.         garbage: Win32.LRESULT;
  2293.     begin
  2294.         garbage := fn(hwnd, Win32.Winuser.WM_COMMAND, 
  2295.                         Win32.Winuser.MAKEWPARAM(Win32.WORD(Win32.UINT(id)),
  2296.                                                  Win32.WORD(codeNotify)), 
  2297.                         To_LPARAM(hwndCtl));
  2298.     end FORWARD_WM_COMMAND;
  2299.  
  2300.     function HANDLE_WM_HSCROLL(hwnd  : Win32.Windef.HWND;
  2301.                                wParam: Win32.WPARAM;
  2302.                                lParam: Win32.LPARAM;
  2303.                                fn    : LPHSCROLLPROC)
  2304.                                return Win32.LRESULT is      -- windowsx.h:612
  2305.     begin
  2306.         fn(hwnd, To_HWND(lParam), 
  2307.            Win32.UINT(Win32.Utils.LOWORD(Win32.DWORD(wParam))),
  2308.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(wParam)))));
  2309.         return 0;
  2310.     end HANDLE_WM_HSCROLL;
  2311.  
  2312.     function To_UINT is new Ada.Unchecked_Conversion(Win32.Windef.HWND,
  2313.                 Win32.UINT);
  2314.  
  2315.     procedure FORWARD_WM_HSCROLL(hwnd   : Win32.Windef.HWND;
  2316.                                  hwndCtl: Win32.Windef.HWND;
  2317.                                  code   : Win32.UINT;
  2318.                                  pos    : Win32.INT;
  2319.                                  fn     : LPDEFFN) is       -- windowsx.h:614
  2320.         garbage: Win32.LRESULT;
  2321.     begin
  2322.         garbage := fn(hwnd, Win32.Winuser.WM_HSCROLL, 
  2323.                         Win32.Winuser.MAKEWPARAM(Win32.WORD(code), 
  2324.                                                  Win32.WORD(Win32.UINT(pos))), 
  2325.                         Win32.LPARAM(To_UINT(hwndCtl)));
  2326.     end FORWARD_WM_HSCROLL;
  2327.  
  2328.     function HANDLE_WM_VSCROLL(hwnd  : Win32.Windef.HWND;
  2329.                                wParam: Win32.WPARAM;
  2330.                                lParam: Win32.LPARAM;
  2331.                                fn    : LPVSCROLLPROC)
  2332.                                return Win32.LRESULT is      -- windowsx.h:618
  2333.     begin
  2334.         fn(hwnd, To_HWND(lParam), 
  2335.                  Win32.UINT(Win32.Utils.LOWORD(Win32.DWORD(wParam))),  
  2336.                  Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(DWORD(wParam)))));
  2337.         return 0;
  2338.     end HANDLE_WM_VSCROLL;
  2339.  
  2340.     procedure FORWARD_WM_VSCROLL(hwnd   : Win32.Windef.HWND;
  2341.                                  hwndCtl: Win32.Windef.HWND;
  2342.                                  code   : Win32.UINT;
  2343.                                  pos    : Win32.INT;
  2344.                                  fn     : LPDEFFN) is       -- windowsx.h:620
  2345.         garbage: Win32.LRESULT;
  2346.     begin
  2347.         garbage := fn(hwnd, Win32.Winuser.WM_VSCROLL, 
  2348.                         Win32.Winuser.MAKEWPARAM(Win32.WORD(code), 
  2349.                                                  Win32.WORD(Win32.UINT(pos))),
  2350.                         To_LPARAM(hwndCtl));
  2351.     end FORWARD_WM_VSCROLL;
  2352.  
  2353.     function HANDLE_WM_CUT(hwnd  : Win32.Windef.HWND;
  2354.                            wParam: Win32.WPARAM;
  2355.                            lParam: Win32.LPARAM;
  2356.                            fn    : LPCUTPROC)
  2357.                            return Win32.LRESULT is          -- windowsx.h:624
  2358.     begin
  2359.         fn(hwnd);
  2360.         return 0;
  2361.     end HANDLE_WM_CUT;
  2362.  
  2363.     procedure FORWARD_WM_CUT(hwnd: Win32.Windef.HWND;
  2364.                              fn  : LPDEFFN) is              -- windowsx.h:626
  2365.         garbage: Win32.LRESULT;
  2366.     begin
  2367.         garbage := fn(hwnd, Win32.Winuser.WM_CUT, 0, 0);
  2368.     end FORWARD_WM_CUT;
  2369.  
  2370.     function HANDLE_WM_COPY(hwnd  : Win32.Windef.HWND;
  2371.                             wParam: Win32.WPARAM;
  2372.                             lParam: Win32.LPARAM;
  2373.                             fn    : LPCOPYPROC)
  2374.                             return Win32.LRESULT is         -- windowsx.h:630
  2375.     begin
  2376.         fn(hwnd);
  2377.         return 0;
  2378.     end HANDLE_WM_COPY;
  2379.  
  2380.     procedure FORWARD_WM_COPY(hwnd: Win32.Windef.HWND;
  2381.                               fn  : LPDEFFN) is             -- windowsx.h:632
  2382.         garbage: Win32.LRESULT;
  2383.     begin
  2384.         garbage := fn(hwnd, Win32.Winuser.WM_COPY, 0, 0);
  2385.     end FORWARD_WM_COPY;
  2386.  
  2387.     function HANDLE_WM_PASTE(hwnd  : Win32.Windef.HWND;
  2388.                              wParam: Win32.WPARAM;
  2389.                              lParam: Win32.LPARAM;
  2390.                              fn    : LPPASTEPROC)
  2391.                              return Win32.LRESULT is        -- windowsx.h:636
  2392.     begin
  2393.         fn(hwnd);
  2394.         return 0;
  2395.     end HANDLE_WM_PASTE;
  2396.  
  2397.     procedure FORWARD_WM_PASTE(hwnd: Win32.Windef.HWND;
  2398.                                fn  : LPDEFFN) is            -- windowsx.h:638
  2399.         garbage: Win32.LRESULT;
  2400.     begin
  2401.         garbage := fn(hwnd, Win32.Winuser.WM_PASTE, 0, 0);
  2402.     end FORWARD_WM_PASTE;
  2403.  
  2404.     function HANDLE_WM_CLEAR(hwnd  : Win32.Windef.HWND;
  2405.                              wParam: Win32.WPARAM;
  2406.                              lParam: Win32.LPARAM;
  2407.                              fn    : LPCLEARPROC)
  2408.                              return Win32.LRESULT is        -- windowsx.h:642
  2409.     begin
  2410.         fn(hwnd);
  2411.         return 0;
  2412.     end HANDLE_WM_CLEAR;
  2413.  
  2414.     procedure FORWARD_WM_CLEAR(hwnd: Win32.Windef.HWND;
  2415.                                fn  : LPDEFFN) is            -- windowsx.h:644
  2416.         garbage: Win32.LRESULT;
  2417.     begin
  2418.         garbage := fn(hwnd, Win32.Winuser.WM_CLEAR, 0, 0);
  2419.     end FORWARD_WM_CLEAR;
  2420.  
  2421.     function HANDLE_WM_UNDO(hwnd  : Win32.Windef.HWND;
  2422.                             wParam: Win32.WPARAM;
  2423.                             lParam: Win32.LPARAM;
  2424.                             fn    : LPUNDOPROC)
  2425.                             return Win32.LRESULT is         -- windowsx.h:648
  2426.     begin
  2427.         fn(hwnd);
  2428.         return 0;
  2429.     end HANDLE_WM_UNDO;
  2430.  
  2431.     procedure FORWARD_WM_UNDO(hwnd: Win32.Windef.HWND;
  2432.                               fn  : LPDEFFN) is             -- windowsx.h:650
  2433.         garbage: Win32.LRESULT;
  2434.     begin
  2435.         garbage := fn(hwnd, Win32.Winuser.WM_UNDO, 0, 0);
  2436.     end FORWARD_WM_UNDO;
  2437.  
  2438.     function HANDLE_WM_RENDERFORMAT(hwnd  : Win32.Windef.HWND;
  2439.                                     wParam: Win32.WPARAM;
  2440.                                     lParam: Win32.LPARAM;
  2441.                                     fn    : LPRENDERFORMATFN)
  2442.                                     return Win32.LRESULT is -- windowsx.h:654
  2443.         function To_UINT is new Ada.Unchecked_Conversion(Win32.Winnt.HANDLE,
  2444.                 Win32.UINT);
  2445.     begin
  2446.         return To_LRESULT(
  2447.                 Win32.DWORD(To_UINT(fn(hwnd, Win32.UINT(wParam)))));
  2448.     end HANDLE_WM_RENDERFORMAT;
  2449.  
  2450.     function FORWARD_WM_RENDERFORMAT(hwnd: Win32.Windef.HWND;
  2451.                                      fmt : Win32.UINT;
  2452.                                      fn  : LPDEFFN)
  2453.                                      return Win32.Winnt.HANDLE is
  2454.                                                             -- windowsx.h:656
  2455.         function To_HANDLE is new Ada.Unchecked_Conversion(Win32.UINT,
  2456.                 Win32.Winnt.HANDLE);
  2457.     begin
  2458.         return To_HANDLE(
  2459.                    Win32.UINT(
  2460.                         Win32.DWORD(fn(hwnd, Win32.Winuser.WM_RENDERFORMAT, 
  2461.                                         Win32.WPARAM(Win32.UINT(fmt)), 0))));
  2462.     end FORWARD_WM_RENDERFORMAT;
  2463.  
  2464.     function HANDLE_WM_RENDERALLFORMATS(hwnd  : Win32.Windef.HWND;
  2465.                                         wParam: Win32.WPARAM;
  2466.                                         lParam: Win32.LPARAM;
  2467.                                         fn    : LPRENDERALLFORMATSPROC)
  2468.                                         return Win32.LRESULT is
  2469.                                                             -- windowsx.h:660
  2470.     begin
  2471.         fn(hwnd);
  2472.         return 0;
  2473.     end HANDLE_WM_RENDERALLFORMATS;
  2474.  
  2475.     procedure FORWARD_WM_RENDERALLFORMATS(hwnd: Win32.Windef.HWND;
  2476.                                           fn  : LPDEFFN) is -- windowsx.h:662
  2477.         garbage: Win32.LRESULT;
  2478.     begin
  2479.         garbage := fn(hwnd, Win32.Winuser.WM_RENDERALLFORMATS, 0, 0);
  2480.     end FORWARD_WM_RENDERALLFORMATS;
  2481.  
  2482.     function HANDLE_WM_DESTROYCLIPBOARD(hwnd  : Win32.Windef.HWND;
  2483.                                         wParam: Win32.WPARAM;
  2484.                                         lParam: Win32.LPARAM;
  2485.                                         fn    : LPDESTROYCLIPBOARDPROC)
  2486.                                         return Win32.LRESULT is
  2487.                                                             -- windowsx.h:666
  2488.     begin
  2489.         fn(hwnd);
  2490.         return 0;
  2491.     end HANDLE_WM_DESTROYCLIPBOARD;
  2492.  
  2493.     procedure FORWARD_WM_DESTROYCLIPBOARD(hwnd: Win32.Windef.HWND;
  2494.                                           fn  : LPDEFFN) is -- windowsx.h:668
  2495.         garbage: Win32.LRESULT;
  2496.     begin
  2497.         garbage := fn(hwnd, Win32.Winuser.WM_DESTROYCLIPBOARD, 0, 0);
  2498.     end FORWARD_WM_DESTROYCLIPBOARD;
  2499.  
  2500.     function HANDLE_WM_DRAWCLIPBOARD(hwnd  : Win32.Windef.HWND;
  2501.                                      wParam: Win32.WPARAM;
  2502.                                      lParam: Win32.LPARAM;
  2503.                                      fn    : LPDRAWCLIPBOARDPROC)
  2504.                                      return Win32.LRESULT is-- windowsx.h:672
  2505.     begin
  2506.         fn(hwnd);
  2507.         return 0;
  2508.     end HANDLE_WM_DRAWCLIPBOARD;
  2509.  
  2510.     procedure FORWARD_WM_DRAWCLIPBOARD(hwnd: Win32.Windef.HWND;
  2511.                                        fn  : LPDEFFN) is    -- windowsx.h:674
  2512.         garbage: Win32.LRESULT;
  2513.     begin
  2514.         garbage := fn(hwnd, Win32.Winuser.WM_DRAWCLIPBOARD, 0, 0);
  2515.     end FORWARD_WM_DRAWCLIPBOARD;
  2516.  
  2517.         function To_HGLOBAL is new Ada.Unchecked_Conversion(
  2518.                 Win32.LPARAM, Win32.Windef.HGLOBAL);
  2519.  
  2520.     function HANDLE_WM_PAINTCLIPBOARD(hwnd  : Win32.Windef.HWND;
  2521.                                       wParam: Win32.WPARAM;
  2522.                                       lParam: Win32.LPARAM;
  2523.                                       fn    : LPPAINTCLIPBOARDPROC)
  2524.                                       return Win32.LRESULT is
  2525.                                                             -- windowsx.h:678
  2526.         function To_LPCPAINTSTRUCT is new Ada.Unchecked_Conversion(
  2527.                 Win32.LPVOID, LPCPAINTSTRUCT);
  2528.         garbage : Win32.BOOL;   
  2529.     begin
  2530.         fn(hwnd, To_HWND(wParam),
  2531.            To_LPCPAINTSTRUCT(Win32.Winbase.GlobalLock(To_HGLOBAL(lParam)))); 
  2532.         garbage := Win32.Winbase.GlobalUnlock(To_HGLOBAL(lParam));
  2533.         return 0;
  2534.     end HANDLE_WM_PAINTCLIPBOARD;
  2535.  
  2536.     procedure FORWARD_WM_PAINTCLIPBOARD(hwnd         : Win32.Windef.HWND;
  2537.                                         hwndCBViewer : Win32.Windef.HWND;
  2538.                                         lpPaintStruct: LPCPAINTSTRUCT;
  2539.                                         fn           : LPDEFFN) is
  2540.                                                             -- windowsx.h:680
  2541.         function To_LPARAM is new Ada.Unchecked_Conversion(
  2542.                 LPCPAINTSTRUCT, Win32.LPARAM);
  2543.         garbage: Win32.LRESULT;
  2544.     begin
  2545.         garbage := fn(hwnd, Win32.Winuser.WM_PAINTCLIPBOARD, 
  2546.                         Win32.WPARAM(To_DWORD(hwndCBViewer)), 
  2547.                         To_LPARAM(lpPaintStruct));
  2548.     end FORWARD_WM_PAINTCLIPBOARD;
  2549.  
  2550.     function HANDLE_WM_SIZECLIPBOARD(hwnd  : Win32.Windef.HWND;
  2551.                                      wParam: Win32.WPARAM;
  2552.                                      lParam: Win32.LPARAM;
  2553.                                      fn    : LPSIZECLIPBOARDPROC)
  2554.                                      return Win32.LRESULT is-- windowsx.h:684
  2555.         function To_LPCRECT is new Ada.Unchecked_Conversion(
  2556.                 Win32.PVOID, Win32.Objbase.LPCRECT);
  2557.         garbage : Win32.BOOL;
  2558.     begin
  2559.         fn(hwnd, To_HWND(wParam),
  2560.                  To_LPCRECT(
  2561.                         Win32.Winbase.GlobalLock(To_HGLOBAL(lParam)))); 
  2562.         garbage := Win32.Winbase.GlobalUnlock(To_HGLOBAL(lParam));
  2563.         return 0;
  2564.     end HANDLE_WM_SIZECLIPBOARD;
  2565.  
  2566.     procedure FORWARD_WM_SIZECLIPBOARD(hwnd        : Win32.Windef.HWND;
  2567.                                        hwndCBViewer: Win32.Windef.HWND;
  2568.                                        lprc        : Win32.Objbase.LPCRECT;
  2569.                                        fn          : LPDEFFN) is
  2570.                                                             -- windowsx.h:686
  2571.         function To_LPARAM is new Ada.Unchecked_Conversion(
  2572.                 Win32.Objbase.LPCRECT, Win32.LPARAM);
  2573.         garbage: Win32.LRESULT;
  2574.     begin
  2575.         garbage := fn(hwnd, Win32.Winuser.WM_SIZECLIPBOARD, 
  2576.                         Win32.WPARAM(To_DWORD(hwndCBViewer)), 
  2577.                         To_LPARAM(lprc));
  2578.     end FORWARD_WM_SIZECLIPBOARD;
  2579.  
  2580.     function HANDLE_WM_VSCROLLCLIPBOARD(hwnd  : Win32.Windef.HWND;
  2581.                                         wParam: Win32.WPARAM;
  2582.                                         lParam: Win32.LPARAM;
  2583.                                         fn    : LPVSCROLLCLIPBOARDPROC)
  2584.                                         return Win32.LRESULT is
  2585.                                                             -- windowsx.h:690
  2586.     begin
  2587.         fn(hwnd, To_HWND(wParam),
  2588.            Win32.UINT(Win32.Utils.LOWORD(Win32.DWORD(lParam))),
  2589.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))));
  2590.         return 0;
  2591.     end HANDLE_WM_VSCROLLCLIPBOARD;
  2592.  
  2593.     procedure FORWARD_WM_VSCROLLCLIPBOARD(hwnd        : Win32.Windef.HWND;
  2594.                                           hwndCBViewer: Win32.Windef.HWND;
  2595.                                           code        : Win32.UINT;
  2596.                                           pos         : Win32.INT;
  2597.                                           fn          : LPDEFFN) is
  2598.                                                             -- windowsx.h:692
  2599.         garbage: Win32.LRESULT;
  2600.     begin
  2601.         garbage := fn(hwnd, Win32.Winuser.WM_VSCROLLCLIPBOARD, 
  2602.                         Win32.WPARAM(To_DWORD(hwndCBViewer)), 
  2603.                         Win32.Winuser.MAKELPARAM(Win32.WORD(code), 
  2604.                                                  Win32.WORD(pos)));
  2605.     end FORWARD_WM_VSCROLLCLIPBOARD;
  2606.  
  2607.     function HANDLE_WM_HSCROLLCLIPBOARD(hwnd  : Win32.Windef.HWND;
  2608.                                         wParam: Win32.WPARAM;
  2609.                                         lParam: Win32.LPARAM;
  2610.                                         fn    : LPHSCROLLCLIPBOARDPROC)
  2611.                                         return Win32.LRESULT is
  2612.                                                             -- windowsx.h:696
  2613.     begin
  2614.         fn(hwnd, To_HWND(wParam),
  2615.            Win32.UINT(Win32.Utils.LOWORD(Win32.DWORD(lParam))),
  2616.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))));
  2617.         return 0;
  2618.     end HANDLE_WM_HSCROLLCLIPBOARD;
  2619.  
  2620.     procedure FORWARD_WM_HSCROLLCLIPBOARD(hwnd        : Win32.Windef.HWND;
  2621.                                           hwndCBViewer: Win32.Windef.HWND;
  2622.                                           code        : Win32.UINT;
  2623.                                           pos         : Win32.INT;
  2624.                                           fn          : LPDEFFN) is
  2625.                                                             -- windowsx.h:698
  2626.         garbage: Win32.LRESULT;
  2627.     begin
  2628.         garbage := fn(hwnd, Win32.Winuser.WM_HSCROLLCLIPBOARD, 
  2629.                         Win32.WPARAM(To_DWORD(hwndCBViewer)), 
  2630.                         Win32.Winuser.MAKELPARAM(Win32.WORD(code), 
  2631.                                                  Win32.WORD(pos)));
  2632.     end FORWARD_WM_HSCROLLCLIPBOARD;
  2633.  
  2634.     function HANDLE_WM_ASKCBFORMATNAME(hwnd  : Win32.Windef.HWND;
  2635.                                        wParam: Win32.WPARAM;
  2636.                                        lParam: Win32.LPARAM;
  2637.                                        fn    : LPASKCBFORMATNAMEPROC)
  2638.                                        return Win32.LRESULT is
  2639.                                                             -- windowsx.h:702
  2640.     begin
  2641.         fn(hwnd, Win32.INT(wParam), To_LPTSTR(lParam));
  2642.         return 0;
  2643.     end HANDLE_WM_ASKCBFORMATNAME;
  2644.  
  2645.     procedure FORWARD_WM_ASKCBFORMATNAME(hwnd    : Win32.Windef.HWND;
  2646.                                          cchMax  : Win32.INT;
  2647.                                          rgchName: Win32.Winnt.LPTSTR;
  2648.                                          fn      : LPDEFFN) is
  2649.                                                             -- windowsx.h:704
  2650.         function To_LPARAM is new Ada.Unchecked_Conversion(Win32.Winnt.LPTSTR,
  2651.                 Win32.LPARAM);
  2652.         garbage: Win32.LRESULT;
  2653.     begin
  2654.         garbage := fn(hwnd, Win32.Winuser.WM_ASKCBFORMATNAME, 
  2655.                         Win32.WPARAM(cchMax), To_LPARAM(rgchName));
  2656.     end FORWARD_WM_ASKCBFORMATNAME;
  2657.  
  2658.     function HANDLE_WM_CHANGECBCHAIN(hwnd  : Win32.Windef.HWND;
  2659.                                      wParam: Win32.WPARAM;
  2660.                                      lParam: Win32.LPARAM;
  2661.                                      fn    : LPCHANGECBCHAINPROC)
  2662.                                      return Win32.LRESULT is-- windowsx.h:708
  2663.     begin
  2664.         fn(hwnd, To_HWND(wParam), To_HWND(lParam));
  2665.         return 0;
  2666.     end HANDLE_WM_CHANGECBCHAIN;
  2667.  
  2668.     procedure FORWARD_WM_CHANGECBCHAIN(hwnd      : Win32.Windef.HWND;
  2669.                                        hwndRemove: Win32.Windef.HWND;
  2670.                                        hwndNext  : Win32.Windef.HWND;
  2671.                                        fn        : LPDEFFN) is
  2672.                                                             -- windowsx.h:710
  2673.         garbage: Win32.LRESULT;
  2674.     begin
  2675.         garbage := fn(hwnd, Win32.Winuser.WM_CHANGECBCHAIN, 
  2676.                         Win32.WPARAM(To_DWORD(hwndRemove)), 
  2677.                         To_LPARAM(hwndNext));
  2678.     end FORWARD_WM_CHANGECBCHAIN;
  2679.  
  2680.     function HANDLE_WM_SETCURSOR(hwnd  : Win32.Windef.HWND;
  2681.                                  wParam: Win32.WPARAM;
  2682.                                  lParam: Win32.LPARAM;
  2683.                                  fn    : LPSETCURSORFN)
  2684.                                  return Win32.LRESULT is    -- windowsx.h:714
  2685.     begin
  2686.         return To_LRESULT(Win32.DWORD(
  2687.                 fn(hwnd, To_HWND(wParam),
  2688.                    Win32.UINT(Win32.Utils.LOWORD(Win32.DWORD(lParam))), 
  2689.                    Win32.UINT(Win32.Utils.HIWORD(Win32.DWORD(lParam))))));
  2690.     end HANDLE_WM_SETCURSOR;
  2691.  
  2692.     function FORWARD_WM_SETCURSOR(hwnd       : Win32.Windef.HWND;
  2693.                                   hwndCursor : Win32.Windef.HWND;
  2694.                                   codeHitTest: Win32.UINT;
  2695.                                   msg        : Win32.UINT;
  2696.                                   fn         : LPDEFFN)
  2697.                                   return Win32.BOOL is      -- windowsx.h:716
  2698.     begin
  2699.         return Win32.BOOL(Win32.DWORD(
  2700.                         fn(hwnd, Win32.Winuser.WM_SETCURSOR, 
  2701.                            Win32.WPARAM(To_DWORD(hwndCursor)), 
  2702.                            Win32.Winuser.MAKELPARAM(Win32.WORD(codeHitTest),
  2703.                                                     Win32.WORD(msg)))));
  2704.     end FORWARD_WM_SETCURSOR;
  2705.  
  2706.     function HANDLE_WM_SYSCOMMAND(hwnd  : Win32.Windef.HWND;
  2707.                                   wParam: Win32.WPARAM;
  2708.                                   lParam: Win32.LPARAM;
  2709.                                   fn    : LPSYSCOMMANDPROC)
  2710.                                   return Win32.LRESULT is   -- windowsx.h:720
  2711.     begin
  2712.         fn(hwnd, Win32.UINT(wParam),
  2713.            Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(lParam)))),
  2714.            Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(Win32.DWORD(lParam)))));
  2715.         return 0;
  2716.     end HANDLE_WM_SYSCOMMAND;
  2717.  
  2718.     procedure FORWARD_WM_SYSCOMMAND(hwnd: Win32.Windef.HWND;
  2719.                                     cmd : Win32.UINT;
  2720.                                     x   : Win32.INT;
  2721.                                     y   : Win32.INT;
  2722.                                     fn  : LPDEFFN) is       -- windowsx.h:722
  2723.         garbage: Win32.LRESULT;
  2724.     begin
  2725.         garbage := fn(hwnd, Win32.Winuser.WM_SYSCOMMAND, 
  2726.                       Win32.WPARAM(cmd), 
  2727.                       Win32.Winuser.MAKELPARAM(Win32.WORD(x), Win32.WORD(y)));
  2728.     end FORWARD_WM_SYSCOMMAND;
  2729.  
  2730.     function HANDLE_WM_MDICREATE(hwnd  : Win32.Windef.HWND;
  2731.                                  wParam: Win32.WPARAM;
  2732.                                  lParam: Win32.LPARAM;
  2733.                                  fn    : LPMDICREATEFN)
  2734.                                  return Win32.LRESULT is    -- windowsx.h:726
  2735.         function To_LPCMDICREATESTRUCT is new Ada.Unchecked_Conversion(
  2736.                 Win32.LPARAM, LPCMDICREATESTRUCT);
  2737.     begin
  2738.         return To_LRESULT(
  2739.                    Win32.DWORD(
  2740.                         To_UINT(fn(hwnd, To_LPCMDICREATESTRUCT(lParam)))));
  2741.     end HANDLE_WM_MDICREATE;
  2742.  
  2743.     function FORWARD_WM_MDICREATE(hwnd : Win32.Windef.HWND;
  2744.                                   lpmcs: LPCMDICREATESTRUCT;                
  2745.                                   fn   : LPDEFFN)           -- windowsx.h:728
  2746.                                   return Win32.Windef.HWND is
  2747.         function To_LPARAM is new Ada.Unchecked_Conversion(LPCMDICREATESTRUCT,
  2748.                 Win32.LPARAM);
  2749.     begin
  2750.         return To_HWND(
  2751.                    Win32.UINT(
  2752.                         Win32.DWORD(
  2753.                                 fn(hwnd, Win32.Winuser.WM_MDICREATE, 0, 
  2754.                                         To_LPARAM(lpmcs)))));
  2755.     end FORWARD_WM_MDICREATE;
  2756.  
  2757.     function HANDLE_WM_MDIDESTROY(hwnd  : Win32.Windef.HWND;
  2758.                                   wParam: Win32.WPARAM;
  2759.                                   lParam: Win32.LPARAM;
  2760.                                   fn    : LPMDIDESTROYPROC)
  2761.                                   return Win32.LRESULT is   -- windowsx.h:732
  2762.     begin
  2763.         fn(hwnd, To_HWND(wParam));
  2764.         return 0;
  2765.     end HANDLE_WM_MDIDESTROY;
  2766.  
  2767.     procedure FORWARD_WM_MDIDESTROY(hwnd        : Win32.Windef.HWND;
  2768.                                     hwndDestroy : Win32.Windef.HWND;
  2769.                                     fn          : LPDEFFN) is
  2770.                                                             -- windowsx.h:734
  2771.         garbage: Win32.LRESULT;
  2772.     begin
  2773.         garbage := fn(hwnd, Win32.Winuser.WM_MDIDESTROY, 
  2774.             Win32.WPARAM(To_DWORD(hwndDestroy)), 0);
  2775.     end FORWARD_WM_MDIDESTROY;
  2776.  
  2777.     function HANDLE_WM_MDIACTIVATE(hwnd  : Win32.Windef.HWND;
  2778.                                    wParam: Win32.WPARAM;
  2779.                                    lParam: Win32.LPARAM;
  2780.                                    fn    : LPMDIACTIVATEPROC)
  2781.                                    return Win32.LRESULT is  -- windowsx.h:739
  2782.         fActive : Win32.BOOL := Win32.FALSE;
  2783.     begin
  2784.         if (lParam = To_LPARAM(hwnd)) then
  2785.                 fActive := Win32.TRUE;
  2786.         end if;
  2787.         fn(hwnd, fActive, To_HWND(lParam), To_HWND(wParam));
  2788.         return 0;
  2789.     end HANDLE_WM_MDIACTIVATE;
  2790.  
  2791.     procedure FORWARD_WM_MDIACTIVATE(hwnd          : Win32.Windef.HWND;
  2792.                                      fActive       : Win32.BOOL;
  2793.                                      hwndActivate  : Win32.Windef.HWND;
  2794.                                      hwndDeactivate: Win32.Windef.HWND;
  2795.                                      fn            : LPDEFFN) is
  2796.                                                             -- windowsx.h:741
  2797.         garbage: Win32.LRESULT;
  2798.     begin
  2799.         garbage := fn(hwnd, Winuser.WM_MDIACTIVATE, 
  2800.                         Win32.WPARAM(To_DWORD(hwndDeactivate)), 
  2801.                         To_LPARAM(hwndActivate));
  2802.     end FORWARD_WM_MDIACTIVATE;
  2803.  
  2804.     function HANDLE_WM_MDIRESTORE(hwnd  : Win32.Windef.HWND;
  2805.                                   wParam: Win32.WPARAM;
  2806.                                   lParam: Win32.LPARAM;
  2807.                                   fn    : LPMDIRESTOREPROC)
  2808.                                   return Win32.LRESULT is   -- windowsx.h:745
  2809.     begin
  2810.         fn(hwnd, To_HWND(wParam));
  2811.         return 0;
  2812.     end HANDLE_WM_MDIRESTORE;
  2813.  
  2814.     procedure FORWARD_WM_MDIRESTORE(hwnd       : Win32.Windef.HWND;
  2815.                                     hwndRestore: Win32.Windef.HWND;
  2816.                                     fn         : LPDEFFN) is-- windowsx.h:747
  2817.         garbage: Win32.LRESULT;
  2818.     begin
  2819.         garbage := fn(hwnd, Win32.Winuser.WM_MDIRESTORE, 
  2820.                         Win32.WPARAM(To_DWORD(hwndRestore)), 0);
  2821.     end FORWARD_WM_MDIRESTORE;
  2822.  
  2823.     function HANDLE_WM_MDINEXT(hwnd  : Win32.Windef.HWND;
  2824.                                wParam: Win32.WPARAM;
  2825.                                lParam: Win32.LPARAM;
  2826.                                fn    : LPMDINEXTFN)
  2827.                                return Win32.LRESULT is      -- windowsx.h:751
  2828.  
  2829.         function To_LRESULT is new Ada.Unchecked_Conversion(
  2830.                 Win32.Windef.HWND, Win32.LRESULT);
  2831.     begin
  2832.         return To_LRESULT(
  2833.                 fn(hwnd, To_HWND(wParam), Win32.BOOL(lParam)));
  2834.     end HANDLE_WM_MDINEXT;
  2835.  
  2836.     function FORWARD_WM_MDINEXT(hwnd   : Win32.Windef.HWND;
  2837.                                 hwndCur: Win32.Windef.HWND;
  2838.                                 fPrev  : Win32.BOOL;
  2839.                                 fn     : LPDEFFN)
  2840.                                 return Win32.Windef.HWND is -- windowsx.h:753
  2841.     begin
  2842.         return To_HWND(Win32.UINT(
  2843.                 Win32.DWORD(
  2844.                         fn(hwnd, Win32.Winuser.WM_MDINEXT, 
  2845.                                  Win32.WPARAM(To_DWORD(hwndCur)), 
  2846.                                  Win32.LPARAM(fPrev)))));
  2847.     end FORWARD_WM_MDINEXT;
  2848.  
  2849.     function HANDLE_WM_MDIMAXIMIZE(hwnd  : Win32.Windef.HWND;
  2850.                                    wParam: Win32.WPARAM;
  2851.                                    lParam: Win32.LPARAM;
  2852.                                    fn    : LPMDIMAXIMIZEPROC)
  2853.                                    return Win32.LRESULT is  -- windowsx.h:757
  2854.     begin
  2855.         fn(hwnd, To_HWND(wParam));
  2856.         return 0;
  2857.     end HANDLE_WM_MDIMAXIMIZE;
  2858.  
  2859.     procedure FORWARD_WM_MDIMAXIMIZE(hwnd        : Win32.Windef.HWND;
  2860.                                      hwndMaximize: Win32.Windef.HWND;
  2861.                                      fn          : LPDEFFN) is
  2862.                                                             -- windowsx.h:759
  2863.         garbage: Win32.LRESULT;
  2864.     begin
  2865.         garbage := fn(hwnd, Win32.Winuser.WM_MDIMAXIMIZE, 
  2866.                         Win32.WPARAM(To_DWORD(hwndMaximize)), 0);
  2867.     end FORWARD_WM_MDIMAXIMIZE;
  2868.  
  2869.     function HANDLE_WM_MDITILE(hwnd  : Win32.Windef.HWND;
  2870.                                wParam: Win32.WPARAM;
  2871.                                lParam: Win32.LPARAM;
  2872.                                fn    : LPMDITILEFN)
  2873.                                return Win32.LRESULT is      -- windowsx.h:763
  2874.     begin
  2875.         return To_LRESULT(Win32.DWORD(fn(hwnd, Win32.UINT(wParam))));
  2876.     end HANDLE_WM_MDITILE;
  2877.  
  2878.     function FORWARD_WM_MDITILE(hwnd: Win32.Windef.HWND;
  2879.                                 cmd : Win32.UINT;
  2880.                                 fn  : LPDEFFN)
  2881.                                 return Win32.BOOL is        -- windowsx.h:765
  2882.     begin
  2883.         return Win32.BOOL(
  2884.                 Win32.DWORD(
  2885.                  fn(hwnd, Win32.Winuser.WM_MDITILE, Win32.WPARAM(cmd), 0)));
  2886.     end FORWARD_WM_MDITILE;
  2887.  
  2888.     function HANDLE_WM_MDICASCADE(hwnd  : Win32.Windef.HWND;
  2889.                                   wParam: Win32.WPARAM;
  2890.                                   lParam: Win32.LPARAM;
  2891.                                   fn    : LPMDICASCADEFN)
  2892.                                   return Win32.LRESULT is   -- windowsx.h:769
  2893.     begin
  2894.         return To_LRESULT(Win32.DWORD(fn(hwnd, Win32.UINT(wParam))));
  2895.     end HANDLE_WM_MDICASCADE;
  2896.  
  2897.     function FORWARD_WM_MDICASCADE(hwnd: Win32.Windef.HWND;
  2898.                                    cmd : Win32.UINT;
  2899.                                    fn  : LPDEFFN)
  2900.                                    return Win32.BOOL is     -- windowsx.h:771
  2901.     begin
  2902.         return Win32.BOOL(
  2903.                 Win32.DWORD(
  2904.                  fn(hwnd, Win32.Winuser.WM_MDICASCADE, Win32.WPARAM(cmd), 0)));
  2905.     end FORWARD_WM_MDICASCADE;
  2906.  
  2907.     function HANDLE_WM_MDIICONARRANGE(hwnd  : Win32.Windef.HWND;
  2908.                                       wParam: Win32.WPARAM;
  2909.                                       lParam: Win32.LPARAM;
  2910.                                       fn    : LPMDIICONARRANGEPROC)
  2911.                                       return Win32.LRESULT is
  2912.                                                             -- windowsx.h:775
  2913.     begin
  2914.         fn(hwnd);
  2915.         return 0;
  2916.     end HANDLE_WM_MDIICONARRANGE;
  2917.  
  2918.     procedure FORWARD_WM_MDIICONARRANGE(hwnd: Win32.Windef.HWND;
  2919.                                         fn  : LPDEFFN) is   -- windowsx.h:777
  2920.         garbage: Win32.LRESULT;
  2921.     begin
  2922.         garbage := fn(hwnd, Win32.Winuser.WM_MDIICONARRANGE, 0, 0);
  2923.     end FORWARD_WM_MDIICONARRANGE;
  2924.  
  2925.     function HANDLE_WM_MDIGETACTIVE(hwnd  : Win32.Windef.HWND;
  2926.                                     wParam: Win32.WPARAM;
  2927.                                     lParam: Win32.LPARAM;
  2928.                                     fn    : LPMDIGETACTIVEFN)
  2929.                                     return Win32.LRESULT is -- windowsx.h:781
  2930.     begin
  2931.         return To_LRESULT(Win32.DWORD(To_UINT(fn(hwnd))));
  2932.     end HANDLE_WM_MDIGETACTIVE;
  2933.  
  2934.     function FORWARD_WM_MDIGETACTIVE(hwnd: Win32.Windef.HWND;
  2935.                                      fn  : LPDEFFN)
  2936.                                      return Win32.Windef.HWND is
  2937.                                                             -- windowsx.h:783
  2938.     begin
  2939.         return To_HWND(
  2940.                 Win32.UINT(
  2941.                  Win32.DWORD(
  2942.                   fn(hwnd, Win32.Winuser.WM_MDIGETACTIVE, 0, 0))));
  2943.     end FORWARD_WM_MDIGETACTIVE;
  2944.  
  2945.  
  2946.     function HANDLE_WM_MDISETMENU(hwnd  : Win32.Windef.HWND;
  2947.                                   wParam: Win32.WPARAM;
  2948.                                   lParam: Win32.LPARAM;
  2949.                                   fn    : LPMDISETMENUFN)
  2950.                                   return Win32.LRESULT is   -- windowsx.h:787
  2951.         function To_UINT is new Ada.Unchecked_Conversion(
  2952.                 Win32.Windef.HMENU, Win32.UINT);
  2953.  
  2954.     begin
  2955.         return To_LRESULT(
  2956.                 Win32.DWORD(
  2957.                  To_UINT(
  2958.                   fn(hwnd, Win32.BOOL(wParam), 
  2959.                            To_HMENU(wParam), 
  2960.                            To_HMENU(lParam)))));
  2961.     end HANDLE_WM_MDISETMENU;
  2962.  
  2963.     function FORWARD_WM_MDISETMENU(hwnd       : Win32.Windef.HWND;
  2964.                                    fRefresh   : Win32.BOOL;
  2965.                                    hmenuFrame : Win32.Windef.HMENU;
  2966.                                    hmenuWindow: Win32.Windef.HMENU;
  2967.                                    fn         : LPDEFFN)
  2968.                                    return Win32.Windef.HMENU is
  2969.                                                             -- windowsx.h:789
  2970.         function To_HMENU is new Ada.Unchecked_Conversion(UINT,
  2971.                 Win32.Windef.HMENU);
  2972.  
  2973.         wParam : Win32.WPARAM := 0;
  2974.     begin
  2975.         if (fRefresh /= Win32.FALSE) then
  2976.                 wParam := Win32.WPARAM(To_DWORD(hmenuFrame));
  2977.         end if;
  2978.         return To_HMENU(fn(hwnd, Win32.Winuser.WM_MDISETMENU, 
  2979.                                  wParam, HMENU_To_LPARAM(hmenuWindow)));
  2980.     end FORWARD_WM_MDISETMENU;
  2981.  
  2982.     function HANDLE_WM_CHILDACTIVATE(hwnd  : Win32.Windef.HWND;
  2983.                                      wParam: Win32.WPARAM;
  2984.                                      lParam: Win32.LPARAM;
  2985.                                      fn    : LPCHILDACTIVATEPROC)
  2986.                                      return Win32.LRESULT is-- windowsx.h:793
  2987.     begin
  2988.         fn(hwnd);
  2989.         return 0;
  2990.     end HANDLE_WM_CHILDACTIVATE;
  2991.  
  2992.     procedure FORWARD_WM_CHILDACTIVATE(hwnd: Win32.Windef.HWND;
  2993.                                        fn  : LPDEFFN) is    -- windowsx.h:795
  2994.         garbage: Win32.LRESULT;
  2995.     begin
  2996.         garbage := fn(hwnd, Win32.Winuser.WM_CHILDACTIVATE, 0, 0);
  2997.     end FORWARD_WM_CHILDACTIVATE;
  2998.  
  2999.     function HANDLE_WM_INITDIALOG(hwnd  : Win32.Windef.HWND;
  3000.                                   wParam: Win32.WPARAM;
  3001.                                   lParam: Win32.LPARAM;
  3002.                                   fn    : LPINITDIALOGFN)
  3003.                                   return Win32.LRESULT is   -- windowsx.h:799
  3004.     begin
  3005.         return To_LRESULT(
  3006.                 Win32.DWORD(
  3007.                  Win32.UINT(
  3008.                   fn(hwnd, To_HWND(wParam), lParam))));
  3009.     end HANDLE_WM_INITDIALOG;
  3010.  
  3011.     function FORWARD_WM_INITDIALOG(hwnd     : Win32.Windef.HWND;
  3012.                                    hwndFocus: Win32.Windef.HWND;
  3013.                                    lParam   : Win32.LPARAM;
  3014.                                    fn       : LPDEFFN)
  3015.                                    return Win32.BOOL is     -- windowsx.h:801
  3016.     begin
  3017.         return Win32.BOOL(Win32.DWORD(
  3018.                                 fn(hwnd, Win32.Winuser.WM_INITDIALOG, 
  3019.                                          Win32.WPARAM(To_DWORD(hwndFocus)), 
  3020.                                          lParam)));
  3021.     end FORWARD_WM_INITDIALOG;
  3022.  
  3023.     function HANDLE_WM_NEXTDLGCTL(hwnd  : Win32.Windef.HWND;
  3024.                                   wParam: Win32.WPARAM;
  3025.                                   lParam: Win32.LPARAM;
  3026.                                   fn    : LPNEXTDLGCTLFN)
  3027.                                   return Win32.LRESULT is   -- windowsx.h:805
  3028.     begin
  3029.         return To_LRESULT(
  3030.                 Win32.DWORD(
  3031.                  To_UINT(
  3032.                   fn(hwnd, To_HWND(wParam), Win32.BOOL(lParam)))));
  3033.     end HANDLE_WM_NEXTDLGCTL;
  3034.  
  3035.     function FORWARD_WM_NEXTDLGCTL(hwnd        : Win32.Windef.HWND;
  3036.                                    hwndSetFocus: Win32.Windef.HWND;
  3037.                                    fNext       : Win32.BOOL;
  3038.                                    fn          : LPDEFFN)
  3039.                                    return Win32.Windef.HWND is
  3040.                                                             -- windowsx.h:807
  3041.     begin
  3042.         return To_HWND(
  3043.                 Win32.UINT(
  3044.                  Win32.DWORD(
  3045.                   fn(hwnd, Win32.Winuser.WM_NEXTDLGCTL, 
  3046.                      Win32.WPARAM(To_DWORD(hwndSetFocus)), 
  3047.                      Win32.LPARAM(fNext)))));
  3048.     end FORWARD_WM_NEXTDLGCTL;
  3049.  
  3050.     function HANDLE_WM_PARENTNOTIFY(hwnd  : Win32.Windef.HWND;
  3051.                                     wParam: Win32.WPARAM;
  3052.                                     lParam: Win32.LPARAM;
  3053.                                     fn    : LPPARENTNOTIFYPROC)
  3054.                                     return Win32.LRESULT is -- windowsx.h:811
  3055.     begin
  3056.         fn(hwnd, Win32.UINT(Win32.Utils.LOWORD(Win32.DWORD(wParam))), 
  3057.            To_HWND(lParam), 
  3058.            Win32.INT(Win32.UINT(Win32.Utils.HIWORD(Win32.DWORD(wParam)))));
  3059.         return 0;
  3060.     end HANDLE_WM_PARENTNOTIFY;
  3061.  
  3062.     procedure FORWARD_WM_PARENTNOTIFY(hwnd     : Win32.Windef.HWND;
  3063.                                       msg      : Win32.UINT;
  3064.                                       hwndChild: Win32.Windef.HWND;
  3065.                                       idChild  : Win32.INT;
  3066.                                       fn       : LPDEFFN) is-- windowsx.h:813
  3067.         garbage: Win32.LRESULT;
  3068.     begin
  3069.         garbage := fn(hwnd, Win32.Winuser.WM_PARENTNOTIFY, 
  3070.                         Win32.Winuser.MAKEWPARAM(Win32.WORD(msg), 
  3071.                                                  Win32.WORD(idChild)),
  3072.                         To_LPARAM(hwndChild));
  3073.     end FORWARD_WM_PARENTNOTIFY;
  3074.  
  3075.     function HANDLE_WM_ENTERIDLE(hwnd  : Win32.Windef.HWND;
  3076.                                  wParam: Win32.WPARAM;
  3077.                                  lParam: Win32.LPARAM;
  3078.                                  fn    : LPENTERIDLEPROC)
  3079.                                  return Win32.LRESULT is    -- windowsx.h:817
  3080.     begin
  3081.         fn(hwnd, Win32.UINT(wParam), To_HWND(lParam));
  3082.         return 0;
  3083.     end HANDLE_WM_ENTERIDLE;
  3084.  
  3085.     procedure FORWARD_WM_ENTERIDLE(hwnd      : Win32.Windef.HWND;
  3086.                                    source    : Win32.UINT;
  3087.                                    hwndSource: Win32.Windef.HWND;
  3088.                                    fn        : LPDEFFN) is  -- windowsx.h:819
  3089.         garbage: Win32.LRESULT;
  3090.     begin
  3091.         garbage := fn(hwnd, Win32.Winuser.WM_ENTERIDLE, 
  3092.                         Win32.WPARAM(source), To_LPARAM(hwndSource));
  3093.     end FORWARD_WM_ENTERIDLE;
  3094.  
  3095.     function HANDLE_WM_GETDLGCODE(hwnd  : Win32.Windef.HWND;
  3096.                                   wParam: Win32.WPARAM;
  3097.                                   lParam: Win32.LPARAM;
  3098.                                   fn    : LPGETDLGCODEFN)
  3099.                                   return Win32.LRESULT is   -- windowsx.h:823
  3100.         function To_LPMSG is new Unchecked_Conversion(Win32.LPARAM,
  3101.                 Win32.Winuser.LPMSG);
  3102.     begin
  3103.         return To_LRESULT(
  3104.                 Win32.DWORD(fn(hwnd, To_LPMSG(lParam))));
  3105.     end HANDLE_WM_GETDLGCODE;
  3106.  
  3107.     function FORWARD_WM_GETDLGCODE(hwnd : Win32.Windef.HWND;
  3108.                                    lpmsg: Win32.Winuser.LPMSG;
  3109.                                    fn   : LPDEFFN)
  3110.                                    return Win32.UINT is     -- windowsx.h:825
  3111.  
  3112.         function To_BOOL is new Ada.Unchecked_Conversion(Win32.Winuser.LPMSG,
  3113.                 Win32.BOOL);
  3114.         function To_LPARAM is new Ada.Unchecked_Conversion(Win32.Winuser.LPMSG,
  3115.                 Win32.LPARAM);
  3116.         wParam : Win32.WPARAM := 0;
  3117.     begin
  3118.         if (To_BOOL(lpmsg) /= Win32.FALSE) then 
  3119.                 wParam := lpmsg.all.wParam; 
  3120.         end if;
  3121.         return Win32.UINT(
  3122.                   Win32.DWORD(
  3123.                       fn(hwnd, Win32.Winuser.WM_GETDLGCODE, wParam, 
  3124.                                 To_LPARAM(lpmsg))));
  3125.     end FORWARD_WM_GETDLGCODE;
  3126.  
  3127.     --function To_UINT is new Ada.Unchecked_Conversion(Win32.Windef.HBRUSH,
  3128.     --            Win32.UINT);
  3129.     function To_HBRUSH is new Ada.Unchecked_Conversion(Win32.UINT,      
  3130.                 Win32.Windef.HBRUSH);
  3131.  
  3132.     function HANDLE_WM_CTLCOLORMSGBOX(hwnd  : Win32.Windef.HWND;
  3133.                                       wParam: Win32.WPARAM;
  3134.                                       lParam: Win32.LPARAM;
  3135.                                       fn    : LPCTLCOLORFN)
  3136.                                       return Win32.LRESULT is
  3137.                                                             -- windowsx.h:829
  3138.     begin
  3139.         return To_LRESULT(
  3140.                 Win32.DWORD(
  3141.                  To_UINT(
  3142.                   fn(hwnd, To_HDC(wParam), 
  3143.                            To_HWND(lParam), 
  3144.                            Win32.Winuser.CTLCOLOR_MSGBOX))));
  3145.     end HANDLE_WM_CTLCOLORMSGBOX;
  3146.  
  3147.     function FORWARD_WM_CTLCOLORMSGBOX(hwnd     : Win32.Windef.HWND;
  3148.                                        hdc      : Win32.Windef.HDC;
  3149.                                        hwndChild: Win32.Windef.HWND;
  3150.                                        ctlType  : Win32.INT;
  3151.                                        fn       : LPDEFFN)
  3152.                                        return Win32.Windef.HBRUSH is
  3153.                                                             -- windowsx.h:831
  3154.     begin
  3155.         return To_HBRUSH(
  3156.                 Win32.UINT(
  3157.                  Win32.DWORD(
  3158.                   fn(hwnd, Win32.Winuser.WM_CTLCOLORMSGBOX, 
  3159.                            Win32.WPARAM(HDC_To_DWORD(hdc)),
  3160.                            To_LPARAM(hwndChild)))));
  3161.     end FORWARD_WM_CTLCOLORMSGBOX;
  3162.  
  3163.     function HANDLE_WM_CTLCOLOREDIT(hwnd  : Win32.Windef.HWND;
  3164.                                     wParam: Win32.WPARAM;
  3165.                                     lParam: Win32.LPARAM;
  3166.                                     fn    : LPCTLCOLORFN)
  3167.                                     return Win32.LRESULT is -- windowsx.h:834
  3168.     begin
  3169.         return To_LRESULT(
  3170.                 Win32.DWORD(
  3171.                  To_UINT(
  3172.                   fn(hwnd, To_HDC(wParam), 
  3173.                         To_HWND(lParam), 
  3174.                         Win32.Winuser.CTLCOLOR_EDIT))));
  3175.     end HANDLE_WM_CTLCOLOREDIT;
  3176.  
  3177.     function FORWARD_WM_CTLCOLOREDIT(hwnd     : Win32.Windef.HWND;
  3178.                                  hdc      : Win32.Windef.HDC;
  3179.                                  hwndChild: Win32.Windef.HWND;
  3180.                                  ctlType     : Win32.INT;
  3181.                                  fn       : LPDEFFN)
  3182.                                  return Win32.Windef.HBRUSH is
  3183.                                                             -- windowsx.h:836
  3184.     begin
  3185.         return To_HBRUSH(
  3186.                 Win32.UINT(
  3187.                  Win32.DWORD(
  3188.                   fn(hwnd, Win32.Winuser.WM_CTLCOLOREDIT, 
  3189.                      Win32.WPARAM(Win32.Utils.LOWORD(HDC_To_DWORD(hdc))), 
  3190.                      To_LPARAM(hwndChild)))));
  3191.     end FORWARD_WM_CTLCOLOREDIT;
  3192.  
  3193.     function HANDLE_WM_CTLCOLORLISTBOX(hwnd  : Win32.Windef.HWND;
  3194.                                        wParam: Win32.WPARAM;
  3195.                                        lParam: Win32.LPARAM;
  3196.                                        fn    : LPCTLCOLORFN)
  3197.                                        return Win32.LRESULT is
  3198.                                                             -- windowsx.h:839
  3199.     begin
  3200.         return To_LRESULT(
  3201.                 Win32.DWORD(
  3202.                  To_UINT(
  3203.                   fn(hwnd, To_HDC(wParam), 
  3204.                            To_HWND(lParam), 
  3205.                            Win32.Winuser.CTLCOLOR_LISTBOX))));
  3206.     end HANDLE_WM_CTLCOLORLISTBOX;
  3207.  
  3208.  
  3209.     function FORWARD_WM_CTLCOLORLISTBOX(hwnd     : Win32.Windef.HWND;
  3210.                                         hdc      : Win32.Windef.HDC;
  3211.                                         hwndChild: Win32.Windef.HWND;
  3212.                                         ctlType  : Win32.INT;
  3213.                                         fn       : LPDEFFN)
  3214.                                         return Win32.Windef.HBRUSH is
  3215.                                                             -- windowsx.h:841
  3216.  
  3217.     begin
  3218.         return To_HBRUSH(
  3219.                 Win32.UINT(
  3220.                  To_DWORD(
  3221.                         fn(hwnd, Win32.Winuser.WM_CTLCOLORLISTBOX, 
  3222.                         Win32.WPARAM(Win32.Utils.LOWORD(HDC_To_DWORD(hdc))), 
  3223.                                 To_LPARAM(hwndChild)))));
  3224.     end FORWARD_WM_CTLCOLORLISTBOX;
  3225.  
  3226.     function HANDLE_WM_CTLCOLORBTN(hwnd  : Win32.Windef.HWND;
  3227.                                    wParam: Win32.WPARAM;
  3228.                                    lParam: Win32.LPARAM;
  3229.                                    fn    : LPCTLCOLORFN)
  3230.                                    return Win32.LRESULT is  -- windowsx.h:844
  3231.     begin
  3232.         return To_LRESULT(
  3233.                 Win32.DWORD(
  3234.                  To_UINT(
  3235.                   fn(hwnd, To_HDC(wParam), 
  3236.                            To_HWND(lParam), 
  3237.                            Win32.Winuser.CTLCOLOR_BTN))));
  3238.         return 0;
  3239.     end HANDLE_WM_CTLCOLORBTN;
  3240.  
  3241.     function FORWARD_WM_CTLCOLORBTN(hwnd     : Win32.Windef.HWND;
  3242.                                     hdc      : Win32.Windef.HDC;
  3243.                                     hwndChild: Win32.Windef.HWND;
  3244.                                     ctlType  : Win32.INT;
  3245.                                     fn       : LPDEFFN)
  3246.                                     return Win32.Windef.HBRUSH is
  3247.                                                             -- windowsx.h:846
  3248.         garbage: Win32.LRESULT;
  3249.     begin
  3250.         return To_HBRUSH(
  3251.                 Win32.UINT(
  3252.                  Win32.DWORD(
  3253.                   fn(hwnd, Win32.Winuser.WM_CTLCOLORBTN, 
  3254.                         Win32.WPARAM(Win32.Utils.LOWORD(HDC_To_DWORD(hdc))), 
  3255.                         To_LPARAM(hwndChild)))));
  3256.     end FORWARD_WM_CTLCOLORBTN;
  3257.  
  3258.     function HANDLE_WM_CTLCOLORDLG(hwnd  : Win32.Windef.HWND;
  3259.                                    wParam: Win32.WPARAM;
  3260.                                    lParam: Win32.LPARAM;
  3261.                                    fn    : LPCTLCOLORFN)
  3262.                                    return Win32.LRESULT is  -- windowsx.h:849
  3263.     begin
  3264.         return To_LRESULT(
  3265.                 Win32.DWORD(
  3266.                  To_UINT(
  3267.                   fn(hwnd, To_HDC(wParam), 
  3268.                            To_HWND(lParam), 
  3269.                            Win32.Winuser.CTLCOLOR_DLG))));
  3270.     end HANDLE_WM_CTLCOLORDLG;
  3271.  
  3272.     function FORWARD_WM_CTLCOLORDLG(hwnd     : Win32.Windef.HWND;
  3273.                                     hdc      : Win32.Windef.HDC;
  3274.                                     hwndChild: Win32.Windef.HWND;
  3275.                                     ctlType  : Win32.INT;
  3276.                                     fn       : LPDEFFN)
  3277.                                     return Win32.Windef.HBRUSH is
  3278.                                                             -- windowsx.h:851
  3279.         garbage: Win32.LRESULT;
  3280.     begin
  3281.         return To_HBRUSH(
  3282.                 Win32.UINT(
  3283.                  Win32.DWORD(
  3284.                   fn(hwnd, Win32.Winuser.WM_CTLCOLORDLG, 
  3285.                         Win32.WPARAM(Win32.Utils.LOWORD(HDC_To_DWORD(hdc))), 
  3286.                         To_LPARAM(hwndChild)))));
  3287.     end FORWARD_WM_CTLCOLORDLG;
  3288.  
  3289.     function HANDLE_WM_CTLCOLORSCROLLBAR(hwnd  : Win32.Windef.HWND;
  3290.                                          wParam: Win32.WPARAM;
  3291.                                          lParam: Win32.LPARAM;
  3292.                                          fn    : LPCTLCOLORFN)
  3293.                                          return Win32.LRESULT is
  3294.                                                             -- windowsx.h:854
  3295.     begin
  3296.         return To_LRESULT(
  3297.                 Win32.DWORD(
  3298.                  To_UINT(
  3299.                   fn(hwnd, To_HDC(wParam), 
  3300.                            To_HWND(lParam), 
  3301.                            Win32.Winuser.CTLCOLOR_SCROLLBAR))));
  3302.     end HANDLE_WM_CTLCOLORSCROLLBAR;
  3303.  
  3304.     function FORWARD_WM_CTLCOLORSCROLLBAR(hwnd     : Win32.Windef.HWND;
  3305.                                           hdc      : Win32.Windef.HDC;
  3306.                                           hwndChild: Win32.Windef.HWND;
  3307.                                           ctlType  : Win32.INT;
  3308.                                           fn       : LPDEFFN)
  3309.                                           return Win32.Windef.HBRUSH is
  3310.                                                             -- windowsx.h:856
  3311.     begin
  3312.         return To_HBRUSH(
  3313.                 Win32.UINT(
  3314.                  Win32.DWORD(
  3315.                   fn(hwnd, Win32.Winuser.WM_CTLCOLORSCROLLBAR, 
  3316.                         Win32.WPARAM(Win32.Utils.LOWORD(HDC_To_DWORD(hdc))), 
  3317.                         To_LPARAM(hwndChild)))));
  3318.     end FORWARD_WM_CTLCOLORSCROLLBAR;
  3319.  
  3320.  
  3321.     function HANDLE_WM_CTLCOLORSTATIC(hwnd  : Win32.Windef.HWND;
  3322.                                       wParam: Win32.WPARAM;
  3323.                                       lParam: Win32.LPARAM;
  3324.                                       fn    : LPCTLCOLORFN)
  3325.                                       return Win32.LRESULT is
  3326.                                                             -- windowsx.h:859
  3327.     begin
  3328.         return To_LRESULT(
  3329.                 Win32.DWORD(
  3330.                  To_UINT(
  3331.                   fn(hwnd, To_HDC(wParam), 
  3332.                            To_HWND(lParam), 
  3333.                            Win32.Winuser.CTLCOLOR_STATIC))));
  3334.     end HANDLE_WM_CTLCOLORSTATIC;
  3335.  
  3336.     function FORWARD_WM_CTLCOLORSTATIC(hwnd     : Win32.Windef.HWND;
  3337.                                        hdc      : Win32.Windef.HDC;
  3338.                                        hwndChild: Win32.Windef.HWND;
  3339.                                        ctlType  : Win32.INT;
  3340.                                        fn       : LPDEFFN)
  3341.                                        return Win32.Windef.HBRUSH is
  3342.                                                             -- windowsx.h:861
  3343.     begin
  3344.         return To_HBRUSH(
  3345.                 Win32.UINT(
  3346.                  Win32.DWORD(
  3347.                   fn(hwnd, Win32.Winuser.WM_CTLCOLORSTATIC, 
  3348.                         Win32.WPARAM(Win32.Utils.LOWORD(HDC_To_DWORD(hdc))), 
  3349.                         To_LPARAM(hwndChild)))));
  3350.     end FORWARD_WM_CTLCOLORSTATIC;
  3351.  
  3352.     --function To_DWORD is new Ada.Unchecked_Conversion(Win32.Windef.HFONT,
  3353.     --            Win32.DWORD);
  3354.     function To_HFONT is new Ada.Unchecked_Conversion(Win32.DWORD,
  3355.                 Win32.Windef.HFONT);
  3356.  
  3357.     function HANDLE_WM_SETFONT(hwnd  : Win32.Windef.HWND;
  3358.                                wParam: Win32.WPARAM;
  3359.                                lParam: Win32.LPARAM;
  3360.                                fn    : LPSETFONTPROC)
  3361.                                return Win32.LRESULT is      -- windowsx.h:865
  3362.  
  3363.         function To_HFONT is new Ada.Unchecked_Conversion(Win32.WPARAM,
  3364.                 Win32.Windef.HFONT);
  3365.     begin
  3366.         fn(hwnd, To_HFONT(wParam), Win32.BOOL(lParam));
  3367.         return 0;
  3368.     end HANDLE_WM_SETFONT;
  3369.  
  3370.     procedure FORWARD_WM_SETFONT(hwnd   : Win32.Windef.HWND;
  3371.                                  hfont  : Win32.Windef.HFONT;
  3372.                                  fRedraw: Win32.BOOL;
  3373.                                  fn     : LPDEFFN) is       -- windowsx.h:867
  3374.         garbage: Win32.LRESULT;
  3375.     begin
  3376.         garbage := fn(hwnd, Win32.Winuser.WM_SETFONT, 
  3377.                         Win32.WPARAM(To_DWORD(hfont)), 
  3378.                         Win32.LPARAM(fRedraw));
  3379.     end FORWARD_WM_SETFONT;
  3380.  
  3381.     procedure SetWindowFont(hwnd   : Win32.Windef.HWND; 
  3382.                             hfont  : Win32.Windef.HFONT; 
  3383.                             fRedraw: Win32.BOOL) is         -- windowsx.h:91
  3384.     begin
  3385.         FORWARD_WM_SETFONT(hwnd, hfont, fRedraw, 
  3386.                            Win32.Winuser.SendMessage'Access);
  3387.     end SetWindowFont;
  3388.  
  3389.     function HANDLE_WM_GETFONT(hwnd  : Win32.Windef.HWND;
  3390.                                wParam: Win32.WPARAM;
  3391.                                lParam: Win32.LPARAM;
  3392.                                fn    : LPGETFONTFN)
  3393.                                return Win32.LRESULT is      -- windowsx.h:871
  3394.         function To_UINT is new Ada.Unchecked_Conversion(Win32.Windef.HFONT,
  3395.                 Win32.UINT);
  3396.  
  3397.     begin
  3398.         return To_LRESULT(Win32.DWORD(To_UINT(fn(hwnd))));
  3399.     end HANDLE_WM_GETFONT;
  3400.  
  3401.     function FORWARD_WM_GETFONT(hwnd: Win32.Windef.HWND;
  3402.                                 fn  : LPDEFFN)
  3403.                                 return Win32.Windef.HFONT is-- windowsx.h:873
  3404.         function To_HFONT is new Ada.Unchecked_Conversion(Win32.UINT,
  3405.                 Win32.Windef.HFONT);
  3406.     begin
  3407.         return To_HFONT(
  3408.                 Win32.UINT(
  3409.                  Win32.DWORD(fn(hwnd, Win32.Winuser.WM_GETFONT, 0, 0))));
  3410.     end FORWARD_WM_GETFONT;
  3411.  
  3412.     function GetWindowFont(hwnd: Win32.Windef.HWND) 
  3413.                            return Win32.Windef.HFONT is
  3414.                                                 -- windowsx.h:95
  3415.     begin
  3416.         return FORWARD_WM_GETFONT(hwnd, Win32.Winuser.SendMessage'Access);
  3417.     end GetWindowFont;
  3418.  
  3419.     function HANDLE_WM_DRAWITEM(hwnd  : Win32.Windef.HWND;
  3420.                                 wParam: Win32.WPARAM;
  3421.                                 lParam: Win32.LPARAM;
  3422.                                 fn    : LPDRAWITEMPROC)
  3423.                                 return Win32.LRESULT is     -- windowsx.h:877
  3424.         function To_LPCDRAWITEMSTRUCT is new Ada.Unchecked_Conversion(  
  3425.                 Win32.LPARAM, LPCDRAWITEMSTRUCT);
  3426.     begin
  3427.         fn(hwnd, To_LPCDRAWITEMSTRUCT(lParam));
  3428.         return 0;
  3429.     end HANDLE_WM_DRAWITEM;
  3430.  
  3431.     procedure FORWARD_WM_DRAWITEM(hwnd      : Win32.Windef.HWND;
  3432.                                   lpDrawItem: LPCDRAWITEMSTRUCT;
  3433.                                   fn        : LPDEFFN) is   -- windowsx.h:879
  3434.         function To_LPARAM is new Ada.Unchecked_Conversion(LPCDRAWITEMSTRUCT,
  3435.                 Win32.LPARAM);
  3436.  
  3437.         garbage: Win32.LRESULT;
  3438.     begin
  3439.         garbage := fn(hwnd, Win32.Winuser.WM_DRAWITEM, 
  3440.                         Win32.WPARAM(lpDrawItem.all.CtlID),
  3441.                         To_LPARAM(lpDrawItem));
  3442.     end FORWARD_WM_DRAWITEM;
  3443.         
  3444.     function HANDLE_WM_MEASUREITEM(hwnd  : Win32.Windef.HWND;
  3445.                                    wParam: Win32.WPARAM;
  3446.                                    lParam: Win32.LPARAM;
  3447.                                    fn    : LPMEASUREITEMPROC)
  3448.                                    return Win32.LRESULT is  -- windowsx.h:883
  3449.         function To_LPMEASUREITEMSTRUCT is new Ada.Unchecked_Conversion(
  3450.                 Win32.LPARAM, Win32.Winuser.LPMEASUREITEMSTRUCT);
  3451.     begin
  3452.         fn(hwnd, To_LPMEASUREITEMSTRUCT(lParam));
  3453.         return 0;
  3454.     end HANDLE_WM_MEASUREITEM;
  3455.  
  3456.     procedure FORWARD_WM_MEASUREITEM(
  3457.                 hwnd         : Win32.Windef.HWND;
  3458.                 lpMeasureItem: Win32.Winuser.LPMEASUREITEMSTRUCT;
  3459.                 fn           : LPDEFFN) is                  -- windowsx.h:885
  3460.         function To_LPARAM is new Ada.Unchecked_Conversion(
  3461.                 Win32.Winuser.LPMEASUREITEMSTRUCT, Win32.LPARAM);
  3462.         garbage: Win32.LRESULT;
  3463.     begin
  3464.         garbage := fn(hwnd, Win32.Winuser.WM_MEASUREITEM, 
  3465.                         Win32.WPARAM(lpMeasureItem.all.CtlID),
  3466.                         To_LPARAM(lpMeasureItem));
  3467.     end FORWARD_WM_MEASUREITEM;
  3468.  
  3469.     function HANDLE_WM_DELETEITEM(hwnd  : Win32.Windef.HWND;
  3470.                                   wParam: Win32.WPARAM;
  3471.                                   lParam: Win32.LPARAM;
  3472.                                   fn    : LPDELETEITEMPROC)
  3473.                                   return Win32.LRESULT is   -- windowsx.h:889
  3474.         function To_LPCDELETEITEMSTRUCT is new Ada.Unchecked_Conversion(
  3475.                 Win32.LPARAM, LPCDELETEITEMSTRUCT);
  3476.     begin
  3477.         fn(hwnd, To_LPCDELETEITEMSTRUCT(lParam));
  3478.         return 0;
  3479.     end HANDLE_WM_DELETEITEM;
  3480.  
  3481.     procedure FORWARD_WM_DELETEITEM(hwnd        : Win32.Windef.HWND;
  3482.                                     lpDeleteItem: LPCDELETEITEMSTRUCT;
  3483.                                     fn          : LPDEFFN) is
  3484.                                                             -- windowsx.h:891
  3485.         function To_LPARAM is new Ada.Unchecked_Conversion(
  3486.                  LPCDELETEITEMSTRUCT, Win32.LPARAM);
  3487.         garbage: Win32.LRESULT;
  3488.     begin
  3489.         garbage := fn(hwnd, Win32.Winuser.WM_DELETEITEM, 
  3490.                         Win32.WPARAM(lpDeleteItem.all.CtlID),
  3491.                         To_LPARAM(lpDeleteItem));
  3492.     end FORWARD_WM_DELETEITEM;
  3493.  
  3494.     function HANDLE_WM_COMPAREITEM(hwnd  : Win32.Windef.HWND;
  3495.                                    wParam: Win32.WPARAM;
  3496.                                    lParam: Win32.LPARAM;
  3497.                                    fn    : LPCOMPAREITEMFN)
  3498.                                    return Win32.LRESULT is  -- windowsx.h:895
  3499.         function To_LPCCOMPAREITEMSTRUCT is new Ada.Unchecked_Conversion(
  3500.                 Win32.LPARAM, LPCCOMPAREITEMSTRUCT);
  3501.     begin
  3502.         return To_LRESULT(
  3503.                 Win32.DWORD(    
  3504.                  fn(hwnd, To_LPCCOMPAREITEMSTRUCT(lParam))));
  3505.     end HANDLE_WM_COMPAREITEM;
  3506.  
  3507.     function FORWARD_WM_COMPAREITEM(hwnd         : Win32.Windef.HWND;
  3508.                                     lpCompareItem: LPCCOMPAREITEMSTRUCT;
  3509.                                     fn           : LPDEFFN)
  3510.                                     return Win32.INT is     -- windowsx.h:897
  3511.         function To_LPARAM is new Ada.Unchecked_Conversion(
  3512.                 LPCCOMPAREITEMSTRUCT, Win32.LPARAM);
  3513.     begin
  3514.         return Win32.INT(
  3515.                 Win32.DWORD(
  3516.                  fn(hwnd, Win32.Winuser.WM_COMPAREITEM, 
  3517.                           Win32.WPARAM(lpCompareItem.all.CtlID),
  3518.                           To_LPARAM(lpCompareItem))));
  3519.     end FORWARD_WM_COMPAREITEM;
  3520.  
  3521.     function HANDLE_WM_VKEYTOITEM(hwnd  : Win32.Windef.HWND;
  3522.                                   wParam: Win32.WPARAM;
  3523.                                   lParam: Win32.LPARAM;
  3524.                                   fn    : LPVKEYTOITEMFN)
  3525.                                   return Win32.LRESULT is   -- windowsx.h:901
  3526.     begin
  3527.         return To_LRESULT(
  3528.                 Win32.DWORD(    
  3529.                  Win32.INT(
  3530.                   fn(hwnd, Win32.UINT(Win32.Utils.LOWORD(Win32.DWORD(wParam))),
  3531.                         To_HWND(lParam),
  3532.                         Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(
  3533.                                                 Win32.DWORD(wParam))))))));
  3534.     end HANDLE_WM_VKEYTOITEM;
  3535.  
  3536.     function FORWARD_WM_VKEYTOITEM(hwnd       : Win32.Windef.HWND;
  3537.                                    vk         : Win32.UINT;
  3538.                                    hwndListbox: Win32.Windef.HWND;
  3539.                                    iCaret     : Win32.INT;
  3540.                                    fn         : LPDEFFN)
  3541.                                    return Win32.INT is      -- windowsx.h:903
  3542.     begin
  3543.         return Win32.INT(
  3544.                 Win32.DWORD(
  3545.                  fn(hwnd, Win32.Winuser.WM_VKEYTOITEM, 
  3546.                         Win32.Winuser.MAKEWPARAM(Win32.WORD(vk), 
  3547.                                                  Win32.WORD(iCaret)),
  3548.                         To_LPARAM(hwndListbox))));
  3549.     end FORWARD_WM_VKEYTOITEM;
  3550.  
  3551.     function HANDLE_WM_CHARTOITEM(hwnd  : Win32.Windef.HWND;
  3552.                                   wParam: Win32.WPARAM;
  3553.                                   lParam: Win32.LPARAM;
  3554.                                   fn    : LPCHARTOITEMFN)
  3555.                                   return Win32.LRESULT is   -- windowsx.h:907
  3556.     begin
  3557.         return To_LRESULT(
  3558.                 Win32.DWORD(    
  3559.                  Win32.INT(
  3560.                   fn(hwnd, Win32.UINT(Win32.Utils.LOWORD(Win32.DWORD(wParam))),
  3561.                         To_HWND(lParam),
  3562.                         Win32.INT(Win32.SHORT(Win32.Utils.HIWORD(
  3563.                                                 Win32.DWORD(wParam))))))));
  3564.     end HANDLE_WM_CHARTOITEM;
  3565.  
  3566.     function FORWARD_WM_CHARTOITEM(hwnd       : Win32.Windef.HWND;
  3567.                                    ch         : Win32.UINT;
  3568.                                    hwndListbox: Win32.Windef.HWND;
  3569.                                    iCaret     : Win32.INT;
  3570.                                    fn         : LPDEFFN)
  3571.                                    return Win32.INT is      -- windowsx.h:909
  3572.     begin
  3573.         return Win32.INT(
  3574.                 Win32.DWORD(
  3575.                   fn(hwnd, Win32.Winuser.WM_CHARTOITEM, 
  3576.                         Win32.Winuser.MAKEWPARAM(Win32.WORD(iCaret),  
  3577.                                                  Win32.WORD(Win32.UINT(ch))),
  3578.                         To_LPARAM(hwndListbox))));
  3579.     end FORWARD_WM_CHARTOITEM;
  3580.  
  3581.     function HANDLE_WM_QUEUESYNC(hwnd  : Win32.Windef.HWND;
  3582.                                  wParam: Win32.WPARAM;
  3583.                                  lParam: Win32.LPARAM;
  3584.                                  fn    : LPQUEUESYNCPROC)
  3585.                                  return Win32.LRESULT is    -- windowsx.h:913
  3586.     begin
  3587.         fn(hwnd);
  3588.         return 0;
  3589.     end HANDLE_WM_QUEUESYNC;
  3590.  
  3591.     procedure FORWARD_WM_QUEUESYNC(hwnd: Win32.Windef.HWND;
  3592.                                    fn  : LPDEFFN) is        -- windowsx.h:915
  3593.         garbage: Win32.LRESULT;
  3594.     begin
  3595.         garbage := fn(hwnd, Win32.Winuser.WM_QUEUESYNC, 0, 0);
  3596.     end FORWARD_WM_QUEUESYNC;
  3597.  
  3598.     function HANDLE_WM_COMMNOTIFY(hwnd  : Win32.Windef.HWND;
  3599.                                   wParam: Win32.WPARAM;
  3600.                                   lParam: Win32.LPARAM;
  3601.                                   fn    : LPCOMMNOTIFYPROC)
  3602.                                   return Win32.LRESULT is   -- windowsx.h:919
  3603.     begin
  3604.         fn(hwnd, Win32.INT(wParam), 
  3605.                 Win32.UINT(Win32.Utils.LOWORD(Win32.DWORD(lParam))));
  3606.         return 0;
  3607.     end HANDLE_WM_COMMNOTIFY;
  3608.  
  3609.     procedure FORWARD_WM_COMMNOTIFY(hwnd : Win32.Windef.HWND;
  3610.                                     cid  : Win32.INT;
  3611.                                     flags: Win32.UINT;
  3612.                                     fn   : LPDEFFN) is      -- windowsx.h:921
  3613.         garbage: Win32.LRESULT;
  3614.     begin
  3615.         garbage := fn(hwnd, Win32.Winuser.WM_COMMNOTIFY, Win32.WPARAM(cid), 
  3616.                         Win32.Winuser.MAKELPARAM(Win32.WORD(flags), 0));
  3617.     end FORWARD_WM_COMMNOTIFY;
  3618.  
  3619.  
  3620.     function To_HICON is new Ada.Unchecked_Conversion(Win32.UINT,
  3621.                 Win32.Windef.HICON);
  3622.  
  3623.     function Static_SetIcon(hwndCtl: Win32.Windef.HWND;     -- xwindows.h:932
  3624.                             hIcon  : Win32.Windef.HICON)
  3625.                                      return Win32.Windef.HICON is 
  3626.         function To_DWORD is new Ada.Unchecked_Conversion(
  3627.                         Win32.Windef.HICON, Win32.DWORD);
  3628.     begin
  3629.         return To_HICON(
  3630.                 Win32.UINT(
  3631.                  Win32.DWORD(
  3632.                   Win32.Winuser.SendMessage(hwndCtl, 
  3633.                                 Win32.Winuser.STM_GETICON, 
  3634.                                 Win32.WPARAM(To_DWORD(hIcon)), 0))));
  3635.     end Static_SetIcon;
  3636.  
  3637.     function Static_GetIcon(hwndCtl: Win32.Windef.HWND;     -- xwindows.h:933
  3638.                             hIcon  : Win32.Windef.HICON)
  3639.                                      return Win32.Windef.HICON is 
  3640.     begin
  3641.         return To_HICON(
  3642.                    Win32.UINT(
  3643.                         Win32.DWORD(
  3644.                             Win32.Winuser.SendMessage(hwndCtl, 
  3645.                                         Win32.Winuser.STM_GETICON, 0, 0))));
  3646.     end Static_GetIcon;
  3647.  
  3648.     function Button_GetCheck(hwndCtl : Win32.Windef.HWND)
  3649.                              return Win32.Int is            -- windowsx.h:943
  3650.     begin
  3651.         return Win32.Int(Win32.DWORD(
  3652.                    Win32.Winuser.SendMessage(hwndCtl, 
  3653.                                              Win32.Winuser.BM_GETCHECK,
  3654.                                              0, 0)));
  3655.     end Button_GetCheck;
  3656.  
  3657.     procedure Button_SetCheck(hwndCtl : Win32.Windef.HWND; 
  3658.                               check   : Win32.WPARAM) is    -- winuser.h:944
  3659.         garbage : Win32.LRESULT;
  3660.     begin
  3661.         garbage := Win32.Winuser.SendMessage(hwndCtl, 
  3662.                                              Win32.Winuser.BM_SETCHECK,
  3663.                                              Win32.WPARAM(Win32.Int(check)),
  3664.                                              0);
  3665.     end Button_SetCheck;
  3666.  
  3667.     function Button_GetState(hwndCtl : Win32.Windef.HWND)   -- winuser.h:946
  3668.                              return Win32.Int is
  3669.     begin
  3670.         return Win32.Int(Win32.DWORD(
  3671.                    Win32.Winuser.SendMessage(hwndCtl, 
  3672.                                              Win32.Winuser.BM_GETSTATE,
  3673.                                              0, 0)));
  3674.     end Button_GetState;
  3675.  
  3676.    
  3677.     function Button_SetState(hwndCtl : Win32.Windef.HWND;    
  3678.                              state   : Win32.WPARAM)  
  3679.                              return Win32.UINT is           -- winuser.h:947
  3680.     begin
  3681.         return Win32.UINT(Win32.DWORD(
  3682.                    Win32.Winuser.SendMessage(hwndCtl, 
  3683.                                              Win32.Winuser.BM_SETSTATE,
  3684.                                              Win32.WPARAM(Win32.Int(state)),
  3685.                                              0)));
  3686.     end Button_SetState;
  3687.  
  3688.     procedure Button_SetStyle(hwndCtl : Win32.Windef.HWND; 
  3689.                               style   : Win32.DWORD;
  3690.                               fRedraw : Win32.BOOL) is      -- winuser.h:949
  3691.         garbage : Win32.LRESULT;
  3692.         wRedraw : Win32.LPARAM;
  3693.     begin
  3694.         if (fRedraw = Win32.FALSE) then
  3695.             wRedraw := Win32.LPARAM(Win32.FALSE);
  3696.         else 
  3697.             wRedraw := Win32.LPARAM(Win32.TRUE);
  3698.         end if;
  3699.         garbage := Win32.Winuser.SendMessage(
  3700.                         hwndCtl, 
  3701.                         Win32.Winuser.BM_SETSTYLE,
  3702.                         Win32.WPARAM(Win32.Utils.LOWORD(style)),
  3703.                         wRedraw);
  3704.     end Button_SetStyle;
  3705.  
  3706.  
  3707.     procedure Edit_LimitText(hwndCtl: Win32.Windef.HWND;    -- xwindows.h:959
  3708.                              cchMax : Win32.INT) is
  3709.         garbage : Win32.LRESULT;
  3710.     begin
  3711.         garbage := Win32.Winuser.SendMessage(
  3712.                         hwndCtl, 
  3713.                         Win32.Winuser.EM_LIMITTEXT,
  3714.                         Win32.WPARAM(cchMax),
  3715.                         0);
  3716.     end Edit_LimitText;
  3717.         
  3718.     function Edit_GetLineCount(hwndCtl: Win32.Windef.HWND)  -- xwindows.h:961
  3719.                                 return Win32.Int is
  3720.     begin
  3721.         return Win32.Int(Win32.DWORD(
  3722.                 Win32.Winuser.SendMessage(
  3723.                         hwndCtl, Win32.Winuser.EM_GETLINECOUNT, 0, 0)));
  3724.  
  3725.     end Edit_GetLineCount;
  3726.  
  3727.     --function Edit_GetLine(hwndCtl: Win32.Windef.HWND;
  3728.     --                      line   : Win32.INT;
  3729.     --                      lpch   : Win32.PCHAR;
  3730.     --                      cchMax : Win32.Strings.size_t)    -- xwindows.h:961
  3731.     --                      return Win32.INT is
  3732.     procedure Edit_GetLine(hwndCtl: Win32.Windef.HWND;
  3733.                            line   : Win32.INT;
  3734.                            lpch   : in out Win32.PCHAR;
  3735.                            cchMax : Win32.Strings.size_t;
  3736.                            cch    : out Win32.INT) is
  3737.         function To_LPARAM is new Ada.Unchecked_Conversion(
  3738.                 Win32.Winnt.LPTSTR, Win32.LPARAM);
  3739.     begin
  3740.         Interfaces.C.Strings.Update
  3741.                      (Item   => Win32.To_Chars_Ptr(lpch),
  3742.                       Offset => 0,
  3743.                       Str    => Win32.Strings.size_t'Image (cchMax));
  3744.         cch  := Win32.Int(
  3745.                 Win32.Winuser.SendMessage(hwndCtl,
  3746.                                 Win32.Winuser.EM_GETLINE, 
  3747.                                 Win32.WPARAM(line), 
  3748.                                 To_LPARAM(Win32.Winnt.LPTSTR(lpch))));
  3749.         --lpch.all := Win32.CHAR'Val(cchMax);
  3750.         --return Win32.Int(Win32.DWORD(
  3751.         --        Win32.Winuser.SendMessage(hwndCtl,
  3752.         --                        Win32.Winuser.EM_GETLINE, 
  3753.         --                        Win32.WPARAM(line), 
  3754.         --                        To_LPARAM(Win32.Winnt.LPTSTR(lpch)))));
  3755.     end Edit_GetLine;
  3756.  
  3757.     function To_LPARAM is new Ada.Unchecked_Conversion(Win32.Windef.LPRECT,
  3758.                         Win32.LPARAM);
  3759.  
  3760.     procedure Edit_GetRect(hwndCtl: Win32.Windef.HWND;      -- xwindows.h:964
  3761.                            lprc   : Win32.Windef.LPRECT) is
  3762.         garbage : Win32.LRESULT;
  3763.     begin
  3764.         garbage := Win32.Winuser.SendMessage(
  3765.                         hwndCtl, 
  3766.                         Win32.Winuser.EM_GETRECT,
  3767.                         0,
  3768.                         To_LPARAM(lprc));
  3769.     end Edit_GetRect;
  3770.         
  3771.     procedure Edit_SetRect(hwndCtl: Win32.Windef.HWND;      -- xwindows.h:965
  3772.                            lprc   : Win32.Windef.LPRECT) is
  3773.         garbage : Win32.LRESULT;
  3774.     begin
  3775.         garbage := Win32.Winuser.SendMessage(
  3776.                         hwndCtl, 
  3777.                         Win32.Winuser.EM_SETRECT,
  3778.                         0,
  3779.                         To_LPARAM(lprc));                       
  3780.     end Edit_SetRect;
  3781.         
  3782.     procedure Edit_SetRectNoPaint(hwndCtl: Win32.Windef.HWND;   
  3783.                                   lprc   : Win32.Windef.LPRECT) is
  3784.         garbage : Win32.LRESULT;                            -- xwindows.h:966
  3785.     begin
  3786.         garbage := Win32.Winuser.SendMessage(
  3787.                         hwndCtl, 
  3788.                         Win32.Winuser.EM_SETRECTNP,
  3789.                         0,
  3790.                         To_LPARAM(lprc));
  3791.     end Edit_SetRectNoPaint;
  3792.  
  3793.  
  3794.     function Edit_GetSel(hwndCtl : Win32.Windef.HWND) return Win32.DWORD is
  3795.                                                             -- xwindows.h:968
  3796.     begin       
  3797.         return Win32.DWORD(
  3798.                     Win32.Winuser.SendMessage(
  3799.                         hwndCtl, 
  3800.                         Win32.Winuser.EM_GETSEL,0,0));
  3801.     end Edit_GetSel;
  3802.  
  3803.     procedure Edit_SetSel(hwndCtl : Win32.Windef.HWND;   
  3804.                           ichStart: Win32.Int;
  3805.                           ichEnd  : Win32.Int) is           -- windowsx.h:969
  3806.         garbage : Win32.LRESULT;
  3807.     begin
  3808.         garbage := Win32.Winuser.SendMessage(hwndCtl, Win32.Winuser.EM_SETSEL,
  3809.                                              Win32.WPARAM(ichStart), 
  3810.                                              Win32.LPARAM(ichEnd));
  3811.     end Edit_SetSel;
  3812.  
  3813.     procedure Edit_ReplaceSel(hwndCtl    : Win32.Windef.HWND;   
  3814.                               lpszReplace: Win32.Winnt.LPCTSTR) is  
  3815.                                                             -- xwindows.h:970
  3816.  
  3817.         garbage : Win32.LRESULT;        
  3818.     begin
  3819.         garbage := Win32.Winuser.SendMessage(
  3820.                         hwndCtl, 
  3821.                         Win32.Winuser.EM_REPLACESEL,0,
  3822.                         To_LPARAM(lpszReplace));
  3823.     end Edit_ReplaceSel;        
  3824.  
  3825.     function Edit_GetModify(hwndCtl: Win32.Windef.HWND) return Win32.BOOL is
  3826.                                                             -- xwindows.h:972
  3827.     begin       
  3828.         return Win32.BOOL(
  3829.                 Win32.DWORD(
  3830.                  Win32.Winuser.SendMessage(
  3831.                                 hwndCtl, Win32.Winuser.EM_GETMODIFY,0,0)));
  3832.     end Edit_GetModify;
  3833.  
  3834.     procedure Edit_SetModify(hwndCtl  : Win32.Windef.HWND;   
  3835.                              fModified: Win32.BOOL) is      -- xwindows.h:973
  3836.         garbage : Win32.LRESULT;        
  3837.     begin
  3838.         garbage := Win32.Winuser.SendMessage(
  3839.                         hwndCtl, 
  3840.                         Win32.Winuser.EM_SETMODIFY, 
  3841.                         Win32.WPARAM(Win32.UINT(fModified)), 0);
  3842.     end Edit_SetModify;
  3843.  
  3844.     function Edit_ScrollCaret(hwndCtl: Win32.Windef.HWND) return Win32.BOOL is
  3845.                                                             -- xwindows.h:975 
  3846.     begin       
  3847.         return Win32.BOOL(
  3848.                 Win32.DWORD(
  3849.                  Win32.Winuser.SendMessage(
  3850.                                 hwndCtl, Win32.Winuser.EM_SCROLLCARET,0,0)));
  3851.     end Edit_ScrollCaret;
  3852.  
  3853.     function Edit_LineFromChar(hwndCtl: Win32.Windef.HWND;
  3854.                                ich    : Win32.INT) 
  3855.         return Win32.Int is                                 -- xwindows.h:977
  3856.     begin       
  3857.         return Win32.Int(Win32.DWORD(
  3858.                                 Win32.Winuser.SendMessage(
  3859.                                         hwndCtl, 
  3860.                                         Win32.Winuser.EM_LINEFROMCHAR, 
  3861.                                         Win32.WPARAM(ich), 0)));
  3862.     end Edit_LineFromChar;
  3863.  
  3864.     function Edit_LineIndex(hwndCtl: Win32.Windef.HWND;
  3865.                             line   : Win32.INT)
  3866.         return Win32.Int is                                 -- xwindows.h:978
  3867.     begin      
  3868.         return Win32.Int(Win32.DWORD(
  3869.                                 Win32.Winuser.SendMessage(
  3870.                                         hwndCtl, 
  3871.                                         Win32.Winuser.EM_LINEINDEX, 
  3872.                                         Win32.WPARAM(line), 0)));
  3873.     end Edit_LineIndex;
  3874.     
  3875.     function Edit_LineLength(hwndCtl: Win32.Windef.HWND;
  3876.                              line   : Win32.INT)
  3877.         return Win32.INT is                                 -- xwindows.h:979
  3878.     begin
  3879.         return Win32.INT(
  3880.                 Win32.DWORD(
  3881.                  Win32.Winuser.SendMessage(hwndCtl, 
  3882.                                            Win32.Winuser.EM_LINELENGTH, 
  3883.                                            Win32.WPARAM(line), 0)));
  3884.     end Edit_LineLength;
  3885.  
  3886.     procedure Edit_Scroll(hwndCtl: Win32.Windef.HWND;
  3887.                           dv     : Win32.INT;
  3888.                           dh     : Win32.INT) is            -- windowsx.h:981
  3889.         garbage : Win32.LRESULT;
  3890.     begin
  3891.         garbage := Win32.Winuser.SendMessage(hwndCtl, 
  3892.                                              Win32.Winuser.EM_LINESCROLL, 
  3893.                                              Win32.WPARAM(dh), 
  3894.                                              Win32.LPARAM(dv));
  3895.     end Edit_Scroll;
  3896.  
  3897.     function Edit_CanUndo(hwndCtl: Win32.Windef.HWND) return Win32.BOOL is
  3898.                                                             -- xwindows.h:983
  3899.     
  3900.     begin
  3901.         return Win32.BOOL(
  3902.                 Win32.DWORD(
  3903.                  Win32.Winuser.SendMessage(hwndCtl, 
  3904.                                            Win32.Winuser.EM_CANUNDO,0,0)));
  3905.     end Edit_CanUndo;
  3906.  
  3907.     function Edit_Undo(hwndCtl: Win32.Windef.HWND) return Win32.BOOL is
  3908.                                                             -- xwindows.h:984  
  3909.     begin
  3910.         return Win32.BOOL(Win32.DWORD(
  3911.                                 Win32.Winuser.SendMessage(
  3912.                                         hwndCtl, 
  3913.                                         Win32.Winuser.EM_UNDO,0,0)));
  3914.     end Edit_Undo;
  3915.  
  3916.     procedure Edit_EmptyUndoBuffer(hwndCtl: Win32.Windef.HWND) is
  3917.                                                             -- xwindows.h:985
  3918.         garbage : Win32.LRESULT;        
  3919.     begin
  3920.         garbage := Win32.Winuser.SendMessage(
  3921.                         hwndCtl, 
  3922.                         Win32.Winuser.EM_EMPTYUNDOBUFFER, 0,0); 
  3923.     end Edit_EmptyUndoBuffer;
  3924.  
  3925.      procedure Edit_SetPasswordChar(hwndCtl: Win32.Windef.HWND;
  3926.                                     ch     : Win32.CHAR) is -- xwindows.h:987
  3927.  
  3928.         function To_BYTE is new Ada.Unchecked_Conversion(Win32.CHAR, Win32.BYTE);
  3929.         garbage : Win32.LRESULT;        
  3930.     begin
  3931.         garbage := Win32.Winuser.SendMessage(
  3932.                         hwndCtl, 
  3933.                         Win32.Winuser.EM_SETPASSWORDCHAR, 
  3934.                         Win32.WPARAM(
  3935.                          Win32.UINT(
  3936.                           Win32.Utils.MAKELONG(
  3937.                                 Win32.Utils.MAKEWORD(To_BYTE(ch), 0), 0))),
  3938.                         0);
  3939.     end Edit_SetPasswordChar;
  3940.  
  3941.     procedure Edit_SetTabStops(hwndCtl: Win32.Windef.HWND;
  3942.                                cTabs  : Win32.INT;
  3943.                                lpTabs : Win32.LPWORD) is    -- xwindows.h:989
  3944.  
  3945.         type LPCINT is access constant Win32.INT;
  3946.         function To_LPARAM is new Ada.Unchecked_Conversion(LPCINT,
  3947.                         Win32.LPARAM);
  3948.         function To_LPCINT is new Ada.Unchecked_Conversion(Win32.LPWORD,
  3949.                         LPCINT);
  3950.         garbage : Win32.LRESULT;        
  3951.     begin
  3952.         garbage := Win32.Winuser.SendMessage(
  3953.                         hwndCtl, 
  3954.                         Win32.Winuser.EM_SETTABSTOPS, 
  3955.                         Win32.WPARAM(cTabs), 
  3956.                         To_LPARAM(To_LPCINT(lpTabs)));
  3957.     end Edit_SetTabStops;
  3958.  
  3959.  
  3960.     function Edit_FmtLines(hwndCtl: Win32.Windef.HWND;
  3961.                            fAddEOL: Win32.BOOL)
  3962.                            return Win32.BOOL is             -- windowsx.h:991
  3963.     begin
  3964.         return Win32.BOOL(
  3965.                 Win32.DWORD(
  3966.                  Win32.Winuser.SendMessage(hwndCtl, Win32.Winuser.EM_FMTLINES,
  3967.                         Win32.WPARAM(fAddEOL), 0)));
  3968.     end Edit_FmtLines;
  3969.  
  3970.     function Edit_GetHandle(hwndCtl: Win32.Windef.HWND)
  3971.                             return Win32.Windef.HLOCAL is   -- windowsx.h:993
  3972.         function To_HLOCAL is new Ada.Unchecked_Conversion(Win32.UINT,
  3973.                 Win32.Windef.HLOCAL);
  3974.     begin
  3975.         return To_HLOCAL(
  3976.                 Win32.UINT(
  3977.                  Win32.DWORD(
  3978.                   Win32.Winuser.SendMessage(hwndCtl, 
  3979.                                             Win32.Winuser.EM_GETHANDLE, 
  3980.                                             0, 0))));
  3981.     end Edit_GetHandle;
  3982.  
  3983.     procedure Edit_SetHandle(hwndCtl: Win32.Windef.HWND;
  3984.                              h      : Win32.Windef.HLOCAL) is
  3985.         function To_UINT is new Ada.Unchecked_Conversion(Win32.Windef.HLOCAL,
  3986.                 Win32.UINT);
  3987.         garbage : Win32.LRESULT;
  3988.     begin
  3989.         garbage := Win32.Winuser.SendMessage(hwndCtl, 
  3990.                                              Win32.Winuser.EM_SETHANDLE, 
  3991.                                              Win32.WPARAM(To_UINT(h)), 0);
  3992.     end Edit_SetHandle;
  3993.  
  3994.     function Edit_GetFirstVisibleLine(hwndCtl: Win32.Windef.HWND)
  3995.                                       return Win32.INT is   -- windowsx.h:997
  3996.     begin
  3997.         return Win32.INT(
  3998.                 Win32.DWORD(
  3999.                  Win32.Winuser.SendMessage(
  4000.                         hwndCtl, 
  4001.                         Win32.Winuser.EM_GETFIRSTVISIBLELINE, 
  4002.                         0, 0)));
  4003.     end Edit_GetFirstVisibleLine;
  4004.  
  4005.     function Edit_SetReadOnly(hwndCtl  : Win32.Windef.HWND;
  4006.                               fReadOnly: Win32.BOOL)
  4007.                               return Win32.BOOL is          -- windowsx.h:999
  4008.     begin
  4009.         return Win32.BOOL(
  4010.                 Win32.DWORD(
  4011.                  Win32.Winuser.SendMessage(hwndCtl, 
  4012.                                            Win32.Winuser.EM_SETREADONLY, 
  4013.                                            Win32.WPARAM(fReadOnly), 0)));
  4014.     end Edit_SetReadOnly;
  4015.  
  4016.     function Edit_GetPasswordChar(hwndCtl: Win32.Windef.HWND)
  4017.                                   return Win32.Tchar.TCHAR is
  4018.                                                             -- windowsx.h:1001
  4019.     begin
  4020.         return LOCHAR(Win32.WPARAM(
  4021.                    Win32.Winuser.SendMessage(hwndCtl, 
  4022.                                              Win32.Winuser.EM_GETPASSWORDCHAR, 
  4023.                                              0, 0)));
  4024.     end Edit_GetPasswordChar;
  4025.  
  4026.     procedure Edit_SetWordBreakProc(
  4027.                 hwndCtl      : Win32.Windef.HWND;
  4028.                 lpfnWordBreak: Win32.Winuser.EDITWORDBREAKPROC) is
  4029.                                                             -- windowsx.h:1003
  4030.  
  4031.         function To_LPARAM is new Ada.Unchecked_Conversion(
  4032.                 Win32.Winuser.EDITWORDBREAKPROC, Win32.LPARAM);
  4033.         garbage : Win32.LRESULT;
  4034.     begin
  4035.         garbage := Win32.Winuser.SendMessage(hwndCtl, 
  4036.                                              Win32.Winuser.EM_SETWORDBREAKPROC,
  4037.                                              0, 
  4038.                                              To_LPARAM(lpfnWordBreak));
  4039.     end Edit_SetWordBreakProc;
  4040.  
  4041.     function Edit_GetWordBreakProc(hwndCtl: Win32.Windef.HWND)
  4042.                                    return Win32.Winuser.EDITWORDBREAKPROC is
  4043.                                                             -- windowsx.h:1004
  4044.         function To_EDITWORDBREAKPROC is new Ada.Unchecked_Conversion(
  4045.                 Win32.LRESULT, Win32.Winuser.EDITWORDBREAKPROC);
  4046.     begin
  4047.         return To_EDITWORDBREAKPROC(
  4048.                 Win32.Winuser.SendMessage(hwndCtl, 
  4049.                                           Win32.Winuser.EM_GETWORDBREAKPROC,
  4050.                                           0, 0));
  4051.     end Edit_GetWordBreakProc;
  4052.  
  4053.     function ScrollBar_Enable(hwndCtl: Win32.Windef.HWND;
  4054.                               flags  : Win32.UINT)
  4055.                               return Win32.BOOL is          -- windowsx.h: 1010
  4056.     begin
  4057.         return Win32.Winuser.EnableScrollBar(hwndCtl, 
  4058.                                             Win32.Winuser.SB_CTL, 
  4059.                                             flags);
  4060.     end ScrollBar_Enable;
  4061.  
  4062.     function ScrollBar_Show(hwndCtl: Win32.Windef.HWND; 
  4063.                             fShow  : Win32.BOOL)
  4064.                             return Win32.BOOL is            -- windowsx.h:1012
  4065.         nCmdShow : Win32.INT;
  4066.     begin
  4067.         if (fShow = Win32.FALSE) then
  4068.             nCmdShow := Win32.Winuser.SW_HIDE;
  4069.         else
  4070.             nCmdShow := Win32.Winuser.SW_SHOWNORMAL;
  4071.         end if;
  4072.         return Win32.Winuser.ShowWindow(hwndCtl, nCmdShow);
  4073.     end ScrollBar_Show;
  4074.  
  4075.     function ScrollBar_SetPos(hwndCtl: Win32.Windef.HWND;
  4076.                               pos    : Win32.INT;
  4077.                               fRedraw: Win32.BOOL)
  4078.                               return Win32.INT is           -- windowsx.h:1014
  4079.     begin
  4080.         return Win32.Winuser.SetScrollPos(hwndCtl, Win32.Winuser.SB_CTL, 
  4081.                                                 pos, fRedraw);
  4082.     end ScrollBar_SetPos;
  4083.  
  4084.     function ScrollBar_GetPos(hwndCtl: Win32.Windef.HWND)
  4085.                               return Win32.INT is           -- windowsx.h:1015
  4086.     begin
  4087.         return Win32.Winuser.GetScrollPos(hwndCtl, Win32.Winuser.SB_CTL);
  4088.     end ScrollBar_GetPos;
  4089.  
  4090.     function ScrollBar_SetRange(hwndCtl: Win32.Windef.HWND; 
  4091.                                 posMin : Win32.INT;
  4092.                                 posMax : Win32.INT;
  4093.                                 fRedraw: Win32.BOOL)    
  4094.                                 return Win32.BOOL is        -- windowsx.h:1017
  4095.  
  4096.     begin
  4097.         return Win32.Winuser.SetScrollRange(hwndCtl, Win32.Winuser.SB_CTL, 
  4098.                                                 posMin, posMax, fRedraw);
  4099.     end ScrollBar_SetRange;
  4100.  
  4101.     function ScrollBar_GetRange(hwndCtl : Win32.Windef.HWND;
  4102.                                 lpposMin: Win32.LPINT;
  4103.                                 lpposMax: Win32.LPINT)
  4104.                                 return Win32.BOOL is        -- windowsx.h:1018
  4105.     begin
  4106.         return Win32.Winuser.GetScrollRange(hwndCtl, Win32.Winuser.SB_CTL, 
  4107.                                                 lpposMin, lpposMax);
  4108.     end ScrollBar_GetRange;
  4109.  
  4110.     function ListBox_Enable(hwndCtl: Win32.Windef.HWND; 
  4111.                             fEnable: Win32.BOOL)
  4112.                             return Win32.BOOL is            -- windowsx.h:1022
  4113.     begin
  4114.         return Win32.Winuser.EnableWindow(hwndCtl, fEnable);
  4115.     end ListBox_Enable;
  4116.  
  4117.     function ListBox_GetCount(hwndCtl: Win32.Windef.HWND)
  4118.                               return Win32.INT is           -- windowsx.h:1024
  4119.     begin
  4120.         return Win32.INT(
  4121.                 Win32.DWORD(
  4122.                  Win32.Winuser.SendMessage(hwndCtl, Win32.Winuser.LB_GETCOUNT,
  4123.                                            0, 0)));
  4124.     end ListBox_GetCount;
  4125.  
  4126.     function ListBox_ResetContent(hwndCtl: Win32.Windef.HWND)
  4127.                                   return Win32.BOOL is      -- windowsx.h:1025
  4128.     begin
  4129.         return Win32.BOOL(
  4130.                 Win32.DWORD(
  4131.                  Win32.Winuser.SendMessage(hwndCtl, 
  4132.                                            Win32.Winuser.LB_RESETCONTENT, 
  4133.                                            0, 0)));
  4134.     end ListBox_ResetContent;
  4135.  
  4136.     function ListBox_AddString(hwndCtl: Win32.Windef.HWND;
  4137.                                lpsz   : Win32.Winnt.LPCTSTR)
  4138.                                return Win32.INT is          -- windowsx.h:1027
  4139.     begin
  4140.         return Win32.INT(
  4141.                 Win32.DWORD(
  4142.                  Win32.Winuser.SendMessage(hwndCtl, 
  4143.                                            Win32.Winuser.LB_ADDSTRING, 0, 
  4144.                                            To_LPARAM(lpsz))));
  4145.     end ListBox_AddString;
  4146.  
  4147.     function ListBox_InsertString(hwndCtl: Win32.Windef.HWND;
  4148.                                   index  : Win32.INT;
  4149.                                   lpsz   : Win32.Winnt.LPCTSTR)
  4150.                                   return Win32.INT is       -- windowsx.h:1028
  4151.     begin
  4152.         return Win32.INT(
  4153.                 Win32.DWORD(
  4154.                  Win32.Winuser.SendMessage(hwndCtl, 
  4155.                                            Win32.Winuser.LB_INSERTSTRING, 
  4156.                                            Win32.WPARAM(index), 
  4157.                                            To_LPARAM(lpsz))));
  4158.     end ListBox_InsertString;
  4159.  
  4160.     function ListBox_AddItemData(hwndCtl: Win32.Windef.HWND;
  4161.                                  data   : Win32.Winnt.LPCTSTR)
  4162.                                  return Win32.INT is        -- windowsx.h:1030
  4163.     begin
  4164.         return Win32.INT(
  4165.                 Win32.DWORD(
  4166.                  Win32.Winuser.SendMessage(hwndCtl, 
  4167.                                            Win32.Winuser.LB_ADDSTRING, 0, 
  4168.                                            To_LPARAM(data))));
  4169.     end ListBox_AddItemData;
  4170.  
  4171.     function ListBox_InsertItemData(hwndCtl: Win32.Windef.HWND;
  4172.                                     index  : Win32.INT;
  4173.                                     data   : Win32.Winnt.LPCTSTR)
  4174.                                     return Win32.INT is     -- windowsx.h:1031
  4175.     begin
  4176.         return Win32.INT(
  4177.                 Win32.DWORD(
  4178.                  Win32.Winuser.SendMessage(hwndCtl, 
  4179.                                            Win32.Winuser.LB_INSERTSTRING, 
  4180.                                            Win32.WPARAM(index), 
  4181.                                            To_LPARAM(data))));
  4182.     end ListBox_InsertItemData;
  4183.  
  4184.     function ListBox_DeleteString(hwndCtl: Win32.Windef.HWND;
  4185.                                   index  : Win32.INT)
  4186.                                   return Win32.INT is       -- windowsx.h:1033
  4187.     begin
  4188.         return Win32.INT(
  4189.                 Win32.DWORD(
  4190.                  Win32.Winuser.SendMessage(hwndCtl, 
  4191.                                                 Win32.Winuser.LB_DELETESTRING, 
  4192.                                                 Win32.WPARAM(index), 0)));
  4193.     end ListBox_DeleteString;
  4194.  
  4195.     function ListBox_GetTextLen(hwndCtl: Win32.Windef.HWND;
  4196.                                 index  : Win32.INT)
  4197.                                 return Win32.INT is         -- windowsx.h:1035
  4198.     begin
  4199.         return Win32.INT(
  4200.                 Win32.DWORD(
  4201.                  Win32.Winuser.SendMessage(hwndCtl, 
  4202.                                                 Win32.Winuser.LB_GETTEXTLEN, 
  4203.                                                 Win32.WPARAM(index), 0)));
  4204.     end ListBox_GetTextLen;
  4205.  
  4206.     function ListBox_GetText(hwndCtl   : Win32.Windef.HWND;
  4207.                              index     : Win32.INT;
  4208.                              lpszBuffer: Win32.Winnt.LPCTSTR)
  4209.                              return Win32.INT is            -- windowsx.h:1036
  4210.     begin
  4211.         return Win32.INT(
  4212.                 Win32.DWORD(
  4213.                  Win32.Winuser.SendMessage(hwndCtl, Win32.Winuser.LB_GETTEXT, 
  4214.                         Win32.WPARAM(index), To_LPARAM(lpszBuffer))));
  4215.     end ListBox_GetText;
  4216.  
  4217.     function ListBox_GetItemData(hwndCtl: Win32.Windef.HWND;
  4218.                                  index  : Win32.INT)
  4219.                                  return Win32.LRESULT is    -- windowsx.h:1038
  4220.     begin
  4221.         return Win32.LRESULT(
  4222.                 Win32.DWORD(
  4223.                  Win32.Winuser.SendMessage(hwndCtl, 
  4224.                                                 Win32.Winuser.LB_GETITEMDATA, 
  4225.                                                 Win32.WPARAM(index), 0)));
  4226.     end ListBox_GetItemData;
  4227.  
  4228.     function ListBox_SetItemData(hwndCtl: Win32.Windef.HWND;
  4229.                                  index  : Win32.INT;
  4230.                                  data   : Win32.DWORD)
  4231.                                  return Win32.INT is        -- windowsx.h:1039
  4232.     begin
  4233.         return Win32.INT(
  4234.                 Win32.DWORD(
  4235.                  Win32.Winuser.SendMessage(hwndCtl, 
  4236.                                            Win32.Winuser.LB_SETITEMDATA, 
  4237.                                            Win32.WPARAM(index), 
  4238.                                            Win32.LPARAM(data))));
  4239.     end ListBox_SetItemData;
  4240.  
  4241.     function ListBox_FindString(hwndCtl   : Win32.Windef.HWND;
  4242.                                 indexStart: Win32.INT;
  4243.                                 lpszFind  : Win32.Winnt.LPCTSTR)
  4244.                                 return Win32.INT is         -- windowsx.h:1042
  4245.     begin
  4246.         return Win32.INT(
  4247.                 Win32.DWORD(
  4248.                  Win32.Winuser.SendMessage(hwndCtl, 
  4249.                                            Win32.Winuser.LB_FINDSTRING, 
  4250.                                            Win32.WPARAM(indexStart), 
  4251.                                            To_LPARAM(lpszFind))));
  4252.     end ListBox_FindString;
  4253.  
  4254.     function ListBox_FindItemData(hwndCtl   : Win32.Windef.HWND;
  4255.                                   indexStart: Win32.INT;
  4256.                                   data      : Win32.Winnt.LPCTSTR)
  4257.                                   return Win32.INT is       -- windowsx.h:1043
  4258.     begin
  4259.         return Win32.INT(
  4260.                 Win32.DWORD(
  4261.                  Win32.Winuser.SendMessage(hwndCtl, 
  4262.                                            Win32.Winuser.LB_FINDSTRING, 
  4263.                                            Win32.WPARAM(indexStart), 
  4264.                                            To_LPARAM(data))));
  4265.     end ListBox_FindItemData;
  4266.  
  4267.     function ListBox_SetSel(hwndCtl: Win32.Windef.HWND;
  4268.                             fSelect: Win32.BOOL;
  4269.                             index  : Win32.UINT)
  4270.                             return Win32.INT is             -- windowsx.h:1045
  4271.     begin
  4272.         return Win32.INT(    
  4273.                 Win32.DWORD(
  4274.                  Win32.Winuser.SendMessage(hwndCtl, Win32.Winuser.LB_SETSEL, 
  4275.                         Win32.WPARAM(fSelect), Win32.LPARAM(index))));
  4276.     end ListBox_SetSel;
  4277.  
  4278.     function ListBox_SelItemRange(hwndCtl: Win32.Windef.HWND;
  4279.                                   fSelect: Win32.BOOL;
  4280.                                   first  : Win32.WORD;
  4281.                                   last   : Win32.WORD)
  4282.                                   return Win32.INT is       -- windowsx.h:1046
  4283.     begin
  4284.         return Win32.INT(
  4285.                 Win32.DWORD(
  4286.                  Win32.Winuser.SendMessage(hwndCtl, 
  4287.                                 Win32.Winuser.LB_SELITEMRANGE, 
  4288.                                 Win32.WPARAM(fSelect), 
  4289.                                 Win32.Winuser.MAKELPARAM(first, last))));
  4290.     end ListBox_SelItemRange;
  4291.  
  4292.     function ListBox_GetCurSel(hwndCtl: Win32.Windef.HWND)
  4293.                                return Win32.INT is          -- windowsx.h:1048
  4294.     begin
  4295.         return Win32.INT(
  4296.                 Win32.DWORD(
  4297.                  Win32.Winuser.SendMessage(hwndCtl, 
  4298.                                            Win32.Winuser.LB_GETCURSEL, 0, 0)));
  4299.     end ListBox_GetCurSel;
  4300.  
  4301.     function ListBox_SetCurSel(hwndCtl: Win32.Windef.HWND;
  4302.                                index  : Win32.INT)
  4303.                                return Win32.INT is          -- windowsx.h:1049
  4304.     begin
  4305.         return Win32.INT(
  4306.                 Win32.DWORD(
  4307.                  Win32.Winuser.SendMessage(hwndCtl, 
  4308.                                            Win32.Winuser.LB_SETCURSEL, 
  4309.                                            Win32.WPARAM(index), 0)));
  4310.     end ListBox_SetCurSel;
  4311.  
  4312.     function ListBox_SelectString(hwndCtl   : Win32.Windef.HWND;
  4313.                                   indexStart: Win32.INT;
  4314.                                   lpszFind  : Win32.LPCSTR)
  4315.                                   return Win32.INT is       -- windowsx.h:1051
  4316.     begin
  4317.         return Win32.INT(
  4318.                 Win32.DWORD(
  4319.                  Win32.Winuser.SendMessage(hwndCtl, 
  4320.                                            Win32.Winuser.LB_SELECTSTRING, 
  4321.                                            Win32.WPARAM(indexStart), 
  4322.                                            To_LPARAM(lpszFind))));
  4323.     end ListBox_SelectString;
  4324.  
  4325.     function ListBox_SelectItemData(hwndCtl   : Win32.Windef.HWND;
  4326.                                     indexStart: Win32.INT;
  4327.                                     data      : Win32.LPCSTR)
  4328.                                     return Win32.INT is     -- windowsx.h:1052
  4329.     begin
  4330.         return Win32.INT(
  4331.                 Win32.DWORD(
  4332.                  Win32.Winuser.SendMessage(hwndCtl, 
  4333.                                            Win32.Winuser.LB_SELECTSTRING, 
  4334.                                            Win32.WPARAM(indexStart), 
  4335.                                            To_LPARAM(data))));
  4336.     end ListBox_SelectItemData;
  4337.  
  4338.     function ListBox_GetSel(hwndCtl: Win32.Windef.HWND;
  4339.                             index  : Win32.INT)
  4340.                             return Win32.INT is             -- windowsx.h:1054
  4341.     begin
  4342.         return Win32.INT(
  4343.                 Win32.DWORD(
  4344.                  Win32.Winuser.SendMessage(hwndCtl, Win32.Winuser.LB_GETSEL, 
  4345.                         Win32.WPARAM(index), 0)));
  4346.     end ListBox_GetSel;
  4347.  
  4348.     function ListBox_GetSelCount(hwndCtl: Win32.Windef.HWND)
  4349.                                  return Win32.INT is        -- windowsx.h:1055
  4350.     begin
  4351.         return Win32.INT(
  4352.                 Win32.DWORD(
  4353.                  Win32.Winuser.SendMessage(hwndCtl, 
  4354.                         Win32.Winuser.LB_GETSELCOUNT, 0, 0)));
  4355.     end ListBox_GetSelCount;
  4356.  
  4357.     function ListBox_GetTopIndex(hwndCtl: Win32.Windef.HWND)
  4358.                                  return Win32.INT is        -- windowsx.h:1056
  4359.     begin
  4360.         return Win32.INT(
  4361.                 Win32.DWORD(
  4362.                  Win32.Winuser.SendMessage(hwndCtl, 
  4363.                                 Win32.Winuser.LB_GETTOPINDEX, 0, 0)));
  4364.     end ListBox_GetTopIndex;
  4365.  
  4366.     function ListBox_GetSelItems(hwndCtl: Win32.Windef.HWND;
  4367.                                  cItems : Win32.INT;
  4368.                                  lpItems: Win32.LPINT)
  4369.                                  return Win32.INT is        -- windowsx.h:1057
  4370.  
  4371.         function To_LPARAM is new Ada.Unchecked_Conversion(Win32.LPINT,
  4372.                 Win32.LPARAM);
  4373.     begin
  4374.         return Win32.INT(
  4375.                 Win32.DWORD(
  4376.                  Win32.Winuser.SendMessage(hwndCtl, 
  4377.                                            Win32.Winuser.LB_GETSELITEMS, 
  4378.                                            Win32.WPARAM(cItems), 
  4379.                                            To_LPARAM(lpItems))));
  4380.     end ListBox_GetSelItems;
  4381.  
  4382.     function ListBox_SetTopIndex(hwndCtl : Win32.Windef.HWND;
  4383.                                  indexTop: Win32.INT)
  4384.                                  return Win32.INT is        -- windowsx.h:1059
  4385.     begin
  4386.         return Win32.INT(
  4387.                 Win32.DWORD(
  4388.                  Win32.Winuser.SendMessage(hwndCtl, 
  4389.                                            Win32.Winuser.LB_SETTOPINDEX, 
  4390.                                            Win32.WPARAM(indexTop), 0)));
  4391.     end ListBox_SetTopIndex;
  4392.  
  4393.     procedure ListBox_SetColumnWidth(hwndCtl : Win32.Windef.HWND;
  4394.                                      cxColumn: Win32.INT) is
  4395.         garbage : Win32.LRESULT;
  4396.     begin
  4397.         garbage := Win32.Winuser.SendMessage(hwndCtl, 
  4398.                                         Win32.Winuser.LB_SETCOLUMNWIDTH, 
  4399.                                         Win32.WPARAM(cxColumn), 0);
  4400.     end ListBox_SetColumnWidth;
  4401.  
  4402.     function ListBox_GetHorizontalExtent(hwndCtl: Win32.Windef.HWND)
  4403.                                          return Win32.INT is
  4404.                                                             -- windowsx.h:1062
  4405.     begin
  4406.         return Win32.INT(
  4407.                 Win32.DWORD(
  4408.                  Win32.Winuser.SendMessage(hwndCtl,
  4409.                                         Win32.Winuser.LB_GETHORIZONTALEXTENT, 
  4410.                                         0, 0)));
  4411.     end ListBox_GetHorizontalExtent;
  4412.  
  4413.     procedure ListBox_SetHorizontalExtent(hwndCtl : Win32.Windef.HWND;
  4414.                                           cxExtent: Win32.INT) is
  4415.         garbage : Win32.LRESULT;
  4416.     begin
  4417.         garbage := Win32.Winuser.SendMessage(hwndCtl, 
  4418.                                 Win32.Winuser.LB_SETHORIZONTALEXTENT, 
  4419.                                 Win32.WPARAM(cxExtent), 0);
  4420.     end ListBox_SetHorizontalExtent;
  4421.  
  4422.     function ListBox_SetTabStops(hwndCtl: Win32.Windef.HWND;
  4423.                                  cTabs  : Win32.INT;
  4424.                                  lpTabs : Win32.LPINT)
  4425.                                  return Win32.BOOL is       -- windowsx.h:1065
  4426.         function To_LPARAM is new Ada.Unchecked_Conversion(Win32.LPINT,
  4427.                 Win32.LPARAM);
  4428.     begin
  4429.         return Win32.BOOL(
  4430.                 Win32.DWORD(
  4431.                  Win32.Winuser.SendMessage(hwndCtl, 
  4432.                                            Win32.Winuser.LB_SETTABSTOPS, 
  4433.                                            Win32.WPARAM(cTabs), 
  4434.                                            To_LPARAM(lpTabs))));
  4435.     end ListBox_SetTabStops;
  4436.  
  4437.     function ListBox_GetItemRect(hwndCtl: Win32.Windef.HWND;
  4438.                                  index  : Win32.INT;
  4439.                                  lprc   : Win32.Windef.LPRECT)
  4440.                                  return Win32.INT is        -- windowsx.h:1067
  4441.     begin
  4442.         return Win32.INT(
  4443.                 Win32.DWORD(
  4444.                  Win32.Winuser.SendMessage(hwndCtl, 
  4445.                                            Win32.Winuser.LB_GETITEMRECT, 
  4446.                                            Win32.WPARAM(index), 
  4447.                                            To_LPARAM(lprc))));
  4448.     end ListBox_GetItemRect;
  4449.  
  4450.     function ListBox_SetCaretIndex(hwndCtl: Win32.Windef.HWND;
  4451.                                    index  : Win32.INT)
  4452.                                    return Win32.INT is      -- windowsx.h:1069
  4453.     begin
  4454.         return Win32.INT(
  4455.                 Win32.DWORD(
  4456.                  Win32.Winuser.SendMessage(hwndCtl, 
  4457.                         Win32.Winuser.LB_SETCARETINDEX, 
  4458.                         Win32.WPARAM(index), 0)));
  4459.     end ListBox_SetCaretIndex;
  4460.  
  4461.     function ListBox_GetCaretIndex(hwndCtl: Win32.Windef.HWND)
  4462.                                    return Win32.INT is      -- windowsx.h:1070
  4463.     begin
  4464.         return Win32.INT(
  4465.                 Win32.DWORD(
  4466.                  Win32.Winuser.SendMessage(hwndCtl, 
  4467.                                 Win32.Winuser.LB_GETCARETINDEX, 0, 0)));
  4468.     end ListBox_GetCaretIndex;
  4469.  
  4470.     function ListBox_FindStringExact(hwndCtl   : Win32.Windef.HWND;
  4471.                                      indexStart: Win32.INT;
  4472.                                      lpszFind  : Win32.Winnt.LPCTSTR)
  4473.                                      return Win32.INT is    -- windowsx.h:1072
  4474.     begin
  4475.         return Win32.INT(
  4476.                 Win32.DWORD(
  4477.                  Win32.Winuser.SendMessage(hwndCtl, 
  4478.                                            Win32.Winuser.LB_FINDSTRINGEXACT, 
  4479.                                            Win32.WPARAM(indexStart), 
  4480.                                            To_LPARAM(lpszFind))));
  4481.     end ListBox_FindStringExact;
  4482.  
  4483.     function ListBox_SetItemHeight(hwndCtl: Win32.Windef.HWND;
  4484.                                    index  : Win32.INT;
  4485.                                    cy     : Win32.INT)
  4486.                                    return Win32.INT is      -- windowsx.h:1074
  4487.     begin
  4488.         return Win32.INT(
  4489.                 Win32.DWORD(
  4490.                  Win32.Winuser.SendMessage(
  4491.                         hwndCtl, 
  4492.                         Win32.Winuser.LB_SETITEMHEIGHT, 
  4493.                         Win32.WPARAM(index), 
  4494.                         Win32.Winuser.MAKELPARAM(Win32.WORD(cy), 0))));
  4495.     end ListBox_SetItemHeight;
  4496.  
  4497.     function ListBox_GetItemHeight(hwndCtl: Win32.Windef.HWND;
  4498.                                    index  : Win32.INT)
  4499.                                    return Win32.INT is      -- windowsx.h:1075
  4500.     begin
  4501.         return Win32.INT(
  4502.                 Win32.DWORD(
  4503.                  Win32.Winuser.SendMessage(hwndCtl, 
  4504.                                            Win32.Winuser.LB_GETITEMHEIGHT, 
  4505.                                            Win32.WPARAM(index), 0)));
  4506.     end ListBox_GetItemHeight;
  4507.  
  4508.     function ListBox_Dir(hwndCtl     : Win32.Windef.HWND;
  4509.                          attrs       : Win32.UINT;
  4510.                          lpszFileSpec: Win32.Winnt.LPCTSTR)
  4511.                          return Win32.INT is                -- windowsx.h:1078
  4512.     begin
  4513.         return Win32.INT(
  4514.                 Win32.DWORD(
  4515.                  Win32.Winuser.SendMessage(hwndCtl, Win32.Winuser.LB_DIR, 
  4516.                         Win32.WPARAM(attrs), To_LPARAM(lpszFileSpec))));
  4517.     end ListBox_Dir;
  4518.  
  4519.  
  4520.     function ComboBox_LimitText(hwndCtl : Win32.Windef.HWND;
  4521.                                 cchLimit: Win32.INT)
  4522.                                 return Win32.INT is         -- windowsx.h:1088
  4523.     begin
  4524.         return Win32.INT(
  4525.                 Win32.DWORD(
  4526.                  Win32.Winuser.SendMessage(hwndCtl, 
  4527.                                            Win32.Winuser.CB_LIMITTEXT, 
  4528.                                            Win32.WPARAM(cchLimit), 0)));
  4529.     end ComboBox_LimitText;
  4530.  
  4531.     function ComboBox_GetEditSel(hwndCtl: Win32.Windef.HWND)
  4532.                                  return Win32.DWORD is      -- windowsx.h:1090
  4533.     begin
  4534.         return To_DWORD(
  4535.                 Win32.Winuser.SendMessage(hwndCtl, 
  4536.                         Win32.Winuser.CB_GETEDITSEL, 0, 0));
  4537.     end ComboBox_GetEditSel;
  4538.  
  4539.     function ComboBox_SetEditSel(hwndCtl : Win32.Windef.HWND;
  4540.                                  ichStart: Win32.INT;
  4541.                                  ichEnd  : Win32.INT)
  4542.                                  return Win32.INT is        -- windowsx.h:1091
  4543.     begin
  4544.         return Win32.INT(
  4545.                 Win32.DWORD(
  4546.                  Win32.Winuser.SendMessage(
  4547.                         hwndCtl, 
  4548.                         Win32.Winuser.CB_SETEDITSEL, 0, 
  4549.                         Win32.Winuser.MAKELPARAM(Win32.WORD(ichStart), 
  4550.                                                  Win32.WORD(ichEnd)))));
  4551.     end ComboBox_SetEditSel;
  4552.  
  4553.     function ComboBox_GetCount(hwndCtl: Win32.Windef.HWND)
  4554.                                return Win32.INT is          -- windowsx.h:1093
  4555.     begin
  4556.         return Win32.INT(
  4557.                 Win32.DWORD(
  4558.                  Win32.Winuser.SendMessage(hwndCtl, Win32.Winuser.CB_GETCOUNT,
  4559.                                                 0, 0)));
  4560.     end ComboBox_GetCount;
  4561.  
  4562.     function ComboBox_ResetContent(hwndCtl: Win32.Windef.HWND)
  4563.                                    return Win32.INT is      -- windowsx.h:1094
  4564.     begin
  4565.         return Win32.INT(
  4566.                 Win32.DWORD(
  4567.                  Win32.Winuser.SendMessage(hwndCtl, 
  4568.                                            Win32.Winuser.CB_RESETCONTENT, 
  4569.                                            0, 0)));
  4570.     end ComboBox_ResetContent;
  4571.  
  4572.     function ComboBox_AddString(hwndCtl: Win32.Windef.HWND;
  4573.                                 lpsz   : Win32.Winnt.LPCTSTR)
  4574.                                 return Win32.INT is         -- windowsx.h:1096
  4575.     begin
  4576.         return Win32.INT(
  4577.                 Win32.DWORD(
  4578.                  Win32.Winuser.SendMessage(hwndCtl, Win32.Winuser.CB_ADDSTRING,
  4579.                                            0, To_LPARAM(lpsz))));
  4580.     end ComboBox_AddString;
  4581.  
  4582.     function ComboBox_InsertString(hwndCtl: Win32.Windef.HWND;
  4583.                                    index  : Win32.INT;
  4584.                                    lpsz   : Win32.Winnt.LPCTSTR)        
  4585.                                    return Win32.INT is      -- windowsx.h:1097
  4586.     begin
  4587.         return Win32.INT(
  4588.                 Win32.DWORD(
  4589.                  Win32.Winuser.SendMessage(hwndCtl, 
  4590.                                            Win32.Winuser.CB_INSERTSTRING, 
  4591.                                            Win32.WPARAM(index), 
  4592.                                            To_LPARAM(lpsz))));
  4593.     end ComboBox_InsertString;
  4594.  
  4595.     function ComboBox_AddItemData(hwndCtl: Win32.Windef.HWND;
  4596.                                   data   : Win32.Winnt.LPCTSTR)
  4597.                                   return Win32.INT is       -- windowsx.h:1099
  4598.     begin
  4599.         return Win32.INT(
  4600.                 Win32.DWORD(
  4601.                  Win32.Winuser.SendMessage(hwndCtl, Win32.Winuser.CB_ADDSTRING,
  4602.                                            0, To_LPARAM(data))));
  4603.     end ComboBox_AddItemData;
  4604.  
  4605.     function ComboBox_InsertItemData(hwndCtl: Win32.Windef.HWND;
  4606.                                      index  : Win32.INT;
  4607.                                      data   : Win32.Winnt.LPCTSTR)
  4608.                                      return Win32.INT is    -- windowsx.h:1100
  4609.     begin
  4610.         return Win32.INT(
  4611.                 Win32.DWORD(
  4612.                  Win32.Winuser.SendMessage(hwndCtl, 
  4613.                                            Win32.Winuser.CB_INSERTSTRING, 
  4614.                                            Win32.WPARAM(index), 
  4615.                                            To_LPARAM(data))));
  4616.     end ComboBox_InsertItemData;
  4617.  
  4618.     function ComboBox_DeleteString(hwndCtl: Win32.Windef.HWND;
  4619.                                    index  : Win32.INT)
  4620.                                    return Win32.INT is      -- windowsx.h:1102
  4621.     begin
  4622.         return Win32.INT(
  4623.                 Win32.DWORD(
  4624.                  Win32.Winuser.SendMessage(hwndCtl, 
  4625.                                            Win32.Winuser.CB_DELETESTRING, 
  4626.                                            Win32.WPARAM(index), 0)));
  4627.     end ComboBox_DeleteString;
  4628.  
  4629.     function ComboBox_GetLBTextLen(hwndCtl: Win32.Windef.HWND;
  4630.                                    index  : Win32.INT)
  4631.                                    return Win32.INT is      -- windowsx.h:1104
  4632.     begin
  4633.         return Win32.INT(
  4634.                 Win32.DWORD(
  4635.                  Win32.Winuser.SendMessage(hwndCtl, 
  4636.                                            Win32.Winuser.CB_GETLBTEXTLEN, 
  4637.                                            Win32.WPARAM(index), 0)));
  4638.     end ComboBox_GetLBTextLen;
  4639.  
  4640.     function ComboBox_GetLBText(hwndCtl   : Win32.Windef.HWND;
  4641.                                 index     : Win32.INT;
  4642.                                 lpszBuffer: Win32.Winnt.LPCTSTR)
  4643.                                 return Win32.INT is         -- windowsx.h:1105
  4644.     begin
  4645.         return Win32.INT(
  4646.                 Win32.DWORD(
  4647.                  Win32.Winuser.SendMessage(hwndCtl, 
  4648.                                            Win32.Winuser.CB_GETLBTEXT, 
  4649.                                            Win32.WPARAM(index), 
  4650.                                            To_LPARAM(lpszBuffer))));
  4651.     end ComboBox_GetLBText;
  4652.  
  4653.     function ComboBox_GetItemData(hwndCtl: Win32.Windef.HWND;
  4654.                                   index  : Win32.INT)
  4655.                                   return Win32.LRESULT is   -- windowsx.h:1107
  4656.     begin
  4657.         return To_LRESULT(
  4658.                 Win32.DWORD(
  4659.                  Win32.Winuser.SendMessage(hwndCtl, 
  4660.                                            Win32.Winuser.CB_GETITEMDATA, 
  4661.                                            Win32.WPARAM(index), 0)));
  4662.     end ComboBox_GetItemData;
  4663.  
  4664.     function ComboBox_SetItemData(hwndCtl: Win32.Windef.HWND;
  4665.                                   index  : Win32.INT;
  4666.                                   data   : Win32.DWORD)
  4667.                                   return Win32.INT is       -- windowsx.h:1108
  4668.     begin
  4669.         return Win32.INT(
  4670.                 Win32.DWORD(
  4671.                  Win32.Winuser.SendMessage(hwndCtl, 
  4672.                                            Win32.Winuser.CB_SETITEMDATA, 
  4673.                                            Win32.WPARAM(index), 
  4674.                                            Win32.LPARAM(data))));
  4675.     end ComboBox_SetItemData;
  4676.  
  4677.     function ComboBox_FindString(hwndCtl   : Win32.Windef.HWND;
  4678.                                  indexStart: Win32.INT;
  4679.                                  lpszFind  : Win32.Winnt.LPCTSTR)
  4680.                                  return Win32.INT is        -- windowsx.h:1110
  4681.     begin
  4682.         return Win32.INT(
  4683.                 Win32.DWORD(
  4684.                  Win32.Winuser.SendMessage(hwndCtl, 
  4685.                                            Win32.Winuser.CB_FINDSTRING, 
  4686.                                            Win32.WPARAM(indexStart), 
  4687.                                            To_LPARAM(lpszFind))));
  4688.     end ComboBox_FindString;
  4689.  
  4690.     function ComboBox_FindItemData(hwndCtl   : Win32.Windef.HWND;
  4691.                                    indexStart: Win32.INT;
  4692.                                    data      : Win32.Winnt.LPCTSTR)
  4693.                                    return Win32.INT is      -- windowsx.h:1111
  4694.     begin
  4695.         return Win32.INT(
  4696.                 Win32.DWORD(
  4697.                  Win32.Winuser.SendMessage(hwndCtl, 
  4698.                                            Win32.Winuser.CB_FINDSTRING,
  4699.                                            Win32.WPARAM(indexStart), 
  4700.                                            To_LPARAM(data))));
  4701.     end ComboBox_FindItemData;
  4702.  
  4703.     function ComboBox_GetCurSel(hwndCtl: Win32.Windef.HWND)
  4704.                                 return Win32.INT is         -- windowsx.h:1113
  4705.     begin
  4706.         return Win32.INT(
  4707.                 Win32.DWORD(
  4708.                  Win32.Winuser.SendMessage(hwndCtl, 
  4709.                                            Win32.Winuser.CB_GETCURSEL, 0, 0)));
  4710.     end ComboBox_GetCurSel;
  4711.  
  4712.     function ComboBox_SetCurSel(hwndCtl: Win32.Windef.HWND;
  4713.                                 index  : Win32.INT)
  4714.                                 return Win32.INT is         -- windowsx.h:1114
  4715.     begin
  4716.         return Win32.INT(
  4717.                 Win32.DWORD(
  4718.                  Win32.Winuser.SendMessage(hwndCtl, 
  4719.                                            Win32.Winuser.CB_SETCURSEL, 
  4720.                                            Win32.WPARAM(index), 0)));
  4721.     end ComboBox_SetCurSel;
  4722.  
  4723.     function ComboBox_SelectString(hwndCtl   : Win32.Windef.HWND;
  4724.                                    indexStart: Win32.INT;
  4725.                                    lpszSelect: Win32.Winnt.LPCTSTR)
  4726.                                    return Win32.INT is      -- windowsx.h:1116
  4727.     begin
  4728.         return Win32.INT(
  4729.                 Win32.DWORD(
  4730.                  Win32.Winuser.SendMessage(hwndCtl, 
  4731.                                            Win32.Winuser.CB_SELECTSTRING, 
  4732.                                            Win32.WPARAM(indexStart), 
  4733.                                            To_LPARAM(lpszSelect))));
  4734.     end ComboBox_SelectString;
  4735.  
  4736.     function ComboBox_SelectItemData(hwndCtl   : Win32.Windef.HWND;
  4737.                                      indexStart: Win32.INT;
  4738.                                      data      : Win32.LPCSTR)
  4739.                                      return Win32.INT is    -- windowsx.h:1117
  4740.     begin
  4741.         return Win32.INT(
  4742.                 Win32.DWORD(
  4743.                  Win32.Winuser.SendMessage(hwndCtl,
  4744.                                            Win32.Winuser.CB_SELECTSTRING, 
  4745.                                            Win32.WPARAM(indexStart), 
  4746.                                            To_LPARAM(data))));
  4747.     end ComboBox_SelectItemData;
  4748.  
  4749.     function ComboBox_Dir(hwndCtl     : Win32.Windef.HWND;
  4750.                           attrs       : Win32.UINT;
  4751.                           lpszFileSpec: Win32.Winnt.LPCTSTR)
  4752.                           return Win32.INT is               -- windowsx.h:1119
  4753.     begin
  4754.         return Win32.INT(
  4755.                 Win32.DWORD(
  4756.                  Win32.Winuser.SendMessage(hwndCtl, 
  4757.                                            Win32.Winuser.CB_DIR, 
  4758.                                            Win32.WPARAM(attrs), 
  4759.                                            To_LPARAM(lpszFileSpec))));
  4760.     end ComboBox_Dir;
  4761.  
  4762.     function ComboBox_ShowDropdown(hwndCtl: Win32.Windef.HWND;
  4763.                                    fShow  : Win32.BOOL)
  4764.                                    return Win32.BOOL is     -- windowsx.h:1121
  4765.     begin
  4766.         return Win32.BOOL(
  4767.                 Win32.DWORD(
  4768.                  Win32.Winuser.SendMessage(hwndCtl, 
  4769.                                            Win32.Winuser.CB_SHOWDROPDOWN, 
  4770.                                            Win32.WPARAM(fShow), 0)));
  4771.     end ComboBox_ShowDropdown;
  4772.  
  4773.     function ComboBox_FindStringExact(hwndCtl   : Win32.Windef.HWND;
  4774.                                       indexStart: Win32.INT;
  4775.                                       lpszFind  : Win32.LPCSTR)
  4776.                                       return Win32.INT is   -- windowsx.h:1124
  4777.     begin
  4778.         return Win32.INT(
  4779.                 Win32.DWORD(
  4780.                  Win32.Winuser.SendMessage(hwndCtl, 
  4781.                                            Win32.Winuser.CB_FINDSTRINGEXACT,
  4782.                                            Win32.WPARAM(indexStart), 
  4783.                                            To_LPARAM(lpszFind))));
  4784.     end ComboBox_FindStringExact;
  4785.  
  4786.     function ComboBox_GetDroppedState(hwndCtl: Win32.Windef.HWND)
  4787.                                       return Win32.BOOL is  -- windowsx.h:1126
  4788.     begin
  4789.         return Win32.BOOL(
  4790.                 Win32.DWORD(
  4791.                  Win32.Winuser.SendMessage(hwndCtl, 
  4792.                                            Win32.Winuser.CB_GETDROPPEDSTATE,
  4793.                                            0, 0)));
  4794.     end ComboBox_GetDroppedState;
  4795.  
  4796.     procedure ComboBox_GetDroppedControlRect(hwndCtl: Win32.Windef.HWND;
  4797.                                              lprc   : Win32.Windef.LPRECT) is
  4798.                                                 -- windowsx.h:1127 
  4799.         garbage : Win32.LRESULT;
  4800.     begin
  4801.         garbage := Win32.Winuser.SendMessage(
  4802.                         hwndCtl, 
  4803.                         Win32.Winuser.CB_GETDROPPEDCONTROLRECT, 0, 
  4804.                         To_LPARAM(lprc));
  4805.     end ComboBox_GetDroppedControlRect;
  4806.  
  4807.     function ComboBox_GetItemHeight(hwndCtl: Win32.Windef.HWND)
  4808.                                     return Win32.INT is     -- windowsx.h:1129
  4809.     begin
  4810.         return Win32.INT(
  4811.                 Win32.DWORD(
  4812.                  Win32.Winuser.SendMessage(hwndCtl, 
  4813.                                            Win32.Winuser.CB_GETITEMHEIGHT, 
  4814.                                            0, 0)));
  4815.     end ComboBox_GetItemHeight;
  4816.  
  4817.     -- The specification of the ComboBox_SetItemHeight function differs from
  4818.     -- windowsx.h spec.  The index parameter was added. 
  4819.     function ComboBox_SetItemHeight(hwndCtl: Win32.Windef.HWND;
  4820.                                     cyItem : Win32.INT;
  4821.                                     index  : Win32.INT)
  4822.                                     return Win32.INT is     -- windowsx.h:1130
  4823.     begin
  4824.         return Win32.INT(
  4825.                 Win32.DWORD(
  4826.                  Win32.Winuser.SendMessage(hwndCtl, 
  4827.                                            Win32.Winuser.CB_SETITEMHEIGHT, 
  4828.                                            Win32.WPARAM(index), 
  4829.                                            Win32.LPARAM(cyItem))));
  4830.     end ComboBox_SetItemHeight;
  4831.  
  4832.     function ComboBox_GetExtendedUI(hwndCtl: Win32.Windef.HWND)
  4833.                                     return Win32.UINT is    -- windowsx.h:1132
  4834.     begin
  4835.         return Win32.UINT(
  4836.                 Win32.DWORD(
  4837.                  Win32.Winuser.SendMessage(hwndCtl, 
  4838.                                            Win32.Winuser.CB_GETEXTENDEDUI, 
  4839.                                            0, 0)));
  4840.     end ComboBox_GetExtendedUI;
  4841.  
  4842.     function ComboBox_SetExtendedUI(hwndCtl: Win32.Windef.HWND;
  4843.                                     flags  : Win32.BOOL)
  4844.                                     return Win32.INT is     -- windowsx.h:1133
  4845.     begin
  4846.         return Win32.INT(
  4847.                 Win32.DWORD(
  4848.                  Win32.Winuser.SendMessage(hwndCtl, 
  4849.                                            Win32.Winuser.CB_SETEXTENDEDUI, 
  4850.                                            Win32.WPARAM(Win32.UINT(flags)), 
  4851.                                            0)));
  4852.     end ComboBox_SetExtendedUI;
  4853.  
  4854.     function GET_WPARAM(wp : Win32.WPARAM;
  4855.                         lp : Win32.LPARAM)   
  4856.                         return Win32.WPARAM is              -- windowsx.h:1140
  4857.     begin       
  4858.         return wp;
  4859.     end GET_WPARAM;
  4860.  
  4861.     function GET_LPARAM(wp : Win32.WPARAM;
  4862.                         lp : Win32.LPARAM)   
  4863.                         return Win32.LPARAM is              -- windowsx.h:1141
  4864.     begin       
  4865.         return lp;
  4866.     end GET_LPARAM;
  4867.     
  4868.     function GET_WM_ACTIVATE_STATE(wp : Win32.WPARAM;
  4869.                                    lp : Win32.LPARAM)   
  4870.                                    return Win32.WORD is     -- windowsx.h:1143
  4871.     begin       
  4872.         return Win32.Utils.LOWORD(Win32.DWORD(wp));
  4873.     end GET_WM_ACTIVATE_STATE;
  4874.  
  4875.     function GET_WM_ACTIVATE_FMINIMIZED(wp : Win32.WPARAM;
  4876.                                         lp : Win32.LPARAM)   
  4877.                                         return Win32.BOOL is
  4878.                                                             -- windowsx.h:1144
  4879.     begin       
  4880.         return Win32.BOOL(Win32.Utils.HIWORD(Win32.DWORD(wp)));
  4881.     end GET_WM_ACTIVATE_FMINIMIZED;
  4882.  
  4883.  
  4884.     function GET_WM_ACTIVATE_HWND(wp : Win32.WPARAM;
  4885.                                   lp : Win32.LPARAM)   
  4886.                                   return Win32.Windef.HWND is
  4887.                                                             -- windowsx.h:1145
  4888.     begin       
  4889.         return To_HWND(lp);
  4890.     end GET_WM_ACTIVATE_HWND;
  4891.  
  4892.     function To_LONG is new Ada.Unchecked_Conversion(
  4893.                 Win32.Windef.HWND, Win32.LONG);
  4894.  
  4895.     function GET_WM_ACTIVATE_MPS(s   : Win32.WORD;
  4896.                                  fmin: Win32.BOOL;
  4897.                                  hwnd: Win32.Windef.HWND)
  4898.                                  return Win32.LONG is      -- windowsx.h:1146
  4899.    begin        
  4900.         return To_LONG(hwnd);
  4901.     end GET_WM_ACTIVATE_MPS;
  4902.  
  4903.  
  4904.     function GET_WM_CHARTOITEM_CHAR(wp : Win32.WPARAM;
  4905.                                     lp : Win32.LPARAM)   
  4906.                                     return Win32.TChar.TCHAR is 
  4907.                                                             -- windowsx.h:1149
  4908.     begin
  4909.         return LOCHAR(wp);
  4910.     end GET_WM_CHARTOITEM_CHAR;
  4911.  
  4912.     function GET_WM_CHARTOITEM_POS(wp : Win32.WPARAM;
  4913.                                    lp : Win32.LPARAM)   
  4914.                                    return Win32.WORD is     -- windowsx.h:1150
  4915.     begin       
  4916.         return Win32.WORD(wp);
  4917.     end GET_WM_CHARTOITEM_POS;
  4918.                                    
  4919.  
  4920.     function GET_WM_CHARTOITEM_HWND(wp : Win32.WPARAM;
  4921.                                     lp : Win32.LPARAM)   
  4922.                                     return Win32.Windef.HWND is
  4923.                                                             -- windowsx.h:1151
  4924.     begin       
  4925.         return To_HWND(lp);
  4926.     end GET_WM_CHARTOITEM_HWND;
  4927.  
  4928.     function GET_WM_CHARTOITEM_MPS(ch : Win32.Tchar.TCHAR;      
  4929.                                    pos : Win32.WORD;      
  4930.                                    hwnd: Win32.Windef.HWND) 
  4931.                                   return Win32.LONG is      -- windowsx.h:1152
  4932.     begin
  4933.         return To_LONG(hwnd);
  4934.     end GET_WM_CHARTOITEM_MPS;
  4935.  
  4936.     function GET_WM_COMMAND_ID(wp : Win32.WPARAM;
  4937.                                lp : Win32.LPARAM)   
  4938.                                return Win32.WORD is         -- windowsx.h:1155
  4939.     begin
  4940.         return Win32.Utils.LOWORD(Win32.DWORD(wp));
  4941.     end GET_WM_COMMAND_ID;
  4942.  
  4943.     function GET_WM_COMMAND_HWND(wp : Win32.WPARAM;
  4944.                                  lp : Win32.LPARAM)   
  4945.                                  return Win32.Windef.HWND is-- windowsx.h:1156
  4946.     begin
  4947.         return To_HWND(lp);
  4948.     end GET_WM_COMMAND_HWND;
  4949.                                  
  4950.     function GET_WM_COMMAND_CMD(wp : Win32.WPARAM;
  4951.                                 lp : Win32.LPARAM)   
  4952.                                 return Win32.WORD is
  4953.                                                             -- windowsx.h:1157
  4954.     begin
  4955.         return Win32.Utils.HIWORD(Win32.DWORD(lp));
  4956.     end GET_WM_COMMAND_CMD;
  4957.  
  4958.     function GET_WM_COMMAND_MPS(id  : Win32.WORD;
  4959.                                 hwnd: Win32.Windef.HWND; 
  4960.                                 cmd : Win32.WORD)
  4961.                                 return Win32.LONG is        -- windowsx.h:1158
  4962.     begin
  4963.         return To_LONG(hwnd);
  4964.     end GET_WM_COMMAND_MPS;
  4965.  
  4966.     function GET_WM_CTLCOLOR_HDC(wp : Win32.WPARAM;             
  4967.                                  lp : win32.LPARAM;
  4968.                                  msg: Win32.UINT)
  4969.                                  return Win32.Windef.HDC is -- windowsx.h:1163
  4970.     begin
  4971.         return To_HDC(wp);
  4972.     end GET_WM_CTLCOLOR_HDC;
  4973.  
  4974.     function GET_WM_CTLCOLOR_HWND(wp : Win32.WPARAM;            
  4975.                                   lp : win32.LPARAM;
  4976.                                   msg: Win32.UINT)
  4977.                                   return Win32.Windef.HWND is-- windowsx.h:1164
  4978.     begin
  4979.         return To_HWND(lp);
  4980.     end GET_WM_CTLCOLOR_HWND;
  4981.  
  4982.     function GET_WM_CTLCOLOR_TYPE(wp : Win32.WPARAM;            
  4983.                                   lp : win32.LPARAM;
  4984.                                   msg: Win32.UINT)
  4985.                                   return Win32.WORD is      -- windowsx.h:1165
  4986.         use Interfaces.C;
  4987.     begin
  4988.         return Win32.WORD(msg - Win32.Winuser.WM_CTLCOLORMSGBOX);
  4989.     end GET_WM_CTLCOLOR_TYPE;
  4990.  
  4991.     function GET_WM_CTLCOLOR_MSG(the_type: Win32.UINT) 
  4992.                                  return Win32.WORD is       -- windowsx.h:1166
  4993.         use Interfaces.C;
  4994.     begin
  4995.         return Win32.WORD(Win32.Winuser.WM_CTLCOLORMSGBOX + the_type);
  4996.     end GET_WM_CTLCOLOR_MSG;
  4997.  
  4998.     function GET_WM_CTLCOLOR_MPS(hdc     : Win32.Windef.HDC;
  4999.                                  hwnd    : Win32.Windef.HWND;
  5000.                                  the_type: Win32.UINT) 
  5001.                                  return Win32.LONG is
  5002.                                                             -- windowsx.h:1167
  5003.     begin
  5004.         return To_LONG(hwnd);
  5005.     end GET_WM_CTLCOLOR_MPS;
  5006.  
  5007.     function GET_WM_MENUSELECT_CMD(wp : Win32.WPARAM;
  5008.                                    lp : Win32.LPARAM)   
  5009.                                    return Win32.WORD is     -- windowsx.h:1171
  5010.     begin
  5011.         return Win32.Utils.LOWORD(Win32.DWORD(wp));
  5012.     end GET_WM_MENUSELECT_CMD;
  5013.                                  
  5014.     function GET_WM_MENUSELECT_FLAGS(wp : Win32.WPARAM;
  5015.                                      lp : Win32.LPARAM)   
  5016.                                      return Win32.UINT is   -- windowsx.h:1172
  5017.     begin
  5018.         return Win32.UINT(Win32.Int(
  5019.                              Win32.Short(
  5020.                                  Win32.Utils.HIWORD(Win32.DWORD(wp)))));
  5021.     end GET_WM_MENUSELECT_FLAGS;
  5022.                                  
  5023.     function GET_WM_MENUSELECT_HMENU(wp : Win32.WPARAM;
  5024.                                      lp : Win32.LPARAM)   
  5025.                                      return Win32.Windef.HMENU is 
  5026.                                 -- windowsx.h:1173
  5027.     begin
  5028.         return To_HMENU(lp);
  5029.     end GET_WM_MENUSELECT_HMENU;
  5030.  
  5031.     --function To_LONG is new Ada.Unchecked_Conversion(
  5032.     --            Win32.Windef.HMENU, Win32.LONG);
  5033.  
  5034.     function GET_WM_MENUSELECT_MPS(cmd  : Win32.WORD;
  5035.                                    f    : Win32.UINT;
  5036.                                    hmenu: Win32.Windef.HMENU)
  5037.                                    return Win32.LONG is     -- windowsx.h:1174
  5038.     begin
  5039.         return To_LONG(hmenu);
  5040.     end GET_WM_MENUSELECT_MPS;
  5041.  
  5042.  
  5043.     function GET_WM_MDIACTIVATE_FACTIVATE(hwnd: Win32.Windef.HWND;
  5044.                                           wp : Win32.WPARAM;
  5045.                                           lp : Win32.LPARAM)
  5046.                                           return Win32.BOOL is  
  5047.                                                 -- windowsx.h:1178
  5048.     begin
  5049.         if (lp = To_LONG(hwnd)) then
  5050.             return Win32.TRUE;
  5051.         else
  5052.             return Win32.FALSE;
  5053.         end if;
  5054.     end GET_WM_MDIACTIVATE_FACTIVATE;
  5055.  
  5056.     function GET_WM_MDIACTIVATE_HWNDDEACT(wp : Win32.WPARAM;
  5057.                                           lp : Win32.LPARAM)
  5058.                                           return Win32.Windef.HWND is
  5059.                                                 -- windowsx.h:1179
  5060.     begin
  5061.         return To_HWND(wp);
  5062.     end GET_WM_MDIACTIVATE_HWNDDEACT;
  5063.  
  5064.     function GET_WM_MDIACTIVATE_HWNDACTIVATE(wp : Win32.WPARAM;
  5065.                                              lp : Win32.LPARAM)
  5066.                                              return Win32.Windef.HWND is
  5067.                                                 -- windowsx.h:1180
  5068.     begin
  5069.         return To_HWND(lp);     
  5070.     end GET_WM_MDIACTIVATE_HWNDACTIVATE;
  5071.  
  5072.     function GET_WM_MDIACTIVATE_MPS(f    : Win32.BOOL;
  5073.                                     hwndD: Win32.Windef.HWND;
  5074.                                     hwndA: Win32.Windef.HWND)
  5075.                                     return Win32.LONG is
  5076.                                         -- windowsx.h:1181
  5077.     begin
  5078.         return 0;
  5079.     end GET_WM_MDIACTIVATE_MPS;
  5080.  
  5081.     function GET_WM_MDISETMENU_MPS(hmenuF: Win32.Windef.HMENU;
  5082.                                    hmenuW: Win32.Windef.HMENU)
  5083.                                    return Win32.LONG is     -- windowsx.h:1185
  5084.     begin
  5085.         return To_LONG(hmenuW);
  5086.     end GET_WM_MDISETMENU_MPS;
  5087.  
  5088.     function GET_WM_MENUCHAR_CHAR(wp : Win32.WPARAM;
  5089.                                   lp : Win32.LPARAM) 
  5090.                                   return Win32.Tchar.TCHAR is
  5091.                                                             -- windowsx.h:1187
  5092.     begin
  5093.         return LOCHAR(wp);
  5094.     end GET_WM_MENUCHAR_CHAR;
  5095.  
  5096.     function GET_WM_MENUCHAR_HMENU(wp : Win32.WPARAM;
  5097.                                    lp : Win32.LPARAM) 
  5098.                                    return Win32.Windef.HMENU is
  5099.                                                             -- windowsx.h:1188
  5100.     begin
  5101.         return To_HMENU(lp);
  5102.     end GET_WM_MENUCHAR_HMENU;
  5103.  
  5104.     function GET_WM_MENUCHAR_FMENU(wp : Win32.WPARAM;
  5105.                                    lp : Win32.LPARAM) return Win32.BOOL is
  5106.                                                             -- windowsx.h:1189
  5107.     begin
  5108.         return Win32.BOOL(Win32.Utils.HIWORD(Win32.DWORD(wp)));
  5109.     end GET_WM_MENUCHAR_FMENU;
  5110.  
  5111.  
  5112.     function GET_WM_MENUCHAR_MPS(ch   : Win32.Tchar.TCHAR; 
  5113.                                  hmenu: Win32.Windef.HMENU;
  5114.                                  f    : Win32.BOOL)
  5115.                                  return Win32.LONG is       -- windowsx.h:1190
  5116.  
  5117. --        function To_long is new Ada.Unchecked_Conversion(Win32.Windef.HMENU,
  5118.  --               Win32.LONG);
  5119.     begin
  5120.         return To_long(hmenu);
  5121.     end GET_WM_MENUCHAR_MPS;
  5122.  
  5123.     function GET_WM_PARENTNOTIFY_MSG(wp : Win32.WPARAM;
  5124.                                      lp : Win32.LPARAM)  
  5125.                                      return Win32.WORD is   -- windowsx.h:1193
  5126.     begin
  5127.         return Win32.WORD(wp);
  5128.     end GET_WM_PARENTNOTIFY_MSG;
  5129.  
  5130.     function GET_WM_PARENTNOTIFY_ID(wp : Win32.WPARAM;
  5131.                                     lp : Win32.LPARAM)        
  5132.                                     return Win32.WORD is    -- windowsx.h:1194
  5133.     begin
  5134.         return Win32.Utils.HIWORD(Win32.DWORD(wp));
  5135.     end GET_WM_PARENTNOTIFY_ID;
  5136.  
  5137.     function GET_WM_PARENTNOTIFY_HWNDCHILD(wp : Win32.WPARAM;
  5138.                                            lp : Win32.LPARAM)         
  5139.                                            return Win32.Windef.HWND is 
  5140.                                                 -- windowsx.h:1195
  5141.     begin
  5142.         return To_HWND(lp);
  5143.     end GET_WM_PARENTNOTIFY_HWNDCHILD;
  5144.  
  5145.     function GET_WM_PARENTNOTIFY_X(wp : Win32.WPARAM;
  5146.                                    lp : Win32.LPARAM)           
  5147.                                    return Win32.INT is     -- windowsx.h:1196
  5148.     begin
  5149.         return Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(wp))));
  5150.     end GET_WM_PARENTNOTIFY_X;
  5151.  
  5152.     function GET_WM_PARENTNOTIFY_Y(wp : Win32.WPARAM;
  5153.                                    lp : Win32.LPARAM)             
  5154.                                    return Win32.INT is     -- windowsx.h:1197
  5155.     begin
  5156.         return Win32.INT(Win32.SHORT(
  5157.                         Win32.Utils.HIWORD(Win32.DWORD(wp))));
  5158.     end GET_WM_PARENTNOTIFY_Y;
  5159.  
  5160.     function GET_WM_PARENTNOTIFY_MPS(msg : Win32.WORD;
  5161.                                      id  : Win32.WORD;
  5162.                                      hwnd: Win32.Windef.HWND)
  5163.                                      return Win32.LONG is   -- windowsx.h:1198
  5164.     begin
  5165.         return To_LONG(hwnd);
  5166.     end GET_WM_PARENTNOTIFY_MPS;
  5167.  
  5168.     function GET_WM_PARENTNOTIFY2_MPS(msg: Win32.WORD;
  5169.                                       x  : Win32.INT;
  5170.                                       y  : Win32.INT)
  5171.                                       return Win32.DWORD is
  5172.     begin
  5173.         return Win32.Utils.MAKELONG(Win32.WORD(x), Win32.WORD(y));
  5174.     end GET_WM_PARENTNOTIFY2_MPS;
  5175.  
  5176.     function GET_WM_VKEYTOITEM_CODE(wp : Win32.WPARAM;
  5177.                                     lp : Win32.LPARAM)         
  5178.                                     return Win32.INT is
  5179.                                                 -- windowsx.h:1203
  5180.     begin
  5181.         return Win32.INT(Win32.SHORT(Win32.Utils.LOWORD(Win32.DWORD(wp))));
  5182.     end GET_WM_VKEYTOITEM_CODE;
  5183.  
  5184.     function GET_WM_VKEYTOITEM_ITEM(wp : Win32.WPARAM;
  5185.                                     lp : Win32.LPARAM)         
  5186.                                     return Win32.WORD is
  5187.                                                 -- windowsx.h:1204
  5188.     begin
  5189.         return Win32.WORD(wp);
  5190.     end GET_WM_VKEYTOITEM_ITEM;
  5191.  
  5192.     function GET_WM_VKEYTOITEM_HWND(wp : Win32.WPARAM;
  5193.                                     lp : Win32.LPARAM)         
  5194.                                     return Win32.Windef.HWND is
  5195.                                                 -- windowsx.h:1205
  5196.     begin
  5197.         return To_HWND(lp);
  5198.     end GET_WM_VKEYTOITEM_HWND;
  5199.  
  5200.     function GET_WM_VKEYTOITEM_MPS(code: Win32.INT;
  5201.                                    item: Win32.WORD;
  5202.                                    hwnd: Win32.Windef.HWND)
  5203.                                     return Win32.LONG is
  5204.                                                 -- windowsx.h:1206
  5205.     begin
  5206.         return To_LONG(hwnd);
  5207.     end GET_WM_VKEYTOITEM_MPS;
  5208.  
  5209.  
  5210.     function GET_EM_SETSEL_START(wp : Win32.WPARAM;
  5211.                                  lp : Win32.LPARAM)    
  5212.                                  return Win32.Int is        -- windowsx.h:1209
  5213.     begin
  5214.         return Win32.Int(wp);
  5215.     end GET_EM_SETSEL_START;
  5216.  
  5217.     function GET_EM_SETSEL_END(wp : Win32.WPARAM;
  5218.                                lp : Win32.LPARAM)      
  5219.                                return Win32.LPARAM is       -- windowsx.h:1210
  5220.     begin
  5221.         return lp;
  5222.     end GET_EM_SETSEL_END;
  5223.  
  5224.     function GET_EM_SETSEL_MPS(iStart: Win32.UINT;
  5225.                                iEnd  : Win32.UINT)
  5226.                                return Win32.LONG is         -- windowsx.h:1211
  5227.     begin
  5228.         return Win32.LONG(iEnd);
  5229.     end GET_EM_SETSEL_MPS;
  5230.  
  5231.     function GET_EM_LINESCROLL_MPS(vert: Win32.UINT;
  5232.                                    horz: Win32.UINT)
  5233.                                return Win32.LONG is         -- windowsx.h:1214
  5234.     begin
  5235.         return Win32.LONG(vert);
  5236.     end GET_EM_LINESCROLL_MPS;
  5237.  
  5238.     function GET_WM_CHANGECBCHAIN_HWNDNEXT(wp : Win32.WPARAM;
  5239.                                            lp : Win32.LPARAM)
  5240.                                            return Win32.Windef.HWND is
  5241.                                                             -- windowsx.h:1217
  5242.     begin
  5243.         return To_HWND(lp);
  5244.     end GET_WM_CHANGECBCHAIN_HWNDNEXT;
  5245.  
  5246.     function GET_WM_HSCROLL_CODE(wp : Win32.WPARAM;
  5247.                                  lp : Win32.LPARAM)         
  5248.                                  return Win32.WORD is       -- windowsx.h:1219
  5249.     begin
  5250.         return Win32.WORD(wp);
  5251.     end GET_WM_HSCROLL_CODE;
  5252.  
  5253.     function GET_WM_HSCROLL_POS(wp : Win32.WPARAM;
  5254.                                 lp : Win32.LPARAM)          
  5255.                                  return Win32.WORD is       -- windowsx.h:1220
  5256.     begin
  5257.         return Win32.WORD(wp);
  5258.     end GET_WM_HSCROLL_POS;
  5259.  
  5260.     function GET_WM_HSCROLL_HWND(wp : Win32.WPARAM;
  5261.                                  lp : Win32.LPARAM)         
  5262.                                  return Win32.Windef.HWND is
  5263.                                                             -- windowsx.h:1221
  5264.     begin
  5265.         return To_HWND(lp);
  5266.     end GET_WM_HSCROLL_HWND;
  5267.  
  5268.     function GET_WM_HSCROLL_MPS(code: Win32.WORD;
  5269.                                 pos : Win32.WORD;
  5270.                                 hwnd: Win32.Windef.HWND)
  5271.                                 return Win32.LONG is        -- windowsx.h:1222
  5272.     begin
  5273.         return To_LONG(hwnd);
  5274.     end GET_WM_HSCROLL_MPS; 
  5275.  
  5276.     function GET_WM_VSCROLL_CODE(wp : Win32.WPARAM;
  5277.                                  lp : Win32.LPARAM)         
  5278.                                  return Win32.WORD is       -- windowsx.h:1225
  5279.     begin
  5280.         return Win32.WORD(wp);
  5281.     end GET_WM_VSCROLL_CODE;
  5282.  
  5283.     function GET_WM_VSCROLL_POS(wp : Win32.WPARAM;
  5284.                                 lp : Win32.LPARAM)          
  5285.                                 return Win32.WORD is       -- windowsx.h:1226
  5286.     begin
  5287.         return Win32.WORD(wp);
  5288.     end GET_WM_VSCROLL_POS;
  5289.  
  5290.     function GET_WM_VSCROLL_HWND(wp : Win32.WPARAM;
  5291.                                  lp : Win32.LPARAM)         
  5292.                                  return Win32.Windef.HWND is-- windowsx.h:1227
  5293.     begin
  5294.         return To_HWND(lp);
  5295.     end GET_WM_VSCROLL_HWND;
  5296.  
  5297.     function GET_WM_VSCROLL_MPS(code : Win32.WORD;
  5298.                                 pos : Win32.WORD;
  5299.                                 hwnd: Win32.Windef.HWND)
  5300.                                 return Win32.LONG is        -- windowsx.h:1228
  5301.     begin
  5302.         return To_LONG(hwnd);
  5303.     end GET_WM_VSCROLL_MPS; 
  5304.  
  5305. end Win32.Windowsx;
  5306.