home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2api / windef.def < prev    next >
Text File  |  1995-08-24  |  8KB  |  208 lines

  1. DEFINITION MODULE WINDEF;
  2.  
  3. (************************************************************************
  4.   OS/2 2.x/3.0 General Window Management types, constants and functions
  5.  
  6.                19.02.95 23.01 : WC_... now implemented as initialized
  7.                                 typed constant variables
  8.                22.02.95 21.48 : MPARAM and MRESULT are now of type LONGWORD
  9.                23.02.95 13.31 : MPVOID is now an initialized zero variable
  10.                24.08.95 12.48 : WC_... values are now string constants
  11.  
  12.   Copyright (c) 1992, 1995 by Juergen Neuhoff
  13. *************************************************************************)
  14.  
  15. (*$XL+       Modula-2 language extensions: '_' allowed for symbol names *)
  16. (*$CDECL+    C-style procedures                                         *)
  17. (*$A         default alignment for record fields                        *)
  18.  
  19. IMPORT SYSTEM;
  20. FROM   SYSTEM  IMPORT ADDRESS, BYTE, WORD, LONGWORD;
  21. FROM   OS2DEF  IMPORT HWND, PSZ, PCHAR, LHANDLE;
  22.  
  23. TYPE
  24.   PVOID    = ADDRESS;
  25.   MPARAM   = LONGWORD;              (* message parameter *)
  26.   PMPARAM  = POINTER TO MPARAM;
  27.   MRESULT  = LONGWORD;              (* general return value *)
  28.   PMRESULT = POINTER TO MRESULT;
  29.  
  30. VAR
  31.   MPVOID   : MPARAM;   (* MPARAM initialized to zero *)
  32.  
  33.  
  34. (* function procedures to make an MPARAM from standard types. *)
  35. PROCEDURE MPFROMP      ( p : ADDRESS            ) : MPARAM;
  36. PROCEDURE MPFROMHWND   ( WinHandle : HWND       ) : MPARAM;
  37. PROCEDURE MPFROMCHAR   ( ch : BYTE              ) : MPARAM;
  38. PROCEDURE MPFROMSHORT  ( s : WORD               ) : MPARAM;
  39. PROCEDURE MPFROM2SHORT ( l,h : WORD             ) : MPARAM;
  40. PROCEDURE MPFROMSH2CH  ( l : WORD; hl,hh : BYTE ) : MPARAM;
  41. PROCEDURE MPFROMLONG   ( l : LONGWORD           ) : MPARAM;
  42.  
  43.  
  44. (* function procedures to extract standard types from an MPARAM *)
  45. PROCEDURE PVOIDFROMMP  ( mp : MPARAM            ) : ADDRESS;
  46. PROCEDURE HWNDFROMMP   ( mp : MPARAM            ) : HWND;
  47. PROCEDURE CHAR1FROMMP  ( mp : MPARAM            ) : CHAR;
  48. PROCEDURE CHAR2FROMMP  ( mp : MPARAM            ) : CHAR;
  49. PROCEDURE CHAR3FROMMP  ( mp : MPARAM            ) : CHAR;
  50. PROCEDURE CHAR4FROMMP  ( mp : MPARAM            ) : CHAR;
  51. PROCEDURE SHORT1FROMMP ( mp : MPARAM            ) : CARDINAL;
  52. PROCEDURE SHORT2FROMMP ( mp : MPARAM            ) : CARDINAL;
  53. PROCEDURE LONGFROMMP   ( mp : MPARAM            ) : LONGCARD;
  54.  
  55.  
  56. (* function procedures to make an MRESULT from standard types. *)
  57. PROCEDURE MRFROMP      ( p : ADDRESS            ) : MRESULT;
  58. PROCEDURE MRFROMSHORT  ( s : WORD               ) : MRESULT;
  59. PROCEDURE MRFROM2SHORT ( l,h : WORD             ) : MRESULT;
  60. PROCEDURE MRFROMLONG   ( l : LONGWORD           ) : MRESULT;
  61.  
  62.  
  63. (* function procedures to extract standard types from an MRESULT *)
  64. PROCEDURE PVOIDFROMMR  ( mr : MRESULT           ) : PVOID;
  65. PROCEDURE SHORT1FROMMR ( mr : MRESULT           ) : CARDINAL;
  66. PROCEDURE SHORT2FROMMR ( mr : MRESULT           ) : CARDINAL;
  67. PROCEDURE LONGFROMMR   ( mr : MRESULT           ) : LONGCARD;
  68.  
  69.  
  70. (*************************************************************************
  71. * This is the standard function definition for window procedures.
  72. * Typically they are names like "XxxxxxxxWndProc", where the prefix
  73. * "Xxxxxxxxx" is replaced by some name descriptive of the window procedure
  74. * being declared.  
  75. *
  76. * The OS/2 Developers Toolkit 2.x documentation says that
  77. * window procedures must be EXPORTED in the definitions
  78. * file used by the linker. Hence they are declared as EXPENTRY in C-language.
  79. * In Modula-2 this would mean that the callback function is to be introduced
  80. * in a Modula-2 defintion module and implemented in an implementation module.
  81. * Actual programming practice has shown that this restriction is not needed.
  82. * The callback procedure only has to be specified as (*$CDECL+*) to make
  83. * it compatible with OS/2 "_system" linkage convention.
  84. *
  85. *    PROCEDURE MyclassWndProc
  86. *    ( WinHandle : HWND;
  87. *      MessageId : LONGCARD;
  88. *      Param1    : MPARAM;
  89. *      Param2    : MPARAM
  90. *    )           : MRESULT;
  91. *
  92. *************************************************************************)
  93.  
  94.  
  95. TYPE (* Pointer to a window procedure function *)
  96.   PFNWP = PROCEDURE( HWND, LONGCARD, MPARAM, MPARAM ):MRESULT;
  97.  
  98.  
  99.  
  100. CONST (* Predefined window handles *)
  101.   HWND_DESKTOP            =  HWND( 1 );
  102.   HWND_OBJECT             =  HWND( 2 );
  103.   HWND_TOP                =  HWND( 3 );
  104.   HWND_BOTTOM             =  HWND( 4 );
  105.   HWND_THREADCAPTURE      =  HWND( 5 );
  106.  
  107.  
  108.  
  109. CONST (* standard window classes, e.g. for WinCreateWindow *)
  110.   WC_FRAME                = "#1";    (* 0001H *)
  111.   WC_COMBOBOX             = "#2";    (* 0002H *)
  112.   WC_BUTTON               = "#3";    (* 0003H *)
  113.   WC_MENU                 = "#4";    (* 0004H *)
  114.   WC_STATIC               = "#5";    (* 0005H *)
  115.   WC_ENTRYFIELD           = "#6";    (* 0006H *)
  116.   WC_LISTBOX              = "#7";    (* 0007H *)
  117.   WC_SCROLLBAR            = "#8";    (* 0008H *)
  118.   WC_TITLEBAR             = "#9";    (* 0009H *)
  119.   WC_MLE                  = "#10";   (* 000AH *)
  120.                                      (* 000BH to 000FH reserved *)
  121.   WC_APPSTAT              = "#16";   (* 0010H *)
  122.   WC_KBDSTAT              = "#17";   (* 0011H *)
  123.   WC_PECIC                = "#18";   (* 0012H *)
  124.   WC_DBE_KKPOPUP          = "#19";   (* 0013H *)
  125.                                      (* 0014H to 001FH reserved *)
  126.   WC_SPINBUTTON           = "#32";   (* 0020H *)
  127.                                      (* 0021H to 0024H reserved *)
  128.   WC_CONTAINER            = "#37";   (* 0025H *)
  129.   WC_SLIDER               = "#38";   (* 0026H *)
  130.   WC_VALUESET             = "#39";   (* 0027H *)
  131.   WC_NOTEBOOK             = "#40";   (* 0028H *)
  132.                                      (* 0029H to 0030H reserved *)
  133.                                      (* 0030H to 003FH reserved *)
  134.  
  135.  
  136. CONST (* Standard Window Styles *)
  137.   WS_VISIBLE        = 80000000H;
  138.   WS_DISABLED       = 40000000H;
  139.   WS_CLIPCHILDREN   = 20000000H;
  140.   WS_CLIPSIBLINGS   = 10000000H;
  141.   WS_PARENTCLIP     = 08000000H;
  142.   WS_SAVEBITS       = 04000000H;
  143.   WS_SYNCPAINT      = 02000000H;
  144.   WS_MINIMIZED      = 01000000H;
  145.   WS_MAXIMIZED      = 00800000H;
  146.   WS_ANIMATE        = 00400000H;
  147.  
  148.  
  149. CONST (* Dialog manager styles *)
  150.   WS_GROUP          = 00010000H;
  151.   WS_TABSTOP        = 00020000H;
  152.   WS_MULTISELECT    = 00040000H;
  153.  
  154.  
  155. CONST (* Class styles *)
  156.   CS_MOVENOTIFY     = 00000001H;
  157.   CS_SIZEREDRAW     = 00000004H;
  158.   CS_HITTEST        = 00000008H;
  159.   CS_PUBLIC         = 00000010H;
  160.   CS_FRAME          = 00000020H;
  161.   CS_CLIPCHILDREN   = 20000000H;
  162.   CS_CLIPSIBLINGS   = 10000000H;
  163.   CS_PARENTCLIP     = 08000000H;
  164.   CS_SAVEBITS       = 04000000H;
  165.   CS_SYNCPAINT      = 02000000H;
  166.  
  167.  
  168. CONST (* Extended Attribute Flags (Association Table) *)
  169.   EAF_DEFAULTOWNER  = 0001H;
  170.   EAF_UNCHANGEABLE  = 0002H;
  171.   EAF_REUSEICON     = 0004H;
  172.  
  173.  
  174. (* atom to pointer conversion *)
  175. PROCEDURE MAKEINTATOM( a:SYSTEM.LONGWORD ):PCHAR;
  176.  
  177.  
  178. CONST (* misc. definitions *)
  179.   STR_DLLNAME       = "keyremap";
  180.  
  181.  
  182. CONST (* DBCS window manager window message range *)
  183.   WM_DBCSFIRST      = 00B0H;
  184.   WM_DBCSLAST       = 00CFH;
  185.  
  186.  
  187. TYPE (* program handle *)
  188.   HPROGRAM               = LHANDLE;                 (* hprog *)
  189.   PHPROGRAM              = POINTER TO HPROGRAM;
  190.   HAPP                   = LHANDLE;
  191.  
  192.  
  193. TYPE (* ini file handle *)
  194.   HINI                   = LHANDLE;                 (* hini *)
  195.   PHINI                  = POINTER TO HINI;
  196.  
  197.  
  198. CONST
  199.   HINI_PROFILE           = HINI( NIL );
  200.   HINI_USERPROFILE       = HINI( -1 );
  201.   HINI_SYSTEMPROFILE     = HINI( -2 );
  202.   HINI_USER              = HINI_USERPROFILE;
  203.   HINI_SYSTEM            = HINI_SYSTEMPROFILE;
  204.  
  205.  
  206. END WINDEF.
  207.