home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / detk45he.zip / PMBIDI.H < prev    next >
Text File  |  1999-04-30  |  27KB  |  522 lines

  1. /****************************** Module Header ******************************\
  2. *
  3. * Module Name: PMBIDI.H
  4. *
  5. * OS/2 Presentation Manager Window Manager - Bidirectional support include file.
  6. *
  7. * Copyright (c) International Business Machines Corporation 1993, 1994.
  8. *
  9. \***************************************************************************/
  10.  
  11. #ifndef PM_BIDI_INCLUDED    /* Eliminate multiple definitions... */
  12.    #define PM_BIDI_INCLUDED
  13.    
  14.    /************************************************************************/
  15.    /* Bidirectional languages support window messages                      */
  16.    /************************************************************************/
  17.    #define WM_SETBIDIATTR       0x0BD0
  18.    #define WM_QUERYBIDIATTR     0x0BD1
  19.    #define WM_SETBIDISTAT       0x0BD2
  20.    #define WM_QUERYBIDISTAT     0x0BD3
  21.    #define WM_KBDLAYERCHANGED   0x0BD4
  22.    
  23.    
  24.    /************************************************************************/
  25.    /*  Language Viewer messages                                            */
  26.    /************************************************************************/
  27.    #define WM_LANGVIEWINFOCHANGED   0x0BE0
  28.    #define WM_LANG_OPTIONS_DIALOG   0x0BE2
  29.    #define WM_LANGOPTIONSDIALOG     0x0BE2
  30.    
  31.    /* LVI values - indicating which Bidi information has changed */
  32.    
  33.    #define LVI_WND_BIDI_ATTR     1
  34.    #define LVI_WND_BIDI_STAT     2
  35.    #define LVI_FOCUS_CHANGE      3
  36.    #define LVI_KBD_LAYER         4
  37.    #define LVI_CSD               5
  38.    #define LVI_SET_KBD_LAYER     6
  39.    #define LVI_ALL             (-1)
  40.    
  41.    
  42.    
  43.    /* Possible return values from WM_SETBIDIATTR/WM_SETBIDISTAT */
  44.    #define SBI_MSG_NOT_PROCESSED   0L
  45.    #define SBI_MSG_PROCESSED       1L
  46.    #define SBI_MSG_PROCESSED_SELF  2L
  47.    
  48.    
  49.    /************************************************************************/
  50.    /* Bidirectional attributes masks                                       */
  51.    /************************************************************************/
  52.    #define BDAM_INIT               0x80000000
  53.    #define BDAM_LEVEL              0x70000000
  54.    #define BDAM_NATIVE             0x08000000
  55.    #define BDAM_TEXTTYPE           0x01000000
  56.    #define BDAM_TEXT_ORIENTATION   0x00030000
  57.    #define BDAM_WND_ORIENTATION    0x00100000
  58.    #define BDAM_NUMERALS           0x00003000
  59.    #define BDAM_SYM_SWAP           0x00000100
  60.    #define BDAM_WORD_BREAK         0x00000200
  61.    #define BDAM_TEXT_SHAPE         0x000000FF
  62.    
  63.    #define BDAM_ALL    (BDAM_INIT             | \
  64.    BDAM_LEVEL            | \
  65.    BDAM_TEXTTYPE         | \
  66.    BDAM_NATIVE           | \
  67.    BDAM_TEXT_ORIENTATION | \
  68.    BDAM_WND_ORIENTATION  | \
  69.    BDAM_NUMERALS         | \
  70.    BDAM_SYM_SWAP         | \
  71.    BDAM_WORD_BREAK       | \
  72.    BDAM_TEXT_SHAPE         )
  73.    
  74.    /************************************************************************/
  75.    /* Bidirectional attributes values (in Bidi attributes word)            */
  76.    /*                                                                      */
  77.    /* Note: Value of the attributes must match the values in layout.h.     */
  78.    /************************************************************************/
  79.    #define BDA_INIT                0x80000000
  80.    #define BDA_LEVEL               0x30000000
  81.    
  82.    #define BDA_NATIVE_OFF          0x00000000
  83.    #define BDA_NATIVE_ON           0x08000000
  84.    
  85.    #define BDA_TEXTTYPE_VISUAL     0x00000000
  86.    #define BDA_TEXTTYPE_IMPLICIT   0x01000000
  87.    
  88.    #define BDA_WND_ORIENT_LTR      0x00000000
  89.    #define BDA_WND_ORIENT_RTL      0x00100000
  90.    
  91.    #define BDA_TEXT_ORIENT_LTR     0x00000000
  92.    #define BDA_TEXT_ORIENT_RTL     0x00010000
  93.    #define BDA_TEXT_ORIENT_DYNAMIC 0x00020000
  94.    #define BDA_TEXT_ORIENT_CONTEXT 0x00020000
  95.    
  96.    #define BDA_NUMERALS_NOMINAL    0x00000000
  97.    #define BDA_NUMERALS_PASSTHRU   0x00001000
  98.    #define BDA_NUMERALS_NATIONAL   0x00002000
  99.    #define BDA_NUMERALS_CONTEXTUAL 0x00003000
  100.    
  101.    #define BDA_SYM_SWAP_OFF        0x00000000
  102.    #define BDA_SYM_SWAP_ON         0x00000100
  103.    
  104.    #define BDA_WORD_BREAK_OFF      0x00000000
  105.    #define BDA_WORD_BREAK_ON       0x00000200
  106.    
  107.    #define BDA_TEXT_DISPLAY_SHAPED 0x00000000
  108.    #define BDA_TEXT_SAVE_SHAPED    0x00000001
  109.    #define BDA_TEXT_NOMINAL        0x00000010
  110.    #define BDA_TEXT_INITIAL        0x00000011
  111.    #define BDA_TEXT_MIDDLE         0x00000012
  112.    #define BDA_TEXT_FINAL          0x00000013
  113.    #define BDA_TEXT_ISOLATED       0x00000014
  114.    
  115.    
  116.    /************************************************************************/
  117.    /* Bidirectional attribute (BIDIATTR) as specified in a window template */
  118.    /* or in the resource script.                                           */
  119.    /************************************************************************/
  120.    #define BIDIPARAM                  PRESPARAMS
  121.    
  122.    #define PP_BDATTR_FIRST            0x100L  /* First BidiAttr PresParam  */
  123.    /*                           */
  124.    #define PP_BDATTR_ALL              0x101L  /* Set ALL Bidi attrs        */
  125.    /*                           */
  126.    #define PP_BDATTR_TEXTTYPE         0x102L  /* Text/Data type            */
  127.    #define PP_BDATTR_TEXT_ORIENTATION 0x103L  /* Text Orientation          */
  128.    #define PP_BDATTR_WND_ORIENTATION  0x104L  /* Window Orientation        */
  129.    #define PP_BDATTR_NUMERALS         0x105L  /* Arabic/Hindi Numerals     */
  130.    #define PP_BDATTR_SYM_SWAP         0x106L  /* Symetric Swapping         */
  131.    #define PP_BDATTR_WORD_BREAK       0x107L  /* Word break                */
  132.    #define PP_BDATTR_TEXT_SHAPE       0x108L  /* Char Shape Determination  */
  133.    /*                           */
  134.    #define PP_BDATTR_LAST             0x108L  /* Last BidiAttr PresParam   */
  135.    /*                           */
  136.    #define PP_BDSTATUS                0x110L  /* Bidirectional status flags*/
  137.    
  138.    
  139.    /************************************************************************/
  140.    /* Values used in Set/Query Bidirectional status word                   */
  141.    /************************************************************************/
  142.    #define BDS_HKFLAG_ENG_LAYER            0x00010000
  143.    #define BDS_HKFLAG_NAT_LAYER            0x00020000
  144.    #define BDS_HKFLAG_PUSH                 0x00040000
  145.    #define BDS_HKFLAG_END_PUSH             0x00080000
  146.    #define BDS_HKFLAG_AUTO_PUSH            0x00100000
  147.    #define BDS_HKFLAG_FIELD_REV            0x00200000
  148.    #define BDS_HKFLAG_SCREEN_REV           0x00400000
  149.    #define BDS_HKFLAG_STATUS_INDICATOR     0x02000000
  150.    
  151.    #define BDS_HKFLAG_DISPLAY_SHAPED       0x04000000
  152.    #define BDS_HKFLAG_INITIAL              0x08000000
  153.    #define BDS_HKFLAG_MIDDLE               0x10000000
  154.    #define BDS_HKFLAG_FINAL                0x20000000
  155.    #define BDS_HKFLAG_ISOLATED             0x40000000
  156.    #define BDS_HKFLAG_SAVE_SHAPED          0x80000000
  157.    #define BDS_HKFLAG_ENTRY_SWITCH_UI      0x00800000
  158.    
  159.    #define BDS_FAUTOPUSH_RTL_ON            0x00000001
  160.    #define BDS_FAUTOPUSH_LTR_ON            0x00000002
  161.    #define BDS_FPUSH_ON                    0x00000004
  162.    
  163.    #define BDS_DISABLE_INPUT_PROCESSING    0x00000020
  164.    
  165.    
  166.    /************************************************************************/
  167.    /* Bidirectional status masks                                           */
  168.    /************************************************************************/
  169.    #define BDSM_HKFLAGS                    0xFE7F0000
  170.    
  171.    #define BDSM_AUTOPUSH_RTL               0x00000001
  172.    #define BDSM_AUTOPUSH_LTR               0x00000002
  173.    #define BDSM_PUSH_ON                    0x00000004
  174.    
  175.    #define BDSM_DISABLE_INPUT_PROCESSING   0x00000020
  176.    
  177.    #define BDSM_ALL           ( BDSM_HKFLAGS      |                \
  178.    BDSM_AUTOPUSH_RTL |                \
  179.    BDSM_AUTOPUSH_LTR |                \
  180.    BDSM_PUSH_ON      |                \
  181.    BDSM_DISABLE_INPUT_PROCESSING )
  182.    
  183.    
  184.    /************************************************************************/
  185.    /* Functions to Set/Query Bidirectional Langugage Information           */
  186.    /************************************************************************/
  187.    #define  LI_BD_PROCESS_ATTR   0x00000010L /* Process Bidi attributes    */
  188.    #define  LI_BD_PROCESS_STAT   0x00000011L /* Process Bidi attributes    */
  189.    #define  LI_BD_WND_ATTR       0x00000020L /* Window Bidi Attributes     */
  190.    #define  LI_BD_WND_STAT       0x00000021L /* Window Bidi Status         */
  191.    #define  LI_BD_CLIP_ATTR      0x00000030L /* Clipboard Bidi Attributes  */
  192.    #define  LI_BD_CLIP_CONV_ATTR 0x00000031L /* Clipboard Conversion Bidi Attributes  */
  193.    
  194.    
  195.    
  196.    /* Values used in WinSet/QueryLangInfo (in flFlags); */
  197.    #define LIF_NO_SENDMSG      0x00000001     /* No message is sent to the */
  198.    /* window to inform it of the*/
  199.    /* change                    */
  200.    #define LIF_CHILD_INHERIT   0x00000002     /* Send SetBidiAttr msg to   */
  201.    /* all child windows.        */
  202.    #define LIF_WND_REFRESH     0x00000004     /* Refresh all windows whose */
  203.    /* bidi attributes are set   */
  204.    /* directly by the API (and  */
  205.    /* not by a sent message.    */
  206.    
  207.    
  208.    
  209.    
  210.    /************************************************************************/
  211.    /* Flags for WinSetKbdLayer                                             */
  212.    /************************************************************************/
  213.    #define SKLF_SENDMSG 0x00000001
  214.    
  215.    /************************************************************************/
  216.    /* Keyboard layers for WinSetKbdLayer                                   */
  217.    /************************************************************************/
  218.    #define KL_LATIN     0x00000000
  219.    #define KL_NATIONAL  0x00000001
  220.    
  221.    /************************************************************************/
  222.    /* Keyboard layouts for WinSetKbdLayout                                 */
  223.    /************************************************************************/
  224.    #define KBDL_VKEY               1   /* VKey                              */
  225.    #define KBDL_BE                 2   /* Belgium        - 120              */
  226.    #define KBDL_CF                 3   /* Canadian       - 058 French       */
  227.    #define KBDL_DK                 4   /* Denmark        - 159              */
  228.    #define KBDL_FR                 5   /* France         - 189              */
  229.    #define KBDL_GR                 6   /* Germany        - 129              */
  230.    #define KBDL_DE                 6   /* Germany        - 129              */
  231.    #define KBDL_IT                 7   /* Italy          - 141              */
  232.    #define KBDL_LA                 8   /* Latin America  - 171              */
  233.    #define KBDL_NL                 9   /* Netherlands    - 143              */
  234.    #define KBDL_NO                10   /* Norway         - 155              */
  235.    #define KBDL_PO                11   /* Portugal       - 163              */
  236.    #define KBDL_SF                12   /* Swiss-French   - 150f             */
  237.    #define KBDL_SG                13   /* Swiss-German   - 150d             */
  238.    #define KBDL_ES                14   /* Spain          - 172              */
  239.    #define KBDL_FI                15   /* Finland        - 153              */
  240.    #define KBDL_SV                16   /* Sweden         - 153              */
  241.    #define KBDL_UK                17   /* United Kingdom - 166              */
  242.    #define KBDL_US                18   /* United States  - 103p             */
  243.    #define KBDL_FR120             19   /* French         - 120              */
  244.    #define KBDL_IT142             20   /* Italian        - 142              */
  245.    #define KBDL_UK168W            21   /* United Kingdom - 168              */
  246.    #define KBDL_TR                22   /* Turkey         - 179              */
  247.    #define KBDL_CZ                23   /* Czech          - 243              */
  248.    #define KBDL_SK                24   /* Slovakia       - 245              */
  249.    #define KBDL_HU                25   /* Hungarian      - 208              */
  250.    #define KBDL_HR                26   /* Croatia        - 234              */
  251.    #define KBDL_PL                27   /* Poland         - 163              */
  252.    #define KBDL_IS                28   /* Iceland        - 197              */
  253.    #define KBDL_BR                29   /* Brazil         - 275              */
  254.    #define KBDL_HE_LATIN          30   /* Hebrew         - 212 Latin        */
  255.    #define KBDL_HE_NATIONAL       31   /* Hebrew         - 212 Hebrew       */
  256.    #define KBDL_AR_LATIN          32   /* Arabic         - 238 Latin        */
  257.    #define KBDL_AR_NATIONAL       33   /* Arabic         - 238 Arabic       */
  258.    #define KBDL_BR274             34   /* Brazil         - 274              */
  259.    #define KBDL_GK_LAT319         35   /* Greek          - 319 Latin        */
  260.    #define KBDL_GK_NAT319         36   /* Greek          - 319 Greek        */
  261.    #define KBDL_GK_LAT220         37   /* Greek          - 220 Latin        */
  262.    #define KBDL_GK_NAT220         38   /* Greek          - 220 Greek        */
  263.    #define KBDL_AR_LAT470         39   /* Arabic         - 470 Latin        */
  264.    #define KBDL_AR_NAT470         40   /* Arabic         - 470 Arabic       */
  265.    #define KBDL_TR440             41   /* Turkey         - 440              */
  266.    #define KBDL_SL                42   /* Slovenia       - 234              */
  267.    #define KBDL_RO                43   /* Romania        - 446              */
  268.    #define KBDL_BG_NATIONAL       44   /* Bulgaria       - 442 Cyrillic     */
  269.    #define KBDL_BG_LATIN          45   /* Bulgaria       - 442 Latin        */
  270.    #define KBDL_MK_NATIONAL       46   /* Macedonia      - 449 Cyrillic     */
  271.    #define KBDL_MK_LATIN          47   /* Macedonia      - 449 Latin        */
  272.    #define KBDL_SR_NATIONAL       48   /* Serbia         - 450 Cyrillic     */
  273.    #define KBDL_SR_LATIN          49   /* Serbia         - 450 Latin        */
  274.    #define KBDL_RU_NATIONAL       50   /* Russia         - 441 Cyrillic     */
  275.    #define KBDL_RU_LATIN          51   /* Russia         - 441 Latin        */
  276.    #define KBDL_PL274             52   /* Poland         - 274 Programmer   */
  277.    #define KBDL_RU_NAT443         53   /* Russia         - 443 Cyrillic     */
  278.    #define KBDL_RU_LAT443         54   /* Russia         - 443 Latin        */
  279.    #define KBDL_BA                55   /* Bosnia         - 234              */
  280.    #define KBDL_SQ                56   /* Albania        - 452              */
  281.    #define KBDL_US_INTER          57   /* International  - 103              */
  282.    #define KBDL_CA                58   /* Canadian       - 445              */
  283.    #define KBDL_CA_EXTRA          59   /* Canadian       - 501              */
  284.    #define KBDL_DE453             60   /* German         - 453              */
  285.    #define KBDL_DE_EXTRA          61   /* German         - 500              */
  286.    #define KBDL_IS458             62   /* Iceland        - 458              */
  287.    #define KBDL_EE                63   /* Estonia        - 454              */
  288.    #define KBDL_TH_LATIN          64   /* Thai Kbd       - Latin for 874    */
  289.    #define KBDL_TH_PAT            65   /* Thai Kbd       - Pattachot for 874*/
  290.    #define KBDL_TH_PAT_CAP        66   /* Thai Kbd                          */
  291.    #define KBDL_TH_KES            67   /* Thai Kbd       - Kesmanee for 874 */
  292.    #define KBDL_TH_KES_CAP        68   /* Thai Kbd                          */
  293.    #define KBDL_TH_COMP_PAT       69   /* Thai Kbd       - Pattachot for 850*/
  294.    #define KBDL_TH_COMP_PAT_CAP   70   /* Thai Kbd                          */
  295.    #define KBDL_TH_COMP_KES       71   /* Thai Kbd       - Kesmanee for 850 */
  296.    #define KBDL_TH_COMP_KES_CAP   72   /* Thai Kbd                          */
  297.    #define KBDL_US_DV             73   /* US Dvorak      -                  */
  298.    #define KBDL_US_LEFT           74   /* US Left        -                  */
  299.    #define KBDL_US_RIGHT          75   /* US Right       -                  */
  300.    #define KBDL_LTL               76   /* Lithuania      - 456 - National   */
  301.    #define KBDL_LTP               77   /* Lithuania      - 456 - Programmer */
  302.    #define KBDL_LVL               78   /* Latvia 455     - 455 - National   */
  303.    #define KBDL_LVP               79   /* Latvia 455     - 455 - Programmer */
  304.    #define KBDL_JALPHANUMERIC     80   /* Japan Latin                       */
  305.    #define KBDL_JP                80
  306.    #define KBDL_JKATAKANA         81   /* Japan Katakana                    */
  307.    #define KBDL_JKATAKANAROMAN    82   /* Japan Katakana Romanji            */
  308.    #define KBDL_JHIRAGANA         83   /* Japan Hiragana                    */
  309.    #define KBDL_JHIRAGANAROMAN    84   /* Japan Hiragana Romanji            */
  310.    #define KBDL_JCAPSALPHANUMERIC 85
  311.    #define KBDL_KALPHANUMERIC     86   /* Korean                            */
  312.    #define KBDL_KR                86
  313.    #define KBDL_KJAMO             87   /* Korean national layer             */
  314.    #define KBDL_SALPHANUMERIC     88   /* Simplified Chinese                */
  315.    #define KBDL_TALPHANUMERIC     89   /* Traditional Chinese               */
  316.    #define KBDL_TW                89
  317.    #define KBDL_BYL               90   /* Belarus 463    - 463 - Latin      */
  318.    #define KBDL_BYC               91   /* Belarus 463    - 463 - Cyrillic   */
  319.    #define KBDL_UAL               92   /* Ukraine 465    - 465 - Latin      */
  320.    #define KBDL_UAU               93   /* Ukraine 465    - 465 - Ukraine    */
  321.    
  322.    
  323.    /************************************************************************/
  324.    /* Defines for use in WinQueryCpType                                    */
  325.    /************************************************************************/
  326.    #define CPTYPE_OTHER          1   /* Latin 1 */
  327.    #define CPTYPE_ARABIC         2
  328.    #define CPTYPE_BALTIC         3
  329.    #define CPTYPE_CYRILLIC       4
  330.    #define CPTYPE_GREEK          5
  331.    #define CPTYPE_HEBREW         6
  332.    #define CPTYPE_JAPANESE       7
  333.    #define CPTYPE_KOREAN         8
  334.    #define CPTYPE_LATIN2         9
  335.    #define CPTYPE_SCHINESE       10
  336.    #define CPTYPE_TCHINESE       11
  337.    #define CPTYPE_THAI           12
  338.    #define CPTYPE_TURKISH        13
  339.    #define CPTYPE_UNICODE        14
  340.    #define HMQ_SYSTEM            (HMQ)0
  341.    
  342.    
  343.    /************************************************************************/
  344.    /* PM Bidirectional support - function prototypes.                      */
  345.    /************************************************************************/
  346.    #define  WinSetLangInfo       Win32SetLangInfo
  347.    #define  WinQueryLangInfo     Win32QueryLangInfo
  348.    
  349.    #define  WinSetKbdLayout      Win32SetKbdLayout
  350.    #define  WinQueryKbdLayout    Win32QueryKbdLayout
  351.    
  352.    #define  WinSetKbdLayer       Win32SetKbdLayer
  353.    #define  WinQueryKbdLayer     Win32QueryKbdLayer
  354.    
  355.    #define  WinSetLangViewer     Win32SetLangViewer
  356.    #define  WinQueryLangViewer   Win32QueryLangViewer
  357.    
  358.    #define  GpiSetBidiAttr       Gpi32SetBidiAttr
  359.    #define  GpiQueryBidiAttr     Gpi32QueryBidiAttr
  360.    
  361.    
  362.    ULONG   APIENTRY WinSetLangInfo     ( HWND    hwnd,
  363.                                         ULONG   ulEffect,
  364.                                         ULONG   ulData,
  365.                                         ULONG   flMask,
  366.                                         ULONG   flFlags,
  367.                                         ULONG   ulReserved );
  368.    
  369.    ULONG   APIENTRY WinQueryLangInfo   ( HWND    hwnd,
  370.                                         ULONG   ulEffect,
  371.                                         ULONG   flFlags,
  372.                                         ULONG   ulReserved );
  373.    
  374.    ULONG   APIENTRY WinSetKbdLayer     ( HWND hwnd,
  375.                                         ULONG idKbdLayer,
  376.                                         ULONG flFlags);
  377.    ULONG   APIENTRY WinQueryKbdLayer   ( HWND hwnd );
  378.    
  379.    ULONG   APIENTRY WinQueryKbdLayout  ( HWND hwndDesktop );
  380.    
  381.    BOOL    APIENTRY WinSetKbdLayout(     HWND hwndDesktop,
  382.                                     ULONG idKbdLayout);
  383.    
  384.    HWND    APIENTRY WinSetLangViewer   ( HAB hab,
  385.                                         HWND hwndLangViewer,
  386.                                         ULONG Codepage);
  387.    HWND    APIENTRY WinQueryLangViewer ( HAB hab,
  388.                                         ULONG Codepage );
  389.    
  390.    ULONG   APIENTRY GpiSetBidiAttr     ( HPS  hps,
  391.                                         ULONG BidiAttr );
  392.    ULONG   APIENTRY GpiQueryBidiAttr   ( HPS  hps );
  393.    
  394.    ULONG   APIENTRY WinQueryCpType     ( HMQ hmq );
  395.    
  396.    /*****************************************************************************/
  397.    /*  Macros to manipulate Bidi values                                         */
  398.    /*****************************************************************************/
  399.    /*
  400.    * Macro to make a BidiAttribute/Status ULONG from several fields
  401.    *
  402.    * Example :      SET_BD_VALUE(BidiAtts,
  403.    *                             BDA_TEXT_ORIENT_RTL   | BDA_TEXTTYPE_IMPLICIT,
  404.    *                             BDAM_TEXT_ORIENTATION | BDAM_TEXTTYPE)
  405.    *
  406.    */
  407.    #define SET_BD_VALUE(BidiValue,NewBidiValue,Mask) \
  408.    (BidiValue = ((BidiValue & (~(Mask))) | (NewBidiValue & (Mask))))
  409.    
  410.    /*
  411.    * Macro to extract one or more fields from a BidiAttribute/Status ULONG
  412.    *
  413.    * Example :      Orientation = QUERY_BD_VALUE(BidiAtts,BDAM_TEXT_ORIENTATION)
  414.    *
  415.    */
  416.    #define QUERY_BD_VALUE(BidiValue,Mask) \
  417.    ( ((ULONG)BidiValue) & ((ULONG)Mask) )
  418.    
  419.    
  420.    /************************************************************************/
  421.    /* New CURSOR flags for Left-To-Right and Right-To-Left cursors         */
  422.    /* These are in addtion to those in the CURSOR section in PMWIN.H       */
  423.    /************************************************************************/
  424.    #define CURSOR_DIR       0x0100
  425.    #define CURSOR_DIR_LTR   0x0100
  426.    #define CURSOR_DIR_RTL   0x0300
  427.    
  428.    
  429.    /*****************************************************************************/
  430.    /*  PM Bidi Error codes.                                                     */
  431.    /*****************************************************************************/
  432.    #define PMERR_BIDI_FIRST               0x10F0
  433.    #define PMERR_BIDI_TEXT_CONV_FAILED    0x10F0
  434.    #define PMERR_BIDI_LAST                0x10FF
  435.    
  436.    /*****************************************************************************/
  437.    /* Bidi virtual key definitions                                              */
  438.    /*****************************************************************************/
  439.    
  440.    #define VK_BIDI_FIRST          0xE0
  441.    
  442.    #define VK_START_PUSH          0xE0
  443.    #define VK_END_PUSH            0xE1
  444.    #define VK_REVERSE_FIELD       0xE2
  445.    #define VK_REVERSE_WINDOW      0xE3
  446.    #define VK_AUTOPUSH            0xE4
  447.    #define VK_STATUS_INDICATOR    0xE5
  448.    
  449.    #define VK_TEXT_DISPLAY_SHAPED 0xE6
  450.    #define VK_TEXT_INITIAL        0xE7
  451.    #define VK_TEXT_MIDDLE         0xE8
  452.    #define VK_TEXT_FINAL          0xE9
  453.    #define VK_TEXT_ISOLATED       0xEA
  454.    #define VK_TEXT_SAVE_SHAPED    0xEB
  455.    
  456.    #define VK_REQUIRED_SPACE      0xEC
  457.    #define VK_LTR_MARKER          0xED
  458.    #define VK_RTL_MARKER          0xEE
  459.    
  460.    #define VK_ENTRY_SWITCH_UI     0xEF
  461.    
  462.    #define VK_LAYER0              0xF0
  463.    #define VK_LAYER1              0xF1
  464.    #define VK_LAYER2              0xF2
  465.    #define VK_LAYER3              0xF3
  466.    #define VK_LATIN_LAYER         VK_LAYER0
  467.    #define VK_NATIONAL_LAYER      VK_LAYER1
  468.    
  469.    #define VK_BIDI_LAST           0xFF
  470.    
  471.    
  472.    #ifdef INCL_WINSTDDLGS   /* StdDlgs related Bidi Definitions             */
  473.       /************************************************************************/
  474.       /*  Language-sensitive definition for standard File and Font dialogs.   */
  475.       /************************************************************************/
  476.       #define FNTS_NATIONAL_LANGUAGE   0x80000000L /* Use National Language */
  477.       #define FDS_NATIONAL_LANGUAGE    0x80000000L /* Use National Language */
  478.       
  479.       
  480.       /************************************************************************/
  481.       /*  WM_ messages related to bidirectional language support for          */
  482.       /*      CUATOOLS components.                                            */
  483.       /************************************************************************/
  484.       #define CM_SETITEMBIDIATTR             0x0390
  485.       #define CM_SETFIELDBIDIATTR            0x0391
  486.       #define CM_QUERYITEMBIDIATTR           0x0392
  487.       #define CM_QUERYFIELDBIDIATTR          0x0393
  488.       
  489.       #define BKM_SETSTATUSLINEBIDIATTR      0x0394
  490.       #define BKM_QUERYSTATUSLINEBIDIATTR    0x0395
  491.       #define BKM_SETTABTEXTBIDIATTR         0x0396
  492.       #define BKM_QUERYTABTEXTBIDIATTR       0x0397
  493.       
  494.       #define VM_SETITEMBIDIATTR             0x0398
  495.       #define VM_QUERYITEMBIDIATTR           0x0399
  496.       
  497.       
  498.       
  499.       typedef struct _BD_ATTR_MASK      /* bam */
  500.       {
  501.          ULONG ulBdAttr;              /* Bidirectional Attributes word */
  502.          ULONG ulBdMask;              /* Bitmask to define which bidi  */
  503.       } BD_ATTR_MASK;                   /* attributes are to be used.    */
  504.       typedef BD_ATTR_MASK *PBD_ATTR_MASK;
  505.       
  506.       /**********************************************************************/
  507.       /* BOOKPAGEBIDIINFO structure is pointed to from the BOOKPAGEINFO     */
  508.       /* structure (BKM_SETPAGEINFO notebook message)                       */
  509.       /**********************************************************************/
  510.       typedef struct _BOOKPAGEBIDIINFO  /* bkpgbdi */
  511.       {
  512.          BD_ATTR_MASK bamMajorTab;    /* Major Tab Text BD_ATTR_MASK struct.   */
  513.          BD_ATTR_MASK bamMinorTab;    /* Minor Tab Text BD_ATTR_MASK struct.   */
  514.          BD_ATTR_MASK bamStatusLine;  /* Status Line Text BD_ATTR_MASK struct. */
  515.       } BOOKPAGEBIDIINFO;
  516.       typedef BOOKPAGEBIDIINFO *PBOOKPAGEBIDIINFO;
  517.       
  518.       
  519.    #endif /*INCL_WINSTDDLGS */
  520.    
  521. #endif  /*PM_BIDI_INCLUDED*/    /* Eliminate multiple definitions... */
  522.