home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2api / winaccel.def < prev    next >
Text File  |  1994-05-03  |  4KB  |  118 lines

  1. DEFINITION MODULE WINACCELERATORS;
  2.  
  3. (************************************************************************
  4.   OS/2 2.0 interface for Presentation Manager Accelerator functions.
  5.  
  6.   Copyright (c) 1992 by Juergen Neuhoff
  7. *************************************************************************)
  8.  
  9. (*$XL+       Modula-2 language extensions: '_' allowed for symbol names *)
  10. (*$CDECL+    C-style procedures                                         *)
  11. (*$A         default alignment for record fields                        *)
  12.  
  13. IMPORT SYSTEM;
  14. FROM   OS2DEF        IMPORT TYPEPREFIX, HAB, HWND, HMODULE, LHANDLE;
  15. FROM   WINMESSAGEMGR IMPORT QMSG;
  16.  
  17. TYPE
  18.   HACCEL = LHANDLE; (* haccel *)
  19.  
  20. CONST
  21.   (* ACCEL fs bits
  22.   *
  23.   * NOTE: the first six AF_ code bits have the same value
  24.   * as their KC_ counterparts
  25.   *)
  26.   AF_CHAR                   = 0001H;
  27.   AF_VIRTUALKEY             = 0002H;
  28.   AF_SCANCODE               = 0004H;
  29.   AF_SHIFT                  = 0008H;
  30.   AF_CONTROL                = 0010H;
  31.   AF_ALT                    = 0020H;
  32.   AF_LONEKEY                = 0040H;
  33.   AF_SYSCOMMAND             = 0100H;
  34.   AF_HELP                   = 0200H;
  35.  
  36. TYPE
  37.   (* Binary resources may be bound into application executables or *)
  38.   (* passed as a parameter when creating a window or dialog        *)
  39.   (* Currently they must be the same for both 16-bit and 32-bit    *)
  40.   (* so we pack the structures.                                    *)
  41.   (*                                                               *)
  42.   (*$A2 WORD alignment for record fields >= 2 bytes                *)
  43.   ACCEL                     = RECORD  (* acc *)
  44.     CASE                      : TYPEPREFIX OF
  45.     | TRUE                    :
  46.       fs                      : CARDINAL;
  47.       key                     : CARDINAL;
  48.       cmd                     : CARDINAL;
  49.     | FALSE                   :
  50.       Flag                    : CARDINAL;
  51.       Key                     : CARDINAL;
  52.       Cmd                     : CARDINAL;
  53.     END;                      END;
  54.   PACCEL                    = POINTER TO ACCEL;
  55.   (*$A restore default alignment for record fields                 *)
  56.  
  57. TYPE
  58.   (* Binary resources may be bound into application executables or *)
  59.   (* passed as a parameter when creating a window or dialog        *)
  60.   (* Currently they must be the same for both 16-bit and 32-bit    *)
  61.   (* so we pack the structures.                                    *)
  62.   (*                                                               *)
  63.   (*$A2 WORD alignment for record fields >= 2 bytes                *)
  64.   ACCELTABLE                = RECORD (* acct  *)
  65.     CASE                      : TYPEPREFIX OF
  66.     | TRUE                    :
  67.       cAccel                  : CARDINAL;
  68.       codepage                : CARDINAL;
  69.       aaccel                  : ARRAY [0..0] OF ACCEL;
  70.     | FALSE                   :
  71.       AccelCount              : CARDINAL;
  72.       CodePage                : CARDINAL;
  73.       Accel                   : ARRAY [0..0] OF ACCEL;
  74.     END;                      END;
  75.   PACCELTABLE               = POINTER TO ACCELTABLE;
  76.   (*$A restore default alignment for record fields                 *)
  77.  
  78. PROCEDURE WinLoadAccelTable
  79. ( AnchorBlockHandle         : HAB;
  80.   Resource                  : HMODULE;
  81.   AccelTable                : LONGCARD
  82. )                           : HACCEL;
  83.  
  84. PROCEDURE WinCopyAccelTable
  85. ( AccelTableHandle          : HACCEL;
  86.   AccelTable                : PACCELTABLE;
  87.   CopyMax                   : LONGCARD
  88. )                           : LONGCARD;
  89.  
  90. PROCEDURE WinCreateAccelTable
  91. ( AnchorBlockHandle         : HAB;
  92.   VAR AccelTable            : ACCELTABLE
  93. )                           : HACCEL;
  94.  
  95. PROCEDURE WinDestroyAccelTable
  96. ( AccelTableHandle          : HACCEL
  97. )                           : BOOLEAN;
  98.  
  99. PROCEDURE WinTranslateAccel
  100. ( AnchorBlockHandle         : HAB;
  101.   WinHandle                 : HWND;
  102.   AccelTableHandle          : HACCEL;
  103.   VAR QMsg                  : QMSG
  104. )                           : BOOLEAN;
  105.  
  106. PROCEDURE WinSetAccelTable
  107. ( AnchorBlockHandle         : HAB;
  108.   AccelTableHandle          : HACCEL;
  109.   FrameWinHandle            : HWND
  110. )                           : BOOLEAN;
  111.  
  112. PROCEDURE WinQueryAccelTable
  113. ( AnchorBlockHandle         : HAB;
  114.   FrameWinHandle            : HWND
  115. )                           : HACCEL;
  116.  
  117. END WINACCELERATORS.
  118.