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

  1. DEFINITION MODULE NLS;
  2.  
  3. (************************************************************************
  4.   OS/2 2.0 interface for Presentation Manager DBCS.
  5.  
  6.   Note: OS/2 2.0 as shipped in Europe currently has no library
  7.         exporting the necessary DBCS functions, hence cannot be
  8.         resolved by LINK386.EXE!
  9.  
  10.   Copyright (c) 1992 by Juergen Neuhoff
  11. *************************************************************************)
  12.  
  13. (*$XL+       Modula-2 language extensions: '_' allowed for symbol names *)
  14. (*$CDECL+    C-style procedures                                         *)
  15. (*$A         default alignment for record fields                        *)
  16.  
  17. IMPORT SYSTEM;
  18. FROM   OS2DEF  IMPORT PSZ, TYPEPREFIX, HAB, HWND;
  19.  
  20. CONST (* resource ID offset for bi-lingual system resources (menu & string) *)
  21.   RID_DBE_OFFSET             = 1000H;
  22.   STR_DBE_OFFSET             = 1000H;
  23.  
  24. CONST(* definition of Virtual key values for DBCS *)
  25.   VK_DBE_FIRST               = 080H; (* VK_DBCSFIRST *)
  26.   VK_DBE_LAST                = 0FFH; (* VK_DBCSLAST  *)
  27.   VK_DBE_IMEFIRST            = 0A0H; (* VK_DBE_FIRST + 20H *)
  28.   VK_DBE_IMELAST             = 0FFH; (* VK_DBE_LAST *)
  29.  
  30. CONST (* OEM keyboard support including PS/2 keyboard *)
  31.   VK_DBE_OEMFIRST            = 0C0H;
  32.   VK_DBE_OEMLAST             = 0CFH;
  33.  
  34. CONST (* for codepage 932 *)
  35.   VK_DBE_ALPHANUMERIC        = 80H; (* VK_DBE_FIRST + 00H *)
  36.   VK_DBE_KATAKANA            = 81H; (* VK_DBE_FIRST + 01H *)
  37.   VK_DBE_HIRAGANA            = 82H; (* VK_DBE_FIRST + 02H *)
  38.   VK_DBE_SBCSCHAR            = 83H; (* VK_DBE_FIRST + 03H *)
  39.   VK_DBE_DBCSCHAR            = 84H; (* VK_DBE_FIRST + 04H *)
  40.   VK_DBE_SBCSDBCSCHAR        = 85H; (* VK_DBE_FIRST + 05H *)
  41.   VK_DBE_ROMAN               = 86H; (* VK_DBE_FIRST + 06H *)
  42.  
  43. CONST (* for codepage 934 *)
  44.   VK_DBE_HANJA               = 87H; (* VK_DBE_FIRST + 07H *)
  45.   VK_DBE_HANGEUL             = 88H; (* VK_DBE_FIRST + 08H *)
  46.   VK_DBE_JAMO                = 89H; (* VK_DBE_FIRST + 09H *)
  47.  
  48. CONST (* for codepage 936 *)
  49.   VK_DBE_HANZI               = 8AH; (* VK_DBE_FIRST + 0AH *)
  50.  
  51. CONST (* for codepage 938 *)
  52.   VK_DBE_TSANGJYE            = 08CH; (* VK_DBE_FIRST + 0CH *)
  53.   VK_DBE_PHONETIC            = 08DH; (* VK_DBE_FIRST + 0DH *)
  54.   VK_DBE_KANJI               = 0A0H; (* VK_DBE_IMEFIRST + 00H *)
  55.   VK_DBE_IMEACTIVATE         = 0A0H; (* VK_DBE_IMEFIRST + 00H *)
  56.   VK_DBE_CONV                = 0A1H; (* VK_DBE_IMEFIRST + 01H *)
  57.   VK_DBE_NOCONV              = 0A2H; (* VK_DBE_IMEFIRST + 02H *)
  58.   VK_DBE_TANGO               = 0A3H; (* VK_DBE_IMEFIRST + 03H *)
  59.   VK_DBE_WORDREGISTER        = 0A3H; (* VK_DBE_IMEFIRST + 03H *)
  60.   VK_DBE_IMEDIALOG           = 0A4H; (* VK_DBE_IMEFIRST + 04H *)
  61.   VK_DBE_IME_MBSELECTED      = 0A5H; (* VK_DBE_IMEFIRST + 05H *)
  62.   VK_DBE_IME_LBSELECTED      = 0A6H; (* VK_DBE_IMEFIRST + 06H *)
  63.   VK_DBE_CODEINPUT           = 0A7H; (* VK_DBE_IMEFIRST + 07H *)
  64.   VK_DBE_ALLCANDIDATE        = 0A8H; (* VK_DBE_IMEFIRST + 08H *)
  65.   VK_DBE_PREVCANDIDATE       = 0A9H; (* VK_DBE_IMEFIRST + 09H *)
  66.   VK_DBE_IMEDEACTIVATE       = 0AAH; (* VK_DBE_IMEFIRST + 0AH *)
  67.   VK_DBE_IME_WORDREGISTED    = 0ABH; (* VK_DBE_IMEFIRST + 0BH *)
  68.   VK_DBE_IMECONTROL          = 0ACH; (* VK_DBE_IMEFIRST + 0CH *)
  69.   VK_DBE_IME_FREEPS          = 0ADH; (* VK_DBE_IMEFIRST + 0DH *)
  70.   VK_DBE_IMEMODEEXIT         = 0AEH; (* VK_DBE_IMEFIRST + 0EH *)
  71.  
  72. CONST (* Window Class definitoin for DBCS (migration) *)
  73.   WC_DBE_APPSTAT             = PSZ( 0FFFF0010H ); (* WC_APPSTAT *)
  74.   WC_DBE_KBDSTAT             = PSZ( 0FFFF0011H ); (* WC_KBDSTAT *)
  75.   WC_DBE_PECIC               = PSZ( 0FFFF0012H ); (* WC_PECIC   *)
  76.  
  77. CONST (* Double byte character set messages *)
  78.   WM_DBE_SETAPPLSTAT         = 00B6H;
  79.   WM_DBE_KKCPARAMS           = 00BCH;
  80.  
  81. CONST (* DBCS unique statndsrd Frame Create Flag (migration) *)
  82.   FCF_DBE_STATAREA           = 80000000H; (* FCF_DBE_APPSTAT *)
  83.  
  84. TYPE (* WM_SETWINDOWPARAM ctldata of DBCS status area *)
  85.   KEYSTSDATA                 = RECORD       (* keysts *)
  86.     CASE                       : TYPEPREFIX OF
  87.     | TRUE                     :
  88.       wpmctlflag               : LONGCARD;
  89.       textlength               : LONGCARD;
  90.       pTextString              : PSZ;
  91.       pAttrString              : PSZ;
  92.       pRomanString             : PSZ;
  93.     | FALSE                    :
  94.       WPMCtlFlag               : LONGCARD;
  95.       TextLength               : LONGCARD;
  96.       TextString               : PSZ;
  97.       AttrString               : PSZ;
  98.       RomanString              : PSZ;
  99.     END;                       END;
  100.   PKEYSTSDATA                = POINTER TO KEYSTSDATA;
  101.   WPMCTLPARAMS               = RECORD   (* wpmctlprm - old definition *)
  102.     CASE                       : TYPEPREFIX OF
  103.     | TRUE                     :
  104.       wpmctlflag               : LONGCARD;
  105.       textlength               : LONGCARD;
  106.       pTextString              : PSZ;
  107.       pAttrString              : PSZ;
  108.     | FALSE                    :
  109.       WPMCtlFlag               : LONGCARD;
  110.       TextLength               : LONGCARD;
  111.       TextString               : PSZ;
  112.       AttrString               : PSZ;
  113.     END;                       END;
  114.   PWPMCTLPARAMS              = POINTER TO WPMCTLPARAMS;
  115.  
  116. CONST (* wpmctlflag value definition *)
  117.   DBE_KSF_ALPHANUMERIC       = 0001H;
  118.   DBE_KSF_KATAKANA           = 0002H;
  119.   DBE_KSF_HIRAGANA           = 0004H;
  120.   DBE_KSF_CAPS               = 0008H;
  121.   DBE_KSF_ROMAN              = 0010H;
  122.   DBE_KSF_HANKAKU            = 0020H;
  123.   DBE_KSF_ZENKAKU            = 0040H;
  124.   DBE_KSF_SBCS               = DBE_KSF_HANKAKU;
  125.   DBE_KSF_DBCS               = DBE_KSF_ZENKAKU;
  126.   DBE_KSF_UPPER              = 0080H;
  127.   DBE_KSF_LOWER              = 0100H;
  128.   DBE_KSF_TEXT               = 0200H;
  129.   DBE_KSF_NOROMAN            = 0400H;
  130.   DBE_KSF_DISABLEONTHESPOT   = 0800H;
  131.   DBE_KSF_ROMANTEXT          = 1000H;
  132.  
  133. CONST (* For Code Page 934(Korea) wpmctlflag value definition  *)
  134.   DBE_KSF_JAMO               = 0002H;
  135.   DBE_KSF_HANGEUL            = 0004H;
  136.  
  137. CONST (* For Code Page 938(Taiwan) wpmctlflag value definition  *)
  138.   DBE_KSF_PHONETIC           = 0002H;
  139.   DBE_KSF_TSANGJYE           = 0004H;
  140.  
  141. TYPE (* WM_SETWINDOWPARAM ctldata of Pecic control *)
  142.   PECICDATA                  = RECORD     (* pecicdata *)
  143.     CASE                       : TYPEPREFIX OF
  144.     | TRUE                     :
  145.       wpmctlflag               : LONGCARD;
  146.       textlength               : LONGCARD;
  147.       pTextString              : PSZ;
  148.       pAttrString              : PSZ;
  149.     | FALSE                    :
  150.       WPMCtlFlag               : LONGCARD;
  151.       TextLength               : LONGCARD;
  152.       TextString               : PSZ;
  153.       AttrString               : PSZ;
  154.     END;
  155.     CursorPos                  : LONGCARD;
  156.     CursorAttr                 : LONGCARD;
  157.                                END;
  158.   PPECICDATA                 = POINTER TO PECICDATA;
  159.  
  160. CONST (* wndparams definition of WM_DBE_APPLSTAT *)
  161.   DBE_WPM_APPLSTAT_VISIBILITY = 0004H;
  162.  
  163. CONST (* ctldata of DBE_WPM_APPLSTAT_VISIBLITY *)
  164.   DBE_AS_APPLTOP             = 0001H;
  165.   DBE_AS_KBDTOP              = 0002H;
  166.   DBE_AS_PECICTOP            = 0004H;
  167.   DBE_AS_APPLBOTTOM          = 0008H;
  168.  
  169. TYPE (** WM_DBE_KKCPARAMS definition **)
  170.      (* mp1(lpkkcparams) *)
  171.   KKCPARAMS                  = RECORD   (* kkcparams *)
  172.     CASE                       : TYPEPREFIX OF
  173.     | TRUE                     :
  174.       lenKKCParams             : LONGCARD;
  175.       fRequest                 : LONGCARD;
  176.       fKKCParams               : LONGCARD;
  177.       pKKCData                 : SYSTEM.ADDRESS;
  178.     | FALSE                    :
  179.       KKCParamsLen             : LONGCARD;
  180.       RequestFlags             : LONGCARD;
  181.       KKCParamsFlags           : LONGCARD;
  182.       KKCData                  : SYSTEM.ADDRESS;
  183.     END;
  184.     Reserved                   : LONGCARD;
  185.                                END;
  186.   PKKCPARAMS                 = POINTER TO KKCPARAMS;
  187.  
  188. CONST (* fRequest *)
  189.   DBE_KKCPARAMS_SET          = 0001H;
  190.   DBE_KKCPARAMS_QUERY        = 0002H;
  191.  
  192. CONST (* fKKCParams *)
  193.   DBE_KKCPARAMS_PHYSICALATTRIBUTE = 0001H;
  194.   DBE_KKCPARAMS_PECICCURSORPOS    = 0002H;
  195.  
  196. TYPE  (* Level format for ColorLookUpTable *)
  197.    (*$A1 BVYTE alignment for record fields *)
  198.    LEVEL                     = RECORD   (* Level *)
  199.     CASE                       : TYPEPREFIX OF
  200.     | TRUE                     :
  201.       attri1                   : SHORTCARD;  (** 1st Attribute         **)
  202.       attri2                   : SHORTCARD;  (** 2nd Attribute         **)
  203.     | FALSE                    :
  204.       Attri1                   : SHORTCARD;  (** 1st Attribute         **)
  205.       Attri2                   : SHORTCARD;  (** 2nd Attribute         **)
  206.     END;                       END;
  207.   PLEVEL                     = POINTER TO LEVEL;
  208.   (*$A restore default alignment for record fields *)
  209.  
  210. TYPE (* Color Look Up Table format *)
  211.   COLORLOOKUPTBL             = RECORD (* ColorLookUpTable *)
  212.     CASE                       : TYPEPREFIX OF
  213.     | TRUE                     :
  214.       nAttr                    : LONGCARD;  (* number of Attribute *)
  215.     | FALSE                    :
  216.       AttrNumber               : LONGCARD;  (* number of Attribute *)
  217.     END;
  218.     PhysicalLevel              : ARRAY [0..31] OF LEVEL; (* Levels *)
  219.                                END;
  220.   PCOLORLOOKUPTBL            = POINTER TO COLORLOOKUPTBL;
  221.  
  222.  (** WinDBCSIMEControl() Definition & Prototype **)
  223.  
  224. CONST (* type *)
  225.   DBE_IMCTL_QUERY            = 0001H;
  226.   DBE_IMCTL_SET              = 0002H;
  227.  
  228. TYPE
  229.   IMEMODE                    = RECORD (* imemode *)
  230.     CASE                       : TYPEPREFIX OF
  231.     | TRUE                     :
  232.       lenIMEMODE               : LONGCARD;
  233.       fIMEMode                 : LONGCARD;
  234.       hIME                     : LONGCARD; (* query mode only valid *)
  235.       hModIME                  : LONGCARD; (* query mode only valid *)
  236.     | FALSE                    :
  237.       IMEModeLen               : LONGCARD;
  238.       IMEModeFlags             : LONGCARD;
  239.       IMEHandle                : LONGCARD; (* query mode only valid *)
  240.       ModIMEHandle             : LONGCARD; (* query mode only valid *)
  241.     END;                       END;
  242.   PIMEMODE                   = POINTER TO IMEMODE;
  243.  
  244. CONST (* definition of fIMEMode *)
  245.   DBE_IMCTL_IMEENABLE        = 0001H;
  246.   DBE_IMCTL_IMEDISABLE       = 0002H;
  247.   DBE_IMCTL_IMEMODE          = 0004H;
  248.   DBE_IMCTL_NOTIMEMODE       = 0008H;
  249.   DBE_IMCTL_INHERIT_PFRAME   = 0100H;
  250.   DBE_IMCTL_INTERIMREQUEST   = 8000H;
  251.  
  252. PROCEDURE WinDBCSIMEControl
  253. ( AnchorBlockHandle          : HAB;
  254.   FrameWinHandle             : HWND;
  255.   Type                       : LONGCARD;
  256.   VAR IMEMode                : IMEMODE
  257. )                            : LONGCARD;
  258.  
  259.  
  260. CONST (* WinDBCSModeControl() Type *)
  261.   DBE_MCTL_QUERY             = 0001H;
  262.   DBE_MCTL_SET               = 0002H;
  263.  
  264. CONST (* WinDBCSModeControl() Arg *)
  265.   DBE_MCTL_INPUTMODEREQUEST  = 0001H;
  266.   DBE_MCTL_JAPANREQ          = 0001H;   (* migration *)
  267.  
  268. CONST (* WinDBCSModeControl() Parm - MCTL_JAPAN *)
  269.   DBE_MCTL_ALPHANUMERIC      = 0001H;
  270.   DBE_MCTL_KATAKANA          = 0002H;
  271.   DBE_MCTL_HIRAGANA          = 0004H;
  272.   DBE_MCTL_SBCSCHAR          = 0008H;
  273.   DBE_MCTL_DBCSCHAR          = 0010H;
  274.   DBE_MCTL_ROMAN             = 0020H;
  275.   DBE_MCTL_NOROMAN           = 0040H;
  276.   DBE_MCTL_KKCREQ            = 1000H;
  277.   DBE_MCTL_CP932REQ          = 0001H;
  278.   DBE_MCTL_KKCENABLE         = 1000H;
  279.   DBE_MCTL_KKCDISABLE        = 2000H;
  280.   DBE_MCTL_HANKAKU           = 0008H;
  281.   DBE_MCTL_ZENKAKU           = 0010H;
  282.  
  283. CONST (* WinDBCSModeControl() Parm  - MCTL_KOREA *)
  284.   DBE_MCTL_JAMO              = 0002H;
  285.   DBE_MCTL_HANGEUL           = 0004H;
  286.   DBE_MCTL_INTERIMREQUEST    = 0080H;
  287.  
  288. CONST (* WinDBCSModeControl() Parm - MCTL_TCHINESE *)
  289.   DBE_MCTL_PHONETIC          = 0002H;
  290.   DBE_MCTL_TSANGJYE          = 0004H;
  291.  
  292. CONST (* for MDI support *)
  293.   DBE_MCTL_INHERIT_PFRAME    = 0100H;
  294.  
  295. PROCEDURE WinDBCSModeControl
  296. ( AnchorBlockHandle          : HAB;
  297.   FrameWinHandle             : HWND;
  298.   Type                       : LONGCARD;
  299.   Arg                        : LONGCARD;
  300.   VAR Parm                   : LONGCARD
  301. )                            : LONGCARD;
  302.  
  303. TYPE (* Font Driver Description structure  *)
  304.   FD_DESC                    = RECORD   (* fd_desc *)
  305.     CASE                       : TYPEPREFIX OF
  306.     | TRUE                     :
  307.       flType                   : LONGCARD;
  308.       str64Desc                : ARRAY [0..63] OF CHAR;
  309.     | FALSE                    :
  310.       TypeFlags                : LONGCARD;
  311.       Desc                     : ARRAY [0..63] OF CHAR;
  312.     END;                       END;
  313.   PFD_DESC                   = POINTER TO FD_DESC;
  314.  
  315. (* Font Driver functions *)
  316.  
  317. PROCEDURE WinDBCSLoadFontDriver
  318. ( AnchorBlockHandle          : HAB;
  319.   DriverName                 : ARRAY OF CHAR
  320. )                            : BOOLEAN;
  321.  
  322. PROCEDURE WinDBCSUnloadFontDriver
  323. ( AnchorBlockHandle          : HAB;
  324.   DriverName                 : ARRAY OF CHAR
  325. )                            : BOOLEAN;
  326.  
  327. PROCEDURE WinDBCSQueryFDDescription
  328. ( AnchorBlockHandle          : HAB;
  329.   DriverName                 : ARRAY OF CHAR;
  330.   VAR FontDriverDesc         : FD_DESC
  331. )                            : BOOLEAN;
  332.  
  333. CONST (* fd_type definition *)
  334.   DBE_FD_DESC_SYSTEM         = 0001H;
  335.   DBE_FD_DESC_PUBLIC         = 0002H;
  336.   DBE_FD_DESC_PRIVATE        = 0004H;
  337.  
  338. CONST (* System menu item number ID in MENUITEM for DBCS unique function *)
  339.   SC_DBE_IME                 = 8018H;
  340.   SC_DBE_IMESEPARATOR        = 8019H;
  341.  
  342. END NLS.
  343.