home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / TCXOS2.ZIP / TCXLOS2.TXT < prev    next >
Text File  |  1991-11-05  |  432KB  |  13,593 lines

  1.  
  2.  
  3.  
  4.             The TesSeRact CXL User Interface Development System
  5.  
  6.                       Version 5.52 -- March 15, 1991
  7.  
  8.                     TCXL-OS/2 for OS/2 Character Mode
  9.  
  10.  
  11.   Copyright 1987-91, Innovative Data Concepts, Inc.
  12.   All Rights Reserved
  13.  
  14.  
  15.   Innovative Data Concepts, Inc.
  16.   122 North York Road
  17.   Suite 5
  18.   Hatboro, PA 19040
  19.   Voice:  1-215-443-9705
  20.   Orders: 1-800-926-4551
  21.   FAX:    1-215-443-9753
  22.  
  23.  
  24. TCXL is  part of  IDC's TesSeRact  Development Tools series of programmer's
  25. products.
  26.  
  27.  
  28.  
  29.                              Acknowledgements
  30.  
  31.  
  32. Thanks to my loving wife Anne Marie, without whom life would be nothing.
  33.  
  34. A very special thanks to Tina, who keeps this place running.
  35.  
  36. My good  friend Michael  Mohle' slaved  over the code and made it all work.
  37. Michael has  been a  heavy-duty  trooper  throughout  the  development  and
  38. enhancement of  this product,  and deserves every bit of thanks he can get.
  39. Most of  TCXL's  flexibility  and  portability  is  due  to  his  years  of
  40. experience in the industry.
  41.  
  42. And we must not forget Mike Smedley, who developed the initial CXL product,
  43. and without whom TCXL would never have existed.
  44.  
  45. Without beta testers, where are we in this business?  I've had a great crew
  46. for TCXL,  much too  numerous to  mention individually.   But a few deserve
  47. extra kudos:
  48.  
  49.   Doug MacLean, who selflessly gave his time and effort as needed.
  50.   Dave Seidel,  who found more critters than we wanted him to, and received
  51.      the "Golden Cockroach" award for his trouble.
  52.   Ed Mulroy, who called at ungodly hours while writing batch files.
  53.   Peter Schultz,  for requesting enhancements, providing the code for them,
  54.      and then  reporting bugs in the way they worked because he changed his
  55.      mind!
  56.   Mike Burns,  for finding  a few problems that were causing us to lose our
  57.      hair.
  58.   And we must mention Gary Weinfurther, who kept finding those little gnats
  59.      even after we thought the code was finished.
  60.   What about  Eric Irwin  and Mark  Engbretson, who  worked so hard to find
  61.      those last few inconsistencies.
  62.   Last, but certainly not least, Richard Herzog and his hardware ....
  63.  
  64. Thanks, everyone!
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83. Page ii                                  TesSeRact CXL V5.52 Documentation
  84. This  document;   other  accompanying  written  and  disk-based  notes  and
  85. specifications; and  all referenced  and related program files accompanying
  86. this document  are copyrighted  by Innovative  Data Concepts.  For ordering
  87. information, see  the ORDER.DOC  file provided  with  this  package.    For
  88. shareware distribution requirements, see the VENDOR.DOC file.
  89.  
  90.  
  91.                _______
  92.           ____|__     |               (R)
  93.        --|       |    |-------------------
  94.          |   ____|__  |  Association of
  95.          |  |       |_|  Shareware
  96.          |__|   o   |    Professionals
  97.        -----|   |   |---------------------
  98.             |___|___|    MEMBER
  99.  
  100.  
  101. The DOS  versions of  the TesSeRact  Development Tools  are distributed  as
  102. shareware --  this means  that we  encourage users, subject to restrictions
  103. described in  the License  Agreement, to  share copies of this program with
  104. friends, associates  and bulletin boards.  You may not share the registered
  105. version of The TesSeRact Development Tools; however, you may request a free
  106. shareware disk by completing the form in VENDOR.DOC.
  107.  
  108. If you  make copies of the shareware distribution versions of the TesSeRact
  109. Development Tools,  you must include all files in the original distribution
  110. files, as  well as  the documentation  archive.   You are  not permitted to
  111. distribute the TesSeRact Development Tools without this documentation.
  112.  
  113. Innovative Data Concepts, Inc., is a member of the Association of Shareware
  114. Professionals.   The  ASP  has  established  stringent  standards  for  its
  115. members.   ASP wants  to make  sure that  the shareware principle works for
  116. you.  If you are unable to resolve a problem with an ASP member (other than
  117. technical support),  ASP may  be able  to help.   Please  write to  the ASP
  118. Ombudsman at P.O. Box 5786, Bellevue, WA 98006.
  119.  
  120. Trademarks
  121.  
  122.   SWAPSK, SWAPSP,  SWAPTN, SWAPMT,  SWAPMM, SWAPSH,  SWAPDT, SWAPNG and The
  123.      SWAP Utilities are trademarks of Innovative Data Concepts.
  124.   TesSeRact  and   The  TesSeRact   Development  Tools  are  trademarks  of
  125.      Innovative Data Concepts
  126.   CompuServe is a registered trademark of CompuServe Incorporated.
  127.   DESQview is a trademark of Quarterdeck Office Systems.
  128.   Epson is a registered trademark of Seiko Epson Corporation.
  129.   IBM is a registered trademark of International Business Machines.
  130.   LIM and EMS are trademarks of Lotus, Intel, and Microsoft Corporations.
  131.   Lotus is a registered trademark of Lotus Development Corporation.
  132.   Microsoft and Xenix are registered trademarks of Microsoft Corporation.
  133.   Turbo C and Turbo C++ are registered trademarks of Borland International.
  134.   UltraVision is a trademark of Personics, Inc.
  135.   Unix is a registered trademark of American Telegraph and Telephone, Inc.
  136.   Zortech is a trademark of Zortech Inc.
  137.  
  138.  
  139.  
  140.  
  141.  
  142. TesSeRact CXL V5.52 Documentation                                 Page iii
  143.                              Table of Contents
  144.  
  145.      Index of Functions................................................vii
  146.      Alphabetical Index of Functions....................................xi
  147.  General Information.....................................................1
  148.  Features Overview.......................................................2
  149.      General System Features.............................................2
  150.      TCXL-DOS Features...................................................3
  151.      Supported Standards For DOS.........................................3
  152.  Technical Support.......................................................4
  153.      Bug Fixes, Updates, Etc.............................................4
  154.  About Innovative Data Concepts..........................................4
  155.      IDC Products........................................................5
  156.  Using Library Functions.................................................5
  157.          Portability and Shorthand Notation..............................6
  158.      Naming Conventions..................................................7
  159.          Standard IDC Types..............................................8
  160.          IDC-specific type-aliases.......................................8
  161.          Common Function Pointer Types...................................8
  162.  Installation............................................................9
  163.      Converting Code From CXL 5.x........................................9
  164.      Converting Code From TCXL 5.51......................................9
  165.      Compiling and Linking...............................................9
  166.      Library Organization...............................................10
  167.      Future Planning....................................................11
  168.  Using the TCXL Systems.................................................12
  169.      OverView...........................................................12
  170.          Initialization Equates.........................................13
  171.          Initialization Routines........................................14
  172.      Menu System........................................................18
  173.          Menu System Equates............................................20
  174.          Menu System Example............................................22
  175.          Menu System Routines...........................................25
  176.              Menu and Item Definition...................................25
  177.              Menu Operation.............................................33
  178.              Menu Internals.............................................37
  179.      Entry System.......................................................38
  180.          Format Control Characters......................................42
  181.          Entry System Equates...........................................43
  182.          Entry System Example...........................................45
  183.          Entry System Routines..........................................47
  184.              Form and Field Definition..................................47
  185.              Entry Form Processing......................................52
  186.              Entry Field Processing.....................................55
  187.              Entry Internals............................................57
  188.      Help System........................................................58
  189.          Building Help Files............................................59
  190.          Help System Equates............................................60
  191.          Help System Routines...........................................61
  192.              Help Definition............................................61
  193.              Help Operation.............................................65
  194.              Help Internals.............................................69
  195.      Selection System...................................................70
  196.          Selection System Equates.......................................70
  197.          Selection System Routines......................................71
  198.              Selection Utilities........................................75
  199.              Selection Internals........................................77
  200.  
  201. Page iv                                  TesSeRact CXL V5.52 Documentation
  202.      Window System......................................................78
  203.          Window System Equates..........................................79
  204.          Window System Routines.........................................80
  205.              Error Handling Routines....................................80
  206.              General Window Control.....................................82
  207.              Active Window Movement.....................................91
  208.              Active Window Control......................................96
  209.              Active Border.............................................102
  210.              Active Shadow.............................................105
  211.              Active Cursor.............................................106
  212.              Line Drawing..............................................108
  213.              Active Window Output......................................111
  214.              Window Internals..........................................119
  215.      Input System......................................................121
  216.          Input System Routines.........................................121
  217.      Strings System....................................................128
  218.          Strings System Routines.......................................128
  219.              Trimming..................................................128
  220.              Changing..................................................129
  221.              Checksum..................................................130
  222.              Delete/Insert.............................................130
  223.              Inclusion.................................................132
  224.              Replacement...............................................133
  225.              Substrings................................................134
  226.              Justification.............................................135
  227.              Matching..................................................136
  228.              Miscellaneous.............................................137
  229.      Cursor Control System.............................................139
  230.          Cursor Equates................................................139
  231.          Cursor Control Routines.......................................140
  232.              Mouse Cursor..............................................140
  233.              Display Cursor............................................141
  234.          Mouse Control Routines........................................142
  235.      Format Control Subsystem..........................................144
  236.          National Language Support.....................................145
  237.          Format Control Equates........................................146
  238.          NLS Routines..................................................149
  239.          Format Control Routines.......................................150
  240.      Selection Engine Subsystem........................................156
  241.          Selection Equates.............................................156
  242.          Selection Engine Routines.....................................157
  243.      Display Subsystem.................................................158
  244.          Display Equates...............................................158
  245.          Display Routines..............................................160
  246.              Video Control.............................................160
  247.              Boxes, Clearing and Filling...............................161
  248.              Cursor Control............................................166
  249.              Attribute Control.........................................169
  250.              Video Input...............................................171
  251.              Video Output..............................................173
  252.      Event Subsystem...................................................178
  253.          Event Routines................................................178
  254.              Asynchronous Input........................................178
  255.              Input With No Echo........................................183
  256.              TCXL Keyboard Queue.......................................185
  257.      Utility Subsystem.................................................187
  258.          Utility Routines..............................................187
  259.  
  260. TesSeRact CXL V5.52 Documentation                                   Page v
  261.      Opsys Subsystem...................................................191
  262.          Opsys Routines................................................191
  263.      Information Subsystem.............................................195
  264.          Information Equates...........................................195
  265.          Information Routines..........................................195
  266.      Near/Far Subsystem................................................199
  267.          Near/Far Routines.............................................199
  268.      Memory Subsystem..................................................201
  269.          Memory Routines...............................................201
  270.      Printer Subsystem.................................................202
  271.          Printer Routines..............................................202
  272.  Appendix A - Text Attributes..........................................206
  273.  Appendix B - Keycode Table............................................207
  274.  Appendix C - Window Output Escape Codes...............................208
  275.  Appendix D - Format Control Characters................................209
  276.  Appendix E - Movement and Editing Keys................................212
  277.  Appendix F - Global Error Codes.......................................213
  278.  Appendix G - OS/2 Specific Information................................214
  279.      Notes about compilers.............................................214
  280.      Mid-Level Mouse Functions.........................................215
  281.      IBM Enhanced Keyboard Support.....................................217
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319. Page vi                                  TesSeRact CXL V5.52 Documentation
  320.                             Index of Functions
  321.  
  322.   TcxlInit.......................14       FldDis.........................57
  323.   TcxlVer........................14       FldReq.........................57
  324.   _TcxlTerm......................15       _FldPut........................57
  325.   TcxlKeyOff.....................15       _FldSet........................57
  326.   TcxlMemOff.....................15       HlpDef.........................61
  327.   TcxlMouOff.....................15       HlpOff.........................62
  328.   TcxlNlsOff.....................15       HlpKey.........................62
  329.   TcxlVuvOff.....................16       HlpTtl.........................63
  330.   TcxlCurOff.....................16       HlpWind........................64
  331.   MemFail........................16       HlpGet.........................65
  332.   WinFail........................17       HlpAdd.........................65
  333.   MSSetEnt.......................17       HlpCur.........................66
  334.   MSSetHlp.......................17       HlpDrop........................66
  335.   MSSetMnu.......................17       HlpSet.........................67
  336.   MSSetSel.......................17       HlpPush........................67
  337.   MnuBuild.......................25       HlpPop.........................68
  338.   MnuAct.........................26       HlpAct.........................68
  339.   MnuDef.........................27       HlpClr.........................68
  340.   MnuItm.........................28       _HlpErr........................69
  341.   MnuEnd.........................29       _HlpPag........................69
  342.   MnuTxt.........................30       SelAttr........................71
  343.   ItmFun.........................31       SelFile........................72
  344.   ItmTxt.........................32       SelStr.........................74
  345.   MnuGet.........................33       SelTxt.........................75
  346.   MnuCur.........................33       SelFree........................75
  347.   ItmCur.........................34       SelBarOn.......................76
  348.   ItmLoc.........................34       SelBarOff......................76
  349.   ItmNxt.........................34       SelDirOn.......................76
  350.   ItmDsp.........................35       SelDirOff......................76
  351.   ItmDis.........................35       SelParOn.......................76
  352.   ItmEna.........................36       SelParOff......................76
  353.   ItmGet.........................36       _Select........................77
  354.   ItmSet.........................37       Wperror........................80
  355.   _ItmKey........................37       WerrMsg........................81
  356.   _ItmPtr........................37       Werror.........................81
  357.   _ItmPut........................37       Wactiv.........................82
  358.   EntBuild.......................47       WcloseAll......................82
  359.   EntDef.........................48       Windowat.......................83
  360.   EntFld.........................48       WinLoc.........................83
  361.   EntDis.........................49       Wisactiv.......................84
  362.   EntKey.........................49       Wopen..........................84
  363.   EntOpt.........................50       WpopUp.........................85
  364.   EntSep.........................50       Wsave..........................86
  365.   EntTrm.........................51       Wrestore.......................86
  366.   FldKey.........................51       Wpush..........................86
  367.   FldFun.........................52       Wpop...........................86
  368.   EntGet.........................52       WsetEsc........................87
  369.   EntCur.........................53       WsetFil........................87
  370.   EntDsp.........................53       WsetFun........................88
  371.   EntFree........................54       WsetTab........................88
  372.   EntPush........................54       WsetTxt........................88
  373.   EntPop.........................55       Wunhide........................89
  374.   FldCur.........................55       Wunlink........................89
  375.   FldLoc.........................56       Wwprints.......................90
  376.   FldChg.........................56       Wcenter........................91
  377.  
  378. TesSeRact CXL V5.52 Documentation                                 Page vii
  379.   Wclose.........................91       WchkCol.......................119
  380.   Wcopy..........................92       WchkPos.......................120
  381.   Wdrag..........................92       WchkRow.......................120
  382.   Wdump..........................93       KwGetCf.......................121
  383.   Wgrow..........................93       KvGetCf.......................121
  384.   Whandle........................94       KwGetCh.......................122
  385.   Whide..........................94       KvGetCh.......................122
  386.   Wmove..........................94       KwGetFmt......................123
  387.   Wsize..........................95       KvGetFmt......................123
  388.   Wslide.........................95       KwGetSn.......................124
  389.   Wstretch.......................96       KvGetSn.......................124
  390.   WchgAtr........................96       KwGetSt.......................125
  391.   Wclear.........................97       KvGetSt.......................125
  392.   WclrEol........................97       KwGetYn.......................126
  393.   WclrEos........................97       KvGetYn.......................126
  394.   WclrWin........................98       KwScanf.......................127
  395.   Wdepth.........................98       KvScanf.......................127
  396.   WfilBox........................99       strbtrim......................128
  397.   WlinDel.......................100       strltrim......................128
  398.   WlinIns.......................100       strtrim.......................128
  399.   WscrBox.......................101       strrtrim......................128
  400.   WscrWin.......................101       strchg........................129
  401.   Wwidth........................102       strichg.......................129
  402.   Wborder.......................102       strschg.......................129
  403.   Wbprintc......................103       strischg......................129
  404.   Wmessage......................103       strchksum.....................130
  405.   Wtitle........................104       strichksum....................130
  406.   Wshadow.......................105       strdel........................130
  407.   Wshadoff......................105       stridel.......................130
  408.   WcurGet.......................106       strdela.......................131
  409.   WcurPut.......................106       stridela......................131
  410.   Wgotoxy.......................106       strins........................131
  411.   Wpgotoxy......................107       strinc........................132
  412.   WposGet.......................107       striinc.......................132
  413.   WdrwBox.......................108       strocc........................132
  414.   WdrwHor.......................109       striocc.......................132
  415.   WdrwVer.......................110       strsocc.......................133
  416.   WdupChrA......................111       strisocc......................133
  417.   WdupChr.......................111       strsrep.......................133
  418.   WdupStrA......................112       strisrep......................133
  419.   WdupStr.......................112       strmid........................134
  420.   Wprtc.........................113       strleft.......................134
  421.   Wputc.........................113       strright......................134
  422.   Wprts.........................114       strljust......................135
  423.   Wputs.........................114       strrjust......................135
  424.   Wprtns........................115       strrol........................135
  425.   Wputns........................115       strror........................135
  426.   Wputsw........................115       strshl........................136
  427.   Wprtf.........................116       strshr........................136
  428.   Wputf.........................116       strbmatch.....................136
  429.   WprtFmt.......................117       strmatch......................137
  430.   WputFmt.......................117       strblank......................137
  431.   WprtCen.......................118       strcode.......................137
  432.   WputCen.......................118       strsetsz......................138
  433.   Wprtrj........................119       struplow......................138
  434.   Wputrj........................119       MouHide.......................140
  435.   WchkBox.......................119       MouShow.......................140
  436.  
  437. Page viii                                TesSeRact CXL V5.52 Documentation
  438.   MouPush.......................140       VsavBox.......................165
  439.   MouPop........................140       VlodBox.......................165
  440.   CurHide.......................141       VsavScr.......................165
  441.   CurShow.......................141       VlodScr.......................165
  442.   CurPush.......................141       Vsave.........................166
  443.   CurPop........................141       Vrestore......................166
  444.   CurSave.......................141       Vscroll.......................166
  445.   CurSize.......................141       VcurGet.......................166
  446.   NlsIsAlpha....................149       VcurHid.......................167
  447.   NlsIsPrint....................149       VcurPut.......................167
  448.   NlsIsLower....................149       VcurSet.......................167
  449.   NlsIsUpper....................149       VcurSiz.......................168
  450.   NlsToLower....................149       Vgotoxy.......................168
  451.   NlsToUpper....................149       VposGet.......................168
  452.   cvtic.........................150       VatrInv.......................169
  453.   cvtci.........................150       VatrMap.......................169
  454.   cvtfc.........................151       VatrRev.......................169
  455.   cvtcf.........................151       VatrSet.......................170
  456.   _FmtAttr......................151       VatrTxt.......................170
  457.   _FmtChar......................151       Vattrib.......................170
  458.   _FmtFill......................151       Vgetw.........................171
  459.   _FmtFunc......................152       Vgetc.........................171
  460.   _FmtGetc......................152       Vgets.........................171
  461.   _FmtGets......................152       Vgetb.........................172
  462.   _FmtInit......................152       Vgetv.........................172
  463.   _FmtMask......................152       Vgetsv........................172
  464.   _FmtOpts......................153       Vprintc.......................173
  465.   _FmtPuts......................153       Vputc.........................173
  466.   _FmtSeps......................153       Vprints.......................174
  467.   _FmtVali......................153       Vputs.........................174
  468.   _FmtClr.......................153       Vprintn.......................174
  469.   _FmtCpy.......................154       Vputn.........................174
  470.   _FmtCur.......................154       Vprintw.......................175
  471.   _FmtDec.......................154       Vputw.........................175
  472.   _FmtDel.......................154       Vprintb.......................175
  473.   _FmtIns.......................155       Vputb.........................175
  474.   _FmtPos.......................155       Vputv.........................176
  475.   _FmtSpa.......................155       Vputx.........................176
  476.   _NlsInit......................155       VputSpa.......................177
  477.   _NlsGet.......................155       Vputnca.......................177
  478.   _SelPag.......................157       KbndChg.......................178
  479.   _SelMou.......................157       KbndClr.......................179
  480.   VidMode.......................160       KusrClr.......................179
  481.   VidOfs........................160       KbndFre.......................179
  482.   VidParm.......................160       KusrFre.......................179
  483.   VposDec.......................161       KbndIdle......................179
  484.   VposInc.......................161       KbndMac.......................180
  485.   VsetLin.......................161       KusrMac.......................180
  486.   Vclear........................161       KbndMou.......................181
  487.   VclrBox.......................162       KbndPut.......................182
  488.   VclrEol.......................162       KbndSet.......................182
  489.   VclrScr.......................162       KusrSet.......................182
  490.   VdrwBox.......................163       KeyClear......................183
  491.   VdrwHor.......................163       KeyEvent......................183
  492.   VdrwVer.......................164       KeyGetc.......................183
  493.   VexpBox.......................164       KeyPeek.......................184
  494.   VfilBox.......................165       KeyStat.......................184
  495.  
  496. TesSeRact CXL V5.52 Documentation                                  Page ix
  497.   KeyTime.......................184       HdwNdp........................198
  498.   KeyWait.......................184       HdwMou........................198
  499.   KqueChk.......................185       HdwMdm........................198
  500.   KqueClr.......................185       HdwC40........................198
  501.   KqueGet.......................185       HdwC80........................198
  502.   KquePut.......................186       HdwM80........................198
  503.   KqueStr.......................186       HdwDrv........................198
  504.   Beep..........................187       HdwPar........................198
  505.   RandFile......................187       HdwSer........................198
  506.   Sound.........................187       MK_FP.........................199
  507.   SysDate.......................188       MK_FPT........................199
  508.   SysTime.......................188       _FarCpy.......................199
  509.   TabNxt........................189       _CpyFar.......................199
  510.   _Delay........................189       _FarGet.......................200
  511.   _StdOut.......................189       _GetFar.......................200
  512.   _StdOutS......................190       _FarPut.......................200
  513.   _Timer........................190       _PutFar.......................200
  514.   _WaitMs.......................190       _MemInit......................201
  515.   _CerrGet......................191       _MemTerm......................201
  516.   _CerrSet......................191       _LPputC.......................202
  517.   _CerrOut......................191       lcrlf.........................202
  518.   _CerrPush.....................191       lprintc.......................202
  519.   _CerrPop......................191       lprintf.......................203
  520.   _ChgDir.......................192       lprintn.......................203
  521.   _ChgDrv.......................192       lprintns......................203
  522.   _FilFnd.......................192       lprints.......................204
  523.   _FndFst.......................193       lprintsb......................204
  524.   _FndNxt.......................193       lprintsu......................204
  525.   _GetDir.......................193       scrndump......................205
  526.   _GetDtm.......................194       windump.......................205
  527.   _GetDrv.......................194       MSgoto........................215
  528.   _GetSys.......................194       MSlimit.......................215
  529.   _BioEqp.......................195       MSmove........................215
  530.   _InpByt.......................196       MSpress.......................215
  531.   _InpWrd.......................196       MSreles.......................216
  532.   _OutByt.......................196       MSreset.......................216
  533.   _OutWrd.......................196       MSspeed.......................216
  534.   _IntEna.......................196       MSstat........................216
  535.   _IntDis.......................196       MSupdat.......................216
  536.   BiosVer.......................196       KextOff.......................217
  537.   ClockCal......................197       KextOn........................217
  538.   MachId........................197       KfixOff.......................217
  539.   HdwFlg........................198       KfixOn........................217
  540.   HdwGam........................198
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555. Page x                                   TesSeRact CXL V5.52 Documentation
  556.                       Alphabetical Index of Functions
  557.  
  558.   _BioEqp.......................195       _NlsGet.......................155
  559.   _CerrGet......................191       _NlsInit......................155
  560.   _CerrOut......................191       _OutByt.......................196
  561.   _CerrPop......................191       _OutWrd.......................196
  562.   _CerrPush.....................191       _PutFar.......................200
  563.   _CerrSet......................191       _Select........................77
  564.   _ChgDir.......................192       _SelMou.......................157
  565.   _ChgDrv.......................192       _SelPag.......................157
  566.   _CpyFar.......................199       _StdOut.......................189
  567.   _Delay........................189       _StdOutS......................190
  568.   _FarCpy.......................199       _TcxlTerm......................15
  569.   _FarGet.......................200       _Timer........................190
  570.   _FarPut.......................200       _WaitMs.......................190
  571.   _FilFnd.......................192       Beep..........................187
  572.   _FldPut........................57       BiosVer.......................196
  573.   _FldSet........................57       ClockCal......................197
  574.   _FmtAttr......................151       CurHide.......................141
  575.   _FmtChar......................151       CurPop........................141
  576.   _FmtClr.......................153       CurPush.......................141
  577.   _FmtCpy.......................154       CurSave.......................141
  578.   _FmtCur.......................154       CurShow.......................141
  579.   _FmtDec.......................154       CurSize.......................141
  580.   _FmtDel.......................154       cvtcf.........................151
  581.   _FmtFill......................151       cvtci.........................150
  582.   _FmtFunc......................152       cvtfc.........................151
  583.   _FmtGetc......................152       cvtic.........................150
  584.   _FmtGets......................152       EntBuild.......................47
  585.   _FmtInit......................152       EntCur.........................53
  586.   _FmtIns.......................155       EntDef.........................48
  587.   _FmtMask......................152       EntDis.........................49
  588.   _FmtOpts......................153       EntDsp.........................53
  589.   _FmtPos.......................155       EntFld.........................48
  590.   _FmtPuts......................153       EntFree........................54
  591.   _FmtSeps......................153       EntGet.........................52
  592.   _FmtSpa.......................155       EntKey.........................49
  593.   _FmtVali......................153       EntOpt.........................50
  594.   _FndFst.......................193       EntPop.........................55
  595.   _FndNxt.......................193       EntPush........................54
  596.   _GetDir.......................193       EntSep.........................50
  597.   _GetDrv.......................194       EntTrm.........................51
  598.   _GetDtm.......................194       FldChg.........................56
  599.   _GetFar.......................200       FldCur.........................55
  600.   _GetSys.......................194       FldDis.........................57
  601.   _HlpErr........................69       FldFun.........................52
  602.   _HlpPag........................69       FldKey.........................51
  603.   _InpByt.......................196       FldLoc.........................56
  604.   _InpWrd.......................196       FldReq.........................57
  605.   _IntDis.......................196       HdwC40........................198
  606.   _IntEna.......................196       HdwC80........................198
  607.   _ItmKey........................37       HdwDrv........................198
  608.   _ItmPtr........................37       HdwFlg........................198
  609.   _ItmPut........................37       HdwGam........................198
  610.   _LPputC.......................202       HdwM80........................198
  611.   _MemInit......................201       HdwMdm........................198
  612.   _MemTerm......................201       HdwMou........................198
  613.  
  614. TesSeRact CXL V5.52 Documentation                                  Page xi
  615.   HdwNdp........................198       KvGetFmt......................123
  616.   HdwPar........................198       KvGetSn.......................124
  617.   HdwSer........................198       KvGetSt.......................125
  618.   HlpAct.........................68       KvGetYn.......................126
  619.   HlpAdd.........................65       KvScanf.......................127
  620.   HlpClr.........................68       KwGetCf.......................121
  621.   HlpCur.........................66       KwGetCh.......................122
  622.   HlpDef.........................61       KwGetFmt......................123
  623.   HlpDrop........................66       KwGetSn.......................124
  624.   HlpGet.........................65       KwGetSt.......................125
  625.   HlpKey.........................62       KwGetYn.......................126
  626.   HlpOff.........................62       KwScanf.......................127
  627.   HlpPop.........................68       lcrlf.........................202
  628.   HlpPush........................67       lprintc.......................202
  629.   HlpSet.........................67       lprintf.......................203
  630.   HlpTtl.........................63       lprintn.......................203
  631.   HlpWind........................64       lprintns......................203
  632.   ItmCur.........................34       lprints.......................204
  633.   ItmDis.........................35       lprintsb......................204
  634.   ItmDsp.........................35       lprintsu......................204
  635.   ItmEna.........................36       MachId........................197
  636.   ItmFun.........................31       MemFail........................16
  637.   ItmGet.........................36       MK_FP.........................199
  638.   ItmLoc.........................34       MK_FPT........................199
  639.   ItmNxt.........................34       MnuAct.........................26
  640.   ItmSet.........................37       MnuBuild.......................25
  641.   ItmTxt.........................32       MnuCur.........................33
  642.   KbndChg.......................178       MnuDef.........................27
  643.   KbndClr.......................179       MnuEnd.........................29
  644.   KbndFre.......................179       MnuGet.........................33
  645.   KbndIdle......................179       MnuItm.........................28
  646.   KbndMac.......................180       MnuTxt.........................30
  647.   KbndMou.......................181       MouHide.......................140
  648.   KbndPut.......................182       MouPop........................140
  649.   KbndSet.......................182       MouPush.......................140
  650.   KextOff.......................217       MouShow.......................140
  651.   KextOn........................217       MSgoto........................215
  652.   KeyClear......................183       MSlimit.......................215
  653.   KeyEvent......................183       MSmove........................215
  654.   KeyGetc.......................183       MSpress.......................215
  655.   KeyPeek.......................184       MSreles.......................216
  656.   KeyStat.......................184       MSreset.......................216
  657.   KeyTime.......................184       MSSetEnt.......................17
  658.   KeyWait.......................184       MSSetHlp.......................17
  659.   KfixOff.......................217       MSSetMnu.......................17
  660.   KfixOn........................217       MSSetSel.......................17
  661.   KqueChk.......................185       MSspeed.......................216
  662.   KqueClr.......................185       MSstat........................216
  663.   KqueGet.......................185       MSupdat.......................216
  664.   KquePut.......................186       NlsIsAlpha....................149
  665.   KqueStr.......................186       NlsIsLower....................149
  666.   KusrClr.......................179       NlsIsPrint....................149
  667.   KusrFre.......................179       NlsIsUpper....................149
  668.   KusrMac.......................180       NlsToLower....................149
  669.   KusrSet.......................182       NlsToUpper....................149
  670.   KvGetCf.......................121       RandFile......................187
  671.   KvGetCh.......................122       scrndump......................205
  672.  
  673. Page xii                                 TesSeRact CXL V5.52 Documentation
  674.   SelAttr........................71       TcxlMouOff.....................15
  675.   SelBarOff......................76       TcxlNlsOff.....................15
  676.   SelBarOn.......................76       TcxlVer........................14
  677.   SelDirOff......................76       TcxlVuvOff.....................16
  678.   SelDirOn.......................76       VatrInv.......................169
  679.   SelFile........................72       VatrMap.......................169
  680.   SelFree........................75       VatrRev.......................169
  681.   SelParOff......................76       VatrSet.......................170
  682.   SelParOn.......................76       VatrTxt.......................170
  683.   SelStr.........................74       Vattrib.......................170
  684.   SelTxt.........................75       Vclear........................161
  685.   Sound.........................187       VclrBox.......................162
  686.   strblank......................137       VclrEol.......................162
  687.   strbmatch.....................136       VclrScr.......................162
  688.   strbtrim......................128       VcurGet.......................166
  689.   strchg........................129       VcurHid.......................167
  690.   strchksum.....................130       VcurPut.......................167
  691.   strcode.......................137       VcurSet.......................167
  692.   strdel........................130       VcurSiz.......................168
  693.   strdela.......................131       VdrwBox.......................163
  694.   strichg.......................129       VdrwHor.......................163
  695.   strichksum....................130       VdrwVer.......................164
  696.   stridel.......................130       VexpBox.......................164
  697.   stridela......................131       VfilBox.......................165
  698.   striinc.......................132       Vgetb.........................172
  699.   strinc........................132       Vgetc.........................171
  700.   strins........................131       Vgets.........................171
  701.   striocc.......................132       Vgetsv........................172
  702.   strischg......................129       Vgetv.........................172
  703.   strisocc......................133       Vgetw.........................171
  704.   strisrep......................133       Vgotoxy.......................168
  705.   strleft.......................134       VidMode.......................160
  706.   strljust......................135       VidOfs........................160
  707.   strltrim......................128       VidParm.......................160
  708.   strmatch......................137       VlodBox.......................165
  709.   strmid........................134       VlodScr.......................165
  710.   strocc........................132       VposDec.......................161
  711.   strright......................134       VposGet.......................168
  712.   strrjust......................135       VposInc.......................161
  713.   strrol........................135       Vprintb.......................175
  714.   strror........................135       Vprintc.......................173
  715.   strrtrim......................128       Vprintn.......................174
  716.   strschg.......................129       Vprints.......................174
  717.   strsetsz......................138       Vprintw.......................175
  718.   strshl........................136       Vputb.........................175
  719.   strshr........................136       Vputc.........................173
  720.   strsocc.......................133       Vputn.........................174
  721.   strsrep.......................133       Vputnca.......................177
  722.   strtrim.......................128       Vputs.........................174
  723.   struplow......................138       VputSpa.......................177
  724.   SysDate.......................188       Vputv.........................176
  725.   SysTime.......................188       Vputw.........................175
  726.   TabNxt........................189       Vputx.........................176
  727.   TcxlCurOff.....................16       Vrestore......................166
  728.   TcxlInit.......................14       VsavBox.......................165
  729.   TcxlKeyOff.....................15       Vsave.........................166
  730.   TcxlMemOff.....................15       VsavScr.......................165
  731.  
  732. TesSeRact CXL V5.52 Documentation                                Page xiii
  733.   Vscroll.......................166       Wprtrj........................119
  734.   VsetLin.......................161       Wprts.........................114
  735.   Wactiv.........................82       Wpush..........................86
  736.   Wborder.......................102       Wputc.........................113
  737.   Wbprintc......................103       WputCen.......................118
  738.   Wcenter........................91       Wputf.........................116
  739.   WchgAtr........................96       WputFmt.......................117
  740.   WchkBox.......................119       Wputns........................115
  741.   WchkCol.......................119       Wputrj........................119
  742.   WchkPos.......................120       Wputs.........................114
  743.   WchkRow.......................120       Wputsw........................115
  744.   Wclear.........................97       Wrestore.......................86
  745.   Wclose.........................91       Wsave..........................86
  746.   WcloseAll......................82       WscrBox.......................101
  747.   WclrEol........................97       WscrWin.......................101
  748.   WclrEos........................97       WsetEsc........................87
  749.   WclrWin........................98       WsetFil........................87
  750.   Wcopy..........................92       WsetFun........................88
  751.   WcurGet.......................106       WsetTab........................88
  752.   WcurPut.......................106       WsetTxt........................88
  753.   Wdepth.........................98       Wshadoff......................105
  754.   Wdrag..........................92       Wshadow.......................105
  755.   WdrwBox.......................108       Wsize..........................95
  756.   WdrwHor.......................109       Wslide.........................95
  757.   WdrwVer.......................110       Wstretch.......................96
  758.   Wdump..........................93       Wtitle........................104
  759.   WdupChr.......................111       Wunhide........................89
  760.   WdupChrA......................111       Wunlink........................89
  761.   WdupStr.......................112       Wwidth........................102
  762.   WdupStrA......................112       Wwprints.......................90
  763.   WerrMsg........................81
  764.   Werror.........................81
  765.   WfilBox........................99
  766.   Wgotoxy.......................106
  767.   Wgrow..........................93
  768.   Whandle........................94
  769.   Whide..........................94
  770.   Windowat.......................83
  771.   windump.......................205
  772.   WinFail........................17
  773.   WinLoc.........................83
  774.   Wisactiv.......................84
  775.   WlinDel.......................100
  776.   WlinIns.......................100
  777.   Wmessage......................103
  778.   Wmove..........................94
  779.   Wopen..........................84
  780.   Wperror........................80
  781.   Wpgotoxy......................107
  782.   Wpop...........................86
  783.   WpopUp.........................85
  784.   WposGet.......................107
  785.   Wprtc.........................113
  786.   WprtCen.......................118
  787.   Wprtf.........................116
  788.   WprtFmt.......................117
  789.   Wprtns........................115
  790.  
  791. Page xiv                                 TesSeRact CXL V5.52 Documentation
  792.  
  793.  
  794.                             General Information
  795.  
  796.  
  797. The TCXL  library is  a  supplement  to  the  ANSI-compliant  C  compiler's
  798. standard run-time  library.  With more than 375 multipurpose functions, and
  799. available on  a variety  of  hardware  and  software  platforms,  TCXL  can
  800. significantly  enhanced   programmer  productivity,   while  simultaneously
  801. improving the marketability of the final product.
  802.  
  803. TCXL Version  5.52 is  available for  DOS, OS/2 and Unix, with versions for
  804. both VMS  and 386  Protected Mode under development.  The primary advantage
  805. to using  TCXL to  develop your  software is  that you can compile and link
  806. your code  on one  platform,  and  then  bring  your  source  code  without
  807. modification to  a different  platform  supported  by  TCXL,  and  have  it
  808. compile/link/run successfully!
  809.  
  810. In  contrast   with  other  programmer's  packages  available  on  multiple
  811. platforms, TCXL  is not written in 100% C code.  Writing all (or mostly) in
  812. C does  make porting  a library easier, but it certainly causes performance
  813. to suffer.
  814.  
  815. TCXL is  written in  highly-optimized C  code, with  virtually all  of  its
  816. hardware-related functions  written in  assembler.   The library  has  been
  817. designed in  a hierarchical  fashion, with  different levels  designed  for
  818. development.
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850. TesSeRact CXL V5.52 Documentation                                   Page 1
  851.                              Features Overview
  852.  
  853.                           General System Features
  854.  
  855. »»     Customized Bar Menus
  856.   You can  easily create  pop-up, pull-down, and Lotus-style menus, as well
  857.   as any  other custom  menu that  you can  define.   Features  full  mouse
  858.   support, nonselectable items, global hot keys, and more.
  859.  
  860. »»     Multi-Field Formatted Data Entry
  861.   You can create data entry forms that consist of one or more input fields.
  862.   You have  full control  over user  input and can tie validation functions
  863.   into each  input  field.    Features  alpha  and  numeric  justification,
  864.   capitalization conversion,  formatting characters, and a large assortment
  865.   of editing  keys.   You may  also tie  each field  to a hot-key, and move
  866.   between fields using a mouse.  With Version 5.52, you can disable fields,
  867.   make them  "required" for  input, or  even  page  through  records  of  a
  868.   database!
  869.  
  870. »»     Context-Sensitive Help
  871.   Help files  are indexed for speed and categories can be cross-referenced.
  872.   Help can  be applied  at the  global, window,  menu item, and input field
  873.   levels.
  874.  
  875. »»     Powerful Selection Capabilities
  876.   TCXL has  scrollable pick  menus, that  allow you to pick one item from a
  877.   list of  items.   Features full  mouse support and scroll bars.  There is
  878.   also a  dedicated file picker that uses this feature to let you pick from
  879.   a list  of files,  very similar  to the  way that  the Turbo C and QuickC
  880.   environments' file pickers work, and a built-in video attribute selector.
  881.  
  882. »»     Full-Featured Window Control
  883.   Allows as  many open  windows as memory permits.  Windows can be stacked,
  884.   tiled, shadowed,  moved, resized,  and changed in many other ways.  There
  885.   are more than 75 functions designed to handle windowed output.
  886.  
  887. »»     User-defined Input Features
  888.   TCXL's Input System provides a consistent interface between the hardware-
  889.   dependent input  devices and TCXL's output systems.  This system features
  890.   both formatted  and unformatted user input, with varying levels of output
  891.   control.
  892.  
  893. »»     Advanced String Manipulation
  894.   There are nearly 40 string manipulation functions that perform searching,
  895.   replacing, formatting,  conversion, rotating, shifting, pattern matching,
  896.   and other string operations.
  897.  
  898. »»     Hardware-Independent Display Control
  899.   By separating  the display  from the  video  hardware,  TCXL  allows  the
  900.   programmer direct  control of  the  display  without  device  dependence.
  901.   TCXL-DOS has  several output  methods built-in,  including direct  screen
  902.   writing, direct  screen writing with CGA snow elimination, and BIOS video
  903.   writes.   Support for the DESQview/Windows/TopView interface is automatic
  904.   when writing  direct to  the video  buffer areas.   TCXL-Unix  supports a
  905.   variety of terminal interfaces.
  906.  
  907.  
  908.  
  909. Page 2                                   TesSeRact CXL V5.52 Documentation
  910. »»     Keyboard Management
  911.   TCXL has built a hardware-independent interface for the keyboard as well.
  912.   By  using   the  built-in   upper  level  keyboard  management  routines,
  913.   applications  can   be  quickly   and  easily   moved  between  operating
  914.   environments.   Of course,  low-level keyboard  control is  available for
  915.   those who need this type of access.
  916.  
  917. »»     Automatic Mouse Support
  918.   If you  write your  program using  TCXL, the  mouse will automatically be
  919.   enabled in  Menus, Entry  Forms  and  Selection  lists.    No  programmer
  920.   knowledge or  manipulation  of  mice  is  necessary!    For  those  whose
  921.   applications require  more direct  mouse control,  TCXL can  have button-
  922.   presses translated  into keystrokes  and movements into arrow keys.  Low-
  923.   level  functions   are  provided  for  directly  manipulating  Microsoft-
  924.   compatible mice,  and TCXL  supports  both  two  and  three-button  mice.
  925.   <<Note!   TCXL-Unix  does  not  currently  support  the  mouse;  however,
  926.   development is  underway and  TCXL-Unix will have identical mouse support
  927.   in a future release!>>
  928.  
  929.                              TCXL-DOS Features
  930.  
  931. »»     Nonstandard Video Sizes
  932.   EGA 43  and VGA  50-line modes  are fully  supported  and  TCXL  provides
  933.   functions to  directly change  to and  from these  modes.   TCXL's  video
  934.   functions are  also compatible  with nonstandard modes such as 132x25 and
  935.   120x43.
  936.  
  937. »»     Expanded/Extended Memory
  938.   TCXL has a full set of routines for accessing Expanded Memory through the
  939.   EMS specification,  and for  accessing Extended  Memory through  the  XMS
  940.   specification.   TCXL will also recognize the presence of advanced memory
  941.   management schemes such as VCPI and DPMI.
  942.  
  943. »»     National Language Support
  944.   For international  developers, TCXL  5.52  adds  full  support  for  DOS'
  945.   international language character sets.  The TCXL formatted entry routines
  946.   automatically configure  themselves for  National Language  Support,  and
  947.   correctly recognize  the country,  monetary units,  yes/no  prompts,  and
  948.   more.
  949.  
  950.                         Supported Standards For DOS
  951.  
  952. TCXL  supports  all  the  current  memory  management  standards  currently
  953. available.   This includes  the DOS  Protected Mode Interface Specification
  954. (DPMI) Version  0.9, the  Virtual Control  Program Interface (VCPI) Version
  955. 1.0, the  eXtended Memory Specification (XMS) Version 2.0, and the Expanded
  956. Memory Specification (EMS) Version 4.0.  Details about these four standards
  957. are discussed in the chapter about the Memory Subsystem.
  958.  
  959. In addition,  TCXL provides  direct support  for Personics' UltraVision(TM)
  960. program.   UltraVision is an EGA/VGA video control program with support for
  961. multiple screen  fonts, multiple  screen sizes and higher resolution.  TCXL
  962. will automatically  detect the  presence of  UltraVision, and provides low-
  963. level routines  to manipulate the size of the video display (See Page (?)).
  964. For more information about UltraVision, call Personics at 1-800-445-3311 or
  965. 1-508-897-1575.
  966.  
  967.  
  968. TesSeRact CXL V5.52 Documentation                                   Page 3
  969.                              Technical Support
  970.  
  971.  
  972. The first  stop for  IDC Technical  Support is CompuServe.  Innovative Data
  973. Concepts has  a support conference on the PCVENC forum, in Subtopic 6.  All
  974. IDC shareware  products are  available for download from CompuServe in this
  975. library, and  technical  support  is  available  in  the  message  section.
  976. Contact us at 76702,1361 for technical questions, or 75300,564 for customer
  977. support.
  978.  
  979. IDC also  maintains a support conference on BIX -- JOIN ibm.pc/idc, or send
  980. BIXMail to  c.rabinowitz.   We also maintain a presence on the European CIX
  981. system -- JOIN tesseract/general, direct CIXMail to chipper.
  982.  
  983. The next  stop are the BBS networks.  IDC maintains a support conference on
  984. RIME/RelayNet, and  is active  in the  C Language  Conference.  If you have
  985. access to  FidoNet, you  can find  us in  the C Echo, as well as in the CXL
  986. Echo.
  987.  
  988. If you have access to MCIMAIL, we can be reached at 315-5415.
  989.  
  990. Many of our overseas distributors provide direct technical support to their
  991. customers.  Contact them directly.
  992.  
  993. If all else fails, send us a FAX at 1-215-443-9753, or give us a call at 1-
  994. 215-443-9705.  We'll be happy to help.
  995.  
  996.                          Bug Fixes, Updates, Etc.
  997.  
  998. A bug is a bug is a bug.  Anyone who calls it something else is just trying
  999. to hide it.
  1000.  
  1001. Perfect software  is impossible.   And with a product as complex and varied
  1002. as TCOMP,  we don't  expect  to  have  uncovered  everything  (although  we
  1003. certainly have tried!).
  1004.  
  1005. Interim source  code fixes  may be  distributed through  our network of BBS
  1006. systems around  the world.  Contact IDC Technical Support for more details,
  1007. or see the BBSLIST.DOC file that came with your product.
  1008.  
  1009.                       About Innovative Data Concepts
  1010.  
  1011.  
  1012. Innovative  Data   Concepts,  Inc.  is  a  rapidly-growing  software  firm,
  1013. dedicated  to   developing,   publishing,   distributing   and   supporting
  1014. affordable, state-of-the-art software for both professional programmers, as
  1015. well as for general users.
  1016.  
  1017. Chip Rabinowitz is IDC's Vice President of Research and Development, and is
  1018. well-known among  the industry  for his  technical expertise.    He  is  an
  1019. Assistant Sysop  on the  Computer Language  Magazine  Forum  on  CompuServe
  1020. Information  Service  and  also  provides  technical  support  for  Borland
  1021. International as  a member of "Team Borland" on their CompuServe Forums, in
  1022. the areas of Turbo C, Turbo Assembler, Turbo Debugger, SideKick ('Classic',
  1023. SK Plus and SK 2.0), Quattro Pro and Paradox.
  1024.  
  1025.  
  1026.  
  1027. Page 4                                   TesSeRact CXL V5.52 Documentation
  1028.                                IDC Products
  1029.  
  1030.  
  1031. The SWAP Utilities . . . make it possible to load many popular TSRs in less
  1032. than 8K  of your  precious DOS  memory.   With a "High-DOS" memory manager,
  1033. these resident programs require 0K of DOS memory.
  1034.  
  1035. The technology  used by  the SWAP  Utility programs may be applied to other
  1036. resident programs.   Developer's  inquiries are  welcome.   Innovative Data
  1037. Concepts is currently researching other applications of SWAP technology. If
  1038. you have any suggestions/comments, please contact IDC.
  1039.  
  1040. SWAPDOS .  . . lets you switch between two large applications, keeping your
  1041. place in  one while  working in the other.  Swap the first application (and
  1042. TSRs) drivers to EMS, XMS or disk, and load another program. Have Microsoft
  1043. Word swapped to EMS, while looking at your Lotus 1-2-3 spreadsheet.
  1044.  
  1045. The TesSeRact  Ram Resident  Development System . . . has been acclaimed by
  1046. many to be the standard toolkit for TSR development.  This toolkit provides
  1047. developers with  everything needed to create compatible TSRs that are well-
  1048. behaved in today's complex environment.
  1049.  
  1050. The TesSeRact  CXL User  Interface Development  System has  more  than  375
  1051. multipurpose functions,  designed to make building menus, data entry forms,
  1052. and complete  user  interfaces,  as  simple  as  possible.    TCXL  is  the
  1053. cornerstone of  IDC's new  TesSeRact Programmer's Power Pak, which features
  1054. data compression, device-independent printer control, and file management.
  1055.  
  1056.  
  1057.                           Using Library Functions
  1058.  
  1059.  
  1060. Every function  in this library has a corresponding prototype in one of the
  1061. distributed header  files.   In the  function  reference  portion  of  this
  1062. document, each  routine is  marked with  the appropriate  header file.  The
  1063. exception is  TCXLDEF.H, which  is automatically  included when you include
  1064. any other IDC header file.  The TCXLDEF.H file also describes which headers
  1065. #include other  header files  in a  graphic manner.   Note  that all nested
  1066. #include's are  conditionalized, you your compiler will only thrash through
  1067. each header  file ONCE,  no matter how many times you reference it within a
  1068. file.
  1069.  
  1070. The header  files are  system header  files, rather than local files; i.e.,
  1071. they should be placed in the same directory as your standard include files,
  1072. and are  referenced using  angle-brackets (<  >) instead  of quotes,  as in
  1073. previous versions.  For example:
  1074.  
  1075.   #include      <dos.h>
  1076.   #include      <stdio.h>
  1077.   #include      <TCXLwin.h>
  1078.   #include      <TCXLinp.h>
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086. TesSeRact CXL V5.52 Documentation                                   Page 5
  1087.                     Portability and Shorthand Notation
  1088.  
  1089.  
  1090. Once you  master the strong typing used by these routines, reading the code
  1091. should be  very simple.   However,  because the  code has been designed for
  1092. maximum portability,  the C  code must rely heavily on the pre-processor to
  1093. handle all the differences between compilers and operating environments.
  1094.  
  1095. Therefore, we  strongly urge  you to  study typing  and naming  conventions
  1096. described below,  as well  as the specific typedefs in TcxlDef.H.  Once you
  1097. get the hang of it, you should have little trouble.
  1098.  
  1099. One of  the first  things you  will notice  when reading the source code is
  1100. that virtually  all the  functions are  prototyped as  "CTYP".   Do not  be
  1101. confused!  CTYP does not stand for "C Language Type" -- it stands for "Call
  1102. Type".   CTYP is  a typedef,  and  under  DOS  versions  of  our  products,
  1103. translates to  the faster,  and more  efficient "pascal" calling convention
  1104. instead of the normal "cdecl" convention, where available on the particular
  1105. compiler.   The pascal keyword is not part of ANSI, and is specific to DOS-
  1106. based compilers.
  1107.  
  1108. The following  typedefs are  used internally  by the  this library for code
  1109. consistency, and to ensure that various preprocessor features are available
  1110. on all systems.  It it not necessary for your code to use these explicitly;
  1111. in fact,  even if  a function  is prototyped  using "VOID", you may use the
  1112. standard C "void" in your code without harm.
  1113.  
  1114.  
  1115. #define  CON      const
  1116. #define  CTYP     PAS                             /* compiler-dependent! */
  1117. #define  GBL      extern
  1118. #define  LCL      static
  1119. #define  REG      register
  1120. #define  SIZ(c)   sizeof(c)
  1121. #define  TYP      typedef
  1122. #define  UNS      unsigned
  1123. #define  VOID     void
  1124. #define  VOL      volatile
  1125. #define  LOOP     for(;;)               /* endless loop                  */
  1126. #ifdef   __cplusplus
  1127. #  define   NOARG                       /* remove (void) cruft for C++   */
  1128. #else
  1129. #  define   NOARG void                  /* leave (void) cruft for C      */
  1130. #endif
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145. Page 6                                   TesSeRact CXL V5.52 Documentation
  1146.                             Naming Conventions
  1147.  
  1148.  
  1149. The TesSeRact  Developers Tools  uses a  simple naming  convention for  all
  1150. structures and typedefs.  If, for example a structure is defined as "struct
  1151. Kcod", it would be typedef'd as "KcodT", and a a pointer to an object would
  1152. be "KcodP".  There are a number of reasons for this convention; the primary
  1153. onces are  portability, maintainability,  and consistency.   As an example,
  1154. see the following code fragment:
  1155.  
  1156. #include <TCXLkey.h>
  1157.  
  1158. union Kcod KbdCode;               /* keycode union declaration           */
  1159. KcodT KbdCode1;                   /* Identical declaration using typedef */
  1160. KcodP KbdPtr;                     /* pointer to keycode type             */
  1161.  
  1162. ...
  1163.  
  1164. KbdPtr = &KbdCode;                /* Assign pointer to union             */
  1165. KbdPtr = &KbdCode1;               /* same thing                          */
  1166.  
  1167.  
  1168. We are aware, however, that there is a tendency for C programmers to resist
  1169. change.   With the  coming of  C++, the success of strongly-typed languages
  1170. like Pascal,  and  the  advent  of  multiple  operating  platforms,  it  is
  1171. necessary for the modern programmer to write readable, portable, consistent
  1172. code.
  1173.  
  1174. If, however,  you prefer to use "char *" instead of "ChrP" in your function
  1175. declarations, your compiler won't complain.  So go ahead.
  1176.  
  1177. We have found, however, that after about a week, you won't want to go back.
  1178.  
  1179. If you look at the typedefs that follow, you'll note that the object always
  1180. ends with  'T', the  pointer ends  with 'P', indirect pointers end with 'I'
  1181. and far  pointers end  with FP.   All  standard IDC types use this standard
  1182. convention; therefore, simply looking at the way a variable is declared can
  1183. describe simply how it will be used.
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.  
  1201.  
  1202.  
  1203.  
  1204. TesSeRact CXL V5.52 Documentation                                   Page 7
  1205.                             Standard IDC Types
  1206.  
  1207. TYP VOID *AnyP, **AnyI;                       /* anonymous void pointer  */
  1208. TYP VOID FAR  *AnyFP;                         /* ... far-pointer         */
  1209. TYP char ChrT, *ChrP, **ChrI;                 /* 8-bit char              */
  1210. TYP ChrT FAR *ChrFP;                          /* ... far-pointer         */
  1211. TYP ChrT *StrP, **StrI;                       /* NulTerm string          */
  1212. TYP UNS char  BytT, *BytP, **BytI;            /* 8-bit unsigned byte     */
  1213. TYP BytT FAR *BytFP;                          /* ... far-pointer         */
  1214. TYP BytT FlgT, *FlgP, **FlgI;                 /* 8-bit Boolean flag      */
  1215. TYP short IntT, *IntP, **IntI;                /* 16-bit signed int       */
  1216. TYP IntT FAR *IntFP;                          /* ... far-pointer         */
  1217. TYP UNS short WrdT, *WrdP, **WrdI;            /* 16-bit unsigned word    */
  1218. TYP WrdT FAR *WrdFP;                          /* ... far-pointer         */
  1219. TYP long LngT, *LngP, **LngI;                 /* 32-bit signed long      */
  1220. TYP LngT FAR *LngFP;                          /* ... far-pointer         */
  1221. TYP UNS long DwdT, *DwdP, **DwdI;             /* 32-bit unsigned dword   */
  1222. TYP DwdT FAR *DwdFP;                          /* ... far-pointer         */
  1223. TYP float FltT, *FltP, **FltI;                /* 32-bit real             */
  1224. TYP double DblT, *DblP, **DblI;               /* 64-bit real             */
  1225. TYP WrdT LenT, *LenP, **LenI;                 /* alias for ANSI size_t   */
  1226. TYP LngT PosT, *PosP, **PosI;                 /* alias for ANSI fpos_t   */
  1227. TYP WrdT NdxT, *NdxP, **NdxI;                 /* unsigned array-indices  */
  1228. TYP IntT ArgT;                                /* bytes/chars as ints     */
  1229.  
  1230.                          IDC-specific type-aliases
  1231.  
  1232. TYP BytT AtrT, *AtrP;                             /* video attribute     */
  1233. TYP WrdT KeyT, *KeyP;                             /* keycode (char/scan) */
  1234. TYP IntT TagT, *TagP;                             /* item/field/help tag */
  1235. TYP IntT WndT, *WndP;                             /* window handle       */
  1236.  
  1237.                        Common Function Pointer Types
  1238.  
  1239. TYP VOID (CTYP *VfvCP)(NOARG);           /* VOID (CTYP *function)(NOARG) */
  1240. TYP VOID (CTYP *VfcCP)(ChrT);            /* VOID (CTYP *function)(ChrT)  */
  1241. TYP VOID (CTYP *VfiCP)(IntT);            /* VOID (CTYP *function)(IntT)  */
  1242. TYP VOID (CTYP *CfcCP)(ChrT);            /* ChrT (CTYP *function)(ChrT)  */
  1243. TYP IntT (CTYP *IfiCP)(IntT);            /* IntT (CTYP *function)(IntT)  */
  1244. TYP IntT (CTYP *IfcpCP)(ChrP);           /* IntT (CTYP *function)(ChrP)  */
  1245. TYP WrdT (CTYP *WfipCP)(IntP);           /* WrdT (CTYP *function)(IntP)  */
  1246. TYP KeyT (CTYP *KfvCP)(NOARG);           /* KeyT (CTYP *function)(NOARG) */
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263. Page 8                                   TesSeRact CXL V5.52 Documentation
  1264.                                Installation
  1265.  
  1266.  
  1267. Since installation  procedures will vary from platform to platform, see the
  1268. installation  supplement   that  came   with  your  package,  or  read  the
  1269. INSTALL.DOC file on your distribution diskettes.
  1270.  
  1271.                        Converting Code From CXL 5.x
  1272.  
  1273.  
  1274. ««DOS ONLY»»   To  convert your  existing CXL projects to use TCXL 5.52, we
  1275. have provided  RPL.EXE and  CONVERT.BAT.   See the instructions provided in
  1276. your DOC directory for full details.
  1277.  
  1278.                       Converting Code From TCXL 5.51
  1279.  
  1280.  
  1281. ««DOS ONLY»»  To convert your existing TCXL 5.51 projects to use TCXL 5.52,
  1282. we have provided RPL.EXE and UPG-552.BAT.  See the instructions provided in
  1283. your DOC directory for full details.
  1284.  
  1285.                            Compiling and Linking
  1286.  
  1287.  
  1288. Since  compiling  and  linking  are  dependent  on  your  hardware/software
  1289. environment, as  well  as  your  particular  compiler,  these  details  are
  1290. provided in  the installation  supplement that  came with  your package, or
  1291. read the INSTALL.DOC file on your distribution diskettes.
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322. TesSeRact CXL V5.52 Documentation                                   Page 9
  1323.                            Library Organization
  1324.  
  1325.  
  1326. The TCXL library is organized into various systems and subsystems.  A quick
  1327. look at the library structure can be of assistance:
  1328.  
  1329.   User Level:          Menu System
  1330.                        Entry System
  1331.                        Help System
  1332.                        Selection System
  1333.  
  1334.   Service Level:       Window System
  1335.                        Input System
  1336.                        Strings System
  1337.                        Cursor Control System
  1338.  
  1339.   Interface Level:     Format Control Subsystem
  1340.                        Selection Engine Subsystem
  1341.                        Display Subsystem
  1342.                        Event Subsystem
  1343.                        Utility Subsystem
  1344.                        OpSys Subsystem
  1345.  
  1346.   Access Level:        Information Subsystem
  1347.                        Near/Far Subsystem
  1348.                        Memory Subsystem
  1349.                        Printer Subsystem
  1350.  
  1351.   Internal Level:      Video Access Subsystem
  1352.                        Keyboard Access Subsystem
  1353.                        Mouse Access Subsystem
  1354.  
  1355.  
  1356. The User Level of TCXL provides the highest level of user support, with the
  1357. most insulation  from the  physical hardware.   The  routines at this level
  1358. were designed  to be  built entirely  upon the  lower-level systems.  These
  1359. functions are  restricted from  calling the Access Level and Internal Level
  1360. functions directly;   all  calls go through the Service and Interface Level
  1361. functions.
  1362.  
  1363. The functions available in the Service Level of the library are all utility
  1364. functions that may or may not be needed in your application.  These systems
  1365. are restricted  from calling  "up" to  the User  Level, and  "down" to  the
  1366. Internal Level.
  1367.  
  1368. The Interface  Level is  actually the  "glue" that holds the entire library
  1369. together.   There are  three basic  parts to  the Interface Level, with two
  1370. subsystems  in  each  part.    The  Format  Control  and  Selection  Engine
  1371. Subsystems provide  an interface  between the  User Level  routines and all
  1372. Input/Output.   The Display  and  Event  Subsystems  provide  an  interface
  1373. between the  Service Level  and the  Internal Level  [note here that Format
  1374. Control and  Selection Engine  also call the Display and Event Subsystems].
  1375. Finally, the  Utility and OpSys Subsystems provide an interface between the
  1376. programmer and the physical environment.
  1377.  
  1378.  
  1379.  
  1380.  
  1381. Page 10                                  TesSeRact CXL V5.52 Documentation
  1382. The Access Level consists of functions where a programmer would want direct
  1383. access to  the physical  hardware; an  example of  this is  Expanded Memory
  1384. usage on  DOS machines.   The functions at Access Level are required in all
  1385. implementations of  TCXL, even  when there  is no  equivalent functionality
  1386. (such as far pointers in a flat memory environment).
  1387.  
  1388. The Internal  Level of  TCXL is  the direct  access to the hardware that is
  1389. used by  the upper-level  systems.   The functions at the Internal Level of
  1390. TCXL should  never be  called by  user code.  The functions at the Internal
  1391. Level need  not be physically present across platforms, since they are only
  1392. called internally.
  1393.  
  1394. This library  organization has  been designed  for a  specific purpose:  To
  1395. move TCXL  to another  hardware or  software platform, we need only replace
  1396. the Internal  Level with appropriate routines, add or stub out the required
  1397. Access Level  functions, convert  the OpSys  Subsystem, and then modify the
  1398. rest of the Interface Level for the new Internal Level Routines.
  1399.  
  1400.                               Future Planning
  1401.  
  1402.  
  1403. TCXL 5.52  is Innovative  Data Concept's  second release  of this  product.
  1404. Needless to say, we have lots more planned.  TCXL 6.0 is due to be released
  1405. sometime in  the 3rd  Quarter of  1991, and will include things like a full
  1406. event-driven interface,  a configurable  printer system,  an  interface  to
  1407. graphic interfaces, and more.
  1408.  
  1409. With the  release of  version 5.52,  TCXL has  been ported  to a  number of
  1410. different operating  platforms in  text mode.   Along  with the move to the
  1411. event-driven systems  in 6.0,  we also  plan on moving to various graphical
  1412. user interfaces on our various hardware platforms.
  1413.  
  1414. We are  also planning  on extending  the product  line  horizontally,  with
  1415. things  planned  like  a  screen  designer,  virtual  memory  system,  file
  1416. management/indexing, etc.  We will keep you apprised of new developments as
  1417. they occur.
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440. TesSeRact CXL V5.52 Documentation                                  Page 11
  1441.                           Using the TCXL Systems
  1442.  
  1443.  
  1444.                                  OverView
  1445.  
  1446.  
  1447. In order to initialize the TCXL low-level routines, and correctly determine
  1448. the configuration  of the  machine  the  program  will  run  on,  you  MUST
  1449. initially  make   a  call  to  the  function  TcxlInit().    This  function
  1450. initializes the Internal Level and Access Level Subsystems.
  1451.  
  1452. In a  difference from  previous versions  under DOS, you may not initialize
  1453. the various  subsystems separately.   TcxlInit()  also sets up calls to the
  1454. at_exit  chain,   which  are   necessary  to  successfully  terminate  your
  1455. application cleanly.
  1456.  
  1457. Prior to  calling TcxlInit(),  it is possible to disable support of some of
  1458. TCXL's features  and systems.   For example, you might call TcxlMouOff() to
  1459. disable  mouse  support;  or  TcxlNlsOff()  to  disable  National  Language
  1460. Support.   A full  description of these initialization macros appear in the
  1461. function descriptions later in this manual.
  1462.  
  1463. Another pre-installation option is to set the debugging level.  If you have
  1464. compiled the  library with  debugging on  (TCXLDBG=1) the  TcxlDbg value is
  1465. initialized to display a warning box and terminate on all memory allocation
  1466. failures, as  well as window error messages.  By modifying TcxlDbg, you may
  1467. have all  window error  messages just  pop  up  a  warning  box,  and  then
  1468. continue; or turn off these diagnostic errors.
  1469.  
  1470. If the library is compiled without debugging information, the TcxlDbg value
  1471. is ignored.
  1472.  
  1473. TCXL also has various "STUB" routines, which can be used to reduce the size
  1474. of your  program if  you do  not use  or want  certain features,  i.e., the
  1475. memory system,  or the  mouse.   These stubs  provide entry  points for the
  1476. required functions that are called internally, but reduce the size of code.
  1477. Look in  the "\STB"  directory for the various stub modules, and how to use
  1478. them in conjunction with TCXL.
  1479.  
  1480.  
  1481.  
  1482.  
  1483.  
  1484.  
  1485.  
  1486.  
  1487.  
  1488.  
  1489.  
  1490.  
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499. Page 12                                  TesSeRact CXL V5.52 Documentation
  1500.                           Initialization Equates
  1501.  
  1502.  
  1503.                           _TcxlCtl Access Macros
  1504.  
  1505.           TcxlErr...........................................Error code
  1506.           TcxlDbg..........................................Debug-level
  1507.           TcxlSys...............................................System
  1508.           TcxlSvr.......................................System version
  1509.           TcxlCty.........................................Country-code
  1510.           TcxlEnv....................................Environment (DOS)
  1511.           TcxlCfg...................................Configuration bits
  1512.  
  1513.                            TcxlDbg debug levels
  1514.  
  1515.           DBG_NUL....................................No error trapping
  1516.           DBG_MEM........................Error-exit of allocation fail
  1517.           DBG_WRN..........................Warning Box on Window Error
  1518.           DBG_WER...........................Error Exit on Window Error
  1519.           DBG_WIN.............................Both window debug levels
  1520.  
  1521.                               TcxlSys values
  1522.  
  1523.           SYS_DOS.................................MS-DOS/PC-DOS/DR_DOS
  1524.           SYS_JDS............................................Japan DOS
  1525.           SYS_OS2.................................................OS/2
  1526.           SYS_XNX.........................................MS/SCO Xenix
  1527.           SYS_UNX............................................AT&T Unix
  1528.           SYS_BSD.............................................BSD Unix
  1529.           SYS_AIX..............................................IBM AIX
  1530.           SYS_VMS..............................................DEC VMS
  1531.  
  1532.                         TcxlEnv bits <MS-DOS Only>
  1533.  
  1534.           ENV_MOU................................................Mouse
  1535.           ENV_KEY....................................Enhanced keyboard
  1536.           ENV_UV...........................................UltraVision
  1537.           ENV_MEM................................TCXL memory subsystem
  1538.           ENV_ESA.............................................EISA bus
  1539.           ENV_MCA..............................................MCA bus
  1540.           ENV_NLS............................National-language support
  1541.           ENV_CUR.........................Save cursor position on exit
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558. TesSeRact CXL V5.52 Documentation                                  Page 13
  1559.                           Initialization Routines
  1560.  
  1561. ---------------------------------------------------------------------------
  1562. TcxlInit
  1563.  
  1564. Synopsis........Low-level Library Initialization.
  1565.  
  1566. Header File.....TCXLdef.h
  1567.  
  1568. Prototype.......VOID CTYP TcxlInit(NOARG);
  1569.  
  1570. Source File.....UTL\TCXLINIT.C
  1571.  
  1572. Arguments.......None
  1573.  
  1574. Returns.........None
  1575.  
  1576. Notes...........Within this function, the low-level Access Level and
  1577.                 Internal Level are initialized.  In future versions, all
  1578.                 add-in modules will also be initialized here, as well as
  1579.                 user-defined functions.  This function also sets the
  1580.                 _TcxlTerm() function as a termination function, using the
  1581.                 compiler's atexit() procedure.
  1582.  
  1583. Example.........#include <TCXLdef.h>
  1584.  
  1585.                 int main(int argc, char **argv)
  1586.                 {
  1587.                    TcxlInit();
  1588.                    ProcessMain();
  1589.                    exit(0);
  1590.                 }
  1591.  
  1592. ---------------------------------------------------------------------------
  1593. TcxlVer
  1594.  
  1595. Synopsis........TCXL Version Number
  1596.  
  1597. Header File.....TCXLdef.h
  1598.  
  1599. Prototype.......WrdT TcxlVer(NOARG);
  1600.  
  1601. Returns.........An unsigned integer, with the high byte equal to the major
  1602.                 version of TCXL and the low byte equal to the minor
  1603.                 version.
  1604.  
  1605. Example.........printf("This is Version %d.%d of TCXL\n",
  1606.                    TcxlVer() >> 8, TcxlVer & 0x00ff);
  1607.  
  1608.                 displays
  1609.  
  1610.                 This is Version 5.52 of TCXL
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617. Page 14                                  TesSeRact CXL V5.52 Documentation
  1618. ---------------------------------------------------------------------------
  1619. _TcxlTerm (Internal)
  1620.  
  1621. Synopsis........Terminate TCXL Library Access
  1622.  
  1623. Header File.....TCXLdef.h
  1624.  
  1625. Prototype.......VOID CDC _TcxlTerm(NOARG);
  1626.  
  1627. Source File.....UTL\TCXLINIT.C
  1628.  
  1629. Notes...........For internal use only.  Not to be called by user programs.
  1630. ---------------------------------------------------------------------------
  1631. TcxlKeyOff
  1632.  
  1633. Synopsis........Disable Enhanced Keyboard Test
  1634.  
  1635. Header File.....TCXLdef.h
  1636.  
  1637. Prototype.......VOID TcxlKeyOff(NOARG);
  1638.  
  1639. Notes...........This function may have no effect on some platforms.  This
  1640.                 is primarily designed to detect between machines that have
  1641.                 support Enhanced Keyboard BIOS under DOS and OS/2.
  1642. ---------------------------------------------------------------------------
  1643. TcxlMemOff
  1644.  
  1645. Synopsis........Disable Memory Subsystem
  1646.  
  1647. Header File.....TCXLdef.h
  1648.  
  1649. Prototype.......VOID TcxlMemOff(NOARG);
  1650.  
  1651. Notes...........This function may have no effect on some platforms.  This
  1652.                 is primarily designed to detect the types of memory
  1653.                 available on DOS machines.
  1654. ---------------------------------------------------------------------------
  1655. TcxlMouOff
  1656.  
  1657. Synopsis........Disable Mouse Subsystem
  1658.  
  1659. Header File.....TCXLdef.h
  1660.  
  1661. Prototype.......VOID TcxlMouOff(NOARG);
  1662.  
  1663. Notes...........This function may have no effect on some platforms.
  1664. ---------------------------------------------------------------------------
  1665. TcxlNlsOff
  1666.  
  1667. Synopsis........Disable National Language Support
  1668.  
  1669. Header File.....TCXLdef.h
  1670.  
  1671. Prototype.......VOID TcxlNlsOff(NOARG);
  1672.  
  1673. Notes...........This function may have no effect on some platforms.
  1674.  
  1675.  
  1676. TesSeRact CXL V5.52 Documentation                                  Page 15
  1677. ---------------------------------------------------------------------------
  1678. TcxlVuvOff
  1679.  
  1680. Synopsis........Disable UltraVision for DOS Support
  1681.  
  1682. Header File.....TCXLdef.h
  1683.  
  1684. Prototype.......VOID TcxlVuvOff(NOARG);
  1685.  
  1686. Notes...........This function is only useful on DOS systems, but is
  1687.                 maintained for compatibility across platforms.
  1688. ---------------------------------------------------------------------------
  1689. TcxlCurOff
  1690.  
  1691. Synopsis........Do not restore cursor position when program terminates.
  1692.  
  1693. Header File.....TCXLdef.h
  1694.  
  1695. Prototype.......VOID TcxlCurOff(NOARG);
  1696.  
  1697. Notes...........This function is only useful on DOS systems, but is
  1698.                 maintained for compatibility across platforms.
  1699. ---------------------------------------------------------------------------
  1700. MemFail
  1701.  
  1702. Synopsis........Debugging Popup for Memory Allocation Errors
  1703.  
  1704. Header File.....TCXLdef.h
  1705.  
  1706. Prototype.......VOID CTYP MemFail(ChrP Module, IntT LineNo);
  1707.  
  1708. Source File.....WIN\WINDBG.C
  1709.  
  1710. Arguments.......Module   -  Name of module that called MemFail()
  1711.                 LineNo   -  Line number in module where error occurred.
  1712.  
  1713. Returns.........None
  1714.  
  1715. Notes...........Internal Debugging Call.
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.  
  1724.  
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735. Page 16                                  TesSeRact CXL V5.52 Documentation
  1736. ---------------------------------------------------------------------------
  1737. WinFail
  1738.  
  1739. Synopsis........Debugging Popup for Window Errors
  1740.  
  1741. Header File.....TCXLdef.h
  1742.  
  1743. Prototype.......VOID CTYP WinFail(ChrP Module, IntT LineNo);
  1744.  
  1745. Source File.....WIN\WINDBG.C
  1746.  
  1747. Arguments.......Module   -  Name of module that called MemFail()
  1748.                 LineNo   -  Line number in module where error occurred.
  1749.  
  1750. Returns.........If (TcxlDbg & DBG_WER) terminate application; otherwise,
  1751.                 return ERR_ARG.
  1752.  
  1753. Notes...........Internal Debugging Call.
  1754. ---------------------------------------------------------------------------
  1755. MSSetEnt
  1756. MSSetHlp
  1757. MSSetMnu
  1758. MSSetSel
  1759.  
  1760. Synopsis........Sets mouse support level.
  1761.  
  1762. Header File.....TCXLinp.h
  1763.  
  1764. Prototype.......VOID MSSetEnt(BytT x);
  1765.                 VOID MSSetHlp(BytT x);
  1766.                 VOID MSSetMnu(BytT x);
  1767.                 VOID MSSetSel(BytT x);
  1768.  
  1769. Arguments.......x  -  Mouse Support Level:
  1770.                   MOU_NONE.No mouse support
  1771.                   MOU_KEYS.Emulate arrow keys
  1772.                   MOU_CURS.Free-moving visible cursor
  1773.                   MOU_FULL.Full mouse support
  1774.  
  1775. Returns.........None.
  1776.  
  1777. Notes...........The default mouse support level in all systems is MOU_FULL.
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794. TesSeRact CXL V5.52 Documentation                                  Page 17
  1795.                                 Menu System
  1796.  
  1797.  
  1798. Using the  TCXL Menu  System, you  can create  menus as simple as a single-
  1799. level popup menu, or as complex as a multi-level pull-down bar menu system.
  1800. No matter  how complex  your menus  are, with  TCXL you  use the same basic
  1801. calling sequence  to define  them.  The basic format (optional calls are in
  1802. brackets []) is:
  1803.  
  1804.   <MnuDef|MnuAct>
  1805.   MnuTxt
  1806.   MnuItm
  1807.   [ItmTxt]
  1808.   [ItmFun]
  1809.      [<MnuDef|MnuAct>]
  1810.      [MnuTxt]
  1811.      [MnuItm]
  1812.      [...]
  1813.      [MnuEnd]
  1814.   MnuEnd
  1815.   MnuGet
  1816.  
  1817.  
  1818. Important note!!!!   Previous  versions of  TCXL use MnuBeg() and MnuShow()
  1819. for menu  processing; for  this reason,  MnuShow() has  been declared as an
  1820. alias for  compatibility purposes  in TCXLmnu.h.   MnuBeg(),  which  has  a
  1821. different prototype  than the  new MnuDef(),  will cause  your compiler  to
  1822. terminate during pre-processing with a nonsense error message.
  1823.  
  1824. Either MnuDef()  or MnuAct()  is required  to mark  the start  of  a  menu;
  1825. MnuTxt() is  used to define the area for individual item text descriptions;
  1826. MnuItm() is  required to  define menu  items; MnuEnd()  marks the  end of a
  1827. menu; and MnuGet() initiates user processing of the entire menu structure.
  1828.  
  1829. Notice that you can also define entire menus underneath any individual menu
  1830. item.   This allows  you to  easily create  nested menus to aid in building
  1831. complex pull-down  and multi-layered  menuing systems. There is no limit to
  1832. how deep you can nest sub-menus, with the exception of available memory.
  1833.  
  1834. When coding multi-level menu systems, it is a good idea to use indenting as
  1835. shown above  to help you distinguish which menu items and menu-ends go with
  1836. which menu-begins.
  1837.  
  1838. ItmTxt() and  ItmFun() are  optional functions.   They  allow you to attach
  1839. specific features  to a  particular menu  item.  If you use either of these
  1840. two functions,  they must  immediately follow the call to MnuItm() to which
  1841. they pertain.
  1842.  
  1843. Beginning with  Version 5.52,  you may  also use a new function, MnuBuild()
  1844. (Page 25),  to create  your menus.  This function, described in more detail
  1845. below and  in the  demonstration program,  can be  used to  build an entire
  1846. complex, nested,  menu structure  with one  function  call.    All  of  the
  1847. necessary information  is stored in data structures, which makes for easier
  1848. programmer's documentation, as well as easier maintenance.
  1849.  
  1850.  
  1851.  
  1852.  
  1853. Page 18                                  TesSeRact CXL V5.52 Documentation
  1854. After you  define the menu structure and call MnuGet(), the user is allowed
  1855. to make  a selection.   The  following editing  keys (editing keys are also
  1856. listed in Appendix E) may be used by the user when processing the menu:
  1857.  
  1858.   Menu Movement Key   Action
  1859.   -----------------   ------
  1860. LeftArrow................moves selection bar to item left.
  1861. RightArrow...............moves selection bar to item right.
  1862. UpArrow..................moves selection bar to item upwards.
  1863. DownArrow................moves selection bar to item downwards.  If the
  1864.         current menu item has a pull-down menu attached (and the current
  1865.         menu is a horizontal menu!), then it will be opened for processing.
  1866. Enter....................selects the item that the selection bar is on.  If
  1867.         selected item has a sub-menu attached, then processing of that menu
  1868.         will begin.
  1869. Home.....................moves selection bar to upper-leftmost item.
  1870. End......................moves selection bar to lower-rightmost item.
  1871. Esc......................if Escape checking is on, and you are in the root
  1872.         menu, pressing this cancels input and returns a -1. If inside a
  1873.         sub-menu, then you will just back up to the previous menu.
  1874.  
  1875. You can also quick-select a menu item by pressing its highlighted selection
  1876. character, unless this feature is disabled.
  1877.  
  1878. Each menu  item can  have a  function and/or sub-menu attached to it.  When
  1879. the user  selects the  menu item, MnuGet() will first check for an attached
  1880. sub-menu.   If one  exists, it will be processed.  Then MnuGet() will check
  1881. for a defined select function.  If one exists, then MnuGet() will call it.
  1882.  
  1883. This gives  you two ways to handle a user selection.   The first, as you've
  1884. seen, is to have a function attached to the menu item.  For example, if the
  1885. menu  item   is  "(A)dd  Record"  and  it  has  a  select  function  called
  1886. add_record(), then  it will  be called  upon selecting that menu item.  The
  1887. other way  to handle a user selection is by using a switch/case to test the
  1888. return value  from MnuGet().   This  will work  best on single-level menus,
  1889. since MnuGet()  only returns  the tag  ID of the root menu's selection, but
  1890. sometimes gives you more flexibility.
  1891.  
  1892. Please note  that mouse  support is  automatically  activated  during  menu
  1893. processing, if  a mouse  has been detected during initialization.  Also, be
  1894. aware that the mouse is deactivated during before/after procedures, as well
  1895. as when  processing the  menu's select  functions.  Programmers who wish to
  1896. take advantage  of the  mouse in  their own  windows (not  in  one  of  the
  1897. automatic systems  of TCXL)  will need  to specifically  enable the type of
  1898. mouse support they want.
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912. TesSeRact CXL V5.52 Documentation                                  Page 19
  1913.                             Menu System Equates
  1914.  
  1915.  
  1916.                             _Mctl Access Macros
  1917.  
  1918.           MctlTop............................................Root menu
  1919.           MctlCur.........................................Current menu
  1920.           MctlMnu...........................................Menu level
  1921.           MctlItm...........................................Item level
  1922.           MctlTag.......................................Selected TagId
  1923.  
  1924.                             _Mdf Access Macros
  1925.  
  1926.           MdfPrv(m)......................................Previous menu
  1927.           MdfTop(m).....................................Item-list head
  1928.           MdfBot(m).....................................Item-list tail
  1929.           MdfCur(m).......................................Current item
  1930.           MdfEng(m)........................................Page Engine
  1931.           MdfOpn(m)...................................."Open" function
  1932.           MdfTag(m)................................Selected item TagId
  1933.           MdfBeg(m).....................................Start position
  1934.           MdfBegW(m)..............................................Word
  1935.           MdfBegC(m)...............................................Col
  1936.           MdfBegR(m)...............................................Row
  1937.           MdfEnd(m).......................................End position
  1938.           MdfEndW(m)..............................................Word
  1939.           MdfEndC(m)...............................................Col
  1940.           MdfEndR(m)...............................................Row
  1941.           MdfPos(m)................................Item start position
  1942.           MdfPosW(m)..............................................Word
  1943.           MdfPosC(m)...............................................Col
  1944.           MdfPosR(m)...............................................Row
  1945.           MdfDsc(m)...............................Description/help pos
  1946.           MdfDscW(m)..............................................Word
  1947.           MdfDscC(m)...............................................Col
  1948.           MdfDscR(m)...............................................Row
  1949.           MdfLim(m)..................................Image size/limits
  1950.           MdfLimW(m)..............................................Word
  1951.           MdfLimC(m)..............................................Cols
  1952.           MdfLimR(m)..............................................Rows
  1953.           MdfFrm(m)..............................................Frame
  1954.           MdfFrmT(m)........................................Frame Type
  1955.           MdfFrmA(m)........................................Frame Attr
  1956.           MdfTyp(m)..........................................Type mask
  1957.           MdfWid(m)..........................................Bar width
  1958.           MdfOfs(m)........................................Text offset
  1959.           MdfWat(m)........................................Window attr
  1960.           MdfTat(m).....................................Text attribute
  1961.           MdfSat(m)...................................Select char attr
  1962.           MdfNat(m)....................................Non-select attr
  1963.           MdfBat(m)......................................Bar attribute
  1964.           MdfDat(m)............................Description/help attr*/
  1965.           MdfFlg(m).....................................Internal flags
  1966.           MdfUsr(m)....................................User descriptor
  1967.  
  1968.  
  1969.  
  1970.  
  1971. Page 20                                  TesSeRact CXL V5.52 Documentation
  1972.                             _Idf Access Macros
  1973.  
  1974.           IdfPar(i)........................................Parent menu
  1975.           IdfSub(i).........................................Child menu
  1976.           IdfStr(i).....................................Selection text
  1977.           IdfTxt(i)...................................Description text
  1978.           IdfSel(i).................................."Select" function
  1979.           IdfBef(i).................................."Before" function
  1980.           IdfAft(i).................................."After"  function
  1981.           IdfKey(i)............................................Hot key
  1982.           IdfTag(i).............................................Tag ID
  1983.           IdfHlp(i)...........................................Help tag
  1984.           IdfPos(i)...........................................Text pos
  1985.           IdfPosW(i)..............................................Word
  1986.           IdfPosC(i)...............................................Col
  1987.           IdfPosR(i)...............................................Row
  1988.           IdfChr(i)..................................Quick select char
  1989.           IdfMsk(i).......................................Feature mask
  1990.           IdfLen(i)........................................Text length
  1991.           IdfFlg(i).....................................Internal flags
  1992.           IdfUsr(i)....................................User descriptor
  1993.  
  1994.                         MnuItm() item-feature mask
  1995.  
  1996.           ITM_NOR.......................Normal (none of the following)
  1997.           ITM_PUL..............................Pull-down menu attached
  1998.           ITM_NSL.......................................Not selectable
  1999.           ITM_AFT..............................Close menu after select
  2000.           ITM_ALL........................Close all menus when selected
  2001.           ITM_BEF.............................Close menu before select
  2002.  
  2003.                             MnuEnd() menu type
  2004.  
  2005.           MNU_HOR...........................................Horizontal
  2006.           MNU_VER.............................................Vertical
  2007.           MNU_OMN......................................Omnidirectional
  2008.           MNU_PUL............................................Pull-down
  2009.           MNU_NQS..............................Disable quick selection
  2010.           MNU_SAV...............................Save last bar position
  2011.           MNU_DSP.......................Display if no selectable items
  2012.           MNU_USE............................Use current active window
  2013.  
  2014.  
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.  
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030. TesSeRact CXL V5.52 Documentation                                  Page 21
  2031.                             Menu System Example
  2032.  
  2033. /*========[ The TCXL Menu Demo, a simulated editor interface ]========*
  2034.  | Called from the [M]enuing item of the UserDemo.C main menu
  2035.  *--------------------------------------------------------------------*/
  2036.  
  2037. VOID  CTYP  MenuDemo(NOARG)
  2038. {
  2039.    IntT     s;
  2040.    IntT     Lines;
  2041.    VcelFP   VidArea;
  2042.    FlgT     st;
  2043.  
  2044.    KbndIdle(UpdateClock);          /* start clock display       */
  2045.    HlpPush(H_PULLDOWN);            /* push help category        */
  2046.  
  2047.    _CerrPush(_IFFPCP(_AltCrit));   /* install alternate CritErr */
  2048.  
  2049.    if(_VuvAct)                     /* draw editor display       */
  2050.       Lines = _VuvGet();
  2051.    else
  2052.       Lines = VidDep;
  2053.    cvtic(&Rmargin[16], VidWid - 8, 3);
  2054.    VidArea = FarVsave(LGREY|_BLACK);
  2055.    st = CurSave();               /* save cursor-shown state     */
  2056. redraw:                          /* come here to redraw the menu*/
  2057.    if(atoi(&Rmargin[16]) > VidWid - 3)
  2058.       cvtic(&Rmargin[16], VidWid - 8, 3);
  2059.    DrawEditor(atoi(&Lmargin[16]), atoi(&Rmargin[16]));
  2060.  
  2061.    MnuDef(1, 1, 1, VidWid - 2, 5,   /* start the menu           */
  2062.       CYAN, CYAN|_BLUE, NULL, 6);
  2063.  
  2064.    MnuItm(0, 2, "File", 'F', 19,    /* define first item,       */
  2065.       ITM_PUL, NULL, 0, H_FILE);    /* a pulldown menu          */
  2066.  
  2067.    MnuDef(2, 1, 11, 17, 0, LGREY|_BLUE, _BLUE, NULL, 8);
  2068.       MnuItm(0, 0, "Load",          'L', 20, 0,       DoNothing, 0,
  2069.          H_LOAD);
  2070.       MnuItm(1, 0, "Save",          'S', 21, 0,       DoNothing, 0,
  2071.          H_SAVE);
  2072.       MnuItm(2, 0, "Rename",        'R', 22, 0,       DoNothing, 0,
  2073.          H_RENAME);
  2074.       MnuItm(3, 0, "New",           'N', 23, 0,       DoNothing, 0,
  2075.          H_NEW);
  2076.       MnuItm(4, 0, "Directory  F5", 'D', 24, 0,       Directory, Key_F5,
  2077.          H_DIRECTORY);
  2078.       MnuItm(5, 0, "Execute    F6", 'E', 25, 0,       Execute,   Key_F6,
  2079.          H_EXECUTE);
  2080.       MnuItm(6, 0, "OS Shell   F7", 'O', 26, ITM_BEF, OsShell,   Key_F7,
  2081.          H_OSSHELL);
  2082.       MnuItm(7, 0, "Quit",          'Q', 27, ITM_ALL, NULL,      0,
  2083.          H_QUIT);
  2084.    ItmFun(_VFVCP(QuitWindow), _VFVCP(QuitWindow));
  2085.    MnuEnd(20, MNU_PUL|MNU_SAV, 15, 1, YELLOW|_BLUE, LCYAN|_BLUE, 0,
  2086.       YELLOW|_MAGENTA);
  2087.  
  2088.  
  2089. Page 22                                  TesSeRact CXL V5.52 Documentation
  2090.    MnuItm(0, 15, "Editing", 'E', 28,/* second item, also a pulldown  */
  2091.       ITM_PUL, NULL, 0, H_EDITING);
  2092.    MnuDef(2, 14, 10, 28, 0, LGREY|_BLUE, _BLUE, NULL, 7);
  2093.       MnuItm(0, 0, "Cut",         'C', 29, 0,       DoNothing,   0,
  2094.          H_NONE);
  2095.       MnuItm(1, 0, "Paste",       'P', 30, ITM_NSL, DoNothing,   0,
  2096.          H_NONE);
  2097.       MnuItm(2, 0, "cOpy",        'O', 31, ITM_NSL, DoNothing,   0,
  2098.          H_NONE);
  2099.       MnuItm(3, 0, "block Begin", 'B', 32, 0,       ToggleBlock, 0,
  2100.          H_NONE);
  2101.       MnuItm(4, 0, "block End",   'E', 33, ITM_NSL, ToggleBlock, 0,
  2102.          H_NONE);
  2103.       MnuItm(5, 0, "Insert line", 'I', 34, 0,       DoNothing,   0,
  2104.          H_NONE);
  2105.       MnuItm(6, 0, "Delete line", 'D', 35, 0,       DoNothing,   0,
  2106.          H_NONE);
  2107.    MnuEnd(29, MNU_PUL|MNU_SAV, 13, 1, YELLOW|_BLUE, LCYAN|_BLUE,
  2108.       CYAN|_BLUE, YELLOW|_MAGENTA);
  2109.  
  2110.    MnuItm(0, 31, "Defaults", 'D', 36,/* third item, also a pulldown   */
  2111.       ITM_PUL, NULL, 0, H_DEFAULTS);
  2112.    MnuDef(2, 30, 13, 52, 0, LGREY|_BLUE, _BLUE, _VFVCP(SetupMenu), 8);
  2113.      MnuItm(0, 0, Lmargin,               'L', 37, ITM_ALL, RMargin,   0,
  2114.          H_NONE);
  2115.      MnuItm(1, 0, Rmargin,               'R', 38, ITM_ALL, RMargin,   0,
  2116.          H_NONE);
  2117.      MnuItm(2, 0, "Tab width         4", 'T', 39, 0,       DoNothing, 0,
  2118.          H_NONE);
  2119.      MnuItm(4, 0, "tab eXpansion   yes", 'X', 40, 0,       ToggleYN,  0,
  2120.          H_NONE);
  2121.      MnuItm(5, 0, "Insert mode     yes", 'I', 41, 0,       ToggleYN,  0,
  2122.          H_NONE);
  2123.      MnuItm(6, 0, "iNdent mode     yes", 'N', 42, 0,       ToggleYN,  0,
  2124.          H_NONE);
  2125.      MnuItm(7, 0, "Word wrap mode   no", 'W', 43, 0,       ToggleYN,  0,
  2126.          H_NONE);
  2127.      MnuItm(9, 0, "Save defaults",       'S', 44, 0,       DoNothing, 0,
  2128.          H_NONE);
  2129.    MnuEnd(37, MNU_PUL|MNU_SAV, 21, 1, YELLOW|_BLUE, LCYAN|_BLUE, 0,
  2130.       YELLOW|_MAGENTA);
  2131.  
  2132.    MnuItm(0, 47, "Run", 'R', 45, 0,/* fourth item, a popup menu     */
  2133.       _VFVCP(PopupDemo), 0, H_RUN);
  2134.  
  2135.    MnuItm(0, 59, "Options", 'O', 46,/* fifth item, another pulldown  */
  2136.       ITM_PUL, NULL, 0, H_OPTIONS);
  2137.    MnuDef(2, 56, 8, 77, 0, LGREY|_BLUE, _BLUE, NULL, 5);
  2138.      MnuItm(0, 0, "screen siZe",        'Z', 47, ITM_ALL, ChangeSize, 0,
  2139.          H_NONE);
  2140.      MnuItm(1, 0, "Backup files   yes", 'B', 48, 0,       ToggleYN,   0,
  2141.          H_NONE);
  2142.      MnuItm(2, 0, "bOxed display   no", 'O', 49, 0,       ToggleYN,   0,
  2143.          H_NONE);
  2144.      MnuItm(3, 0, "Load options",       'L', 50, 0,       DoNothing,  0,
  2145.          H_NONE);
  2146.      MnuItm(4, 0, "Save options",       'S', 51, 0,       DoNothing,  0,
  2147.  
  2148. TesSeRact CXL V5.52 Documentation                                  Page 23
  2149.          H_NONE);
  2150.    MnuEnd(47, MNU_PUL|MNU_SAV, 20, 1, YELLOW|_BLUE, LCYAN|_BLUE, 0,
  2151.       YELLOW|_MAGENTA);
  2152.  
  2153.    MnuItm(0, 73, "Quit", 'Q', 52,/* sixth item, a pulldown with   */
  2154.       ITM_PUL, NULL, 0, H_NONE);/* an automatic popup window     */
  2155.    ItmFun(_VFVCP(QuitWindow), _VFVCP(QuitWindow));
  2156.  
  2157.    MnuDef(2, 60, 7, 78, 0, LGREY|_BLUE, _BLUE, DispSureMsg, 2);
  2158.    MnuItm(2, 0, "No", 'N', 53, ITM_AFT, NULL, 0, H_NONE);
  2159.    MnuItm(3, 0, "Yes", 'Y', 54, ITM_ALL, NULL, 0, H_NONE);
  2160.    MnuEnd(53, MNU_PUL, 17, 7, YELLOW|_BLUE, LCYAN|_BLUE, WHITE|_BLUE,
  2161.       YELLOW|_MAGENTA);
  2162.  
  2163.    MnuEnd(19, MNU_HOR, 0, 0,   /* define the end of the menu    */
  2164.       YELLOW|_BLUE, LCYAN|_BLUE, 0, YELLOW|_MAGENTA);
  2165.  
  2166.    s = MnuGet();               /* process the menu              */
  2167.    if(s == -1 && TcxlErr > W_ESCPRESS)
  2168.       ErrorExit(1);            /* windowing error!              */
  2169.  
  2170.    Wclose();                   /* close up windows              */
  2171.    Wclose();
  2172.    if((s == 37) || (s == 38) || (s == 47) || (s >= 100))
  2173.       goto redraw;
  2174.    if(_VuvAct)                 /* Ultravision                   */
  2175.    {
  2176.       if(Lines != _VuvGet())
  2177.          _VuvSet(Lines);
  2178.    }
  2179.    else                        /* ordinary BIOS                 */
  2180.    {
  2181.       if(Lines != VidDep)
  2182.          VsetLin(Lines);
  2183.    }
  2184.    CurRest(st);                /* restore cursor-shown state    */
  2185.    FarVrestore(VidArea);       /* restore screen                */
  2186.    KbndIdle(NULL);             /* kill the clock                */
  2187.    HlpDrop();                  /* pop the help stack            */
  2188.    _CerrPop();                 /* restore CritErr-handler       */
  2189.    MoveBarDn();                /* select next main-menu item    */
  2190. }  /* MenuDemo() */
  2191.  
  2192.  
  2193.  
  2194.  
  2195.  
  2196.  
  2197.  
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.  
  2207. Page 24                                  TesSeRact CXL V5.52 Documentation
  2208.                            Menu System Routines
  2209.  
  2210.  
  2211.                          Menu and Item Definition
  2212.  
  2213. ---------------------------------------------------------------------------
  2214. MnuBuild
  2215.  
  2216. Synopsis........Build complete menu tree from defining set of Mbld and Ibld
  2217.                 objects.
  2218.  
  2219. Header File.....TCXLmnu.h
  2220.  
  2221. Prototype.......IntT CTYP MnuBuild(MbldP mp);
  2222.  
  2223. Source File.....MNU\MNUBUILD.C
  2224.  
  2225. Arguments.......mp -  Pointer to Top Mbld structure.
  2226.  
  2227.                 The Mbld and Ibld structures are organized based on the
  2228.                 parameters used by MnuDef(), MnuItm(), ItmTxt() ItmFun()
  2229.                 and MnuEnd().  For complete descriptions of these
  2230.                 structures, and a detailed example of the way they can be
  2231.                 used, see INC\TCXLmnu.h and DEMO\MENUDEMO.C.
  2232.  
  2233. Returns.........ERR_NUL  -  No Error
  2234.                 ERR_ARG  -  Argument Failure
  2235.                 ERR_MEM  -  Memory Allocation Failure
  2236.                    TcxlErr contains:
  2237.                    W_NOITMDEF  -  No Menu Items Defined
  2238.                    W_NOMNUBEG  -  No Menu Definition.
  2239.                    W_INVTAGID  -  The specified Tag ID was invalid.  It
  2240.                       must match one of the Tag IDs in the current menu.
  2241.                    W_NOMNUDEF  -  No Menu Defined
  2242.                    W_NOTFOUND  -  Tag ID Not Found
  2243.  
  2244. Notes...........It is VERY important to check the return value from
  2245.                 MnuBuild(); if any of the nested function calls fail,
  2246.                 MnuBuild() will return an error to the caller.  Calling
  2247.                 MnuGet() at that point could be disastrous!
  2248.  
  2249.  
  2250.  
  2251.  
  2252.  
  2253.  
  2254.  
  2255.  
  2256.  
  2257.  
  2258.  
  2259.  
  2260.  
  2261.  
  2262.  
  2263.  
  2264.  
  2265.  
  2266. TesSeRact CXL V5.52 Documentation                                  Page 25
  2267. ---------------------------------------------------------------------------
  2268. MnuAct
  2269.  
  2270. Synopsis........Begin menu definition, using active window.
  2271.  
  2272. Header File.....TCXLmnu.h
  2273.  
  2274. Prototype.......IntT CTYP MnuAct(IntT ni);
  2275.  
  2276. Source File.....MNU\MNUACT.C
  2277.  
  2278. Arguments.......ni -  Number of items in menu
  2279.  
  2280. Returns.........ERR_NUL  -  No Error
  2281.                 ERR_ARG  -  Argument Failure
  2282.                 ERR_MEM  -  Memory Allocation Failure
  2283.                    TcxlErr contains:
  2284.                    W_NOITMDEF  -  No Menu Items Defined
  2285.  
  2286. Notes...........This is used in place of MnuDef(). This function differs
  2287.                 from MnuDef() in that when the user processes the defined
  2288.                 menu, the menu will assume whatever the active window is at
  2289.                 the time.  This (or MnuDef()) is one of the 4 functions
  2290.                 that are required to process a menu.
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.  
  2319.  
  2320.  
  2321.  
  2322.  
  2323.  
  2324.  
  2325. Page 26                                  TesSeRact CXL V5.52 Documentation
  2326. ---------------------------------------------------------------------------
  2327. MnuDef
  2328.  
  2329. Synopsis........Begin menu definition, describe menu window.
  2330.  
  2331. Header File.....TCXLmnu.h
  2332.  
  2333. Prototype.......IntT CTYP MnuDef(IntT sr, IntT sc, IntT er, IntT ec,
  2334.                      BytT ft, AtrT fa, AtrT wa, VfvCP fo, IntT ni);
  2335.  
  2336. Source File.....MNU\MNUDEF.C
  2337.  
  2338. Arguments.......sr -  Start row of menu's window
  2339.                 sc -  Start column of menu's window
  2340.                 er -  End row of menu's window
  2341.                 ec -  End column of menu's window
  2342.                 ft -  Frame  Type (One of the following)
  2343.                   BOX_SNG..all single
  2344.                   BOX_DBL..all double
  2345.                   BOX_VER..horiz single, vert double
  2346.                   BOX_HOR..horiz double, vert single
  2347.                   BOX_HVY..heavy lines
  2348.                   BOX_SPA..spaces [no box]
  2349.                   BOX_EXP..explode frame on open
  2350.                 ba -  Frame Attribute (See Appendix A)
  2351.                 wa -  Window Attribute (See Appendix A)
  2352.                 fo -  Function to be called when the menu's window is
  2353.                       opened.  An example would be to add a title, a
  2354.                       shadow, etc.
  2355.                 ni -  Number of items in the menu
  2356.  
  2357. Returns.........ERR_NUL  -  No Error
  2358.                 ERR_ARG  -  Argument Failure
  2359.                 ERR_MEM  -  Memory Allocation Failure
  2360.                    TcxlErr contains:
  2361.                    W_NOITMDEF  -  No Menu Items Defined
  2362.  
  2363. Notes...........This function does not actually open any windows or menus,
  2364.                 just defines them.  This must be used in conjunction with
  2365.                 MnuItm() and MnuEnd().  This (or MnuAct()) is one of the 4
  2366.                 functions that are required to process a menu.
  2367.  
  2368.  
  2369.  
  2370.  
  2371.  
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.  
  2384. TesSeRact CXL V5.52 Documentation                                  Page 27
  2385. ---------------------------------------------------------------------------
  2386. MnuItm
  2387.  
  2388. Synopsis........Defines a menu item
  2389.  
  2390. Header File.....TCXLmnu.h
  2391.  
  2392. Prototype.......IntT CTYP MnuItm(BytT wr, BytT wc, ChrP ps, ChrT sc,
  2393.                      TagT id, BytT fm, VfvCP fs, KeyT kc, TagT ht);
  2394.  
  2395. File............MNU\MNUITM.C
  2396.  
  2397. Arguments.......wr -  Window Row
  2398.                 wc -  Window Column
  2399.                 ps -  Menu Item String
  2400.                 sc -  Quick Selection character.
  2401.                       This is often the first letter of the menu item.
  2402.                 id -  Unique tag identifier for this menu item.  A menu tag
  2403.                       id may be assigned arbitrarily by the programmer, but
  2404.                       some kind of design system should be implemented --
  2405.                       and may, in fact, be similar to the help tags.  See
  2406.                       the demonstration program for one implementation.
  2407.                 fm -  Feature Masks (Page 21)
  2408.                 fs -  Function to call when item is selected
  2409.                 kc -  Keycode of the key which will select this item from
  2410.                       anywhere within the menu structure (See Appendix B
  2411.                       for a list of keycodes).  This allows the user to
  2412.                       call this menu's select function even if not
  2413.                       currently processing its menu.
  2414.                 ht -  Help Tag for this item
  2415.  
  2416. Returns.........ERR_NUL  -  No Error
  2417.                 ERR_ARG  -  Argument Failure
  2418.                 ERR_MEM  -  Memory Allocation Failure
  2419.                    TcxlErr contains:
  2420.                    W_NOMNUBEG  -  No Menu Definition.  See MnuDef()
  2421.  
  2422. Notes...........This is one of the 4 functions that are required to process
  2423.                 a menu.
  2424.  
  2425.  
  2426.  
  2427.  
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443. Page 28                                  TesSeRact CXL V5.52 Documentation
  2444. ---------------------------------------------------------------------------
  2445. MnuEnd
  2446.  
  2447. Synopsis........Ends a menu definition
  2448.  
  2449. Header File.....TCXLmnu.h
  2450.  
  2451. Prototype.......IntT CTYP MnuEnd(TagT id, BytT mt, BytT bw, BytT tp,
  2452.                      AtrT ta, AtrT sa, AtrT na, AtrT ba);
  2453.  
  2454. Source File.....MNU\MNUEND.C
  2455.  
  2456. Arguments.......ti -  Tag ID of the item the selection bar will start with
  2457.                 mt -  Menu Type (Page 21)
  2458.                 bw -  Width of the section bar (zero means selection string
  2459.                       width)
  2460.                 tp -  Offset position from start of the selection bar that
  2461.                       the menu item text will start.
  2462.                 ta -  Attribute for menu text (See Appendix A)
  2463.                 sa -  Attribute for Selection Character (See Appendix A)
  2464.                 na -  Attribute for non-selectable text (See Appendix A)
  2465.                 ba -  Attribute for the selection bar (See Appendix A)
  2466.  
  2467. Returns.........ERR_NUL  -  No Error
  2468.                 ERR_ARG  -  Argument Failure
  2469.                 ERR_MEM  -  Memory Allocation Failure
  2470.                    TcxlErr contains:
  2471.                    W_NOITMDEF  -  No Menu Items Defined
  2472.                    W_INVTAGID  -  The specified Tag ID was invalid.  It
  2473.                       must match one of the Tag IDs in the current menu.
  2474.  
  2475. Notes...........This function defines specific features/attributes of that
  2476.                 menu.  This is one of the 4 functions that are required to
  2477.                 process a menu.
  2478.  
  2479.                 The Menu Type <mt> parameter is composed of a combination
  2480.                 of:  one of MNU_HOR (horizontal), MNU_VER (vertical) or
  2481.                 MNU_OMN (omnidirectional -- both horizontal and vertical);
  2482.                 plus one or more of MNU_PUL (pull-down), MNU_NQS (no quick-
  2483.                 select) and/or MNU_SAV (save bar-position).  If MNU_DSP is
  2484.                 also used, a menu with no selectable items will be
  2485.                 displayed without processing until [Esc] or a parent-menu
  2486.                 hot-key is pressed.
  2487.  
  2488.                 On horizontal menus, the <bw> parameter is the selection
  2489.                 bar width, and <tp> is the offset from each item's position
  2490.                 to it's selection text.  If <bw> is zero, the bar width is
  2491.                 set to the length of the item.  On vertical menus, the
  2492.                 selection bar width is the width of the menu window inside
  2493.                 any frame, and <bw> is ignored.  <tp> is still the offset
  2494.                 from each item's position to its selection text.
  2495.  
  2496.  
  2497.  
  2498.  
  2499.  
  2500.  
  2501.  
  2502. TesSeRact CXL V5.52 Documentation                                  Page 29
  2503. ---------------------------------------------------------------------------
  2504. MnuTxt
  2505.  
  2506. Synopsis........Define text descriptions for current menu.
  2507.  
  2508. Header File.....TCXLmnu.h
  2509.  
  2510. Prototype.......IntT CTYP MnuTxt(BytT wr, BytT wc, AtrT at);
  2511.  
  2512. Source File.....MNU\MNUTXT.C
  2513.  
  2514. Arguments.......wr -  Window Row for descriptions
  2515.                 wc -  Window Column for descriptions
  2516.                 at -  Attribute for display (see Appendix A).
  2517.  
  2518. Returns.........ERR_NUL  -  No Error
  2519.                 ERR_ARG  -  Argument Failure
  2520.                    TcxlErr contains:
  2521.                    W_NOMNUDEF  -  No Menu Defined
  2522.  
  2523. Notes...........This function is new with TCXL 5.52, reducing the overhead
  2524.                 of calling ItmTxt() several times with identical
  2525.                 parameters.
  2526.  
  2527.  
  2528.  
  2529.  
  2530.  
  2531.  
  2532.  
  2533.  
  2534.  
  2535.  
  2536.  
  2537.  
  2538.  
  2539.  
  2540.  
  2541.  
  2542.  
  2543.  
  2544.  
  2545.  
  2546.  
  2547.  
  2548.  
  2549.  
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561. Page 30                                  TesSeRact CXL V5.52 Documentation
  2562. ---------------------------------------------------------------------------
  2563. ItmFun
  2564.  
  2565. Synopsis........Assign before/after functions to current item.
  2566.  
  2567. Header File.....TCXLmnu.h
  2568.  
  2569. Prototype.......IntT CTYP ItmFun(VFvCP bf, VFvCP af);
  2570.  
  2571. Source File.....MNU\ITMFUN.C
  2572.  
  2573. Arguments.......bf -  Before Function (NULL if not used)
  2574.                 af -  After Function (NULL if not used)
  2575.  
  2576. Returns.........ERR_NUL  -  No Error
  2577.                 ERR_ARG  -  Argument Failure
  2578.                    TcxlErr contains:
  2579.                    W_NOITMDEF  -  No Menu Items Defined
  2580.  
  2581. Notes...........The call to this function must appear immediately after the
  2582.                 call to the MnuItm() to which it relates.  During the
  2583.                 processing of the menu, when the user moves to the item,
  2584.                 the before function gets called.  When the user leaves the
  2585.                 item, the after function gets called.
  2586.  
  2587.                 This powerful feature allows you to do some advanced stuff
  2588.                 with menus, but must be used very carefully.  One possible
  2589.                 use of ItmFun() is to define a before function that opens a
  2590.                 window and writes some text in it, and an after function
  2591.                 which closes that window (there is an example of this in
  2592.                 the demonstration program).  When the user moved to that
  2593.                 menu item, the window would open up and display text, then
  2594.                 when the user left that menu item, the window would
  2595.                 automatically close.
  2596.  
  2597.  
  2598.  
  2599.  
  2600.  
  2601.  
  2602.  
  2603.  
  2604.  
  2605.  
  2606.  
  2607.  
  2608.  
  2609.  
  2610.  
  2611.  
  2612.  
  2613.  
  2614.  
  2615.  
  2616.  
  2617.  
  2618.  
  2619.  
  2620. TesSeRact CXL V5.52 Documentation                                  Page 31
  2621. ---------------------------------------------------------------------------
  2622. ItmTxt
  2623.  
  2624. Synopsis........Assign text description to menu item.
  2625.  
  2626. Header File.....TCXLmnu.h
  2627.  
  2628. Prototype.......IntT CTYP ItmTxt(ChrP ps);
  2629.  
  2630. Source File.....MNU\ITMTXT.C
  2631.  
  2632. Arguments.......ps -  string to display
  2633.  
  2634. Returns.........ERR_NUL  -  No Error
  2635.                 ERR_ARG  -  Argument Failure
  2636.                    TcxlErr contains:
  2637.                    W_NOMNUDEF  -  No Menu Defined
  2638.                    W_NOTFOUND  -  Tag ID Not Found
  2639.  
  2640. Notes...........This function was designed primarily to permit the easy
  2641.                 implementation of Lotus-style menus, where the text
  2642.                 descriptions are displayed underneath the menu and change
  2643.                 each time the user moves to a new menu item.
  2644.  
  2645.                 Note this is a changed prototype from TCXL 5.51.
  2646.  
  2647.  
  2648.  
  2649.  
  2650.  
  2651.  
  2652.  
  2653.  
  2654.  
  2655.  
  2656.  
  2657.  
  2658.  
  2659.  
  2660.  
  2661.  
  2662.  
  2663.  
  2664.  
  2665.  
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679. Page 32                                  TesSeRact CXL V5.52 Documentation
  2680.                               Menu Operation
  2681.  
  2682. ---------------------------------------------------------------------------
  2683. MnuGet
  2684.  
  2685. Synopsis........Processes the menu structure.
  2686.  
  2687. Header File.....TCXLmnu.h
  2688.  
  2689. Prototype.......TagT CTYP MnuGet(NOARG);
  2690.  
  2691. Source File.....MNU\MNUGET.C
  2692.  
  2693. Arguments.......None
  2694.  
  2695. Returns.........The Tag ID of the menu item that was selected.
  2696.                 ERR_NUL  -  Check TcxlErr for W_ESCPRESS!
  2697.                 ERR_ARG  -  Argument Failure
  2698.                 ERR_MEM  -  Memory Allocation Failure
  2699.                    TcxlErr contains:
  2700.                    W_NOMNUDEF  -  No Menu Defined
  2701.                    W_NOMNUEND  -  No End Of Menu Specified. See MnuEnd().
  2702.                    W_ESCPRESS  -  The [Esc] Key Was Pressed From The Root
  2703.                       Menu
  2704.                    W_INVCOORD  -  Invalid Coordinates
  2705.                    W_INVBTYPE  -  Invalid Border Type
  2706.  
  2707. Notes...........The user is allowed to move a selection bar around to the
  2708.                 various menu items. If mouse support is on, then the user
  2709.                 can use the mouse for selecting as well.  If sub-menus
  2710.                 exists, then the user can select those also.  Escape
  2711.                 checking is provided for when the user is in the root menu,
  2712.                 however if the user is in a sub-menu, pressing [Esc] will
  2713.                 always return to the next level up.  This is one of the 4
  2714.                 functions that are required to process a menu.
  2715. ---------------------------------------------------------------------------
  2716. MnuCur
  2717.  
  2718. Synopsis........Current Menu Object Pointer
  2719.  
  2720. Header File.....TCXLmnu.h
  2721.  
  2722. Prototype.......MdfP MnuCur(NOARG);
  2723.  
  2724. Arguments.......None
  2725.  
  2726. Returns.........The address of the current menu's record.
  2727.  
  2728. Notes...........Returns the address of the currently active menu's record.
  2729.                 After this call, you may access any of the menu's elements.
  2730.                 Use caution when updating elements in the menu's record.
  2731.                 This function should only be called while the menu to which
  2732.                 it relates is being processed.
  2733.  
  2734.  
  2735.  
  2736.  
  2737.  
  2738. TesSeRact CXL V5.52 Documentation                                  Page 33
  2739. ---------------------------------------------------------------------------
  2740. ItmCur
  2741.  
  2742. Synopsis........Current Menu Item Object Pointer
  2743.  
  2744. Header File.....TCXLmnu.h
  2745.  
  2746. Prototype.......IdfP ItmCur(NOARG);
  2747.  
  2748. Arguments.......None
  2749.  
  2750. Returns.........The address of the current menu item's record.
  2751.  
  2752. Notes...........After this call, you may access any of the item's elements.
  2753.                 This function would most likely be called from a "select",
  2754.                 "before", or "after" function.
  2755. ---------------------------------------------------------------------------
  2756. ItmLoc
  2757.  
  2758. Synopsis........Find Item Object referenced by passed tag.
  2759.  
  2760. Header File.....TCXLmnu.h
  2761.  
  2762. Prototype.......IdfP CTYP ItmLoc(TagT id);
  2763.  
  2764. Source File.....MNU\ITMLOC.C
  2765.  
  2766. Arguments.......id -  The Tag ID of the menu item
  2767.  
  2768. Returns.........The address of the item referenced
  2769.                 NULL if not found
  2770. ---------------------------------------------------------------------------
  2771. ItmNxt
  2772.  
  2773. Synopsis........Choose next selected item in menu.
  2774.  
  2775. Header File.....TCXLmnu.h
  2776.  
  2777. Prototype.......IntT CTYP ItmNxt(TagT id);
  2778.  
  2779. Source File.....MNU\ITMNXT.C
  2780.  
  2781. Arguments.......id -  The Tag ID of the menu item
  2782.  
  2783. Returns.........ERR_NUL  -  No Error
  2784.                 ERR_ARG  -  Argument Failure
  2785.                    TcxlErr contains:
  2786.                    W_NOMNUDEF  -  No Menu Defined
  2787.                    W_NOTFOUND  -  Tag ID Not Found
  2788.  
  2789. Notes...........Defines which menu item the selection bar will move to
  2790.                 next.  This function would most likely be called from a
  2791.                 "select", "before", or "after" function.  The selection bar
  2792.                 does not actually move until the called function returns to
  2793.                 the menu.
  2794.  
  2795.  
  2796.  
  2797. Page 34                                  TesSeRact CXL V5.52 Documentation
  2798. ---------------------------------------------------------------------------
  2799. ItmDsp
  2800.  
  2801. Synopsis........Flag item for redisplay.
  2802.  
  2803. Header File.....TCXLmnu.h
  2804.  
  2805. Prototype.......IntT CTYP ItmDsp(TagT id);
  2806.  
  2807. Source File.....MNU\ITMDSP.C
  2808.  
  2809. Arguments.......id -  The Tag ID of the menu item
  2810.  
  2811. Returns.........ERR_NUL  -  No Error
  2812.                 ERR_ARG  -  Argument Failure
  2813.                    TcxlErr contains:
  2814.                    W_NOMNUDEF  -  No Menu Defined
  2815.                    W_NOTFOUND  -  Tag ID Not Found
  2816.  
  2817. Notes...........Normally, this would be needed if you have changed the
  2818.                 text, etc.  All menu items in the current menu structure
  2819.                 are checked for the redisplay flag each time a user selects
  2820.                 an item.
  2821. ---------------------------------------------------------------------------
  2822. ItmDis
  2823.  
  2824. Synopsis........Disables a menu item.
  2825.  
  2826. Header File.....TCXLmnu.h
  2827.  
  2828. Prototype.......IntT CTYP ItmDis(TagT id);
  2829.  
  2830. Source File.....MNU\ITMDIS.C
  2831.  
  2832. Arguments.......id -  The Tag ID of the menu item
  2833.  
  2834. Returns.........ERR_NUL  -  No Error
  2835.                 ERR_ARG  -  Argument Failure
  2836.                    TcxlErr contains:
  2837.                    W_NOMNUDEF  -  No Menu Defined
  2838.                    W_NOTFOUND  -  Tag ID Not Found
  2839.  
  2840. Notes...........This function would most likely be called from a "select",
  2841.                 "before", or "after" function. It will set a flag so that
  2842.                 when the called function returns to the menu, the disabled
  2843.                 menu item will be displayed in the text attribute (See
  2844.                 Appendix A) defined for nonselectable text.
  2845.  
  2846.  
  2847.  
  2848.  
  2849.  
  2850.  
  2851.  
  2852.  
  2853.  
  2854.  
  2855.  
  2856. TesSeRact CXL V5.52 Documentation                                  Page 35
  2857. ---------------------------------------------------------------------------
  2858. ItmEna
  2859.  
  2860. Synopsis........Enables a menu item.
  2861.  
  2862. Header File.....TCXLmnu.h
  2863.  
  2864. Prototype.......IntT CTYP ItmEna(TagT id);
  2865.  
  2866. Source File.....MNU\ITMENA.C
  2867.  
  2868. Arguments.......id -  The Tag ID of the menu item
  2869.  
  2870. Returns.........ERR_NUL  -  No Error
  2871.                 ERR_ARG  -  Argument Failure
  2872.                    TcxlErr contains:
  2873.                    W_NOMNUDEF  -  No Menu Defined
  2874.                    W_NOTFOUND  -  Tag ID Not Found
  2875.  
  2876. Notes...........This function would most likely be called from a "select",
  2877.                 "before", or "after" function.  It will set a flag so that
  2878.                 when the called function returns to the menu, the enabled
  2879.                 menu item will be displayed in the text attribute (See
  2880.                 Appendix A) defined for selectable text.
  2881. ---------------------------------------------------------------------------
  2882. ItmGet
  2883.  
  2884. Synopsis........Get selection text for specified tag.
  2885.  
  2886. Header File.....TCXLmnu.h
  2887.  
  2888. Prototype.......ChrP CTYP ItmGet(TagT id);
  2889.  
  2890. Source File.....MNU\ITMGET.C
  2891.  
  2892. Arguments.......id -  The Tag ID of the menu item
  2893.  
  2894. Returns.........The address of the item's selection text.
  2895.                 NULL if not found
  2896.  
  2897. Notes...........This function returns a pointer to the text referenced by
  2898.                 the specified Tag.
  2899.  
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910.  
  2911.  
  2912.  
  2913.  
  2914.  
  2915. Page 36                                  TesSeRact CXL V5.52 Documentation
  2916. ---------------------------------------------------------------------------
  2917. ItmSet
  2918.  
  2919. Synopsis........Change text of menu item.
  2920.  
  2921. Header File.....TCXLmnu.h
  2922.  
  2923. Prototype.......IntT CTYP ItmSet(TagT id, ChrP tp, FlgT df);
  2924.  
  2925. Source File.....MNU\ITMSET.C
  2926.  
  2927. Arguments.......id -  The Tag ID of the menu item
  2928.                 tp -  Pointer to the new text
  2929.                 df -  redisplay item if TRUE
  2930.  
  2931. Returns.........ERR_NUL  -  No Error
  2932.                 ERR_ARG  -  Argument Failure
  2933.                    TcxlErr contains:
  2934.                    W_NOMNUDEF  -  No Menu Defined
  2935.                    W_NOTFOUND  -  Tag ID Not Found
  2936.  
  2937. Notes...........This function changes the text associated with the
  2938.                 specified menu item, referenced by the passed Tag.  Set the
  2939.                 redisplay flag if <df> is TRUE.
  2940.  
  2941.                               Menu Internals
  2942.  
  2943. ---------------------------------------------------------------------------
  2944. _ItmKey (Internal)
  2945.  
  2946. Synopsis........Search back along menu structure for passed hotkey.
  2947.  
  2948. Header File.....TCXLmnu.h
  2949.  
  2950. Prototype.......IdfP CTYP _ItmKey(KeyT kc);
  2951. ---------------------------------------------------------------------------
  2952. _ItmPtr (Internal)
  2953.  
  2954. Synopsis........Search back along menu structure for item with passed Tag
  2955.                 ID.
  2956.  
  2957. Header File.....TCXLmnu.h
  2958.  
  2959. Prototype.......Idfp CTYP _ItmPtr(TagT id);
  2960. ---------------------------------------------------------------------------
  2961. _ItmPut (Internal)
  2962.  
  2963. Synopsis........Display menu-item anywhere within current menu structure;
  2964.                 use selection bar if <b> is true.
  2965.  
  2966. Header File.....TCXLmnu.h
  2967.  
  2968. Prototype.......VOID CTYP _ItmPut(IdfP ip, FlgT hb);
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974. TesSeRact CXL V5.52 Documentation                                  Page 37
  2975.                                Entry System
  2976.  
  2977.  
  2978. Using TCXL's  multi-field Entry  System is very similar to designing menus.
  2979. There are  certain functions  associated with  building an  entry form, and
  2980. they must  be called  in a  particular order.  The basic format (and again,
  2981. all optional calls are in brackets) of all form structures is:
  2982.  
  2983.   EntDef
  2984.      EntFld
  2985.      [FldKey]
  2986.      [FldFun]
  2987.      EntFld
  2988.      [FldKey]
  2989.      [FldFun]
  2990.      ...
  2991.   [EntDis]
  2992.   [EntKey]
  2993.   [EntOpt]
  2994.   [EntSep]
  2995.   EntGet
  2996.  
  2997.  
  2998. Just three functions are needed to process multi-field formatted input from
  2999. windows.   EntDef() is  used to mark the beginning of the form; EntFld() is
  3000. used to define the individual data entry fields, and EntGet() marks the end
  3001. of the form and initiates user processing of the form.
  3002.  
  3003. FldKey() and FldFun() are optional functions.  FldKey() assigns a hotkey to
  3004. the active  field, while  FldFun() allows you to add specific procedures to
  3005. be called before and/or after processing of the field. If you use either of
  3006. these two  functions, they  must immediately follow the call to FldDef() to
  3007. which they pertain.
  3008.  
  3009. Change from  Previous Version!!  The formatted  input capabilities  of  the
  3010. Entry System  are identical  to those  of  the  KvGetFmt()  and  KwGetFmt()
  3011. functions in  the Input  System.  In fact, different from previous versions
  3012. of this  product, they  use the same internal functions for operation.  The
  3013. major difference is that with the Entry System, you can edit back and forth
  3014. between fields  before finally  accepting the  entry form.   Note  that the
  3015. Format Control Codes in Appendix D are valid (except where noted) with both
  3016. the Input System and the Entry System.
  3017.  
  3018. Beginning with  Version 5.52,  you may  also use a new function, EntBuild()
  3019. (Page 47),  to create  your entry  forms.  This function, described in more
  3020. detail below  and in  the demonstration  programs, can  be used to build an
  3021. entire entry form with one function call.  All of the necessary information
  3022. is  stored   in  data  structures,  which  makes  for  easier  programmer's
  3023. documentation, as well as easier maintenance.
  3024.  
  3025.  
  3026.  
  3027.  
  3028.  
  3029.  
  3030.  
  3031.  
  3032.  
  3033. Page 38                                  TesSeRact CXL V5.52 Documentation
  3034. In the  Entry System,  you may  set a validation function for each field on
  3035. the form.   During  processing, EntGet()  will call this function after you
  3036. leave the  field to  validate the  information input..  You  can  use  this
  3037. function for  validating, modifying,  displaying error  messages,  or  just
  3038. about anything.   This function must accept a pointer to char for input and
  3039. return either  0 for no error, or the position in the field where the error
  3040. occurred (starting  with 1).   If the validation function returns non-zero,
  3041. EntGet() forces  the user to remain within the field and edit the incorrect
  3042. information.
  3043.  
  3044. Here's an  example field  validation  function  that  checks  for  embedded
  3045. spaces:
  3046.  
  3047.   IntT CTYP check_for_spaces(ChrP input_field)
  3048.   {
  3049.   IntT current_position = 1,
  3050.      error_position = 0;
  3051.  
  3052.         
  3053.   while(*input_field++ != ' ')  /* search for end of text     */
  3054.       current_position++;
  3055.   while(*input_field == ' ') /* search to end of field for */
  3056.   {                 /*     non-space characters   */
  3057.       current_position++;
  3058.       input_field++;
  3059.   }
  3060.   if(*input_field!='\0')     /* if at end of field, then   */
  3061.       error_position = current_position; /* field is invalid */
  3062.   return(error_position);
  3063.   }
  3064.  
  3065.  
  3066. Once you  have defined all input fields with EntDef(), you call EntGet() to
  3067. process them.   The  user is  allowed to  move around  and edit  all of the
  3068. fields.   The input  fields are validated on the fly and after entering the
  3069. last field.  Valid editing keys are listed in Appendix E.
  3070.  
  3071. In addition,  if you  specify a  "hotkey" to an Entry Field using FldKey(),
  3072. you may  also move  directly to  a particular field whenever that hotkey is
  3073. pressed.
  3074.  
  3075. Please note that mouse support is automatically activated during entry form
  3076. processing, if  a mouse  has been detected during initialization.  Clicking
  3077. the mouse  on that  field will  automatically move the cursor to that field
  3078. for input.
  3079.  
  3080. After the  EntGet() function returns, all fields defined with EntDef() will
  3081. be cleared.   The  receiving strings of all defined fields will now contain
  3082. the data  entered.   If Escape  checking was on and [Esc] was pressed, then
  3083. all receiving strings will contain the values they held before EntGet() was
  3084. called and TcxlErr will return W_ESCPRESS.
  3085.  
  3086.  
  3087.  
  3088.  
  3089.  
  3090.  
  3091.  
  3092. TesSeRact CXL V5.52 Documentation                                  Page 39
  3093. Sometimes, you may have a need to extend or modify the data entry keys used
  3094. by EntGet()  during processing  of the  fields.     There  is  a  function,
  3095. EntKey(), that  enables this.   What EntKey() does is defines a function to
  3096. be  used  as  the  alternate  get-key  function  so  that  during  EntGet()
  3097. processing you  can get  a key, test it, change it, or do whatever else you
  3098. like with it before you return it to EntGet().  It also lets you to specify
  3099. a variable  to receive  the key  that caused  termination of the form.  The
  3100. call to EntKey() can be contained anywhere between EntDef() and EntGet().
  3101.  
  3102. Often, when  dealing with database records, users would like to have [PgUp]
  3103. mean previous  record and  [PgDn] mean next record.  Let's also say that we
  3104. want to  use [F10]  as the normal exit key instead of the currently defined
  3105. [Ctrl-Enter].   Here is  an example  of an alternate get-key function would
  3106. handle this:
  3107.  
  3108.   KeyT CTYP get_key(NOARG)
  3109.   {
  3110.   KeyT key;
  3111.  
  3112.   key=KeyGetc();
  3113.         /* if key was [F10], change it to [Ctrl-Enter] */
  3114.   if(key == Key_F10)
  3115.   {  key= Key_C_Ent;
  3116.      EntTrm(Key_F10);
  3117.   }
  3118.         /* if key was [PgUp] or [PgDn], push key, return */
  3119.   if(key == Key_PgUp || key == Key_PgDn)
  3120.   {
  3121.      KquePut(key);
  3122.      EntTrm(key);
  3123.      key = Key_C_Ent;
  3124.   }
  3125.   return(key);
  3126.   }
  3127.  
  3128.  
  3129. Note here  that we  call the EntTrm() (See Page (?)) macro to pass back the
  3130. actual key to the function that called EntGet.  This key is returned in the
  3131. pointer passed with you originally called EntGet.
  3132.  
  3133. Multiple records  with identical  layouts may  be "browsed", once EntDef(),
  3134. EntFld() and  EntDsp() have  been initially called by updating the contents
  3135. of the  FdfStr(), etc.,  elements of  the Fdf  Field-definition objects and
  3136. again calling  EntDsp() for  each new record.  However, either EntFree() or
  3137. EntGet() MUST  be called  to dispose  of the  form. If  EntSav() is  called
  3138. BEFORE calling  EntGet() for an entry form, the form will be preserved (not
  3139. disposed of)  and can  then be reused for multiple records.  EntFree() MUST
  3140. then be called to dispose of the form after EntGet() returns.
  3141.  
  3142.  
  3143.  
  3144.  
  3145.  
  3146.  
  3147.  
  3148.  
  3149.  
  3150.  
  3151. Page 40                                  TesSeRact CXL V5.52 Documentation
  3152. The <fm>  feature-mask argument  to EntFld()  is an ORed combination of the
  3153. FLD_NUL ... FLD_DIS constants defined here. These special cases apply:
  3154.  
  3155.   If FLD_DIS  (input disabled)  is set, at least ONE field must be enabled.
  3156.      Obviously both FLD_DIS and FLD_REQ cannot be set for a field.  FLD_REQ
  3157.      takes precedence  and will override FLD_DIS as an initial setting.  If
  3158.      a disabled field is made required by calling FldReq(), it will also be
  3159.      enabled.
  3160.   If FLD_REQ (input required) is set, the user will not be able to exit the
  3161.      form until the field is entered and validated.  If a required field is
  3162.      disabled by  calling FldDis(),  it will  also no  longer be a required
  3163.      field (see above).
  3164.   If FLD_SUB  (nested child  form) is set, a user "before" function for the
  3165.      child form  MUST be  defined via  a call  to  FldFun()  following  the
  3166.      EntFld() call for the parent field. Up to ENT_MAX (currently 8) levels
  3167.      of child forms can be nested.
  3168.  
  3169. To define,  display and  process a  child  form,  define  a  user  "before"
  3170. function for  the parent  field with FldFun(), that, at a minimum, performs
  3171. the following  sequence of  calls before  returning to  EntGet() to  resume
  3172. processing of the parent field and form:
  3173.   EntPush() to preserve the parent form.
  3174.   Wopen() to define and open the child's window.
  3175.   EntDef() and  EntFld(), etc.,  to define the child form and its component
  3176.      fields and make it current.
  3177.   EntGet() to  display, process and dispose of the child form -OR- EntDsp()
  3178.      to display  and  EntFree()  to  dispose  of  the  child  form  without
  3179.      processing.
  3180.   Wclose() to close the child's window.
  3181.   EntPop() to restore the parent form and make it current.
  3182.  
  3183. After EntPop()  returns, the  parent  field  can  be  filled  in  or  other
  3184. appropriate action  taken before returning to EntGet(). If the parent field
  3185. is changed, FldChg() MUST be called to signal the change to EntGet().
  3186.  
  3187. The global  EctlCur pointer  and EntCur()  are valid  and the  data objects
  3188. exist ONLY  when a  current entry-form  is defined (i.e., after EntDef() is
  3189. called and  before EntGet()  or EntFree()  returns). Between  EntPush() and
  3190. EntDef() calls  for a child form, NO current form is defined and EctlCur is
  3191. NULL!
  3192.  
  3193. EntGet() disposes  of the  current form  and frees  all of its data objects
  3194. before returning  (unless EntSav()  has been called) so there is NO current
  3195. entry-form defined and EctlCur is NULL!
  3196.  
  3197. The field-movement bits in FdfFlg(f) are ONLY valid within a user "before",
  3198. "valid" or  "after" function called by EntGet(). NO bits are set if a field
  3199. is selected  by the  mouse in  other than  MOU_KEYS mode.  When we describe
  3200. these flags  as "transient",  we mean  that the values they contain will be
  3201. constantly changing  during input.   A similar usage is the ANSI "volatile"
  3202. keyword, which  means that  the variables  can change  without notice,  but
  3203. accurately indicate the current state.
  3204.  
  3205.  
  3206.  
  3207.  
  3208.  
  3209.  
  3210. TesSeRact CXL V5.52 Documentation                                  Page 41
  3211.                       Using Format Control Characters
  3212.  
  3213.  
  3214. The format control characters used by the Entry System and the Input System
  3215. controls how each character is input and how large the input field will be.
  3216. It consists  of 1  or more  format  characters,  and  may  optionally  have
  3217. displayed text  in between  any of  the format control characters.  You may
  3218. use spaces in between the format control characters for readability of your
  3219. code; however, these spaces will NOT be used for input.  A complete list of
  3220. valid  format  control  characters  are  listed  in  Appendix  D  (case  IS
  3221. significant).   All Format  Control Characters  are valid in both the Entry
  3222. System and the Input System, including command toggles.
  3223.  
  3224. In a  change from  previous versions  of this  product, decimal  points are
  3225. returned as  part of  the TCXL  field string,  when using  the '9'  or  '$'
  3226. control codes.   Therefore,  the numeric  conversion routines cvt..(), have
  3227. been changed  to account  for this.   There  are 4  conversion functions to
  3228. convert numbers to/from TCXL fields (Page 150):
  3229.  
  3230.           cvtic().................convert integer to TCXL field string
  3231.           cvtci().................convert TCXL field string to integer
  3232.           cvtfc()..........convert floating point to TCXL field string
  3233.           cvtcf()..........convert TCXL field string to floating point
  3234.  
  3235.  
  3236. To correctly  use numeric  fields, you  must first convert your number to a
  3237. TCXL field  string with  cvtic() or  cvtfc(), and  on return from the entry
  3238. form, you should convert the result back to the correct type of number.
  3239.  
  3240. Also, please  note that  decimal fields are now available in both the Entry
  3241. System and the Input System.
  3242.  
  3243.  
  3244.  
  3245.  
  3246.  
  3247.  
  3248.  
  3249.  
  3250.  
  3251.  
  3252.  
  3253.  
  3254.  
  3255.  
  3256.  
  3257.  
  3258.  
  3259.  
  3260.  
  3261.  
  3262.  
  3263.  
  3264.  
  3265.  
  3266.  
  3267.  
  3268.  
  3269. Page 42                                  TesSeRact CXL V5.52 Documentation
  3270.                            Entry System Equates
  3271.  
  3272.  
  3273.                             _Ectl Access Macros
  3274.  
  3275.           EctlCur...................................Current entry-form
  3276.           EctlStk(i)..................................Entry-form stack
  3277.           EctlLvl.....................................Entry-form level
  3278.           EctlTag..................................Current field TagId
  3279.  
  3280.                             _Edf Access Macros
  3281.  
  3282.           EdfTop.......................................Field-list head
  3283.           EdfFld(i).................................Field-list element
  3284.           EdfBot.......................................Field-list tail
  3285.           EdfCur.........................................Current field
  3286.           EdfGet.........................................User getkey()
  3287.           EdfTrm..................................User last-key buffer
  3288.           EdfBfr...........................................Buffer-pool
  3289.           EdfPos...................................Field-position list
  3290.           EdfLen.....................................Field-length list
  3291.           EdfCnt...........................................Field-count
  3292.           EdfOrg...................................Window image origin
  3293.           EdfOrgW.................................................Word
  3294.           EdfCol...................................................Col
  3295.           EdfRow...................................................Row
  3296.           EdfCtl.........................................Control flags
  3297.           EdfFat.......................................Field attribute
  3298.           EdfHat...................................Highlight attribute
  3299.           EdfDat....................................Disabled attribute
  3300.           EdfUsr.......................................User descriptor
  3301.  
  3302.                             _Fdf Access Macros
  3303.  
  3304.           FdfStr(f).......................................Input string
  3305.           FdfBfr(f).....................................Buffer pointer
  3306.           FdfFmt(f)......................................Format string
  3307.           FdfVal(f)..................................."Valid" function
  3308.           FdfBef(f).................................."Before" function
  3309.           FdfAft(f).................................."After"  function
  3310.           FdfKey(f).............................................Hotkey
  3311.           FdfTag(f)........................................Field TagId
  3312.           FdfHlp(f).........................................Help TagId
  3313.           FdfPos(f)....................................Window position
  3314.           FdfPosW(f)..............................................Word
  3315.           FdfCol(f)................................................Col
  3316.           FdfRow(f)................................................Row
  3317.           FdfOpt(f).................................Format option bits
  3318.           FdfUse(f)..................................Format usage bits
  3319.           FdfCtl(f)................................Field-control flags
  3320.           FdfFlg(f)....................................Transient flags
  3321.           FdfLen(f).......................................Field length
  3322.           FdfExt(f).......................................Input extent
  3323.           FdfDot(f).....................................Decimal offset
  3324.           FdfUsr(f)....................................User descriptor
  3325.  
  3326.  
  3327.  
  3328. TesSeRact CXL V5.52 Documentation                                  Page 43
  3329.                       EntFld() <fm> feature-mask bits
  3330.  
  3331.           FLD_NUL..........................No special features defined
  3332.           FLD_LWR...........................Convert input to lowercase
  3333.           FLD_MIX..........................Convert input to mixed case
  3334.           FLD_UPR...........................Convert input to uppercase
  3335.           FLD_PAS................................Password - no display
  3336.           FLD_DEC........................................Decimal field
  3337.           FLD_CUR.......................................Currency field
  3338.           FLD_NWR...........................No auto-wrap to next field
  3339.           FLD_LJS..................................Left justify result
  3340.           FLD_RJS.................................Right justify result
  3341.           FLD_TRM..........................Trim end spaces from result
  3342.           FLD_SUB....................................Nested child form
  3343.           FLD_REQ.......................................Input required
  3344.           FLD_DIS.......................................Input disabled
  3345.  
  3346.                       EntFld() <md> field edit-modes
  3347.  
  3348.           FLD_INI......................Initial - clear field for input
  3349.           FLD_CHG......................Change - display field for edit
  3350.           FLD_CND...................................Conditional-update
  3351.  
  3352.                          Transient FdfFlg(f) flags
  3353.  
  3354.           FDF_MOV........................................Movement mask
  3355.           FDF_BEG.......................................To first field
  3356.           FDF_END........................................To last field
  3357.           FDF_PRV....................................To previous field
  3358.           FDF_NXT........................................To next field
  3359.           FDF_UP.................................Upward [if EdfDir ON]
  3360.           FDF_DWN..............................Downward [if EdfDir ON]
  3361.  
  3362.  
  3363.  
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.  
  3371.  
  3372.  
  3373.  
  3374.  
  3375.  
  3376.  
  3377.  
  3378.  
  3379.  
  3380.  
  3381.  
  3382.  
  3383.  
  3384.  
  3385.  
  3386.  
  3387. Page 44                                  TesSeRact CXL V5.52 Documentation
  3388.                            Entry System Example
  3389.  
  3390. /*=======================[ The TCXL Entry Demo ]======================*
  3391.  | Called from the [E]ntry item of the UserDemo.C main menu
  3392.  *--------------------------------------------------------------------*/
  3393.  
  3394. VOID  CTYP  EntryDemo(NOARG)
  3395. {
  3396.    REG IntT    c, p = 0, i;
  3397.    KeyT        k;
  3398.    VcelFP      s;
  3399.    BytT        m = 0;
  3400.  
  3401.    s = FarVsave(LGREY|_BLUE);  /* save screen                   */
  3402.  
  3403.    if(!WpopUp(CNT_CNT, 2, 8, 23, 70, 1, LCYAN|_BLUE, LCYAN|_BLUE))
  3404.       ErrorExit(1);            /* windowing error!              */
  3405.  
  3406.    AddShadow();                /* add shadow, title, notes      */
  3407.    Wtitle("[ TCXL Order Form ]", TTL_LFT, LCYAN|_BLUE);
  3408.    Wmessage("[ $50 Plus $3 S&H ]", BRD_TOP, 42, LCYAN|_BLUE);
  3409.    Wmessage(" [F10]=Finished ",    BRD_BOT,  5, LCYAN|_BLUE);
  3410.    Wmessage(" [F9]=Today ",        BRD_BOT, 25, LCYAN|_BLUE);
  3411.    Wmessage(" [Esc]=Abort ",       BRD_BOT, 45, LCYAN|_BLUE);
  3412.    HlpPush(H_EDITKEYS);           /* set help category          */
  3413.    do
  3414.    {
  3415.      EntDef(BLUE|_LGREY, WHITE|_LGREY,/* define the form            */
  3416.         DEMO_CNT);
  3417.      Wprts( 1,  3, WHITE|_BLUE, "Date");/* prompts and fields         */
  3418.      EntFld( 1, 16, date,      "<01>#'/'<0123>#'/'##",
  3419.         FLD_NUL, 1, m, CheckDate, H_DATE);
  3420.      FldFun(NULL, DisplayDate);/* "before"/"after" functions    */
  3421.      FldKey(Key_A_D);          /* hot-key                       */
  3422.      Wprts( 3,  3, WHITE|_BLUE, "First Name");
  3423.      EntFld( 3, 16, firstname, "MMMMMMMMMMMMMMM",
  3424.         FLD_NUL, 2, m, NULL, H_FIRSTNAME);
  3425.      FldKey(Key_A_F);
  3426.      Wprts( 3, 37, WHITE|_BLUE, "Initial");
  3427.      EntFld( 3, 47, initial, "U'.'",
  3428.         FLD_NUL, 3, m, NULL, H_INITIAL);
  3429.      FldKey(Key_A_I);
  3430.      Wprts( 5,  3, WHITE|_BLUE, "Last Name");
  3431.      EntFld( 5, 16, lastname, "MMMMMMMMMMMMMMMMMMMMMMMMM",
  3432.         FLD_NUL, 4, m, NULL, H_LASTNAME);
  3433.      FldKey(Key_A_L);
  3434.      Wprts( 7,  3, WHITE|_BLUE, "Company");
  3435.      EntFld( 7, 16, company, "****************************************",
  3436.         FLD_MIX, 5,  m, NULL, H_NONE);
  3437.      FldKey(Key_A_O);
  3438.      Wprts( 9,  3, WHITE|_BLUE, "Address");
  3439.      EntFld( 9, 16, address, "****************************************",
  3440.         FLD_MIX, 6, m, NULL, H_NONE);
  3441.      FldKey(Key_A_A);
  3442.      Wprts(11,  3, WHITE|_BLUE, "City");
  3443.      EntFld(11, 16, city, "MMMMMMMMMMMMMMMMMMMM",
  3444.         FLD_NUL, 7, m, NULL, H_CITY);
  3445.  
  3446. TesSeRact CXL V5.52 Documentation                                  Page 45
  3447.      FldKey(Key_A_C);
  3448.      Wprts(11, 41, WHITE|_BLUE, "State");
  3449.      EntFld(11, 50, state, "UU",
  3450.         FLD_NUL, 8, m, NULL, H_STATE);
  3451.      FldKey(Key_A_S);
  3452.      Wprts(13,  3, WHITE|_BLUE, "Zip Code");
  3453.      EntFld(13, 16, zipcode, "#####'-'%%%%",
  3454.         FLD_NUL, 9, m, NULL, H_ZIPCODE);
  3455.      FldKey(Key_A_Z);
  3456.      Wprts(13, 31, WHITE|_BLUE, "Phone");
  3457.      EntFld(13, 40, phone, "'('###') '###'-'####",
  3458.         FLD_NWR, 10, m, NULL, H_NONE);
  3459.      FldKey(Key_A_P);
  3460.      Wprts(15,  3, WHITE|_BLUE, "Compiler");
  3461.      EntFld(15, 16, compiler, "***************",
  3462.        FLD_MIX, 11, m, NULL, H_COMPILER);
  3463.      FldFun(PickCompiler, NULL);
  3464.      FldKey(Key_A_O);
  3465.      Wprts(15, 37, WHITE|_BLUE, "Amount");
  3466.      EntFld(15, 46, amtenc, "$$$$.$$",
  3467.         FLD_CUR, 12, m, NULL, H_AMOUNT);
  3468.      FldKey(Key_A_M);
  3469.      Wprts(17,  3, WHITE|_BLUE, "Comments");
  3470.      EntFld(17, 16, comments, "***********************************\n"
  3471.         "***********************************", FLD_NUL, 13, m, NULL,
  3472.         H_NONE);
  3473.      FldKey(Key_A_N);
  3474.      EntKey(_KFVCP(GetKey), &k);/* alternate kbd get function    */
  3475.       if(0 >= EntGet(DmFld[0].Ftag))/* process the form. If [Esc]    */
  3476.          break;                /* was pressed, don't bother     */
  3477.                                /* with confirmation message.    */
  3478.       if(!WpopUp(CNT_CNT, 9, 20, 13, 64, 0, WHITE|_CYAN, WHITE|_CYAN))
  3479.          ErrorExit(1);         /* windowing error!              */
  3480.  
  3481.       if(k != Key_F10)         /* if [F10] was pressed, don't   */
  3482.       {                        /* display confirmation message. */
  3483.          AddShadow();
  3484.          Wputc('\n');          /* Display confirmation message  */
  3485.          WputCen("Is this information correct? \033A\076Y\b");
  3486.          KeyClear();
  3487.          c = KwGetYn('Y');
  3488.       }
  3489.       else
  3490.          c = 'Y';
  3491.       if(c == 'Y')             /* ask to print order            */
  3492.       {
  3493.          Wclear();
  3494.          Wputc('\n');
  3495.          WputCen("Would you like your order printed? \033A\076Y\b");
  3496.          KeyClear();
  3497.          p = KwGetYn('Y');
  3498.       }
  3499.       Wclose();
  3500.       if(p == 'Y')
  3501.          PrintOrder();
  3502.       m = 1;                   /* Change to "update" mode       */
  3503.    } while(c != 'Y');
  3504.  
  3505. Page 46                                  TesSeRact CXL V5.52 Documentation
  3506.  
  3507.    HlpDrop();                  /* clear help                    */
  3508.    Wclose();                   /* close window                  */
  3509.    FarVrestore(s);             /* restore screen, cursor        */
  3510.    CurHide();
  3511.    MoveBarDn();                /* next selection on main menu   */
  3512. } /* EntrDemo */
  3513.  
  3514.                            Entry System Routines
  3515.  
  3516.  
  3517.                          Form and Field Definition
  3518.  
  3519. ---------------------------------------------------------------------------
  3520. EntBuild
  3521.  
  3522. Synopsis........Build Data Entry Form from defining set of Ebld and Fbld
  3523.                 objects.
  3524.  
  3525. Header File.....TCXLent.h
  3526.  
  3527. Prototype.......IntT CTYP EntBuild(EbldP ep);
  3528.  
  3529. Source File.....ENT\ENTBUILD.C
  3530.  
  3531. Arguments.......ep -  Pointer to top Ebld structure.
  3532.  
  3533.                 The Ebld structure is organized based on the parameters
  3534.                 used by EntDef(), EntFld(), FldKey(), and FldFun().  For
  3535.                 complete descriptions of these structures, and a detailed
  3536.                 example of they way they can be used, see INC\TCXLent.h and
  3537.                 DEMO\ENTRDEMO.C.
  3538.  
  3539. Returns.........ERR_NUL  -  No Error
  3540.                 ERR_ARG  -  Argument Failure
  3541.                 ERR_MEM  -  Memory Allocation Failure
  3542.                    TcxlErr contains:
  3543.                    W_NOACTIVE  -  No Active Window
  3544.                    W_NOFRMBEG  -  No Begin Of Form Specified, see EntDef()
  3545.                    W_INVCOORD  -  Invalid Coordinates
  3546.                    W_INVFORMT  -  Invalid Format String
  3547.                    W_NOINPDEF  -  No Input Fields Defined
  3548.  
  3549. Notes...........It is VERY important to check the return value from
  3550.                 EntBuild()!
  3551.  
  3552.  
  3553.  
  3554.  
  3555.  
  3556.  
  3557.  
  3558.  
  3559.  
  3560.  
  3561.  
  3562.  
  3563.  
  3564. TesSeRact CXL V5.52 Documentation                                  Page 47
  3565. ---------------------------------------------------------------------------
  3566. EntDef
  3567.  
  3568.                 Synopsis Begin entry form definition.
  3569.  
  3570. Header File.....TCXLent.h
  3571.  
  3572. Prototype.......IntT CTYP EntDef(AtrT fa, AtrT ta, IntT nf);
  3573.  
  3574. Source File.....ENT\ENTDEF.C
  3575.  
  3576. Arguments.......fa -  Field Attribute (See Appendix A)
  3577.                 ta -  Highlight Attribute (See Appendix A)
  3578.                 nf -  Number of fields
  3579.  
  3580. Returns.........ERR_NUL  -  No Error
  3581.                 ERR_ARG  -  Argument Failure
  3582.                 ERR_MEM  -  Memory Allocation Error
  3583.                    TcxlErr contains:
  3584.                    W_NOACTIVE  -  No Active Window
  3585.  
  3586. Notes...........Marks the beginning of a data input form, and specifies
  3587.                 text attributes to be used by the form.  The Field
  3588.                 Attribute is used to display the entry fields themselves,
  3589.                 while the Highlight Attribute is used to display the
  3590.                 characters within the current field.
  3591. ---------------------------------------------------------------------------
  3592. EntFld
  3593.  
  3594. Synopsis........Defines a window input field.
  3595.  
  3596. Header File.....TCXLent.h
  3597.  
  3598. Prototype.......IntT CTYP EntFld(BytT wr, BytT wc, ChrP ps, ChrP fs,
  3599.                      WrdT fm, TagT id, BytT im, IfcpCP fv, TagT ht);
  3600.  
  3601. Source File.....ENT\ENTFLD.C
  3602.  
  3603. Arguments.......wr -  Window Row for Start of Input
  3604.                 wc -  Window Column for Start of Input
  3605.                 ps -  String buffer to receive input
  3606.                 fs -  Field Format String (See Appendix D)
  3607.                 fm -  Feature Mask (Page 44)
  3608.                 id -  Tag Identifier for field
  3609.                 im -  Input Mode (Page 44)
  3610.                 fv -  Validate Function
  3611.                 ht -  Help Tag for this field
  3612.  
  3613. Returns.........ERR_NUL  -  No Error
  3614.                 ERR_ARG  -  Argument Failure
  3615.                 ERR_MEM  -  Memory Allocation Error
  3616.                    TcxlErr contains:
  3617.                    W_NOFRMBEG  -  No Begin Of Form Specified, see EntDef()
  3618.                    W_INVCOORD  -  Invalid Coordinates
  3619.                    W_INVFORMT  -  Invalid Format String
  3620.  
  3621.  
  3622.  
  3623. Page 48                                  TesSeRact CXL V5.52 Documentation
  3624. ---------------------------------------------------------------------------
  3625. EntDis
  3626.  
  3627. Synopsis........Assign disabled field attribute for current form.
  3628.  
  3629. Header File.....TCXLent.h
  3630.  
  3631. Prototype.......IntT CTYP EntDis(AtrT ds);
  3632.  
  3633. Source File.....ENT\ENTDIS.C
  3634.  
  3635. Arguments.......ds -  Attribute to use when field is disabled.  (See
  3636.                       Appendix A)
  3637.  
  3638. Returns.........ERR_NUL  -  No Error
  3639.                 ERR_ARG  -  Argument Failure
  3640.                    TcxlErr contains:
  3641.                    W_NOFRMBEG  -  No Begin Of Form Specified, see EntDef()
  3642.  
  3643. Notes...........The disabled attribute defaults to the normal field
  3644.                 attribute.
  3645. ---------------------------------------------------------------------------
  3646. EntKey
  3647.  
  3648. Synopsis........Assign alternate keyboard support.
  3649.  
  3650. Header File.....TCXLent.h
  3651.  
  3652. Prototype.......IntT CTYP EntKey(KfvCP gk, KeyP tk);
  3653.  
  3654. Source File.....ENT\ENTKEY.C
  3655.  
  3656. Arguments.......gk -  Alternate getkey() function
  3657.                 tk -  Pointer to location to store termination key
  3658.  
  3659. Returns.........ERR_NUL  -  No Error
  3660.                 ERR_ARG  -  Argument Failure
  3661.                    TcxlErr contains:
  3662.                    W_NOACTIVE  -  No Active Form
  3663.                    W_NOFRMBEG  -  No Begin Of Form Specified
  3664.  
  3665. Notes...........Allows you to extend or modify the data entry keys used as
  3666.                 the alternate get-key function so that during EntGet()
  3667.                 processing you can get a key, test it, change it, or do
  3668.                 whatever else you like with it before you return it to
  3669.                 EntGet().  It also lets you specify a variable to receive
  3670.                 the key that caused termination of the form. The call to
  3671.                 EntKey() can be contained anywhere between EntDef() and
  3672.                 EntGet().
  3673.  
  3674.  
  3675.  
  3676.  
  3677.  
  3678.  
  3679.  
  3680.  
  3681.  
  3682. TesSeRact CXL V5.52 Documentation                                  Page 49
  3683. ---------------------------------------------------------------------------
  3684. EntOpt
  3685.  
  3686. Synopsis........Set global entry form options.
  3687.  
  3688. Header File.....TCXLent.h
  3689.  
  3690. Prototype.......IntT CTYP EntOpt(FlgT gi, FlgT ud);
  3691.  
  3692. Source File.....ENT\ENTOPT.C
  3693.  
  3694. Arguments.......gi -  Global Insert Mode Enable
  3695.                 ud -  Global [Up]/[Down] Key Enable
  3696.  
  3697. Returns.........ERR_NUL  -  No Error
  3698.                 ERR_ARG  -  Argument Failure
  3699.                    TcxlErr contains:
  3700.                    W_NOFRMBEG  -  No Begin Of Form Specified
  3701.  
  3702. Notes...........If <gi> is TRUE, all entry fields will have INSert mode
  3703.                 turned on on entry to the field.  In the default mode of
  3704.                 FALSE, INSert mode is specifically turned OFF on entry to
  3705.                 each field.
  3706.  
  3707.                 If <ud> is TRUE, Up/Down arrows move the cursor to the
  3708.                 field physically above/below the current field; if FALSE
  3709.                 (the default), [Up] translates to [BackTab], while [Down]
  3710.                 translates to [Tab].
  3711. ---------------------------------------------------------------------------
  3712. EntSep
  3713.  
  3714. Synopsis........Assign word-separator string
  3715.  
  3716. Header File.....TCXLent.h
  3717.  
  3718. Prototype.......VOID EntSep(ChrP ws);
  3719.  
  3720. Arguments.......ws -  New separation string
  3721.  
  3722. Returns.........ERR_NUL  -  No Error
  3723.                 ERR_ARG  -  Argument Failure
  3724.                    TcxlErr contains:
  3725.                    W_NOFRMBEG  -  No Form Defined
  3726.  
  3727. Notes...........This function declares a new "word separation" string.  The
  3728.                 TCXL library has a built-in definition of the characters
  3729.                 that will mark the end of a "word":
  3730.  
  3731.                 ChrP _FmtSep = " ~`!@#$%^&*()-+=|\\[]{}:;'\",./<>?";
  3732.  
  3733.                 If your application requires a different separator string,
  3734.                 you would call this function.
  3735.  
  3736.  
  3737.  
  3738.  
  3739.  
  3740.  
  3741. Page 50                                  TesSeRact CXL V5.52 Documentation
  3742. ---------------------------------------------------------------------------
  3743. EntTrm
  3744.  
  3745. Synopsis........Store alternate getkey termination keystroke.
  3746.  
  3747. Header File.....INC\TCXLENT.H
  3748.  
  3749. Prototype.......VOID EntTrm(KeyT kc);
  3750.  
  3751. Macro...........#define EntTrm(kc) (*(EctlCur->etrm) = (kc))
  3752.  
  3753. Arguments.......kc -  Termination Key
  3754.  
  3755. Returns.........None.
  3756.  
  3757. Notes...........See EntKey() for details on setting an alternate key
  3758.                 handler.  When a user-defined exit key is detected, call
  3759.                 EntTrm() to store it in the last-key buffer, and return
  3760.                 Key_C_Ent to signal an exit from the form.
  3761. ---------------------------------------------------------------------------
  3762. FldKey
  3763.  
  3764. Synopsis........Assign user hotkey to current entry field.
  3765.  
  3766. Header File.....TCXLent.h
  3767.  
  3768. Prototype.......IntT CTYP FldKey(KeyT hk);
  3769.  
  3770. Source File.....ENT\FLDKEY.C
  3771.  
  3772. Arguments.......hk -  Hotkey for field
  3773.  
  3774. Returns.........ERR_NUL  -  No Error
  3775.                 ERR_ARG  -  Argument Failure
  3776.                    TcxlErr contains:
  3777.                    W_NOACTIVE  -  No Active Window
  3778.                    W_NOINPDEF  -  No Input Fields Defined
  3779.  
  3780. Notes...........This function assigns a "hot key" to the individual data
  3781.                 entry field.  The call to this function must appear
  3782.                 immediately after the call to the EntFld() to which it
  3783.                 relates.  During user input, when the user enters the
  3784.                 field, the before function gets called.
  3785.  
  3786.  
  3787.  
  3788.  
  3789.  
  3790.  
  3791.  
  3792.  
  3793.  
  3794.  
  3795.  
  3796.  
  3797.  
  3798.  
  3799.  
  3800. TesSeRact CXL V5.52 Documentation                                  Page 51
  3801. ---------------------------------------------------------------------------
  3802. FldFun
  3803.  
  3804. Synopsis........Assign before/after functions to current entry field.
  3805.  
  3806. Header File.....TCXLent.h
  3807.  
  3808. Prototype.......IntT CTYP FldFun(VfvCP bf, VfvCP af);
  3809.  
  3810. Source File.....ENT\FLDFUN.C
  3811.  
  3812. Arguments.......bf -  Before function
  3813.                 af -  After function
  3814.  
  3815. Returns.........ERR_NUL  -  No Error
  3816.                 ERR_ARG  -  Argument Failure
  3817.                    TcxlErr contains:
  3818.                    W_NOACTIVE  -  No Active Window
  3819.                    W_NOINPDEF  -  No Input Fields Defined
  3820.  
  3821. Notes...........Assigns "before" and "after" function pointers to the input
  3822.                 field just defined.  The call to this function must appear
  3823.                 immediately after the call to the EntFld() to which it
  3824.                 relates.  During user input, when the user enters the
  3825.                 field, the before function gets called.  When the user
  3826.                 leaves the validated field, the after function gets called.
  3827.                 This powerful feature allows you to do some pretty advanced
  3828.                 stuff with input fields, but must be used very carefully.
  3829.  
  3830.                            Entry Form Processing
  3831.  
  3832. ---------------------------------------------------------------------------
  3833. EntGet
  3834.  
  3835. Synopsis........Processes Entry Form
  3836.  
  3837. Header File.....TCXLent.h
  3838.  
  3839. Prototype.......TagT CTYP EntGet(TagT id);
  3840.  
  3841. Source File.....ENT\ENTGET.C
  3842.  
  3843. Arguments.......id -  Start Field
  3844.  
  3845. Returns.........Current field Tag ID; or
  3846.  
  3847.                 ERR_ARG  -  Argument Failure
  3848.                    TcxlErr contains:
  3849.                    W_ESCPRESS  -  Escape key pressed
  3850.                    W_NOACTIVE  -  No Active Window
  3851.                    W_NOINPDEF  -  No Input Fields Defined
  3852.  
  3853. Notes...........Marks the end of the defined input form and initiates
  3854.                 processing of the defined input fields.  The user is
  3855.                 allowed to edit back and forth between the defined fields
  3856.                 until the last field is entered.
  3857.  
  3858.  
  3859. Page 52                                  TesSeRact CXL V5.52 Documentation
  3860. ---------------------------------------------------------------------------
  3861. EntCur
  3862.  
  3863. Synopsis........Current Entry Form Object
  3864.  
  3865. Header File.....TCXLent.h
  3866.  
  3867. Prototype.......EdfP EntCur(NOARG);
  3868.  
  3869. Arguments.......None
  3870.  
  3871. Returns.........The address of the current form's record.
  3872.  
  3873. Notes...........Returns the address of the currently active form's record.
  3874.                 After this call, you may access any of the form's elements.
  3875.                 Use caution when updating elements in the form's record.
  3876.                 This function should only be called while the form to which
  3877.                 it relates is being processed.
  3878. ---------------------------------------------------------------------------
  3879. EntDsp
  3880.  
  3881. Synopsis........Display all fields on form.
  3882.  
  3883. Header File.....TCXLent.h
  3884.  
  3885. Prototype.......IntT CTYP EntDsp(NOARG);
  3886.  
  3887. Source File.....ENT\ENTDSP.C
  3888.  
  3889. Arguments.......None
  3890.  
  3891. Returns.........ERR_NUL  -  No Error
  3892.                 ERR_ARG  -  Argument Failure
  3893.                 ERR_MEM  -  Memory Allocation Failure.
  3894.                    TcxlErr contains:
  3895.                    W_NOFRMBEG  -  No Form Defined
  3896.                    W_NOINP2FEW -  Not enough Input Fields Defined
  3897.                    W_NOINPENA  -  No fields enabled
  3898.  
  3899. Notes...........This function is generally used in conjunction with
  3900.                 EntFree(), permitting "read-only"-style forms, suitable for
  3901.                 paging through a database, for example.  For more details,
  3902.                 see the notes in TCXLent.h.
  3903.  
  3904.  
  3905.  
  3906.  
  3907.  
  3908.  
  3909.  
  3910.  
  3911.  
  3912.  
  3913.  
  3914.  
  3915.  
  3916.  
  3917.  
  3918. TesSeRact CXL V5.52 Documentation                                  Page 53
  3919. ---------------------------------------------------------------------------
  3920. EntFree
  3921.  
  3922. Synopsis........Dispose of current entry form.
  3923.  
  3924. Header File.....TCXLent.h
  3925.  
  3926. Prototype.......VOID CTYP EntFree(NOARG);
  3927.  
  3928. Source File.....ENT\ENTFREE.C
  3929.  
  3930. Arguments.......None
  3931.  
  3932. Returns.........None
  3933.  
  3934. Notes...........This function is generally used in conjunction with
  3935.                 EntDsp(), permitting "read-only"-style forms, suitable for
  3936.                 paging through a database, for example.  For more details,
  3937.                 see the notes in TCXLent.h.
  3938. ---------------------------------------------------------------------------
  3939. EntPush
  3940.  
  3941. Synopsis........Save current entry form.
  3942.  
  3943. Header File.....TCXLent.h
  3944.  
  3945. Prototype.......IntT CTYP EntPush(NOARG);
  3946.  
  3947. Source File.....ENT\ENTPUSH.C
  3948.  
  3949. Arguments.......None
  3950.  
  3951. Returns.........ERR_NUL  -  No Error
  3952.                 ERR_ARG  -  Argument Failure
  3953.                 ERR_MEM  -  Memory Allocation Error
  3954.                    TcxlErr contains:
  3955.                    W_NOFRMBEG  -  No Form Defined
  3956.                    W_FRMSTKOV  -  Form stack overflow
  3957.  
  3958. Notes...........This function, in conjunction with EntPop(), is used to
  3959.                 create nested entry forms.  See the discussion in TCXLent.h
  3960.                 for more specific details.  Make sure to ALWAYS check the
  3961.                 return value from EntPush for ERR_MEM!!
  3962.  
  3963.  
  3964.  
  3965.  
  3966.  
  3967.  
  3968.  
  3969.  
  3970.  
  3971.  
  3972.  
  3973.  
  3974.  
  3975.  
  3976.  
  3977. Page 54                                  TesSeRact CXL V5.52 Documentation
  3978. ---------------------------------------------------------------------------
  3979. EntPop
  3980.  
  3981. Synopsis........Restore saved entry form.
  3982.  
  3983. Header File.....TCXLent.h
  3984.  
  3985. Prototype.......IntT CTYP EntPop(NOARG);
  3986.  
  3987. Source File.....ENT\ENTPUSH.C
  3988.  
  3989. Arguments.......None
  3990.  
  3991. Returns.........ERR_NUL  -  No Error
  3992.                 ERR_ARG  -  Argument Failure
  3993.                    TcxlErr contains:
  3994.                    W_NOFRMBEG  -  No Form Defined
  3995.                    W_FRMISDEF  -  Form already defined
  3996.  
  3997. Notes...........This function, in conjunction with EntPush is used to
  3998.                 create nested entry forms.  See the discussion in TCXLent.h
  3999.                 for more specific details.
  4000.  
  4001.                           Entry Field Processing
  4002.  
  4003. ---------------------------------------------------------------------------
  4004. FldCur
  4005.  
  4006. Synopsis........Current Field Object
  4007.  
  4008. Header File.....TCXLent.h
  4009.  
  4010. Prototype.......FdfP FldCur(NOARG);
  4011.  
  4012. Arguments.......None
  4013.  
  4014. Returns.........The address of the current entry field.
  4015.  
  4016. Notes...........Returns the address of the current input field's record.
  4017.                 After the call to this function, you may access any of the
  4018.                 current input field's elements.  Use caution when updating
  4019.                 elements in the field's record.  This function should only
  4020.                 be called while the input form to which it relates is being
  4021.                 processed.  Please use the macros defined in TCXLent.h when
  4022.                 updating members of this structure -- while the structure
  4023.                 may change in future versions, the macros will remain
  4024.                 consistent.
  4025.  
  4026.  
  4027.  
  4028.  
  4029.  
  4030.  
  4031.  
  4032.  
  4033.  
  4034.  
  4035.  
  4036. TesSeRact CXL V5.52 Documentation                                  Page 55
  4037. ---------------------------------------------------------------------------
  4038. FldLoc
  4039.  
  4040. Synopsis........Return pointer to field in current form with passed Tag ID.
  4041.  
  4042. Header File.....TCXLent.h
  4043.  
  4044. Prototype.......FdfP CTYP FldLoc(TagT id);
  4045.  
  4046. Source File.....ENT\FLDLOC.C
  4047.  
  4048. Arguments.......id -  Tag ID of the field to search for
  4049.  
  4050. Returns.........The address of the current input field's record
  4051.  
  4052.                 If an error occurs, then NULL is returned, and TcxlErr
  4053.                       contains:
  4054.                    W_NOACTIVE  -  No Active Window
  4055.                    W_NOFRMDEF  -  No Form Defined
  4056.                    W_NOTFOUND  -  No Defined Field Matches specified Tag
  4057.  
  4058. Notes...........Searches for a defined field using the tag ID of the field,
  4059.                 then returns the address of the field's record. After the
  4060.                 call to this function, you may access any of the found
  4061.                 input field's elements. Use caution when updating elements
  4062.                 in the field's record.  This function should only be called
  4063.                 during the processing of the input form to which it
  4064.                 relates.  Please use the macros defined in TCXLent.h when
  4065.                 updating members of this structure -- while the structure
  4066.                 may change in future versions, the macros will remain
  4067.                 consistent.
  4068. ---------------------------------------------------------------------------
  4069. FldChg
  4070.  
  4071. Synopsis........Signal parent field was changed by child.
  4072.  
  4073. Header File.....TCXLent.h
  4074.  
  4075. Prototype.......VOID CTYP FldChg(NOARG);
  4076.  
  4077. Source File.....ENT\FLDCHG.C
  4078.  
  4079. Arguments.......None
  4080.  
  4081. Returns.........None
  4082.  
  4083. Notes...........This function is used to tell a parent form that the child
  4084.                 has modified its current field.  This would be used in
  4085.                 conjunction with EntPush() and EntPop() to work with nested
  4086.                 entry forms.
  4087.  
  4088.  
  4089.  
  4090.  
  4091.  
  4092.  
  4093.  
  4094.  
  4095. Page 56                                  TesSeRact CXL V5.52 Documentation
  4096. ---------------------------------------------------------------------------
  4097. FldDis
  4098.  
  4099. Synopsis........Disable/Enable entry field.
  4100.  
  4101. Header File.....TCXLent.h
  4102.  
  4103. Prototype.......VOID CTYP FldDis(FdfP fp, FlgT df);
  4104.  
  4105. Source File.....ENT\FLDDIS.C
  4106.  
  4107. Arguments.......fp -  Entry field to enable/disable.
  4108.                 df -  If TRUE, disable field; else enable field.
  4109.  
  4110. Returns.........None
  4111. ---------------------------------------------------------------------------
  4112. FldReq
  4113.  
  4114. Synopsis........Make entry field required/optional.
  4115.  
  4116. Header File.....TCXLent.h
  4117.  
  4118. Prototype.......VOID CTYP FldReq(FdfP fp, FlgT rf);
  4119.  
  4120. Source File.....ENT\FLDDIS.C
  4121.  
  4122. Arguments.......fp -  Entry field to enable/disable.
  4123.                 df -  If TRUE, require input; else field takes optional
  4124.                       input.
  4125.  
  4126. Returns.........None
  4127.  
  4128.                               Entry Internals
  4129.  
  4130. ---------------------------------------------------------------------------
  4131. _FldPut (Internal)
  4132.  
  4133. Synopsis........Display Entry Field with correct attribute.
  4134.  
  4135. Header File.....TCXLent.h
  4136.  
  4137. Prototype.......VOID CTYP _FldPut(FdfP f, FlgT h);
  4138. ---------------------------------------------------------------------------
  4139. _FldSet (Internal)
  4140.  
  4141. Synopsis........Set up transient field control.
  4142.  
  4143. Header File.....TCXLent.h
  4144.  
  4145. Prototype.......VOID CTYP _FldSet(FdfP f);
  4146.  
  4147.  
  4148.  
  4149.  
  4150.  
  4151.  
  4152.  
  4153.  
  4154. TesSeRact CXL V5.52 Documentation                                  Page 57
  4155.                                 Help System
  4156.  
  4157.  
  4158. TCXL's context-sensitive help system operates on the principle of a current
  4159. help category  and a  help category  stack.   Both require  some explaining
  4160. before you begin to use them.
  4161.  
  4162. The current  help category  is the  one that  will be  used when  the  user
  4163. presses the  help key.   It  can be set by one of several ways.  The direct
  4164. way is  for you  to explicitly  set it by calling HlpSet().  There are also
  4165. indirect ways  that the  current help  category can be set.  Windows, input
  4166. fields, and  menu items  each have  individual help  categories as  part of
  4167. their record.   If  you were  to activate  a window  which has its own help
  4168. category, then  that would  become the  current help  category. During  the
  4169. processing of  input fields and menus, each time you move to a new field or
  4170. menu  item,   the  current  help  category  is  set  to  the  whatever  the
  4171. field/item's help  category is, even if that category is zero (empty). This
  4172. means that  input forms  and menus  overwrite what  was in the current help
  4173. category before the form/menu began processing.
  4174.  
  4175. To keep  from losing  the current  help category  during the  processing of
  4176. forms and  menus, you  need to  be able  to save  the current help category
  4177. during that  period.   This is where the help stack comes into the picture.
  4178. To save  the current  help category,  you  push  it  onto  the  stack  with
  4179. HlpCur().   When you  need to retrieve it, you pop it back off of the stack
  4180. using HlpPop().   The  category popped  off of  the stack  then becomes the
  4181. current help category.  This help stack is a LIFO (Last In First Out) stack
  4182. and holds up to 20 help categories.
  4183.  
  4184. When the  help key  is pressed (or when the HlpGet() function is called) by
  4185. the user,  TCXL's help  processor will search the help file for the current
  4186. help category.  If the current help category is zero (empty), then the help
  4187. category off  top of  the stack will be used.  This is where the help stack
  4188. comes in  handy.   It allows  you to  have a "background" help category for
  4189. menu items and fields that don't have help categories of their own.  Before
  4190. processing of  the form  or menu,  you  simply  push  the  background  help
  4191. category onto the stack.
  4192.  
  4193. When the  help category  is found  in the help file, the corresponding help
  4194. text will  be displayed on the screen in the help window.  If there is more
  4195. than  1   page  of  text,  the  user  can  change  between  pages  via  the
  4196. [PgUp]/[PgDn] keys.   If  there are cross-reference items, the user can use
  4197. the arrow  keys to  move between  them, and use [Enter] to select. Pressing
  4198. [Esc] will exit the help window.
  4199.  
  4200. During help  processing, all  keys attached to functions via KbndSet() will
  4201. be disabled  to avoid  conflict with  the help system.  If you wish to have
  4202. defined keys  available during  help processing,  you can define them using
  4203. KbndSet() in  the "open"  function specified  in the HlpDef() function.  If
  4204. you define  any keys  in the  "open" function,  you will  not need to worry
  4205. about freeing  them as  the help  processor will free any user-defined keys
  4206. before exiting help.
  4207.  
  4208.  
  4209.  
  4210.  
  4211.  
  4212.  
  4213. Page 58                                  TesSeRact CXL V5.52 Documentation
  4214. The size  and placement of the help window are adjustable.  The help window
  4215. size by  default is  19 rows by 64 columns centered on the screen. This can
  4216. be changed  using HlpWind().    The  HlpWind()  function  sets  the  screen
  4217. coordinates to  be used  when opening the help window and can be called any
  4218. time after  HlpDef().   If you ever want to disengage the help system, just
  4219. call HlpOff().
  4220.  
  4221.                             Building Help Files
  4222.  
  4223.  
  4224. Creating help  files is  quite easy.   You  need to have an ASCII editor to
  4225. create them with.  You should have your editor set to expand tab characters
  4226. to spaces.   Your help file can contain several help categories. Here is an
  4227. example of a couple of defined help categories:
  4228.  
  4229.   *B 1,Help Category 1
  4230.   help text help text help text
  4231.   help text help text help text
  4232.   help text help text help text
  4233.   *P
  4234.   help text help text help text
  4235.   help text help text help text
  4236.   help text help text help text
  4237.   *E
  4238.  
  4239.   *B 2,Help Category 2
  4240.   help text help text help text
  4241.   help text help text help text
  4242.   help text help text help text
  4243.   *P
  4244.   help text help text help text
  4245.   help text help text help text
  4246.   help text help text help text
  4247.   Also see:    ^Help Category 1^
  4248.   *E
  4249.  
  4250.  
  4251. The "*B"  indicator specifies the beginning of a help category.  The format
  4252. is "*B  helpcatnumber[,helpcatname]".   The help  category  number  is  the
  4253. number of  the help category that you set using HlpSet().   There should be
  4254. only one  space between  the "*B"  and the  help category  number. The help
  4255. category name  is only  required for  cross-references.   If there  are  no
  4256. cross-references to  that help category, then you can leave the helpcatname
  4257. parameter out.
  4258.  
  4259. The "*P" indicator specifies a page break and is optional.  You may have as
  4260. many page breaks as you'd like. The "*E" indicator specifies the end of the
  4261. help category.   The  "*B", "*P", and "*E" indicators must all begin in the
  4262. first column.   These  indicators and  the  help  category  name  are  case
  4263. insensitive (can be in lowercase, uppercase, or mixed).
  4264.  
  4265. TCXL represents  help categories as integers.  When assigning help category
  4266. numbers in the help file, you should start at 1 and go up from there.  Help
  4267. category 0 is reserved to represent an empty help category.
  4268.  
  4269.  
  4270.  
  4271.  
  4272. TesSeRact CXL V5.52 Documentation                                  Page 59
  4273. In the  definition of  Help Category 2, you will notice the cross-reference
  4274. to Help  Category 1.  All cross-referencing is done by embedding the cross-
  4275. reference category  name (not  number) inside  carats (^).   If you need to
  4276. display a carat inside the help file, use a double carat (^^).
  4277.  
  4278. Any text  contained outside  of the  "*B"  and  "*E"  will  be  treated  as
  4279. comments.  If an "*E" is not found, then the end-of-file will be treated as
  4280. an "*E".
  4281.  
  4282. Now, you need to "compile" your ASCII help file into an indexed file. There
  4283. is utility,  MAKHLP.COM, which  takes your  ASCII help  file as  input, and
  4284. outputs an  indexed version  of the same file.  This new file is the actual
  4285. help file  that you  specify in the HlpDef() function.  Keep the ASCII help
  4286. file around so you will be able to make modifications.
  4287.  
  4288. Please note  that the  file format  of the  finished .HLP  file has changed
  4289. between Version 5.51 and 5.52, so all help files should be recompiled!
  4290.  
  4291. The MAKHLP syntax is as follows:
  4292.  
  4293.  
  4294. MakHlp [-tn] [-mNN] <ifil> <ofil>
  4295.  
  4296. Where : -tNN.............Optional tab-width [2..32]. Default is 8
  4297.         -mNN.............Optional maximum xref/page [48|64]. Default is 32.
  4298.         <ifil>...........Input ASCII help-text pathname.
  4299.         <ofil>...........Output compiled TCXL help-file pathname.
  4300.  
  4301.                             Help System Equates
  4302.  
  4303.  
  4304.                                 Help Limits
  4305.  
  4306.           HLP_STK (16) .......................Default help-stack depth
  4307.           HLP_MAX (32) .......................Maximum xrefs per screen
  4308.           HLP_LEN (26) .....................Significant length of xref
  4309.           HLP_BFR (80) .........................Input line-buffer size
  4310.  
  4311.  
  4312.  
  4313.  
  4314.  
  4315.  
  4316.  
  4317.  
  4318.  
  4319.  
  4320.  
  4321.  
  4322.  
  4323.  
  4324.  
  4325.  
  4326.  
  4327.  
  4328.  
  4329.  
  4330.  
  4331. Page 60                                  TesSeRact CXL V5.52 Documentation
  4332.                            Help System Routines
  4333.  
  4334.  
  4335.                               Help Definition
  4336.  
  4337. ---------------------------------------------------------------------------
  4338. HlpDef
  4339.  
  4340. Synopsis........Defines the help system parameters.
  4341.  
  4342. Header File.....TCXLhlp.h
  4343.  
  4344. Prototype.......IntT CTYP HlpDef(ChrP hf, KeyT kc, AtrT wa, AtrT fa,
  4345.                      AtrT ta, AtrT xa, AtrT ba, BytT ft, VfvCP fo);
  4346.  
  4347. Source File.....HLP\HLPDEF.C
  4348.  
  4349. Arguments.......fn -  Filename for help file
  4350.                 kc -  Keycode of the help key
  4351.                 wa -  Help Window Attribute (See Appendix A).
  4352.                 fa -  Frame Attribute (See Appendix A).
  4353.                 ta -  Help Text Attribute (See Appendix A).  Note  that the
  4354.                       window attribute and the text attribute are generally
  4355.                       the same; the <wa> is used to determine what
  4356.                       attribute the help window is cleared to when it is
  4357.                       opened, and the <ta> is the attribute of normal text.
  4358.                 xa -  Cross-Reference Text Attribute (See Appendix A)
  4359.                 ba -  Selection Bar Attribute (See Appendix A)
  4360.                 ft -  Frame Type (One of the following)
  4361.                   BOX_SNG..all single
  4362.                   BOX_DBL..all double
  4363.                   BOX_VER..horiz single, vert double
  4364.                   BOX_HOR..horiz double, vert single
  4365.                   BOX_HVY..heavy lines
  4366.                   BOX_SPA..spaces [no box]
  4367.                   BOX_EXP..explode frame on open
  4368.                 fo -  Function to call immediately upon opening the help
  4369.                       window
  4370.  
  4371. Returns.........ERR_NUL  -  No Error
  4372.                 ERR_ARG  -  Argument Failure
  4373.                 ERR_MEM  -  Memory Allocation Error
  4374.                    TcxlErr contains:
  4375.                    W_NOHLPFIL - No Help File Name defined
  4376.  
  4377. Notes...........Defines the help file, key, and window colors.  After
  4378.                 calling this function, anytime the help key is pressed, the
  4379.                 help processor will search the help file for whatever the
  4380.                 current help category is.  The default help-window is <3,8>
  4381.                 to <21,71>, 16 rows by 61 cols of help-text per page. This
  4382.                 can't be changed without re-formatting the help file.
  4383.  
  4384. Example.........HlpDef("TCXLDEMO.HLP", Key_F1, YELLOW|_RED, YELLOW|_RED,
  4385.                       LRED|_RED, WHITE|_RED, RED|_LGREY, BOX_DBL,
  4386.                       _VFVCP(PreHelp));
  4387.  
  4388.  
  4389.  
  4390. TesSeRact CXL V5.52 Documentation                                  Page 61
  4391. ---------------------------------------------------------------------------
  4392. HlpOff
  4393.  
  4394. Synopsis........Undefine Help
  4395.  
  4396. Header File.....TCXLhlp.h
  4397.  
  4398. Prototype.......IntT HlpOff(NOARG);
  4399.  
  4400. Source File.....HLP\HLPDEF.C
  4401.  
  4402. Arguments.......None
  4403.  
  4404. Returns.........ERR_NUL  -  No Error
  4405.                 ERR_ARG  -  Argument Failure
  4406.                    TcxlErr contains:
  4407.                    W_NOHLPDEF  -  No Defined Help
  4408.  
  4409. Notes...........Disengages the help system.  This un-defines the help key,
  4410.                 clears the help stack, and frees any memory allocated by
  4411.                 the help system.
  4412. ---------------------------------------------------------------------------
  4413. HlpKey
  4414.  
  4415. Synopsis........Define or Undefine Help Key
  4416.  
  4417. Header File.....TCXLhlp.h
  4418.  
  4419. Prototype.......IntT CTYP HlpKey(KeyT kc);
  4420.  
  4421. Source File.....HLP\HLPDEF.C
  4422.  
  4423. Arguments.......kc -  Key to use for Help
  4424.  
  4425. Returns.........ERR_NUL  -  No Error
  4426.                 ERR_ARG  -  Argument Failure
  4427.                    TcxlErr contains:
  4428.                    W_NOHLPDEF  -  No Defined Help
  4429.  
  4430. Notes...........If <kc> is zero (0x0000), undefine current help key;
  4431.                 otherwise, assign current help key to <kc>.
  4432.  
  4433.  
  4434.  
  4435.  
  4436.  
  4437.  
  4438.  
  4439.  
  4440.  
  4441.  
  4442.  
  4443.  
  4444.  
  4445.  
  4446.  
  4447.  
  4448.  
  4449. Page 62                                  TesSeRact CXL V5.52 Documentation
  4450. ---------------------------------------------------------------------------
  4451. HlpTtl
  4452.  
  4453. Synopsis........Define new help-window title, replacing "[ Help ]".
  4454.  
  4455. Header File.....TCXLhlp.h
  4456.  
  4457. Prototype.......IntT CTYP HlpTtl(ChrP ts, BytT tp, AtrT ta);
  4458.  
  4459. Source File.....HLP\HLPDEF.C
  4460.  
  4461. Arguments.......ts -  New Title String
  4462.                 tp -  Title Position (One of the following)
  4463.                   TTL_LFT..Left
  4464.                   TTL_CNT..Center
  4465.                   TTL_RGT..Right
  4466.                 ta -  Title Attribute (See Appendix A)
  4467.  
  4468. Returns.........ERR_NUL  -  No Error
  4469.                 ERR_ARG  -  Argument Failure
  4470.                    TcxlErr contains:
  4471.                    W_NOHLPDEF  -  No Defined Help
  4472.  
  4473. Notes...........Use this function to modify the default help window title.
  4474.  
  4475.  
  4476.  
  4477.  
  4478.  
  4479.  
  4480.  
  4481.  
  4482.  
  4483.  
  4484.  
  4485.  
  4486.  
  4487.  
  4488.  
  4489.  
  4490.  
  4491.  
  4492.  
  4493.  
  4494.  
  4495.  
  4496.  
  4497.  
  4498.  
  4499.  
  4500.  
  4501.  
  4502.  
  4503.  
  4504.  
  4505.  
  4506.  
  4507.  
  4508. TesSeRact CXL V5.52 Documentation                                  Page 63
  4509. ---------------------------------------------------------------------------
  4510. HlpWind
  4511.  
  4512. Synopsis........Define a new help window.
  4513.  
  4514. Header File.....TCXLhlp.h
  4515.  
  4516. Prototype.......IntT CTYP HlpWind(IntT sr, IntT sc, IntT er, IntT ec,
  4517.                      BytT ft);
  4518.  
  4519. Source File.....HPL\HLPWIND.C
  4520.  
  4521. Arguments.......sr -  Start Row
  4522.                 sc -  Start Column
  4523.                 er -  End Row
  4524.                 ec -  End Column
  4525.                 ft -  Frame Type (One of the following)
  4526.                   BOX_SNG..all single
  4527.                   BOX_DBL..all double
  4528.                   BOX_VER..horiz single, vert double
  4529.                   BOX_HOR..horiz double, vert single
  4530.                   BOX_HVY..heavy lines
  4531.                   BOX_SPA..spaces [no box]
  4532.                   BOX_EXP..explode frame on open
  4533.  
  4534. Returns.........ERR_NUL  -  No Error
  4535.                 ERR_ARG  -  Argument Failure
  4536.                    TcxlErr contains:
  4537.                    W_NOHLPDEF  -  No Defined Help
  4538.                    W_NIVBTYPE  -  Invalid Frame Type
  4539.  
  4540. Notes...........Sets specific features to be used by the help window for
  4541.                 when it opens. These are screen coordinates, and frame
  4542.                 type. It does not actually open the help window.  You can
  4543.                 call HlpWind() anytime after calling HlpDef().  You can
  4544.                 call HlpWind() as often as you like during your program.
  4545.  
  4546.  
  4547.  
  4548.  
  4549.  
  4550.  
  4551.  
  4552.  
  4553.  
  4554.  
  4555.  
  4556.  
  4557.  
  4558.  
  4559.  
  4560.  
  4561.  
  4562.  
  4563.  
  4564.  
  4565.  
  4566.  
  4567. Page 64                                  TesSeRact CXL V5.52 Documentation
  4568.                               Help Operation
  4569.  
  4570. ---------------------------------------------------------------------------
  4571. HlpGet
  4572.  
  4573. Synopsis........Display the current help screen.
  4574.  
  4575. Header File.....TCXLhlp.h
  4576.  
  4577. Prototype.......VOID CTYP HlpGet(NOARG);
  4578.  
  4579. Source File.....HLP\HLPGET.C
  4580.  
  4581. Arguments.......None
  4582.  
  4583. Returns.........ERR_NUL  -  No Error
  4584.                 ERR_ARG  -  Argument Failure
  4585.                    TcxlErr contains:
  4586.                    W_NOHLPDEF  -  No Defined Help
  4587.  
  4588. Notes...........This function displays the help window, with the current
  4589.                 window's Help Category as the specified help text.  This
  4590.                 function is normally called when the default Help Key is
  4591.                 pressed.  You may also call this function directly from
  4592.                 inside your program, and it will operate in the same
  4593.                 fashion.
  4594. ---------------------------------------------------------------------------
  4595. HlpAdd
  4596.  
  4597. Synopsis........Push current help category, then set help category.
  4598.  
  4599. Header File.....TCXLhlp.h
  4600.  
  4601. Prototype.......IntT CTYP HlpAdd(TagT ht);
  4602.  
  4603. Source File.....HLP\HLPSET.C
  4604.  
  4605. Arguments.......ht -  Help Tag-ID
  4606.  
  4607. Returns.........ERR_NUL  -  No Error
  4608.                 ERR_ARG  -  Argument Failure
  4609.                    TcxlErr contains:
  4610.                    W_NOHLPDEF  -  No Help Record Defined
  4611.                    W_HLPSTKOV  -  Help Stack Overflow (Stack Full)
  4612.  
  4613. Notes...........Adds the current help category to the help category stack,
  4614.                 then sets the current help category to the specified help
  4615.                 category.  It's effectively the same as doing a HlpCur()
  4616.                 followed by a HlpSet().
  4617.  
  4618.  
  4619.  
  4620.  
  4621.  
  4622.  
  4623.  
  4624.  
  4625.  
  4626. TesSeRact CXL V5.52 Documentation                                  Page 65
  4627. ---------------------------------------------------------------------------
  4628. HlpCur
  4629.  
  4630. Synopsis........Push current help category.
  4631.  
  4632. Header File.....TCXLhlp.h
  4633.  
  4634. Prototype.......IntT CTYP HlpCur(NOARG);
  4635.  
  4636. Source File.....HLP\HLPSET.C
  4637.  
  4638. Arguments.......None
  4639.  
  4640. Returns.........ERR_NUL  -  No Error
  4641.                 ERR_ARG  -  Argument Failure
  4642.                    TcxlErr contains:
  4643.                    W_NOHLPDEF  -  no defined help.  See HlpDef().
  4644.                    W_HLPSTKOV  -  help stack overflow (stack full).
  4645.  
  4646. Notes...........Pushes the current help category onto the help category
  4647.                 stack.  The default stack can hold up to 16 help
  4648.                 categories.
  4649. ---------------------------------------------------------------------------
  4650. HlpDrop
  4651.  
  4652. Synopsis........Drop last pushed help category.
  4653.  
  4654. Header File.....TCXLhlp.h
  4655.  
  4656. Prototype.......IntT CTYP HlpDrop(NOARG);
  4657.  
  4658. Source File.....HLP\HLPSET.C
  4659.  
  4660. Arguments.......None
  4661.  
  4662. Returns.........ERR_NUL  -  No Error
  4663.                 ERR_ARG  -  Argument Failure
  4664.                    TcxlErr contains:
  4665.                    W_NOHLPDEF  -  No Defined Help
  4666.                    W_HLPSTKUN  -  Help Stack Underflow (Stack Empty)
  4667.  
  4668. Notes...........Pops the help category off of the top of the stack and into
  4669.                 the void.  The current help category is not affected.
  4670.  
  4671.  
  4672.  
  4673.  
  4674.  
  4675.  
  4676.  
  4677.  
  4678.  
  4679.  
  4680.  
  4681.  
  4682.  
  4683.  
  4684.  
  4685. Page 66                                  TesSeRact CXL V5.52 Documentation
  4686. ---------------------------------------------------------------------------
  4687. HlpSet
  4688.  
  4689. Synopsis........Set help category.
  4690.  
  4691. Header File.....TCXLhlp.h
  4692.  
  4693. Prototype.......IntT CTYP HlpSet(TagT ct);
  4694.  
  4695. Source File.....HLP\HLPSET.C
  4696.  
  4697. Arguments.......ct -  Help Category Tag
  4698.  
  4699. Returns.........ERR_NUL  -  No Error
  4700.                 ERR_ARG  -  Argument Failure
  4701.                    TcxlErr contains:
  4702.                    W_NOHLPDEF  -  No Defined Help
  4703.  
  4704. Notes...........Sets the current help category.  If a window is active at
  4705.                 the time, it will also set that window's help category.
  4706.                 The help category set by calling this function is what will
  4707.                 be used by the help processor for searching the help file
  4708.                 for help text.
  4709. ---------------------------------------------------------------------------
  4710. HlpPush
  4711.  
  4712. Synopsis........Push help category onto help-stack.
  4713.  
  4714. Header File.....TCXLhlp.h
  4715.  
  4716. Prototype.......IntT CTYP HlpPush(TagT ct);
  4717.  
  4718. Source File.....HLP\HLPSET.C
  4719.  
  4720. Arguments.......ct -  The help tag to push
  4721.  
  4722. Returns.........ERR_NUL  -  No Error
  4723.                 ERR_ARG  -  Argument Failure
  4724.                    TcxlErr contains:
  4725.                    W_NOHLPDEF  -  No Defined Help
  4726.                    W_HLPSTKUN  -  Help Stack Overflow (Stack Full)
  4727.  
  4728. Notes...........Pushes the specified help category onto the help category
  4729.                 stack. The current help category is not affected.  The
  4730.                 default help stack can hold up to 16 help categories.
  4731.  
  4732.  
  4733.  
  4734.  
  4735.  
  4736.  
  4737.  
  4738.  
  4739.  
  4740.  
  4741.  
  4742.  
  4743.  
  4744. TesSeRact CXL V5.52 Documentation                                  Page 67
  4745. ---------------------------------------------------------------------------
  4746. HlpPop
  4747.  
  4748. Synopsis........Pop help category off stack and make current.
  4749.  
  4750. Header File.....TCXLhlp.h
  4751.  
  4752. Prototype.......IntT CTYP HlpPop(NOARG);
  4753.  
  4754. Source File.....HLP\HLPSET.C
  4755.  
  4756. Arguments.......None
  4757.  
  4758. Returns.........ERR_NUL  -  No Error
  4759.                 ERR_ARG  -  Argument Failure
  4760.                    TcxlErr contains:
  4761.                    W_NOHLPDEF  -  No Defined Help
  4762.                    W_HLPSTKUN  -  Help Stack Underflow (Stack Empty)
  4763.  
  4764. Notes...........Pops the help category off of the top of the stack and
  4765.                 makes it the current help category.
  4766. ---------------------------------------------------------------------------
  4767. HlpAct
  4768.  
  4769. Synopsis........Test whether help has been defined.
  4770.  
  4771. Header File.....TCXLhlp.h
  4772.  
  4773. Prototype.......FlgT HlpAct(NOARG);
  4774.  
  4775. Arguments.......None
  4776.  
  4777. Returns.........TRUE if help has been defined; FALSE otherwise.
  4778. ---------------------------------------------------------------------------
  4779. HlpClr
  4780.  
  4781. Synopsis........Clears the help category stack
  4782.  
  4783. Header File.....TCXLhlp.h
  4784.  
  4785. Prototype.......IntT CTYP HlpClr(NOARG);
  4786.  
  4787. Source File.....HLP\HLPDEF.C
  4788.  
  4789. Arguments.......None
  4790.  
  4791. Returns.........ERR_NUL  -  No Error
  4792.                 ERR_ARG  -  Argument Failure
  4793.                    TcxlErr contains:
  4794.                    W_NOHLPDEF  -  No Help Defined
  4795.  
  4796.  
  4797.  
  4798.  
  4799.  
  4800.  
  4801.  
  4802.  
  4803. Page 68                                  TesSeRact CXL V5.52 Documentation
  4804.                               Help Internals
  4805.  
  4806. ---------------------------------------------------------------------------
  4807. _HlpErr
  4808.  
  4809. Synopsis........Display "not found" message in help window and wait for
  4810.                 user.
  4811.  
  4812. Header File.....TCXLhlp.h
  4813.  
  4814. Prototype.......VOID CTYP _HlpErr(ChrP s);
  4815. ---------------------------------------------------------------------------
  4816. _HlpPag
  4817.  
  4818. Synopsis........Display help-category with paging, cross-references, etc.
  4819.  
  4820. Header File.....TCXLhlp.h
  4821.  
  4822. Prototype.......VOID CTYP _HlpPag(NOARG);
  4823.  
  4824.  
  4825.  
  4826.  
  4827.  
  4828.  
  4829.  
  4830.  
  4831.  
  4832.  
  4833.  
  4834.  
  4835.  
  4836.  
  4837.  
  4838.  
  4839.  
  4840.  
  4841.  
  4842.  
  4843.  
  4844.  
  4845.  
  4846.  
  4847.  
  4848.  
  4849.  
  4850.  
  4851.  
  4852.  
  4853.  
  4854.  
  4855.  
  4856.  
  4857.  
  4858.  
  4859.  
  4860.  
  4861.  
  4862. TesSeRact CXL V5.52 Documentation                                  Page 69
  4863.                              Selection System
  4864.  
  4865.  
  4866. TCXL's  Selection   System  is   a  powerful  tool  to  help  users  select
  4867. information.   SelFile(), SelStr()  and SelTxt() all use the same low-level
  4868. input routine,  _Select().   SelAttr() is  provided not only because of its
  4869. obvious usefulness,  but as  an example  of what  can be accomplished using
  4870. TCXL.
  4871.  
  4872. To use the Selection System, you just need to call the appropriate routine.
  4873. To select  a file,  for example, call SelFile(), specifying the size of the
  4874. window to  use, etc.   Upon  return, the  pathname of  the  file  you  were
  4875. attempting to select will be waiting!
  4876.  
  4877. Although the  structures and variables in the Selection System are internal
  4878. only, two macros, SelPtr, SelNdx, are provided to allow users access to the
  4879. currently-highlighted item.   This  would normally  be used  in a  function
  4880. bound to a special key that needed to know what item is currently selected.
  4881. If you need access to the items that were selected after returning from the
  4882. section function, use the global variables SelItm, SelNam and SelCur.
  4883.  
  4884. Please note that mouse support is automatically activated during entry form
  4885. processing, if a mouse has been detected during initialization.  This means
  4886. you can  select an item with your mouse, and you can also scroll the window
  4887. using the provided scroll bars.
  4888.  
  4889.                          Selection System Equates
  4890.  
  4891.  
  4892.                             _Sel Access Macros
  4893.  
  4894.           SelLst........................................Selection-list
  4895.           SelItm.................................Selected item-pointer
  4896.           SelNam..................................Selected item-buffer
  4897.           SelCur...................................Selected item-index
  4898.           SelFlg.........................................Control flags
  4899.  
  4900.                           Highlight Access Macros
  4901.  
  4902.           SelNdx............................Index of current highlight
  4903.           SelPtr..........................Pointer to current highlight
  4904.  
  4905.                              Selection Limits
  4906.  
  4907.           MAX_FIL (511)........................SelFile() maximum files
  4908.           MAX_NAM (81) ...........SelFile() maximum length of pathname
  4909.  
  4910.                               SelFlg Options
  4911.  
  4912.           SEL_BAR..................................Frame scroll-bar ON
  4913.           SEL_DIR.............................SelFile() directories ON
  4914.           SEL_PAR........................SelFile() parent directory ON
  4915.  
  4916.  
  4917.  
  4918.  
  4919.  
  4920.  
  4921. Page 70                                  TesSeRact CXL V5.52 Documentation
  4922.                          Selection System Routines
  4923.  
  4924. ---------------------------------------------------------------------------
  4925. SelAttr
  4926.  
  4927. Synopsis........Select attributes.
  4928.  
  4929. Header File.....TCXLsel.h
  4930.  
  4931. Prototype.......IntT CTYP SelAttr(IntT sr, IntT sc, BytT ft, AtrT fa,
  4932.                      IntT ab, VfvCP fo);
  4933.  
  4934. Source File.....SEL\SELATTR.C
  4935.  
  4936. Arguments.......sr -  Start Row
  4937.                 sc -  Start Column
  4938.                 ft -  Frame Type (One of the following)
  4939.                   BOX_SNG..all single
  4940.                   BOX_DBL..all double
  4941.                   BOX_VER..horiz single, vert double
  4942.                   BOX_HOR..horiz double, vert single
  4943.                   BOX_HVY..heavy lines
  4944.                   BOX_SPA..spaces [no box]
  4945.                   BOX_EXP..explode frame on open
  4946.                 fa -  Beginning Attribute (current default)
  4947.                 ab -  Allow Blink?
  4948.                 fo -  Function to call when window is opened
  4949.  
  4950. Returns.........The new attribute
  4951.  
  4952. Notes...........This function will open a window and let the user
  4953.                 interactively pick a text attribute (See Appendix A for a
  4954.                 list of available attributes).  The window is fixed in
  4955.                 size, 19 rows by 68 columns.
  4956.  
  4957.  
  4958.  
  4959.  
  4960.  
  4961.  
  4962.  
  4963.  
  4964.  
  4965.  
  4966.  
  4967.  
  4968.  
  4969.  
  4970.  
  4971.  
  4972.  
  4973.  
  4974.  
  4975.  
  4976.  
  4977.  
  4978.  
  4979.  
  4980. TesSeRact CXL V5.52 Documentation                                  Page 71
  4981. ---------------------------------------------------------------------------
  4982. SelFile
  4983.  
  4984. Synopsis........Select a file name from sorted list.
  4985.  
  4986. Header File.....TCXLsel.h
  4987.  
  4988. Prototype.......ChrP CTYP SelFile(IntT sr, IntT sc, IntT er, IntT ec,
  4989.                      BytT bt, AtrT ba, AtrT wa, AtrT sa, FlgT ti, ChrP fs,
  4990.                      VfvCP fo);
  4991.  
  4992. Source File.....SEL\SELFILE.C
  4993.  
  4994. Arguments.......sr -  Start Row
  4995.                 sc -  Start Column
  4996.                 er -  End Row
  4997.                 ec -  End Column
  4998.                 bt -  Border Type (One of the following)
  4999.                   BOX_SNG..all single
  5000.                   BOX_DBL..all double
  5001.                   BOX_VER..horiz single, vert double
  5002.                   BOX_HOR..horiz double, vert single
  5003.                   BOX_HVY..heavy lines
  5004.                   BOX_SPA..spaces [no box]
  5005.                   BOX_EXP..explode frame on open
  5006.                 ba -  Border Attribute (See Appendix A)
  5007.                 wa -  Window Attribute (See Appendix A)
  5008.                 sa -  Selection Bar Attribute (See Appendix A)
  5009.                 ti -  Display Filespec Title On Upper Border?  (0=no,
  5010.                       1=yes)
  5011.                 fs -  Filespec to match (ie, "*.*")
  5012.                 fo -  Function to call when window is opened
  5013.  
  5014. Returns.........The address of the string containing the full
  5015.                 drive:path\filename string of the selected file. If an
  5016.                 error occurred, NULL will be returned and TcxlErr will be
  5017.                 set to one of the following:
  5018.                    W_ESCPRESS  -  The [Esc] Key Was Pressed
  5019.                    W_ALLOCERR  -  Memory Allocation Error
  5020.                    W_DOSERROR  -  DOS Error (ie. Invalid Directory)
  5021.                    W_INVCOORD  -  Invalid Window Coordinates
  5022.                    W_INVBTYPE  -  Invalid Border Type
  5023.                    W_STRLONG   -  Window Not Wide Enough To Hold Largest
  5024.                       File Name
  5025.                    W_NOMATCH   -  No Files Matched Input Filespec
  5026.                    W_INVPATH   -  Invalid Path Or Path Not Found
  5027.  
  5028.  
  5029.  
  5030.  
  5031.  
  5032.  
  5033.  
  5034.  
  5035.  
  5036.  
  5037.  
  5038.  
  5039. Page 72                                  TesSeRact CXL V5.52 Documentation
  5040. Notes...........This function will open up a window and display as many
  5041.                 file/directory names in it as it can.  The user can use a
  5042.                 selection bar to move through the file/directory names and
  5043.                 select one.  If all of the file/directory names cannot fit
  5044.                 in the window, scrolling and paging is allowed.  If the
  5045.                 user selects a directory, SelFile() will change to that
  5046.                 directory and display the list of files/directories in it.
  5047.                 After the selection is made, SelFile() will return the
  5048.                 complete path name of the selected file.
  5049.  
  5050.                 The file returned by SelFile() is stored in a global
  5051.                 variable SelNam.  This is allocated on the first call to
  5052.                 SelFile(), and is not free()'d until the user explicitly
  5053.                 calls SelFree().
  5054.  
  5055.                 If you pass a -1 as the end column coordinate, this
  5056.                 function will adjust the width of the window to be one
  5057.                 longer than the width of the longest string.
  5058.  
  5059. Example.........SelFile(LeftRow, LeftCol - 18, LeftRow + 10, LeftCol + 39,
  5060.                       0, LCYAN|_RED, LGREY|_RED, RED|_LGREY, 1, "*.*",
  5061.                       _VFVCP(AddShadow));
  5062.  
  5063.  
  5064.  
  5065.  
  5066.  
  5067.  
  5068.  
  5069.  
  5070.  
  5071.  
  5072.  
  5073.  
  5074.  
  5075.  
  5076.  
  5077.  
  5078.  
  5079.  
  5080.  
  5081.  
  5082.  
  5083.  
  5084.  
  5085.  
  5086.  
  5087.  
  5088.  
  5089.  
  5090.  
  5091.  
  5092.  
  5093.  
  5094.  
  5095.  
  5096.  
  5097.  
  5098. TesSeRact CXL V5.52 Documentation                                  Page 73
  5099. ---------------------------------------------------------------------------
  5100. SelStr
  5101.  
  5102. Synopsis........Select a string from an array
  5103.  
  5104. Header File.....TCXLsel.h
  5105.  
  5106. Prototype.......IntT CTYP SelStr(IntT sr, IntT sc, IntT er,IntT ec,
  5107.                      BytT bt, AtrT ba, AtrT wa, AtrT sa, ChrP as[],
  5108.                      IntT ie, VfvCP fo);
  5109.  
  5110. Source File.....SEL\SELSTR.C
  5111.  
  5112. Arguments.......sr -  Start Row
  5113.                 sc -  Start Column
  5114.                 er -  End Row
  5115.                 ec -  End Column
  5116.                 bt -  Border Type (One of the following)
  5117.                   BOX_SNG..all single
  5118.                   BOX_DBL..all double
  5119.                   BOX_VER..horiz single, vert double
  5120.                   BOX_HOR..horiz double, vert single
  5121.                   BOX_HVY..heavy lines
  5122.                   BOX_SPA..spaces [no box]
  5123.                   BOX_EXP..explode frame on open
  5124.                 ba -  Border Attribute (See Appendix A)
  5125.                 wa -  Window Attribute (See Appendix A)
  5126.                 sa -  Selection Bar Attribute (See Appendix A)
  5127.                 as -  Base of array of string pointers
  5128.                 ie -  Initial Element to default to
  5129.                 fo -  Function to call when window is opened
  5130.  
  5131. Returns.........The array subscript of the selected string.  If an error
  5132.                 occurred, then -1 (ERR_ARG) will be returned and TcxlErr
  5133.                 will be set to one of the following:
  5134.                    W_ESCPRESS  -  The [Esc] Key Was Pressed
  5135.                    W_ALLOCERR  -  Memory Allocation Error
  5136.                    W_INVCOORD  -  Invalid Window Coordinates
  5137.                    W_INVBTYPE  -  Invalid Border Type
  5138.                    W_STRLONG   -  Window Not Wide Enough To Hold Largest
  5139.                       String
  5140.                    W_INVPATH   -  Invalid Path Or Path Not Found
  5141.  
  5142. Notes...........This function will open up a window and display as many of
  5143.                 the input strings in it as it can.  The user can use a
  5144.                 selection bar to move through the strings and select one.
  5145.                 If all of the strings cannot fit in the window, scrolling
  5146.                 and paging is allowed. After the selection is made,
  5147.                 SelStr() will return the array subscript of the string that
  5148.                 was selected.
  5149.  
  5150.                 If you pass a -1 as the end column coordinate, this
  5151.                 function will adjust the width of the window to be one
  5152.                 longer than the width of the longest string.
  5153.  
  5154.  
  5155.  
  5156.  
  5157. Page 74                                  TesSeRact CXL V5.52 Documentation
  5158. Example.........SelStr(LeftRow,32, LeftRow + 5, -1, 0, LGREEN|_RED,
  5159.                       LCYAN|_RED, RED|_LGREY, months, 0, _VFVCP(PrePick1));
  5160. ---------------------------------------------------------------------------
  5161. SelTxt
  5162.  
  5163. Synopsis........Select a text string within current window.
  5164.  
  5165. Header File.....TCXLsel.h
  5166.  
  5167. Prototype.......IntT CTYP SelTxt(BytT wr, BytT wc, AtrT at, ChrP as[],
  5168.                      IntT ie);
  5169.  
  5170. Source File.....SEL\SELTXT.C
  5171.  
  5172. Arguments.......wr -  Window Row to start selection
  5173.                 wc -  Window Column to start selection
  5174.                 at -  Attribute for selection text (See Appendix A)
  5175.                 as -  Base of array of string pointers
  5176.                 ie -  Initial Element to default to
  5177.  
  5178. Returns.........The array subscript of the selected string.  If an error
  5179.                 occurred, then -1 (ERR_ARG) will be returned and TcxlErr
  5180.                 will be set to one of the following:
  5181.                    W_NOACTIVE  -  No Active Window
  5182.                    W_ESCPRESS  -  The [Esc] Key Was Pressed
  5183.                    W_STRLONG   -  Window Not Wide Enough To Hold Largest
  5184.                       String
  5185.  
  5186. Notes...........Allows user to select one string from an array of strings
  5187.                 via an in-place "menu".  This function is the same as
  5188.                 SelStr(), except that it puts the selection menu in the
  5189.                 current active window, instead of creating a separate
  5190.                 window for the selection.
  5191.  
  5192. Example.........SelTxt(5, 27, LMAGENTA|_MAGENTA, prn_ports, 0);
  5193.  
  5194.                             Selection Utilities
  5195.  
  5196. ---------------------------------------------------------------------------
  5197. SelFree
  5198.  
  5199. Synopsis........Free global SelNam buffer after SelFile().
  5200.  
  5201. Header File.....TCXLsel.h
  5202.  
  5203. Prototype.......VOID CTYP SelFree(NOARG);
  5204.  
  5205. Source File.....SEL\SELFILE.C
  5206.  
  5207. Arguments.......None
  5208.  
  5209. Returns.........None
  5210.  
  5211.  
  5212.  
  5213.  
  5214.  
  5215.  
  5216. TesSeRact CXL V5.52 Documentation                                  Page 75
  5217. ---------------------------------------------------------------------------
  5218. SelBarOn
  5219.  
  5220. Synopsis........Turns on Scroll Bars on right edge of selection window.
  5221.                 Should be called before Sel...().
  5222.  
  5223. Header File.....TCXLsel.h
  5224.  
  5225. Prototype.......VOID SelBarOn(NOARG);
  5226. ---------------------------------------------------------------------------
  5227. SelBarOff
  5228.  
  5229. Synopsis........Turns off Scroll Bars on right edge of selection window.
  5230.                 Should be called before Sel...().
  5231.  
  5232. Header File.....TCXLsel.h
  5233.  
  5234. Prototype.......VOID SelBarOff(NOARG);
  5235. ---------------------------------------------------------------------------
  5236. SelDirOn
  5237.  
  5238. Synopsis........Enables display of directories in SelFile().  Should be
  5239.                 called before Sel...().
  5240.  
  5241. Header File.....TCXLsel.h
  5242.  
  5243. Prototype.......VOID SelDirOn(NOARG);
  5244. ---------------------------------------------------------------------------
  5245. SelDirOff
  5246.  
  5247. Synopsis........Disables display of directories in SelFile().  Should be
  5248.                 called before Sel...().
  5249.  
  5250. Header File.....TCXLsel.h
  5251.  
  5252. Prototype.......VOID SelDirOff(NOARG);
  5253. ---------------------------------------------------------------------------
  5254. SelParOn
  5255.  
  5256. Synopsis........Enables display of parent directory in SelFile().  Should
  5257.                 be called before Sel...().
  5258.  
  5259. Header File.....TCXLsel.h
  5260.  
  5261. Prototype.......VOID SelParOn(NOARG);
  5262. ---------------------------------------------------------------------------
  5263. SelParOff
  5264.  
  5265. Synopsis........Disables display of parent directory in SelFile().  Should
  5266.                 be called before Sel...().
  5267.  
  5268. Header File.....TCXLsel.h
  5269.  
  5270. Prototype.......VOID SelParOff(NOARG);
  5271.  
  5272.  
  5273.  
  5274.  
  5275. Page 76                                  TesSeRact CXL V5.52 Documentation
  5276.                             Selection Internals
  5277.  
  5278. ---------------------------------------------------------------------------
  5279. _Select
  5280.  
  5281. Synopsis........This is the generic selection system routine, called by
  5282.                 SelFile(), SelStr() and SelTxt().
  5283.  
  5284. Header File.....TCXLsel.h
  5285.  
  5286. Prototype.......IntT CTYP _Select(IntT sr, IntT sc, IntT er,IntT ec,
  5287.                      BytT bt, AtrT ba, AtrT wa, AtrT sa, ChrP as[],
  5288.                      IntT ie, VfvCP fo);
  5289.  
  5290. Source File.....SEL\_SELECT.C
  5291.  
  5292. Arguments.......sr -  Start Row
  5293.                 sc -  Start Column
  5294.                 er -  End Row
  5295.                 ec -  End Column
  5296.                 bt -  Border Type (One of the following)
  5297.                   BOX_SNG..all single
  5298.                   BOX_DBL..all double
  5299.                   BOX_VER..horiz single, vert double
  5300.                   BOX_HOR..horiz double, vert single
  5301.                   BOX_HVY..heavy lines
  5302.                   BOX_SPA..spaces [no box]
  5303.                   BOX_EXP..explode frame on open
  5304.                 ba -  Border Attribute (See Appendix A)
  5305.                 wa -  Window Attribute (See Appendix A)
  5306.                 sa -  Selection Bar Attribute (See Appendix A)
  5307.                 as -  Base of array of string pointers
  5308.                 ie -  Initial Element to default to
  5309.                 fo -  Function to call when window is opened
  5310.  
  5311. Returns.........The array subscript of the selected string.  If an error
  5312.                 occurred, then -1 (ERR_ARG) will be returned and TcxlErr
  5313.                 will be set to one of the following:
  5314.                    W_ESCPRESS  -  The [Esc] Key Was Pressed
  5315.                    W_ALLOCERR  -  Memory Allocation Error
  5316.                    W_INVCOORD  -  Invalid Window Coordinates
  5317.                    W_INVBTYPE  -  Invalid Border Type
  5318.                    W_STRLONG   -  Window Not Wide Enough To Hold Largest
  5319.                       String
  5320.                    W_INVPATH   -  Invalid Path Or Path Not Found
  5321.  
  5322.  
  5323.  
  5324.  
  5325.  
  5326.  
  5327.  
  5328.  
  5329.  
  5330.  
  5331.  
  5332.  
  5333.  
  5334. TesSeRact CXL V5.52 Documentation                                  Page 77
  5335.                                Window System
  5336.  
  5337.  
  5338. The Window System is the "heart" of the TCXL package.  It is the largest of
  5339. all the  systems, and  also the  most varied.   Functions  are provided for
  5340. window shapes, sizes, locations, appearances, and for text output.
  5341.  
  5342. Using the Window System is simple.  Call Wopen() to open a window.  Use the
  5343. Wput..() and Wprt..() functions for output.  Use the Wset..() functions for
  5344. setting control information.
  5345.  
  5346. Wopen() returns  a Window Handle, which is used by many of the functions in
  5347. TCXL to determine which window to affect.  Most of the output functions are
  5348. designed to write to the active window, which is the window on "top".
  5349.  
  5350. While TCXL provides limited functionality for writing to hidden or inactive
  5351. windows (see  the Wwprints() function), this is really not in the design of
  5352. this package.  With TCXL 6.0, we will have full virtual windows.
  5353.  
  5354.  
  5355.  
  5356.  
  5357.  
  5358.  
  5359.  
  5360.  
  5361.  
  5362.  
  5363.  
  5364.  
  5365.  
  5366.  
  5367.  
  5368.  
  5369.  
  5370.  
  5371.  
  5372.  
  5373.  
  5374.  
  5375.  
  5376.  
  5377.  
  5378.  
  5379.  
  5380.  
  5381.  
  5382.  
  5383.  
  5384.  
  5385.  
  5386.  
  5387.  
  5388.  
  5389.  
  5390.  
  5391.  
  5392.  
  5393. Page 78                                  TesSeRact CXL V5.52 Documentation
  5394.                            Window System Equates
  5395.  
  5396.  
  5397.                             _Wctl Access Macros
  5398.  
  5399.           WctlAct........................................Active window
  5400.           WctlHid....................................Top hidden window
  5401.           WctlFun........................................Fill function
  5402.           WctlHdl..........................................Last handle
  5403.           WctlHlp........................................Help category
  5404.           WctlOpn...........................................Total open
  5405.           WctlEsc..........................................[Esc] check
  5406.           WctlTab............................................Tab width
  5407.           WctlFil............................................Fill char
  5408.  
  5409.                             _Wdf Access Macros
  5410.  
  5411.           WdfPrv(w)....................................Previous window
  5412.           WdfNxt(w)........................................Next window
  5413.           WdfBfr(w).............................................Buffer
  5414.           WdfSbf(w)......................................Shadow buffer
  5415.           WdfTtl(w)..............................................Title
  5416.           WdfTtlS(w)............................................String
  5417.           WdfTtlP(w)..........................................Position
  5418.           WdfTtlA(w).........................................Attribute
  5419.           WdfHdl(w).............................................Handle
  5420.           WdfHlp(w)......................................Help category
  5421.           WdfBeg(w).....................................Start position
  5422.           WdfBegW(w)..............................................Word
  5423.           WdfBegC(w)...............................................Col
  5424.           WdfBegR(w)...............................................Row
  5425.           WdfEnd(w).......................................End position
  5426.           WdfEndW(w)..............................................Word
  5427.           WdfEndC(w)...............................................Col
  5428.           WdfEndR(w)...............................................Row
  5429.           WdfMin(w)...................................Minimum position
  5430.           WdfMinW(w)..............................................Word
  5431.           WdfMinC(w)...............................................Col
  5432.           WdfMinR(w)...............................................Row
  5433.           WdfMax(w)...................................Maximum position
  5434.           WdfMaxW(w)..............................................Word
  5435.           WdfMaxC(w)...............................................Col
  5436.           WdfMaxR(w)...............................................Row
  5437.           WdfPos(w)....................................Cursor position
  5438.           WdfPosW(w)..............................................Word
  5439.           WdfPosC(w)...............................................Col
  5440.           WdfPosR(w)...............................................Row
  5441.           WdfFrm(w).....................................Frame (border)
  5442.           WdfFrmT(w)..............................................Type
  5443.           WdfFrmA(w).........................................Attribute
  5444.           WdfDat(w)..................................Default attribute
  5445.           WdfCat(w)..................................Current attribute
  5446.           WdfSat(w)...................................Shadow attribute
  5447.           WdfUse(w).......................................Window usage
  5448.           WdfBrd(w)........................................Border flag
  5449.  
  5450.  
  5451.  
  5452. TesSeRact CXL V5.52 Documentation                                  Page 79
  5453.                            Frame (border) sides
  5454.  
  5455.           BRD_TOP..................................................Top
  5456.           BRD_BOT...............................................Bottom
  5457.           BRD_LFT.................................................Left
  5458.           BRD_RGT................................................Right
  5459.  
  5460.                          Wcenter(), WpopUp() flags
  5461.  
  5462.           CNT_HOR...........................................Horizontal
  5463.           CNT_VER.............................................Vertical
  5464.           CNT_CNT.................................................Both
  5465.  
  5466.                               Direction codes
  5467.  
  5468.           DIR_DWN.................................................Down
  5469.           DIR_UP....................................................Up
  5470.           DIR_LFT.................................................Left
  5471.           DIR_RGT................................................Right
  5472.  
  5473.                             Wtitle() positions
  5474.  
  5475.           TTL_LFT.................................................Left
  5476.           TTL_CNT...............................................Center
  5477.           TTL_RGT................................................Right
  5478.  
  5479.                           Window System Routines
  5480.  
  5481.  
  5482.                           Error Handling Routines
  5483.  
  5484. ---------------------------------------------------------------------------
  5485. Wperror
  5486.  
  5487. Synopsis........Display a popup error message window frame
  5488.  
  5489. Header File.....TCXLwin.h
  5490.  
  5491. Prototype.......IntT CTYP Wperror(ChrP mp);
  5492.  
  5493. Source File.....WIN\WPERROR.C
  5494.  
  5495. Arguments.......mp -  The message you want displayed in the error window
  5496.  
  5497. Returns.........ERR_NUL  -  No Error
  5498.                 ERR_ARG  -  Argument Failure
  5499.                    TcxlErr contains:
  5500.                 W_STRLONG  - error message string too long
  5501.  
  5502. Notes...........Opens an error window, displays an error message, sounds a
  5503.                 beep, waits for a keypress, then returns to caller.  The
  5504.                 error window is opened in the general vicinity of the
  5505.                 cursor position.
  5506.  
  5507.  
  5508.  
  5509.  
  5510.  
  5511. Page 80                                  TesSeRact CXL V5.52 Documentation
  5512. ---------------------------------------------------------------------------
  5513. WerrMsg
  5514.  
  5515. Synopsis........Return an error message from last windowing function.
  5516.  
  5517. Header File.....TCXLwin.h
  5518.  
  5519. Prototype.......ChrP CTYP WerrMsg(NOARG);
  5520.  
  5521. Source File.....WIN\WERRMSG.C
  5522.  
  5523. Arguments.......None
  5524.  
  5525. Returns.........A pointer to the error message associated with the current
  5526.                 value of TcxlErr.
  5527.  
  5528. Notes...........This function, reads the global error value stored in
  5529.                 TcxlErr, and returns the literal error message that
  5530.                 corresponds to it.  This can be very useful in debugging
  5531.                 programs that use TCXL's windowing functions.
  5532. ---------------------------------------------------------------------------
  5533. Werror
  5534.  
  5535. Synopsis........Terminate with error message and beep to StdErr.
  5536.  
  5537. Header File.....TCXLwin.h
  5538.  
  5539. Prototype.......VOID CTYP Werror(NOARG);
  5540.  
  5541. Source File.....WIN\WERRMSG.C
  5542.  
  5543. Arguments.......None
  5544.  
  5545. Returns.........None
  5546.  
  5547. Notes...........This function terminates your application with a fatal
  5548.                 error message, based on the value of TcxlErr.  The video
  5549.                 system is restored, the screen is cleared, and the error
  5550.                 message is set to the Standard Error device (StdErr).
  5551.  
  5552.  
  5553.  
  5554.  
  5555.  
  5556.  
  5557.  
  5558.  
  5559.  
  5560.  
  5561.  
  5562.  
  5563.  
  5564.  
  5565.  
  5566.  
  5567.  
  5568.  
  5569.  
  5570. TesSeRact CXL V5.52 Documentation                                  Page 81
  5571.                           General Window Control
  5572.  
  5573. ---------------------------------------------------------------------------
  5574. Wactiv
  5575.  
  5576. Synopsis........Activate window.
  5577.  
  5578. Header File.....TCXLwin.h
  5579.  
  5580. Prototype.......IntT CTYP Wactiv(WndT wh);
  5581.  
  5582. Source File.....WCT\WACTIV.C
  5583.  
  5584. Arguments.......wh -  Window Handle
  5585.  
  5586. Returns.........ERR_NUL  -  No Error, or Window Already Active
  5587.                 ERR_ARG  -  Argument Failure
  5588.                    TcxlErr contains:
  5589.                    W_NOTFOUND  -  Window Handle Not Found
  5590.                    W_NOACTIVE  -  No Open Windows
  5591.  
  5592. Notes...........Activates a previously opened window, bringing it "in
  5593.                 front" of all the others.  Many windowing functions can
  5594.                 perform their operations only on the active window.  If a
  5595.                 window is not active, you will need to activate it before
  5596.                 you can use it for these functions.
  5597.  
  5598. Example
  5599. ---------------------------------------------------------------------------
  5600. WcloseAll
  5601.  
  5602. Synopsis........Closes all open windows.
  5603.  
  5604. Header File.....TCXLwin.h
  5605.  
  5606. Prototype.......IntT CTYP WcloseAll(NOARG);
  5607.  
  5608. Source File.....WCT\WCLOSEAL.C
  5609.  
  5610. Arguments.......None
  5611.  
  5612. Returns.........ERR_NUL  -  No Error
  5613.                 ERR_ARG  -  Argument Failure
  5614.                    TcxlErr contains:
  5615.                    W_NOACTIVE  -  No Active Window
  5616.  
  5617.  
  5618.  
  5619.  
  5620.  
  5621.  
  5622.  
  5623.  
  5624.  
  5625.  
  5626.  
  5627.  
  5628.  
  5629. Page 82                                  TesSeRact CXL V5.52 Documentation
  5630. ---------------------------------------------------------------------------
  5631. Windowat
  5632.  
  5633. Synopsis........Tell which window is at passed coordinates.
  5634.  
  5635. Header File.....TCXLwin.h
  5636.  
  5637. Prototype.......WndT CTYP Windowat(IntT sr, IntT sc);
  5638.  
  5639. Source File.....WCT\WINDOWAT.C
  5640.  
  5641. Arguments.......sr -  Screen Row
  5642.                 sc -  Screen Column
  5643.  
  5644. Returns.........The window handle of the window at the given coordinates.
  5645.                 ERR_NUL  -  Check TcxlErr for Error Code!
  5646.                 ERR_ARG  -  Argument Failure
  5647.                    TcxlErr contains:
  5648.                    W_NOTFOUND  -  no window found at given screen
  5649.                       coordinates
  5650.  
  5651. Notes...........Returns the handle of the window at given screen row,
  5652.                 column coordinates.
  5653. ---------------------------------------------------------------------------
  5654. WinLoc
  5655.  
  5656. Synopsis........Return address of structure for given window.
  5657.  
  5658. Header File.....TCXLwin.h
  5659.  
  5660. Prototype.......WdfP CTYP WinLoc(WndT wh);
  5661.  
  5662. Source File.....WCT\WINLOC.C
  5663.  
  5664. Notes...........Finds the address of a window record using the specified
  5665.                 window handle. This is used internally be several TCXL
  5666.                 functions.
  5667.  
  5668. Arguments.......wh -  Window Handle
  5669.  
  5670. Returns.........The address of the window control structure, or NULL if no
  5671.                 record was found.
  5672.  
  5673.  
  5674.  
  5675.  
  5676.  
  5677.  
  5678.  
  5679.  
  5680.  
  5681.  
  5682.  
  5683.  
  5684.  
  5685.  
  5686.  
  5687.  
  5688. TesSeRact CXL V5.52 Documentation                                  Page 83
  5689. ---------------------------------------------------------------------------
  5690. Wisactiv
  5691.  
  5692. Synopsis........Test for active handle.
  5693.  
  5694. Header File.....TCXLwin.h
  5695.  
  5696. Prototype.......IntT Wisactiv(WndT a);
  5697.  
  5698. Arguments.......a  -  Window Handle
  5699.  
  5700. Returns.........TRUE if specified handle is active
  5701.                 FALSE otherwise
  5702.  
  5703. Notes...........Determines if the specified window is active.
  5704. ---------------------------------------------------------------------------
  5705. Wopen
  5706.  
  5707. Synopsis........Open a window.
  5708.  
  5709. Header File.....TCXLwin.h
  5710.  
  5711. Prototype.......WndT CTYP Wopen(IntT sr, IntT sc, IntT er, IntT ec,
  5712.                      BytT bt, AtrT ba, AtrT wa);
  5713.  
  5714. Source File.....WCT\WOPEN.C
  5715.  
  5716. Arguments.......sr -  Start Row
  5717.                 sc -  Start Column
  5718.                 er -  End Row
  5719.                 ec -  End Column
  5720.                 bt -  Frame Type (One of the following)
  5721.                   BOX_SNG..all single
  5722.                   BOX_DBL..all double
  5723.                   BOX_VER..horiz single, vert double
  5724.                   BOX_HOR..horiz double, vert single
  5725.                   BOX_HVY..heavy lines
  5726.                   BOX_SPA..spaces [no box]
  5727.                   BOX_EXP..explode frame on open
  5728.                 ba -  Border Attribute (See Appendix A)
  5729.                 wa -  Window Attribute (See Appendix A)
  5730.  
  5731. Returns.........The window handle of the new window, or:
  5732.                 ERR_ARG  -  Argument Failure
  5733.                    TcxlErr contains:
  5734.                    W_INVCOORD - Invalid Coordinates
  5735.                    W_INVBTYPE - Invalid Border Type
  5736.  
  5737. Notes...........Opens a screen window and makes it active.  The cursor
  5738.                 location will be initialized to window row 0, column 0.
  5739.                 The text attribute (See Appendix A) will be initialized to
  5740.                 the same attribute as the window.  You can open as many
  5741.                 windows as memory permits.
  5742.  
  5743.  
  5744.  
  5745.  
  5746.  
  5747. Page 84                                  TesSeRact CXL V5.52 Documentation
  5748. ---------------------------------------------------------------------------
  5749. WpopUp
  5750.  
  5751. Synopsis........Open a window centered on the screen.
  5752.  
  5753. Header File.....TCXLwin.h
  5754.  
  5755. Prototype.......WndT CTYP WpopUp(IntT cf, IntT sr, IntT sc, IntT er,
  5756.                      IntT ec, BytT bt, AtrT ba, AtrT wa);
  5757.  
  5758. Source File.....WCT\WPOPUP.C
  5759.  
  5760. Arguments.......cf -  Centering Flag (One of the following)
  5761.                   CNT_HOR..Horizontal
  5762.                   CNT_VER..Vertical
  5763.                   CNT_CNT..Both
  5764.                 sr -  Start Row
  5765.                 sc -  Start Column
  5766.                 er -  End Row
  5767.                 ec -  End Column
  5768.                 bt -  Border Type (One of the following)
  5769.                   BOX_SNG..all single
  5770.                   BOX_DBL..all double
  5771.                   BOX_VER..horiz single, vert double
  5772.                   BOX_HOR..horiz double, vert single
  5773.                   BOX_HVY..heavy lines
  5774.                   BOX_SPA..spaces [no box]
  5775.                   BOX_EXP..explode frame on open
  5776.                 ba -  Border Attribute (See Appendix A)
  5777.                 wa -  Window Attribute (See Appendix A)
  5778.  
  5779. Returns.........The window handle of the new window, or:
  5780.                 ERR_ARG  -  Argument Failure
  5781.                    TcxlErr contains:
  5782.                    W_INVCOORD - Invalid Coordinates
  5783.                    W_INVBTYPE - Invalid Border Type
  5784.  
  5785. Notes...........This function, like Wopen(), opens a screen window and
  5786.                 makes it active.  However, this function will automatically
  5787.                 center the window on the screen; horizontally, vertically,
  5788.                 or both.  This function will detect the screen size, based
  5789.                 on the initialization parameters, and react accordingly.
  5790.  
  5791.                 For consistency, the parameter list for WpopUp() is
  5792.                 identical to Wopen() except for the addition of the flag
  5793.                 byte.  However, the start/end positions are used only for
  5794.                 size determination.
  5795.  
  5796.                 WpopUp() is identical to calling Wopen() followed by
  5797.                 Wcenter().
  5798.  
  5799.  
  5800.  
  5801.  
  5802.  
  5803.  
  5804.  
  5805.  
  5806. TesSeRact CXL V5.52 Documentation                                  Page 85
  5807. ---------------------------------------------------------------------------
  5808. Wsave
  5809. Wrestore
  5810.  
  5811. Synopsis........Save/Restore window from buffer
  5812.  
  5813. Header File.....TCXLwin.h
  5814.  
  5815. Prototype.......VcelP CTYP Wsave(IntT sr, IntT sc, IntT er, IntT ec);
  5816.                 VOID CTYP Wrestore(VcelP wb);
  5817.  
  5818. Source File.....WCT\WSAVE.C
  5819.  
  5820. Arguments.......wb -  Pointer to Window Buffer
  5821.                 sr -  Start Row
  5822.                 sc -  Start Column
  5823.                 er -  End Row
  5824.                 ec -  End Column
  5825.  
  5826. Returns.........Address of newly-created window buffer, or NULL if not
  5827.                 enough memory.
  5828.  
  5829. Notes...........Saves a region of the screen and allocates memory to hold
  5830.                 the buffer, or restores a previously saved region of the
  5831.                 screen and frees the memory allocated by Wsave().
  5832. ---------------------------------------------------------------------------
  5833. Wpush
  5834. Wpop
  5835.  
  5836. Synopsis........Save/Restore window to buffer
  5837.  
  5838. Header File.....TCXLwin.h
  5839.  
  5840. Prototype.......VOID CTYP Wpop(VcelP wb, IntT sr, IntT sc, IntT er,
  5841.                      IntT ec);
  5842.                 VcelP Wpush(IntT sr, IntT sc, IntT er, IntT ec);
  5843.  
  5844. Arguments.......wb -  Pointer to Window Buffer
  5845.                 sr -  Start Row
  5846.                 sc -  Start Column
  5847.                 er -  End Row
  5848.                 ec -  End Column
  5849.  
  5850. Returns.........Address of newly-created window buffer, or NULL if not
  5851.                 enough memory.
  5852.  
  5853. Notes...........Saves a region of the screen and allocates memory to hold
  5854.                 the buffer, or restores a previously saved region of the
  5855.                 screen and frees the memory allocated by Wpush().
  5856.  
  5857.                 Wpush() is identical to Wsave(); Wpop() is identical to
  5858.                 Wrestore() except it will restore the window to a new
  5859.                 screen location.
  5860.  
  5861.  
  5862.  
  5863.  
  5864.  
  5865. Page 86                                  TesSeRact CXL V5.52 Documentation
  5866. ---------------------------------------------------------------------------
  5867. WsetEsc
  5868.  
  5869. Synopsis........Enable/disable escape checking.
  5870.  
  5871. Header File.....TCXLwin.h
  5872.  
  5873. Prototype.......VOID CTYP WsetEsc(FlgT a);
  5874.  
  5875. Source File.....WCT\WSETESC.C
  5876.  
  5877. Notes...........Sets the Escape checking status for window keyboard input
  5878.                 functions that utilize Escape checking.  By default, Escape
  5879.                 checking is on. When the user presses [Esc] while Escape
  5880.                 checking is off, the keypress will be ignored.  The
  5881.                 exception to this is when inside a context-sensitive help
  5882.                 screen or when inside a sub-menu of a multi-level menu
  5883.                 system.
  5884.  
  5885.  
  5886.  
  5887. Arguments.......a  -  FALSE means turn Esc Checking off, TRUE means turn it
  5888.                       on.
  5889.  
  5890. Returns.........None
  5891.  
  5892. Example
  5893. ---------------------------------------------------------------------------
  5894. WsetFil
  5895.  
  5896. Synopsis........Set window fill character
  5897.  
  5898. Header File.....TCXLwin.h
  5899.  
  5900. Prototype.......VOID WsetFil(ChrT a);
  5901.  
  5902. Arguments.......a  -  Character to use as fill char
  5903.  
  5904. Returns.........None
  5905.  
  5906. Notes...........Specifies which character the windowing system will use for
  5907.                 filling windows with.  By default, it is a space (' ').
  5908.  
  5909.  
  5910.  
  5911.  
  5912.  
  5913.  
  5914.  
  5915.  
  5916.  
  5917.  
  5918.  
  5919.  
  5920.  
  5921.  
  5922.  
  5923.  
  5924. TesSeRact CXL V5.52 Documentation                                  Page 87
  5925. ---------------------------------------------------------------------------
  5926. WsetFun
  5927.  
  5928. Synopsis........Set fill function.
  5929.  
  5930. Header File.....TCXLwin.h
  5931.  
  5932. Prototype.......VOID WsetFun(VOID (CTYP *f)(WrdT, WrdT, ChrT, AtrT));
  5933.  
  5934. Arguments.......f  -  Replacement Fill Function
  5935.  
  5936. Returns.........None
  5937.  
  5938. Notes...........This function sets an alternate routine to "fill" a window
  5939.                 when it is opened.  See the default fill function,
  5940.                 VfilBox(), for details on the prototype for this routine.  
  5941. ---------------------------------------------------------------------------
  5942. WsetTab
  5943.  
  5944. Synopsis........Set tab width.
  5945.  
  5946. Header File.....TCXLwin.h
  5947.  
  5948. Prototype.......VOID WsetTab(BytT a);
  5949.  
  5950. Notes...........Modifies the tab width to be used when displaying tabs in
  5951.                 the active window via the window TTY output functions
  5952.                 (these are the Wput???() family of functions).  The default
  5953.                 tab width is 8.
  5954.  
  5955. Arguments.......a  -  Tab Width (in columns)
  5956.  
  5957. Returns.........None
  5958. ---------------------------------------------------------------------------
  5959. WsetTxt
  5960.  
  5961. Synopsis........Set new window text attribute.
  5962.  
  5963. Header File.....TCXLwin.h
  5964.  
  5965. Prototype.......IntT CTYP WsetTxt(AtrT a);
  5966.  
  5967. Source File.....WCT\WSETTXT.C
  5968.  
  5969. Arguments.......a  -  Text Attribute (See Appendix A)
  5970.  
  5971. Returns.........ERR_NUL  -  No Error
  5972.                 ERR_ARG  -  Argument Failure
  5973.                    TcxlErr contains:
  5974.                    W_NOACTIVE  -  No Active Window
  5975.  
  5976. Notes...........Sets the current text attribute (See Appendix A) for the
  5977.                 active window.  The current text attribute is used by the
  5978.                 window TTY output functions (these are the Wput???() family
  5979.                 of functions) for displaying text inside the active window.
  5980.  
  5981.  
  5982.  
  5983. Page 88                                  TesSeRact CXL V5.52 Documentation
  5984. ---------------------------------------------------------------------------
  5985. Wunhide
  5986.  
  5987. Synopsis........Unhide a previously hidden window.
  5988.  
  5989. Header File.....TCXLwin.h
  5990.  
  5991. Prototype.......IntT CTYP Wunhide(WndT wh);
  5992.  
  5993. Source File.....WCT\WHIDE.C
  5994.  
  5995. Arguments.......wh -  Window Handle
  5996.  
  5997. Returns.........ERR_NUL  -  No Error
  5998.                 ERR_ARG  -  Argument Failure
  5999.                    TcxlErr contains:
  6000.                    W_NOTFOUND  -  Window Handle Not Found
  6001.                    W_NOHIDDEN  -  No Hidden Windows
  6002.                    W_NOTHIDD   -  Window Not Hidden
  6003.  
  6004. Notes...........The unhidden window becomes the active window.
  6005. ---------------------------------------------------------------------------
  6006. Wunlink
  6007.  
  6008. Synopsis........Unlink and free window from memory without screen change.
  6009.  
  6010. Header File.....TCXLwin.h
  6011.  
  6012. Prototype.......IntT CTYP Wunlink(WndT wh);
  6013.  
  6014. Source File.....WCT\WUNLINK.C
  6015.  
  6016. Arguments.......wh -  Window Handle
  6017.  
  6018. Returns.........ERR_NUL  -  No Error
  6019.                 ERR_ARG  -  Argument Failure
  6020.                    TcxlErr contains:
  6021.                    W_NOTFOUND - Input Window Handle Was Not Found
  6022.  
  6023. Notes...........Releases all memory allocated by a window, then unlinks it
  6024.                 from the window chain, making it no longer accessible.  The
  6025.                 screen is not changed in any way.  If the passed window
  6026.                 handle is zero, the current active window is unlinked.
  6027.  
  6028.  
  6029.  
  6030.  
  6031.  
  6032.  
  6033.  
  6034.  
  6035.  
  6036.  
  6037.  
  6038.  
  6039.  
  6040.  
  6041.  
  6042. TesSeRact CXL V5.52 Documentation                                  Page 89
  6043. ---------------------------------------------------------------------------
  6044. Wwprints
  6045.  
  6046. Synopsis........Display text in visible or non-visible window.
  6047.  
  6048. Header File.....TCXLwin.h
  6049.  
  6050. Prototype.......IntT CTYP Wwprints(WndT wh, BytT wr, BytT wc, AtrT at,
  6051.                      ChrP ps);
  6052.  
  6053. Source File.....WIN\WWPRINTS.C
  6054.  
  6055. Arguments.......wh -  Window Handle
  6056.                 wr -  Window Row
  6057.                 wc -  Window Column
  6058.                 at -  Text Attribute (See Appendix A)
  6059.                 ps -  String to display
  6060.  
  6061. Returns.........ERR_NUL  -  No Error
  6062.                 ERR_ARG  -  Argument Failure
  6063.                    TcxlErr contains:
  6064.                    W_NOACTIVE  -  No Active Window
  6065.                    W_NOTFOUND  -  Window Handle Not Found
  6066.                    W_INVCOORD  -  Invalid Window Coordinates
  6067.                    W_STRLONG   -  String Too Long (Not All Of String Was
  6068.                       Displayed)
  6069.  
  6070. Notes...........Prints a string to the specified window.  The specified
  6071.                 window can be active, hidden, or blocked.  Control
  6072.                 characters are not recognized. Cursor position is not
  6073.                 updated.
  6074.  
  6075.  
  6076.  
  6077.  
  6078.  
  6079.  
  6080.  
  6081.  
  6082.  
  6083.  
  6084.  
  6085.  
  6086.  
  6087.  
  6088.  
  6089.  
  6090.  
  6091.  
  6092.  
  6093.  
  6094.  
  6095.  
  6096.  
  6097.  
  6098.  
  6099.  
  6100.  
  6101. Page 90                                  TesSeRact CXL V5.52 Documentation
  6102.                           Active Window Movement
  6103.  
  6104. ---------------------------------------------------------------------------
  6105. Wcenter
  6106.  
  6107. Synopsis........Center active window on screen.
  6108.  
  6109. Header File.....TCXLwin.h
  6110.  
  6111. Prototype.......IntT CTYP Wcenter(IntT cf);
  6112.  
  6113. Source File.....WCT\WCENTER.C
  6114.  
  6115. Arguments.......cf -  Centering Flag (One of the following)
  6116.                   CNT_HOR..Horizontal
  6117.                   CNT_VER..Vertical
  6118.                   CNT_CNT..Both
  6119.  
  6120. Returns.........ERR_NUL  -  No Error
  6121.                 ERR_ARG  -  Argument Failure
  6122.                    TcxlErr contains:
  6123.                    W_ALLOCERR  -  Memory Allocation Error
  6124.                    W_NOACTIVE  -  No Active Window
  6125.  
  6126. Notes...........Centers the active window on the screen, horizontally,
  6127.                 vertically, or both.
  6128. ---------------------------------------------------------------------------
  6129. Wclose
  6130.  
  6131. Synopsis........Close active window.
  6132.  
  6133. Header File.....TCXLwin.h
  6134.  
  6135. Prototype.......IntT CTYP Wclose(NOARG);
  6136.  
  6137. Source File.....WCT\WOPEN.C
  6138.  
  6139. Arguments.......None
  6140.  
  6141. Returns.........ERR_NUL  -  No Error
  6142.  
  6143.                 ERR_ARG  -  Argument Failure
  6144.                    TcxlErr contains:
  6145.                    W_NOACTIVE  -  No Active Window
  6146.  
  6147. Notes...........Closes the active window.  If the window has a shadow, it
  6148.                 will be closed as well.
  6149.  
  6150.  
  6151.  
  6152.  
  6153.  
  6154.  
  6155.  
  6156.  
  6157.  
  6158.  
  6159.  
  6160. TesSeRact CXL V5.52 Documentation                                  Page 91
  6161. ---------------------------------------------------------------------------
  6162. Wcopy
  6163.  
  6164. Synopsis........Make a copy of the current active window.
  6165.  
  6166. Header File.....TCXLwin.h
  6167.  
  6168. Prototype.......WndT CTYP Wcopy(IntT nr, IntT nc);
  6169.  
  6170. Source File.....WCT\WCOPY.C
  6171.  
  6172. Arguments.......nr -  Start Row of duplicate window
  6173.                 sc -  Start Column of duplicate window
  6174.  
  6175. Returns.........The window handle of the new window, or:
  6176.                 ERR_ARG  -  Argument Failure
  6177.                    TcxlErr contains:
  6178.                    W_INVCOORD - invalid coordinates
  6179.  
  6180. Notes...........Creates a new window duplicating the active window.  The
  6181.                 new window becomes the active window.
  6182. ---------------------------------------------------------------------------
  6183. Wdrag
  6184.  
  6185. Synopsis........Smoothly drag a window one position in the specified
  6186.                 direction.
  6187.  
  6188. Header File.....TCXLwin.h
  6189.  
  6190. Prototype.......IntT CTYP Wdrag(BytT df);
  6191.  
  6192. Source File.....WCT\WDRAG.C
  6193.  
  6194. Arguments.......df -  Direction (One of the following)
  6195.                   DIR_DWN..Down
  6196.                   DIR_UP...Up
  6197.                   DIR_LFT..Left
  6198.                   DIR_RGT..Right
  6199.  
  6200. Returns.........ERR_NUL  -  No Error
  6201.                 ERR_ARG  -  Argument Failure
  6202.                    TcxlErr contains:
  6203.                    W_NOACTIVE  -  No Active Window
  6204.                    W_ALLOCERR  -  Memory Allocation Error
  6205.  
  6206.  
  6207.  
  6208.  
  6209.  
  6210.  
  6211.  
  6212.  
  6213.  
  6214.  
  6215.  
  6216.  
  6217.  
  6218.  
  6219. Page 92                                  TesSeRact CXL V5.52 Documentation
  6220. ---------------------------------------------------------------------------
  6221. Wdump
  6222.  
  6223. Synopsis........Dump active window to printer.
  6224.  
  6225. Header File.....TCXLwin.h
  6226.  
  6227. Prototype.......IntT CTYP Wdump(NOARG);
  6228.  
  6229. Source File.....WCT\WDUMP.C
  6230.  
  6231. Arguments.......None
  6232.  
  6233. Returns.........ERR_NUL  -  No Error
  6234.                 ERR_ARG  -  Argument Failure
  6235.                    TcxlErr contains:
  6236.                    W_NOACTIVE  -  No Active Window
  6237.  
  6238. Notes...........Dumps the active window to the default printer (PRN).
  6239. ---------------------------------------------------------------------------
  6240. Wgrow
  6241.  
  6242. Synopsis........Resize the active window to have new start position with
  6243.                 same end position.
  6244.  
  6245. Header File.....TCXLwin.h
  6246.  
  6247. Prototype.......IntT CTYP Wgrow(IntT nr, IntT nc);
  6248.  
  6249. Source File.....WCT\WGROW.C
  6250.  
  6251. Arguments.......nr -  New Lower-Left Row
  6252.                 nc -  New Lower-Left Column
  6253.  
  6254. Returns.........ERR_NUL  -  No Error
  6255.                 ERR_ARG  -  Argument Failure
  6256.                    TcxlErr contains:
  6257.                    W_ALLOCERR  -  Memory Allocation Error
  6258.                    W_NOACTIVE  -  No Active Window
  6259.                    W_INVCOORD  -  Invalid Coordinates
  6260.  
  6261. Notes...........Adjusts the size of the active window by changing the
  6262.                 screen coordinates of its upper-left corner.
  6263.  
  6264.  
  6265.  
  6266.  
  6267.  
  6268.  
  6269.  
  6270.  
  6271.  
  6272.  
  6273.  
  6274.  
  6275.  
  6276.  
  6277.  
  6278. TesSeRact CXL V5.52 Documentation                                  Page 93
  6279. ---------------------------------------------------------------------------
  6280. Whandle
  6281.  
  6282. Synopsis........Return the handle of the active window.
  6283.  
  6284. Header File.....TCXLwin.h
  6285.  
  6286. Prototype.......WndT CTYP Whandle(NOARG);
  6287.  
  6288. Source File.....WCT\WHANDLE.C
  6289.  
  6290. Arguments.......None
  6291.  
  6292. Returns.........The handle of the active window, or zero if error;
  6293.                    TcxlErr contains:
  6294.                    W_NOACTIVE  -  No Active Window
  6295. ---------------------------------------------------------------------------
  6296. Whide
  6297.  
  6298. Synopsis........Hide active window.
  6299.  
  6300. Header File.....TCXLwin.h
  6301.  
  6302. Prototype.......IntT CTYP Whide(NOARG);
  6303.  
  6304. Source File.....WCT\WHIDE.C
  6305.  
  6306. Arguments.......None
  6307.  
  6308. Returns.........ERR_NUL  -  No Error
  6309.  
  6310.                 ERR_ARG  -  Argument Failure
  6311.                    TcxlErr contains:
  6312.                    W_ALLOCERR  -  Memory Allocation Error
  6313.                    W_NOACTIVE  -  No Active Window
  6314.  
  6315. Notes...........The next window becomes active.
  6316. ---------------------------------------------------------------------------
  6317. Wmove
  6318.  
  6319. Synopsis........Moves the active window to a new location on the screen.
  6320.  
  6321. Header File.....TCXLwin.h
  6322.  
  6323. Prototype.......IntT CTYP Wmove(IntT sr, IntT sc);
  6324.  
  6325. Source File.....WCT\WMOVE.C
  6326.  
  6327. Arguments.......sr -  New Start Row
  6328.                 sc -  New Start Column
  6329.  
  6330. Returns.........ERR_NUL  -  No Error
  6331.                 ERR_ARG  -  Argument Failure
  6332.                    TcxlErr contains:
  6333.                    W_ALLOCERR  -  Memory Allocation Error
  6334.                    W_NOACTIVE  -  No Active Window
  6335.  
  6336.  
  6337. Page 94                                  TesSeRact CXL V5.52 Documentation
  6338. ---------------------------------------------------------------------------
  6339. Wsize
  6340.  
  6341. Synopsis........Resize the active window to have new end position with same
  6342.                 start position.
  6343.  
  6344. Header File.....TCXLwin.h
  6345.  
  6346. Prototype.......IntT CTYP Wsize(IntT nr, IntT nc);
  6347.  
  6348. Source File.....WCT\WSIZE.C
  6349.  
  6350. Arguments.......nr -  New Lower-Left Row
  6351.                 nc -  New Lower-Left Column
  6352.  
  6353. Returns.........ERR_NUL  -  No Error
  6354.                 ERR_ARG  -  Argument Failure
  6355.                    TcxlErr contains:
  6356.                    W_ALLOCERR  -  Memory Allocation Error
  6357.                    W_NOACTIVE  -  No Active Window
  6358.                    W_INVCOORD  -  Invalid Coordinates
  6359.  
  6360. Notes...........Adjusts the size of the active window by changing the
  6361.                 screen coordinates of its lower-right corner.
  6362. ---------------------------------------------------------------------------
  6363. Wslide
  6364.  
  6365. Synopsis........Smoothly slides active window to new screen position.
  6366.  
  6367. Header File.....TCXLwin.h
  6368.  
  6369. Prototype.......IntT CTYP Wslide(IntT sr, IntT sc);
  6370.  
  6371. Source File.....WCT\WSLIDE.C
  6372.  
  6373. Arguments.......sr -  New Start Row
  6374.                 sc -  New Start Column
  6375.  
  6376. Returns.........ERR_NUL  -  No Error
  6377.                 ERR_ARG  -  Argument Failure
  6378.                    TcxlErr contains:
  6379.                    W_ALLOCERR  -  Memory Allocation Error
  6380.                    W_NOACTIVE  -  No Active Window
  6381.                    W_INVCOORD  -  Invalid Coordinates
  6382.  
  6383.  
  6384.  
  6385.  
  6386.  
  6387.  
  6388.  
  6389.  
  6390.  
  6391.  
  6392.  
  6393.  
  6394.  
  6395.  
  6396. TesSeRact CXL V5.52 Documentation                                  Page 95
  6397. ---------------------------------------------------------------------------
  6398. Wstretch
  6399.  
  6400. Synopsis........Smoothly stretches active window to new screen position.
  6401.  
  6402. Header File.....TCXLwin.h
  6403.  
  6404. Prototype.......IntT CTYP Wstretch(IntT sr, IntT sc);
  6405.  
  6406. Source File.....WCT\WSTRETCH.C
  6407.  
  6408. Arguments.......sr -  New Start Row
  6409.                 sc -  New Start Column
  6410.  
  6411. Returns.........ERR_NUL  -  No Error
  6412.                 ERR_ARG  -  Argument Failure
  6413.                    TcxlErr contains:
  6414.                    W_ALLOCERR  -  Memory Allocation Error
  6415.                    W_NOACTIVE  -  No Active Window
  6416.                    W_INVCOORD  -  Invalid Coordinates
  6417.  
  6418.                            Active Window Control
  6419.  
  6420. ---------------------------------------------------------------------------
  6421. WchgAtr
  6422.  
  6423. Synopsis........Change attributes of active window.
  6424.  
  6425. Header File.....TCXLwin.h
  6426.  
  6427. Prototype.......IntT CTYP WchgAtr(AtrT ba, AtrT wa);
  6428.  
  6429. Source File.....WIN\WCHGATR.C
  6430.  
  6431. Arguments.......ba -  New Border Attribute (See Appendix A)
  6432.                 wa -  New Window Attribute (See Appendix A)
  6433.  
  6434. Returns.........ERR_ARG  -  Argument Failure
  6435.                    TcxlErr contains:
  6436.                    W_NOACTIVE  -  No Active Window
  6437.  
  6438. Notes...........Changes the text attribute of the active window.  All text
  6439.                 within the window will be changed also.
  6440.  
  6441.  
  6442.  
  6443.  
  6444.  
  6445.  
  6446.  
  6447.  
  6448.  
  6449.  
  6450.  
  6451.  
  6452.  
  6453.  
  6454.  
  6455. Page 96                                  TesSeRact CXL V5.52 Documentation
  6456. ---------------------------------------------------------------------------
  6457. Wclear
  6458.  
  6459. Synopsis........Clears the active window and homes the cursor.
  6460.  
  6461. Header File.....TCXLwin.h
  6462.  
  6463. Prototype.......IntT Wclear(NOARG);
  6464.  
  6465. Arguments.......None
  6466.  
  6467. Returns.........ERR_NUL  -  No Error
  6468.                 ERR_ARG  -  Argument Failure
  6469.                    TcxlErr contains:
  6470.                    W_NOACTIVE - No Active Window
  6471. ---------------------------------------------------------------------------
  6472. WclrEol
  6473.  
  6474. Synopsis........Clear to end of line.
  6475.  
  6476. Header File.....TCXLwin.h
  6477.  
  6478. Prototype.......IntT CTYP WclrEol(NOARG);
  6479.  
  6480. Source File.....WIN\WCLREOL.C
  6481.  
  6482. Notes...........Clears from the cursor to the end of the active window's
  6483.                 line.  The cursor's position is not updated.
  6484.  
  6485. Arguments.......None
  6486.  
  6487. Returns.........ERR_NUL  -  No Error
  6488.                 ERR_ARG  -  Argument Failure
  6489.                    TcxlErr contains:
  6490.                    W_NOACTIVE - No Active Window
  6491. ---------------------------------------------------------------------------
  6492. WclrEos
  6493.  
  6494. Synopsis........Clear to end of window.
  6495.  
  6496. Header File.....TCXLwin.h
  6497.  
  6498. Prototype.......IntT WclrEos(NOARG);
  6499.  
  6500. Source File.....WIN\WCLREOS.C
  6501.  
  6502. Arguments.......None
  6503.  
  6504. Returns.........ERR_NUL  -  No Error
  6505.                 ERR_ARG  -  Argument Failure
  6506.                    TcxlErr contains:
  6507.                    W_NOACTIVE - No Active Window
  6508.  
  6509. Notes...........Clears from the cursor to the end of the active window.
  6510.                 The cursor's position is not updated.
  6511.  
  6512.  
  6513.  
  6514. TesSeRact CXL V5.52 Documentation                                  Page 97
  6515. ---------------------------------------------------------------------------
  6516. WclrWin
  6517.  
  6518. Synopsis........Clear active window.
  6519.  
  6520. Header File.....TCXLwin.h
  6521.  
  6522. Prototype.......IntT CTYP WclrWin(AtrT at);
  6523.  
  6524. Source File.....WIN\WCLRWIN.C
  6525.  
  6526. Arguments.......at -  Attribute (See Appendix A)
  6527.  
  6528. Returns.........ERR_NUL  -  No Error
  6529.                 ERR_ARG  -  Argument Failure
  6530.                    TcxlErr contains:
  6531.                    W_NOACTIVE - No Active Window
  6532.  
  6533. Notes...........Clears the active window using specified text attribute
  6534.                 (See Appendix A), then homes the cursor.  This is the same
  6535.                 as calling WchgAtr(), followed by Wclear(). [NOTE! Under
  6536.                 DOS,  Wclear() is implemented as a macro that calls
  6537.                 WclrWin().]
  6538. ---------------------------------------------------------------------------
  6539. Wdepth
  6540.  
  6541. Synopsis........Depth of window.
  6542.  
  6543. Header File.....TCXLwin.h
  6544.  
  6545. Prototype.......IntT Wdepth(NOARG);
  6546.  
  6547. Arguments.......None
  6548.  
  6549. Returns.........Window depth
  6550.  
  6551.  
  6552.  
  6553.  
  6554.  
  6555.  
  6556.  
  6557.  
  6558.  
  6559.  
  6560.  
  6561.  
  6562.  
  6563.  
  6564.  
  6565.  
  6566.  
  6567.  
  6568.  
  6569.  
  6570.  
  6571.  
  6572.  
  6573. Page 98                                  TesSeRact CXL V5.52 Documentation
  6574. ---------------------------------------------------------------------------
  6575. WfilBox
  6576.  
  6577. Synopsis........Fill a box in window.
  6578.  
  6579. Header File.....TCXLwin.h
  6580.  
  6581. Prototype.......IntT CTYP WfilBox(BytT sr, BytT sc, BytT er, BytT ec,
  6582.                      ChrT ch, AtrT at);
  6583.  
  6584. Source File.....WIN\WFILBOX.C
  6585.  
  6586. Notes...........Fills in a region of active window with a specified
  6587.                 character and attribute (See Appendix A).
  6588.  
  6589. Arguments.......sr -  Start Row
  6590.                 sc -  Start Column
  6591.                 er -  End Row
  6592.                 ec -  End Column
  6593.                 ch -  Character to use
  6594.                 at -  Attribute (See Appendix A)
  6595.  
  6596. Returns.........ERR_NUL  -  No Error
  6597.                 ERR_ARG  -  Argument Failure
  6598.                    TcxlErr contains:
  6599.                    W_NOACTIVE  -  No Active Window
  6600.                    W_INVCOORD  -  Invalid Window Row
  6601.  
  6602.  
  6603.  
  6604.  
  6605.  
  6606.  
  6607.  
  6608.  
  6609.  
  6610.  
  6611.  
  6612.  
  6613.  
  6614.  
  6615.  
  6616.  
  6617.  
  6618.  
  6619.  
  6620.  
  6621.  
  6622.  
  6623.  
  6624.  
  6625.  
  6626.  
  6627.  
  6628.  
  6629.  
  6630.  
  6631.  
  6632. TesSeRact CXL V5.52 Documentation                                  Page 99
  6633. ---------------------------------------------------------------------------
  6634. WlinDel
  6635. WlinIns
  6636.  
  6637. Synopsis........Delete/insert line.
  6638.  
  6639. Header File.....TCXLwin.h
  6640.  
  6641. Prototype.......IntT WlinDel(BytT wr, BytT di);
  6642.                 IntT WlinIns(BytT wr, BytT di);
  6643.  
  6644. Source File.....WIN\_WLINDI_.C
  6645.  
  6646. Arguments.......wr -  Window Row to delete/insert
  6647.                 di -  Direction (One of the following)
  6648.                   DIR_DWN..Down
  6649.                   DIR_UP...Up
  6650.                   DIR_LFT..Left
  6651.                   DIR_RGT..Right
  6652.  
  6653. Returns.........ERR_NUL  -  No Error
  6654.                 ERR_ARG  -  Argument Failure
  6655.                    TcxlErr contains:
  6656.                    W_NOACTIVE  -  No Active Window
  6657.                    W_INVCOORD  -  Invalid Window Row
  6658.  
  6659. Notes...........Deletes or inserts a line from the active window.
  6660.                 Depending upon the input scroll direction, the lines above
  6661.                 or below the line to delete will scroll to fill in the
  6662.                 deleted line in, and a blank line will be added.  If what
  6663.                 you really want to do is clear the line, you may want to
  6664.                 use WclrEol() instead.
  6665.  
  6666.  
  6667.  
  6668.  
  6669.  
  6670.  
  6671.  
  6672.  
  6673.  
  6674.  
  6675.  
  6676.  
  6677.  
  6678.  
  6679.  
  6680.  
  6681.  
  6682.  
  6683.  
  6684.  
  6685.  
  6686.  
  6687.  
  6688.  
  6689.  
  6690.  
  6691. Page 100                                 TesSeRact CXL V5.52 Documentation
  6692. ---------------------------------------------------------------------------
  6693. WscrBox
  6694.  
  6695. Synopsis........Scroll a box.
  6696.  
  6697. Header File.....TCXLwin.h
  6698.  
  6699. Prototype.......IntT CTYP WscrBox(BytT sr, BytT sc, BytT er, BytT ec,
  6700.                      BytT n, BytT d);
  6701.  
  6702. Source File.....WIN\WSCRBOX.C
  6703.  
  6704. Arguments.......sr -  Start Row
  6705.                 sc -  Start Column
  6706.                 er -  End Row
  6707.                 ec -  End Column
  6708.                 n  -  Number of lines to scroll
  6709.                 d  -  Direction (Up or Down only!) (One of the following)
  6710.                   DIR_DWN..Down
  6711.                   DIR_UP...Up
  6712.                   DIR_LFT..Left
  6713.                   DIR_RGT..Right
  6714.  
  6715. Returns.........ERR_NUL  -  No Error
  6716.                 ERR_ARG  -  Argument Failure
  6717.                    TcxlErr contains:
  6718.                    W_NOACTIVE  -  No Active Window
  6719.                    W_INVCOORD  -  Invalid Window Coordinates
  6720.  
  6721. Notes...........Scrolls a region of the active window up or down.
  6722. ---------------------------------------------------------------------------
  6723. WscrWin
  6724.  
  6725. Synopsis........scroll a window.
  6726.  
  6727. Header File.....TCXLwin.h
  6728.  
  6729. Prototype.......IntT WscrWin(BytT n, BytT d);
  6730.  
  6731. Source File.....WIN\WSCRWIN.C
  6732.  
  6733. Arguments.......n  -  Number of lines to scroll
  6734.                 d  -  Direction (Up or Down only!) (One of the following)
  6735.                   DIR_DWN..Down
  6736.                   DIR_UP...Up
  6737.                   DIR_LFT..Left
  6738.                   DIR_RGT..Right
  6739.  
  6740. Returns.........ERR_NUL  -  No Error
  6741.                 ERR_ARG  -  Argument Failure
  6742.                    TcxlErr contains:
  6743.                    W_NOACTIVE  -  No Active Window
  6744.  
  6745. Notes...........Scrolls text lines within the active window, up or down.
  6746.  
  6747.  
  6748.  
  6749.  
  6750. TesSeRact CXL V5.52 Documentation                                 Page 101
  6751. ---------------------------------------------------------------------------
  6752. Wwidth
  6753.  
  6754. Synopsis........Width of window.
  6755.  
  6756. Header File.....TCXLwin.h
  6757.  
  6758. Prototype.......IntT Wwidth(NOARG);
  6759.  
  6760. Arguments.......None
  6761.  
  6762. Returns.........Window width
  6763.  
  6764.                                Active Border
  6765.  
  6766. ---------------------------------------------------------------------------
  6767. Wborder
  6768.  
  6769. Synopsis........Change border type.
  6770.  
  6771. Header File.....TCXLwin.h
  6772.  
  6773. Prototype.......IntT CTYP Wborder(BytT bt);
  6774.  
  6775. Source File.....WCT\WBORDER.C
  6776.                 bt -  Border Type (One of the following)
  6777. Arguments.......  BOX_SNG..all single
  6778.                   BOX_DBL..all double
  6779.                   BOX_VER..horiz single, vert double
  6780.                   BOX_HOR..horiz double, vert single
  6781.                   BOX_HVY..heavy lines
  6782.                   BOX_SPA..spaces [no box]
  6783.  
  6784. Returns.........ERR_NUL  -  No Error
  6785.                 ERR_ARG  -  Argument Failure
  6786.                    TcxlErr contains:
  6787.                    W_NOACTIVE  -  No Active Window
  6788.                    W_INVBTYPE  -  Invalid Border Type
  6789.  
  6790. Notes...........Changes the active window's border type.  If changing to or
  6791.                 from a borderless window, the window's effective area will
  6792.                 change as well, changing relative coordinates within the
  6793.                 window.
  6794.  
  6795.  
  6796.  
  6797.  
  6798.  
  6799.  
  6800.  
  6801.  
  6802.  
  6803.  
  6804.  
  6805.  
  6806.  
  6807.  
  6808. Page 102                                 TesSeRact CXL V5.52 Documentation
  6809. ---------------------------------------------------------------------------
  6810. Wbprintc
  6811.  
  6812. Synopsis........Display character on window's border.
  6813.  
  6814. Header File.....TCXLwin.h
  6815.  
  6816. Prototype.......IntT CTYP Wbprintc(BytT bd, BytT of, AtrT at, ChrT ch);
  6817.  
  6818. Source File.....WCT\WBPRINTC.C
  6819.  
  6820. Arguments.......bd -  Border Side (One of the following)
  6821.                   BRD_TOP..Top
  6822.                   BRD_BOT..Bottom
  6823.                   BRD_LFT..Left
  6824.                   BRD_RGT..Right
  6825.                 of -  Offset for display
  6826.                 at -  Text Attribute (See Appendix A)
  6827.                 ch -  Character to display
  6828.  
  6829. Returns.........ERR_NUL  -  No Error
  6830.                 ERR_ARG  -  Argument Failure
  6831.                    TcxlErr contains:
  6832.                    W_NOACTIVE  -  No Active Window
  6833.                    W_NOBORDER  -  Window Has No Border
  6834.                    W_INVCOORD  -  Border Offset Out Of Range
  6835. ---------------------------------------------------------------------------
  6836. Wmessage
  6837.  
  6838. Synopsis........Display string on border.
  6839.  
  6840. Header File.....TCXLwin.h
  6841.  
  6842. Prototype.......IntT CTYP Wmessage(ChrP ps, BytT bo, BytT lo, AtrT at);
  6843.  
  6844. Source File.....WCT\WMESSAGE.C
  6845.  
  6846. Arguments.......ps -  Message String
  6847.                 bo -  Border Sides (One of the following)
  6848.                   BRD_TOP..Top
  6849.                   BRD_BOT..Bottom
  6850.                   BRD_LFT..Left
  6851.                   BRD_RGT..Right
  6852.                 lo -  Left Offset to Display Message
  6853.                 at -  Attribute (See Appendix A)
  6854.  
  6855. Returns.........ERR_NUL  -  No Error
  6856.                 ERR_ARG  -  Argument Failure
  6857.                    TcxlErr contains:
  6858.                    W_NOACTIVE  -  No Active Window
  6859.                    W_STRLONG   -  String Could Not Fit In Window
  6860.                    W_NOBORDER  -  Window Has No Border
  6861.  
  6862. Notes...........Displays text on the top or bottom border of the active
  6863.                 window.
  6864.  
  6865.  
  6866.  
  6867. TesSeRact CXL V5.52 Documentation                                 Page 103
  6868. ---------------------------------------------------------------------------
  6869. Wtitle
  6870.  
  6871. Synopsis........Display a title on window.
  6872.  
  6873. Header File.....TCXLwin.h
  6874.  
  6875. Prototype.......IntT CTYP Wtitle(ChrP ps, BytT tp, AtrT ta);
  6876.  
  6877. Source File.....WCT\WTITLE.C
  6878.  
  6879. Arguments.......ps -  Title String
  6880.                 tp -  Title Position (One of the following)
  6881.                   TTL_LFT..Left
  6882.                   TTL_CNT..Center
  6883.                   TTL_RGT..Right
  6884.                 ta -  Attribute (See Appendix A)
  6885.  
  6886. Returns.........ERR_NUL  -  No Error
  6887.                 ERR_ARG  -  Argument Failure
  6888.                 ERR_MEM  -  Memory Allocation Failure
  6889.                    TcxlErr contains:
  6890.                    W_NOACTIVE  -  No Active Window
  6891.  
  6892. Notes...........Gives active window a title and displays title on top
  6893.                 border line of window.  If active window has no border,
  6894.                 then the window's record will be updated, but no title will
  6895.                 be visible.  If the passed pointer <ps> is NULL, the
  6896.                 current title will be removed from the window.
  6897.  
  6898.  
  6899.  
  6900.  
  6901.  
  6902.  
  6903.  
  6904.  
  6905.  
  6906.  
  6907.  
  6908.  
  6909.  
  6910.  
  6911.  
  6912.  
  6913.  
  6914.  
  6915.  
  6916.  
  6917.  
  6918.  
  6919.  
  6920.  
  6921.  
  6922.  
  6923.  
  6924.  
  6925.  
  6926. Page 104                                 TesSeRact CXL V5.52 Documentation
  6927.                                Active Shadow
  6928.  
  6929. ---------------------------------------------------------------------------
  6930. Wshadow
  6931. Wshadoff
  6932.  
  6933. Synopsis........Add/remove shadow from active window.
  6934.  
  6935. Header File.....TCXLwin.h
  6936.  
  6937. Prototype.......IntT CTYP Wshadow(AtrT at);
  6938.                 IntT CTYP Wshadoff(NOARG);
  6939.  
  6940. Source File.....WCT\WSHADOFF.C
  6941.                 WCT\WSHADOW.C
  6942.  
  6943. Arguments.......at -  Attribute for shadow (most effective is _BLACK |
  6944.                       DGREY)
  6945.  
  6946. Returns.........ERR_NUL  -  No Error
  6947.                 ERR_ARG  -  Argument Failure
  6948.                 ERR_MEM  -  Memory Allocation Failure
  6949.                    TcxlErr contains:
  6950.                    W_NOACTIVE  -  No Active Window
  6951.  
  6952. Notes...........Add or remove the shadow from the active window, if one
  6953.                 exists.  The shadow will be cast to the right of the window
  6954.                 and will be translucent (the characters underneath the
  6955.                 shadow will show through in the given attribute).
  6956.                 Wshadoff() is only needed when you want to prematurely
  6957.                 remove the active window's shadow.  The Wclose() function
  6958.                 automatically calls Wshadoff() when it closes a window.
  6959.  
  6960.  
  6961.  
  6962.  
  6963.  
  6964.  
  6965.  
  6966.  
  6967.  
  6968.  
  6969.  
  6970.  
  6971.  
  6972.  
  6973.  
  6974.  
  6975.  
  6976.  
  6977.  
  6978.  
  6979.  
  6980.  
  6981.  
  6982.  
  6983.  
  6984.  
  6985. TesSeRact CXL V5.52 Documentation                                 Page 105
  6986.                                Active Cursor
  6987.  
  6988. ---------------------------------------------------------------------------
  6989. WcurGet
  6990. WcurPut
  6991.  
  6992. Synopsis........Get/set cursor position.
  6993.  
  6994. Header File.....TCXLwin.h
  6995.  
  6996. Prototype.......VOID WcurGet(VposT rc);
  6997.                 IntT WcurPut(VposT rc);
  6998.  
  6999. Source File.....WCT\WCURGET.C
  7000.  
  7001. Arguments.......rc -  Vpos structure with Window coordinates
  7002.  
  7003. Returns.........ERR_NUL  -  No Error
  7004.                 ERR_ARG  -  Argument Failure
  7005.                    TcxlErr contains:
  7006.                    W_NOACTIVE  -  No Active Window
  7007.                    W_INVCOORD  -  Invalid Coordinates
  7008.  
  7009. Notes...........Gets or sets the current cursor coordinates of the active
  7010.                 window into the VposT structure.
  7011. ---------------------------------------------------------------------------
  7012. Wgotoxy
  7013.  
  7014. Synopsis........Set window cursor coordinates.
  7015.  
  7016. Header File.....TCXLwin.h
  7017.  
  7018. Prototype.......IntT CTYP Wgotoxy(BytT wr, BytT wc);
  7019.  
  7020. Source File.....WCT\WGOTOXY.C
  7021.  
  7022. Arguments.......wr -  Window Row
  7023.                 wc -  Window Column
  7024.  
  7025. Returns.........ERR_NUL  -  No Error
  7026.                 ERR_ARG  -  Argument Failure
  7027.                    TcxlErr contains:
  7028.                    W_NOACTIVE  -  No Active Window
  7029.                    W_INVCOORD  -  Invalid Coordinates
  7030.  
  7031. Notes...........This function moves the cursor in the active window to the
  7032.                 passed row/column coordinates.
  7033.  
  7034.  
  7035.  
  7036.  
  7037.  
  7038.  
  7039.  
  7040.  
  7041.  
  7042.  
  7043.  
  7044. Page 106                                 TesSeRact CXL V5.52 Documentation
  7045. ---------------------------------------------------------------------------
  7046. Wpgotoxy
  7047.  
  7048. Synopsis........Set pseudo-window coordinates.
  7049.  
  7050. Header File.....TCXLwin.h
  7051.  
  7052. Prototype.......IntT CTYP Wpgotoxy(BytT wr, BytT wc);
  7053.  
  7054. Source File.....WCT\WPGOTOXY.C
  7055.  
  7056. Arguments.......wr -  Window Row
  7057.                 wc -  Window Column
  7058.  
  7059. Returns.........ERR_NUL  -  No Error
  7060.                 ERR_ARG  -  Argument Failure
  7061.                    TcxlErr contains:
  7062.                    W_NOACTIVE  -  No Active Window
  7063.  
  7064. Notes...........Sets cursor coordinates within the active window.  If
  7065.                 cursor coordinates are out of the window, wpgotoxy() will
  7066.                 try to wrap them around to fit in the window.
  7067. ---------------------------------------------------------------------------
  7068. WposGet
  7069.  
  7070. Synopsis........Get cursor position.
  7071.  
  7072. Header File.....TCXLwin.h
  7073.  
  7074. Prototype.......VOID CTYP WposGet(IntP r, IntP c);
  7075.  
  7076. Source File.....WCT\WPOSGET.C
  7077.  
  7078. Arguments.......r  -  Window Row
  7079.                 c  -  Window Column
  7080.  
  7081. Returns.........The current row/column position of the active window.
  7082.  
  7083. Notes...........Reads the current cursor coordinates of the active window.
  7084.  
  7085.  
  7086.  
  7087.  
  7088.  
  7089.  
  7090.  
  7091.  
  7092.  
  7093.  
  7094.  
  7095.  
  7096.  
  7097.  
  7098.  
  7099.  
  7100.  
  7101.  
  7102.  
  7103. TesSeRact CXL V5.52 Documentation                                 Page 107
  7104.                                Line Drawing
  7105.  
  7106. ---------------------------------------------------------------------------
  7107. WdrwBox
  7108.  
  7109. Synopsis........Draw a box.
  7110.  
  7111. Header File.....TCXLwin.h
  7112.  
  7113. Prototype.......IntT CTYP WdrwBox(BytT sr, BytT sc, BytT er, BytT ec,
  7114.                      BytT bt, AtrT ba);
  7115.  
  7116. Source File.....WIN\WDRWBOX.C
  7117.  
  7118. Arguments.......sr -  Start Row
  7119.                 sc -  Start Column
  7120.                 er -  End Row
  7121.                 ec -  End Column
  7122.                 bt -  Border Type (One of the following)
  7123.                   BOX_SNG..all single
  7124.                   BOX_DBL..all double
  7125.                   BOX_VER..horiz single, vert double
  7126.                   BOX_HOR..horiz double, vert single
  7127.                   BOX_HVY..heavy lines
  7128.                   BOX_SPA..spaces [no box]
  7129.                 ba -  Border Attribute (See Appendix A)
  7130.  
  7131. Returns.........ERR_NUL  -  No Error
  7132.                 ERR_ARG  -  Argument Failure
  7133.                    TcxlErr contains:
  7134.                    W_NOACTIVE  -  No Active Window
  7135.                    W_NOBORDER  -  Window Has No Border
  7136.                    W_INVCOORD  -  Border Offset Out Of Range
  7137.  
  7138. Notes..........."Draws" a text box in the active window.
  7139.  
  7140.  
  7141.  
  7142.  
  7143.  
  7144.  
  7145.  
  7146.  
  7147.  
  7148.  
  7149.  
  7150.  
  7151.  
  7152.  
  7153.  
  7154.  
  7155.  
  7156.  
  7157.  
  7158.  
  7159.  
  7160.  
  7161.  
  7162. Page 108                                 TesSeRact CXL V5.52 Documentation
  7163. ---------------------------------------------------------------------------
  7164. WdrwHor
  7165.  
  7166. Synopsis........Draw a horizontal line.
  7167.  
  7168. Header File.....TCXLwin.h
  7169.  
  7170. Prototype.......IntT CTYP WdrwHor(BytT sr, BytT sc, BytT nc, BytT bt,
  7171.                      AtrT at);
  7172.  
  7173. Source File.....WIN\WDRWHOR.C
  7174.  
  7175. Arguments.......sr -  Start Row
  7176.                 sc -  Start Columns
  7177.                 nc -  Number of Columns
  7178.                 bt -  Border Type (One of the following)
  7179.                   BOX_SNG..all single
  7180.                   BOX_DBL..all double
  7181.                   BOX_VER..horiz single, vert double
  7182.                   BOX_HOR..horiz double, vert single
  7183.                   BOX_HVY..heavy lines
  7184.                   BOX_SPA..spaces [no box]
  7185.                 at -  Attribute (See Appendix A)
  7186.  
  7187. Returns.........ERR_NUL  -  No Error
  7188.                 ERR_ARG  -  Argument Failure
  7189.                    TcxlErr contains:
  7190.                    W_NOACTIVE  -  No Active Window
  7191.                    W_INVCOORD  -  Text Line Too Long For Window
  7192.                    W_INVBTYPE  -  Invalid Box Type
  7193.  
  7194. Notes..........."Draws" a horizontal text line in active window using
  7195.                 characters defined by given box type.  If horizontal line
  7196.                 crosses a vertical line, an appropriate intersection or
  7197.                 corner will be used.
  7198.  
  7199.  
  7200.  
  7201.  
  7202.  
  7203.  
  7204.  
  7205.  
  7206.  
  7207.  
  7208.  
  7209.  
  7210.  
  7211.  
  7212.  
  7213.  
  7214.  
  7215.  
  7216.  
  7217.  
  7218.  
  7219.  
  7220.  
  7221. TesSeRact CXL V5.52 Documentation                                 Page 109
  7222. ---------------------------------------------------------------------------
  7223. WdrwVer
  7224.  
  7225. Synopsis........Draw a vertical line.
  7226.  
  7227. Header File.....TCXLwin.h
  7228.  
  7229. Prototype.......IntT CTYP WdrwVer(BytT sr, BytT sc, BytT n, BytT bt,
  7230.                      AtrT at);
  7231.  
  7232. Source File.....WIN\WDRWVER.C
  7233.  
  7234. Arguments.......sr -  Start Row
  7235.                 sc -  Start Columns
  7236.                 n  -  Number of Rows
  7237.                 bt -  Border Type (One of the following)
  7238.                   BOX_SNG..all single
  7239.                   BOX_DBL..all double
  7240.                   BOX_VER..horiz single, vert double
  7241.                   BOX_HOR..horiz double, vert single
  7242.                   BOX_HVY..heavy lines
  7243.                   BOX_SPA..spaces [no box]
  7244.                 at -  Attribute (See Appendix A)
  7245.  
  7246. Returns.........ERR_NUL  -  No Error
  7247.                 ERR_ARG  -  Argument Failure
  7248.                    TcxlErr contains:
  7249.                    W_NOACTIVE  -  No Active Window
  7250.                    W_INVCOORD  -  Text Line Too Long For Window
  7251.                    W_INVBTYPE  -  Invalid Box Type
  7252.  
  7253. Notes..........."Draws" a vertical text line in the active window using
  7254.                 characters defined by the given box type.  If the vertical
  7255.                 line crosses a horizontal line, an appropriate intersection
  7256.                 or corner will be displayed.
  7257.  
  7258.  
  7259.  
  7260.  
  7261.  
  7262.  
  7263.  
  7264.  
  7265.  
  7266.  
  7267.  
  7268.  
  7269.  
  7270.  
  7271.  
  7272.  
  7273.  
  7274.  
  7275.  
  7276.  
  7277.  
  7278.  
  7279.  
  7280. Page 110                                 TesSeRact CXL V5.52 Documentation
  7281.                            Active Window Output
  7282.  
  7283.  
  7284. There are  two types  of  window-level  output  routines.    The  Wput???()
  7285. routines are  known as  "TTY" output  routines, because  they write  to the
  7286. current position  in the  current window, using the current attribute.  The
  7287. Wprt???() functions,  while  performing  the  same  functionality,  take  a
  7288. position and  attribute as  parameters as  well, and  can  output  anywhere
  7289. within the window.
  7290.  
  7291. In addition,  the Wput???() functions pay attention to the TCXL Control and
  7292. Escape codes (see Appendix C), while the Wprt???() functions do not.
  7293. ---------------------------------------------------------------------------
  7294. WdupChrA
  7295. WdupChr
  7296.  
  7297. Synopsis........Displays character/attribute multiple times.
  7298.  
  7299. Header File.....TCXLwin.h
  7300.  
  7301. Prototype.......VOID CTYP WdupChrA(BytT wr, BytT wc, AtrT at, ChrT ch,
  7302.                      IntT nd);
  7303.                 VOID CTYP WdupChr(ChrT ch, IntT nd);
  7304.  
  7305. Source File.....WIN\WDUPCHRA.C
  7306.                 WIN\WDUPCHR.C
  7307.  
  7308. Arguments.......wr -  Window Row
  7309.                 wc -  Window Column
  7310.                 at -  Attribute (See Appendix A)
  7311.                 ch -  Character to Display
  7312.                 nd -  Number of times to display character
  7313.  
  7314. Returns.........None
  7315.  
  7316. Notes...........Displays a character a specified number of times in the
  7317.                 active window.  WdupChrA() displays at the specified
  7318.                 coordinates, using the specified attribute (See Appendix
  7319.                 A);  control characters and escape sequences are NOT
  7320.                 recognized; cursor position is NOT updated.  WdupChr()
  7321.                 displays at the window's current text attribute; control
  7322.                 characters and escape sequences (See Appendix C) are
  7323.                 recognized; cursor position is updated.
  7324.  
  7325.  
  7326.  
  7327.  
  7328.  
  7329.  
  7330.  
  7331.  
  7332.  
  7333.  
  7334.  
  7335.  
  7336.  
  7337.  
  7338.  
  7339. TesSeRact CXL V5.52 Documentation                                 Page 111
  7340. ---------------------------------------------------------------------------
  7341. WdupStrA
  7342. WdupStr
  7343.  
  7344. Synopsis........Display string/attribute multiple times.
  7345.  
  7346. Header File.....TCXLwin.h
  7347.  
  7348. Prototype.......VOID CTYP WdupStrA(BytT wr, BytT wc, AtrT at, ChrP ps,
  7349.                      IntT nd);
  7350.                 VOID CTYP WdupStr(ChrP ps, IntT nd);
  7351.  
  7352. Source File.....WIN\WDUPSTRA.C
  7353.                 WIN\WDUPSTR.C
  7354.  
  7355. Arguments.......wr -  Window Row
  7356.                 wc -  Window Column
  7357.                 at -  Attribute (See Appendix A)
  7358.                 ps -  String to Display
  7359.                 nd -  Number of times to display string
  7360.  
  7361. Returns.........None
  7362.  
  7363. Notes...........Displays a string a specified number of times in the active
  7364.                 window.  WdupStrA() displays at the specified coordinates,
  7365.                 using the specified attribute (See Appendix A);  control
  7366.                 characters and escape sequences are NOT recognized; cursor
  7367.                 position is NOT updated.  WdupStr() displays at the
  7368.                 window's current text attribute; control characters and
  7369.                 escape sequences (See Appendix C) are recognized; cursor
  7370.                 position is updated.
  7371.  
  7372.  
  7373.  
  7374.  
  7375.  
  7376.  
  7377.  
  7378.  
  7379.  
  7380.  
  7381.  
  7382.  
  7383.  
  7384.  
  7385.  
  7386.  
  7387.  
  7388.  
  7389.  
  7390.  
  7391.  
  7392.  
  7393.  
  7394.  
  7395.  
  7396.  
  7397.  
  7398. Page 112                                 TesSeRact CXL V5.52 Documentation
  7399. ---------------------------------------------------------------------------
  7400. Wprtc
  7401. Wputc
  7402.  
  7403. Synopsis........Display a character/attribute.
  7404.  
  7405. Header File.....TCXLwin.h
  7406.  
  7407. Prototype.......IntT CTYP Wprtc(BytT wr, BytT wc, AtrT at, ChrT ch);
  7408.                 VOID CTYP Wputc(ChrT ch);
  7409.  
  7410. Source File.....WIN\WPRTC.C
  7411.                 WIN\WPUTC.C
  7412.  
  7413. Arguments.......wr -  Window Row
  7414.                 wc -  Window Column
  7415.                 at -  Attribute (See Appendix A)
  7416.                 ch -  Character to Display
  7417.  
  7418. Returns.........ERR_NUL  -  No Error
  7419.                 ERR_ARG  -  Argument Failure
  7420.                    TcxlErr contains:
  7421.                    W_NOACTIVE  -  No Active Window
  7422.                    W_INVCOORD  -  Invalid Coordinates
  7423.  
  7424. Notes...........Displays a character.  Wprtc() displays at the specified
  7425.                 coordinates, using the specified attribute (See Appendix
  7426.                 A);  control characters and escape sequences are NOT
  7427.                 recognized; cursor position is NOT updated.  Wputc()
  7428.                 displays at the window's current text attribute; control
  7429.                 characters and escape sequences (See Appendix C) are
  7430.                 recognized; cursor position is updated.
  7431.  
  7432.  
  7433.  
  7434.  
  7435.  
  7436.  
  7437.  
  7438.  
  7439.  
  7440.  
  7441.  
  7442.  
  7443.  
  7444.  
  7445.  
  7446.  
  7447.  
  7448.  
  7449.  
  7450.  
  7451.  
  7452.  
  7453.  
  7454.  
  7455.  
  7456.  
  7457. TesSeRact CXL V5.52 Documentation                                 Page 113
  7458. ---------------------------------------------------------------------------
  7459. Wprts
  7460. Wputs
  7461.  
  7462. Synopsis........Display a string/attribute.
  7463.  
  7464. Header File.....TCXLwin.h
  7465.  
  7466. Prototype.......IntT CTYP Wprts(BytT wr, BytT wc, AtrT at, ChrP ps);
  7467.                 VOID CTYP Wputs(ChrP ps);
  7468.  
  7469. Source File.....WIN\WPRTS.C
  7470.                 WIN\WPUTS.C
  7471.  
  7472. Arguments.......wr -  Window Row
  7473.                 wc -  Window Column
  7474.                 at -  Attribute (See Appendix A)
  7475.                 ps -  String to Display
  7476.  
  7477. Returns.........ERR_NUL  -  No Error
  7478.                 ERR_ARG  -  Argument Failure
  7479.                    TcxlErr contains:
  7480.                    W_NOACTIVE  -  No Active Window
  7481.                    W_INVCOORD  -  Invalid Coordinates
  7482.  
  7483. Notes...........Displays a string.  Wprts() displays at the specified
  7484.                 coordinates, using the specified attribute (See Appendix
  7485.                 A);  control characters and escape sequences are NOT
  7486.                 recognized; cursor position is NOT updated.  Wputs()
  7487.                 displays at the window's current text attribute; control
  7488.                 characters and escape sequences (See Appendix C) are
  7489.                 recognized; cursor position is updated.
  7490.  
  7491.  
  7492.  
  7493.  
  7494.  
  7495.  
  7496.  
  7497.  
  7498.  
  7499.  
  7500.  
  7501.  
  7502.  
  7503.  
  7504.  
  7505.  
  7506.  
  7507.  
  7508.  
  7509.  
  7510.  
  7511.  
  7512.  
  7513.  
  7514.  
  7515.  
  7516. Page 114                                 TesSeRact CXL V5.52 Documentation
  7517. ---------------------------------------------------------------------------
  7518. Wprtns
  7519. Wputns
  7520.  
  7521. Synopsis........Display a padded string/attribute.
  7522.  
  7523. Header File.....TCXLwin.h
  7524.  
  7525. Prototype.......VOID CTYP Wprtns(BytT wr, BytT wc, AtrT at, ChrP ps,
  7526.                      IntT wd);
  7527.                 VOID CTYP Wputns(ChrP ps, IntT wd);
  7528.  
  7529. Source File.....WIN\WPRTNS.C
  7530.                 WIN\WPUTNS.C
  7531.  
  7532. Arguments.......wr -  Window Row
  7533.                 wc -  Window Column
  7534.                 at -  Attribute (See Appendix A)
  7535.                 ps -  String to Display
  7536.                 wd -  Width of Output String
  7537.  
  7538. Returns.........None
  7539.  
  7540. Notes...........Displays a string.  The input width will determine how many
  7541.                 characters are actually displayed.  Wprtns() displays at
  7542.                 the specified coordinates, using the specified attribute
  7543.                 (See Appendix A);  control characters and escape sequences
  7544.                 are NOT recognized; cursor position is NOT updated.
  7545.                 Wputns() displays at the window's current text attribute;
  7546.                 control characters and escape sequences (See Appendix C)
  7547.                 are recognized; cursor position is updated.
  7548. ---------------------------------------------------------------------------
  7549. Wputsw
  7550.  
  7551. Synopsis........Display a string with line-wrap.
  7552.  
  7553. Header File.....TCXLwin.h
  7554.  
  7555. Prototype.......VOID CTYP Wputsw(ChrP ps);
  7556.  
  7557. Source File.....WIN\WPUTSW.C
  7558.  
  7559. Arguments.......ps -  String to Display
  7560.  
  7561. Returns.........None
  7562.  
  7563. Notes...........Displays a string at the current window coordinates, using
  7564.                 the current text attribute (See Appendix A).  Words will be
  7565.                 wrapped around to the next line if necessary.  Control
  7566.                 characters and escape sequences (See Appendix C) are
  7567.                 recognized; Cursor position is updated.
  7568.  
  7569.  
  7570.  
  7571.  
  7572.  
  7573.  
  7574.  
  7575. TesSeRact CXL V5.52 Documentation                                 Page 115
  7576. ---------------------------------------------------------------------------
  7577. Wprtf
  7578. Wputf
  7579.  
  7580. Synopsis........Display a formatted string/attribute.
  7581.  
  7582. Header File.....TCXLwin.h
  7583.  
  7584. Prototype.......IntT CDC Wprtf(BytT wr, BytT wc, AtrT at, ChrP fs, ...);
  7585.                 IntT CDC Wputf(ChrP fs, ...);
  7586.  
  7587. Source File.....WIN\WPRTF.C
  7588.                 WIN\WPUTF.C
  7589.  
  7590. Arguments.......wr -  Window Row
  7591.                 wc -  Window Column
  7592.                 at -  Attribute (See Appendix A)
  7593.                 fs -  Format String (See your compiler's documentation)
  7594.                 ...   -  Additional Arguments
  7595.  
  7596. Returns.........ERR_NUL  -  No Error
  7597.                 ERR_ARG  -  Argument Failure
  7598.                    TcxlErr contains:
  7599.                    W_NOACTIVE  -  No Active Window
  7600.                    W_INVCOORD  -  Invalid Coordinates
  7601.  
  7602. Notes...........Displays a formatted string to the active window.  Works
  7603.                 like the standard printf() function does.  Wprtf() displays
  7604.                 at the specified coordinates, using the specified attribute
  7605.                 (See Appendix A);  control characters and escape sequences
  7606.                 are NOT recognized; cursor position is NOT updated.
  7607.                 Wputf() displays at the window's current text attribute;
  7608.                 control characters and escape sequences (See Appendix C)
  7609.                 are recognized; cursor position is updated.
  7610.  
  7611.  
  7612.  
  7613.  
  7614.  
  7615.  
  7616.  
  7617.  
  7618.  
  7619.  
  7620.  
  7621.  
  7622.  
  7623.  
  7624.  
  7625.  
  7626.  
  7627.  
  7628.  
  7629.  
  7630.  
  7631.  
  7632.  
  7633.  
  7634. Page 116                                 TesSeRact CXL V5.52 Documentation
  7635. ---------------------------------------------------------------------------
  7636. WprtFmt
  7637. WputFmt
  7638.  
  7639. Synopsis........Display a formatted string/attribute.
  7640.  
  7641. Header File.....TCXLwin.h
  7642.  
  7643. Prototype.......IntT CTYP WprtFmt(BytT wr, BytT wc, AtrT at, ChrP fs,
  7644.                      ChrP ps);
  7645.                 IntT CTYP WputFmt(ChrP fs, ChrP ps);
  7646.  
  7647. Source File.....WIN\WPRTFMT.C
  7648.                 WIN\WPUTFMT.C
  7649.  
  7650. Arguments.......wr -  Window Row
  7651.                 wc -  Window Column
  7652.                 at -  Attribute (See Appendix A)
  7653.                 fs -  Format Control String (See Appendix D)
  7654.                 ps -  String to Display
  7655.  
  7656. Returns.........ERR_NUL  -  No Error
  7657.                 ERR_ARG  -  Argument Failure
  7658.                    TcxlErr contains:
  7659.                    W_NOACTIVE  -  No Active Window
  7660.                    W_INVCOORD  -  Invalid Coordinates
  7661.                    W_INVFORMT  -  Invalid Format String
  7662.                    W_STRLONG   -  String Could Not Fit In Window
  7663.  
  7664. Notes...........Displays a string to active window using a CXL format
  7665.                 string.  If a character in a string doesn't match its
  7666.                 format control character, it will be displayed as a '?'.
  7667.                 WprtFmt() displays at the specified coordinates, using the
  7668.                 specified attribute (See Appendix A);  control characters
  7669.                 and escape sequences are NOT recognized; cursor position is
  7670.                 NOT updated.  WputFmt() displays at the window's current
  7671.                 text attribute; control characters and escape sequences
  7672.                 (See Appendix C) are recognized; cursor position is
  7673.                 updated.
  7674.  
  7675.  
  7676.  
  7677.  
  7678.  
  7679.  
  7680.  
  7681.  
  7682.  
  7683.  
  7684.  
  7685.  
  7686.  
  7687.  
  7688.  
  7689.  
  7690.  
  7691.  
  7692.  
  7693. TesSeRact CXL V5.52 Documentation                                 Page 117
  7694. ---------------------------------------------------------------------------
  7695. WprtCen
  7696. WputCen
  7697.  
  7698. Synopsis........Displays a centered string/attribute.
  7699.  
  7700. Header File.....TCXLwin.h
  7701.  
  7702. Prototype.......IntT CTYP WprtCen(BytT wr, AtrT at, ChrP ps);
  7703.                 IntT CTYP WputCen(ChrP ps);
  7704.  
  7705. Source File.....WIN\WPRTCEN.C
  7706.                 WIN\WPUTCEN.C
  7707.  
  7708. Arguments.......wr -  Window Row
  7709.                 at -  Attribute (See Appendix A)
  7710.                 ps -  String to Center
  7711.  
  7712. Returns.........ERR_NUL  -  No Error
  7713.                 ERR_ARG  -  Argument Failure
  7714.                    TcxlErr contains:
  7715.                    W_NOACTIVE  -  No Active Window
  7716.                    W_INVCOORD  -  Invalid Coordinates
  7717.                    W_STRLONG   -  String Could Not Fit In Window
  7718.  
  7719. Notes...........Centers a string in the active window.  WprtCen() displays
  7720.                 at the specified coordinates, using the specified attribute
  7721.                 (See Appendix A);  control characters and escape sequences
  7722.                 are NOT recognized; cursor position is NOT updated.
  7723.                 WputCen() displays at the window's current text attribute;
  7724.                 control characters and escape sequences (See Appendix C)
  7725.                 are recognized; cursor position is updated.
  7726.  
  7727.  
  7728.  
  7729.  
  7730.  
  7731.  
  7732.  
  7733.  
  7734.  
  7735.  
  7736.  
  7737.  
  7738.  
  7739.  
  7740.  
  7741.  
  7742.  
  7743.  
  7744.  
  7745.  
  7746.  
  7747.  
  7748.  
  7749.  
  7750.  
  7751.  
  7752. Page 118                                 TesSeRact CXL V5.52 Documentation
  7753. ---------------------------------------------------------------------------
  7754. Wprtrj
  7755. Wputrj
  7756.  
  7757. Synopsis........Display a string/attribute right-justified.
  7758.  
  7759. Header File.....TCXLwin.h
  7760.  
  7761. Prototype.......IntT CTYP Wprtrj(BytT wr, BytT wc, AtrT at, ChrP ps);
  7762.                 IntT CTYP Wputrj(ChrP ps);
  7763.  
  7764. Source File.....WIN\WPRTRJ.C
  7765.                 WIN\WPUTRJ.C
  7766.  
  7767. Arguments.......wr -  Window Row
  7768.                 wc -  Window Column
  7769.                 at -  Attribute (See Appendix A)
  7770.                 ps -  String to Justify
  7771.  
  7772. Returns.........ERR_NUL  -  No Error
  7773.                 ERR_ARG  -  Argument Failure
  7774.                    TcxlErr contains:
  7775.                    W_NOACTIVE  -  No Active Window
  7776.                    W_INVCOORD  -  Invalid Coordinates
  7777.                    W_STRLONG   -  String Could Not Fit In Window
  7778.  
  7779. Notes...........Right justifies a string in the active window.  Wprtrj()
  7780.                 displays at the specified coordinates, using the specified
  7781.                 attribute (See Appendix A);  control characters and escape
  7782.                 sequences are NOT recognized; cursor position is NOT
  7783.                 updated.  Wputrj() displays at the window's current text
  7784.                 attribute; control characters and escape sequences (See
  7785.                 Appendix C) are recognized; cursor position is updated.
  7786.  
  7787.                              Window Internals
  7788.  
  7789. ---------------------------------------------------------------------------
  7790. WchkBox (Internal)
  7791.  
  7792. Synopsis........Check for valid box coordinates
  7793.  
  7794. Header File.....TCXLwin.h
  7795.  
  7796. Prototype.......IntT CTYP WchkBox(BytT sr, BytT sc, BytT er, BytT ec);
  7797. ---------------------------------------------------------------------------
  7798. WchkCol (Internal)
  7799.  
  7800. Synopsis........Check for valid column position.
  7801.  
  7802. Header File.....TCXLwin.h
  7803.  
  7804. Prototype.......IntT CTYP WchkCol(BytT wc);
  7805.  
  7806.  
  7807.  
  7808.  
  7809.  
  7810.  
  7811. TesSeRact CXL V5.52 Documentation                                 Page 119
  7812. ---------------------------------------------------------------------------
  7813. WchkPos (Internal)
  7814.  
  7815. Synopsis........Check for valid position.
  7816.  
  7817. Header File.....TCXLwin.h
  7818.  
  7819. Prototype.......IntT CTYP WchkPos(BytT wr, BytT wc);
  7820. ---------------------------------------------------------------------------
  7821. WchkRow (Internal)
  7822.  
  7823. Synopsis........Check for valid row.
  7824.  
  7825. Header File.....TCXLwin.h
  7826.  
  7827. Prototype.......IntT CTYP WchkRow(BytT wr);
  7828.  
  7829.  
  7830.  
  7831.  
  7832.  
  7833.  
  7834.  
  7835.  
  7836.  
  7837.  
  7838.  
  7839.  
  7840.  
  7841.  
  7842.  
  7843.  
  7844.  
  7845.  
  7846.  
  7847.  
  7848.  
  7849.  
  7850.  
  7851.  
  7852.  
  7853.  
  7854.  
  7855.  
  7856.  
  7857.  
  7858.  
  7859.  
  7860.  
  7861.  
  7862.  
  7863.  
  7864.  
  7865.  
  7866.  
  7867.  
  7868.  
  7869.  
  7870. Page 120                                 TesSeRact CXL V5.52 Documentation
  7871.                                Input System
  7872.  
  7873.  
  7874. The Input  System is designed to provide a consistent interface between the
  7875. keyboard/mouse and  the display/window.   By  calling the functions in this
  7876. section, keys  are correctly translated, echoed to the appropriate location
  7877. on the  window and/or  display, and buffered appropriately.  Using the Line
  7878. Input routines  (KvGetFmt() and  KwGetFmt()) is  similar to using the Entry
  7879. System.   Some additional  Format Control  Characters are  available;   see
  7880. Appendix D for details.
  7881.  
  7882. There are  two main  types of  input routines  that echo to the display; we
  7883. have the  Kw...() series  that echoes to the current active window, and the
  7884. Kv...() series that writes to the default video device, using _StdOut() and
  7885. _StdOuts().   The prototypes  for the  two types of routines are identical,
  7886. and we will combine their descriptions by function.
  7887.  
  7888.                            Input System Routines
  7889.  
  7890. ---------------------------------------------------------------------------
  7891. KwGetCf
  7892. KvGetCf
  7893.  
  7894. Synopsis........Get a character (via a format string) from the keyboard
  7895.                 with echo.
  7896.  
  7897. Header File.....TCXLinp.h
  7898.  
  7899. Prototype.......IntT CTYP KwGetCf(ChrP v, ChrT d);
  7900.                 IntT CTYP KvGetCf(ChrP v, ChrT d);
  7901.  
  7902. Source File.....INP\KWGETCF.C
  7903.                 INP\KVGETCF.C
  7904.  
  7905. Arguments.......v  -  Valid Character String
  7906.                 d  -  Default Selection
  7907.  
  7908. Returns.........The ASCII value of the key pressed, or a zero if an error
  7909.                       occurred.  On error, TcxlErr contains:
  7910.                    W_NOACTIVE  -  No Active Window
  7911.                    W_ESCPRESS  -  The [Esc] Key Was Pressed
  7912.  
  7913. Notes...........Gets a character from the keyboard.  Allows input only of
  7914.                 characters listed in the string of valid characters.
  7915.                 Entered characters will be echoed to the active window
  7916.                 using the current text attribute (See Appendix A), or to
  7917.                 the Standard Output device.  Cursor position is updated.
  7918.                 Escape checking is provided by default, but can be turned
  7919.                 off with the WsetEsc() function.
  7920.  
  7921.  
  7922.  
  7923.  
  7924.  
  7925.  
  7926.  
  7927.  
  7928.  
  7929. TesSeRact CXL V5.52 Documentation                                 Page 121
  7930. ---------------------------------------------------------------------------
  7931. KwGetCh
  7932. KvGetCh
  7933.  
  7934. Synopsis........Get a character from the keyboard, with echo.
  7935.  
  7936. Header File.....TCXLinp.h
  7937.  
  7938. Prototype.......ChrT CTYP KwGetCh(NOARG);
  7939.                 ChrT CTYP KvGetCh(NOARG);
  7940.  
  7941. Source File.....INP\KWGETCH.C
  7942.                 INP\KVGETCH.C
  7943.  
  7944. Arguments.......None.
  7945.  
  7946. Returns.........The ASCII value of the key pressed, or a zero if an error
  7947.                       occurred.  On error, TcxlErr contains:
  7948.                    W_NOACTIVE  -  No Active Window
  7949.  
  7950. Notes...........Gets a character from the keyboard.  Entered characters
  7951.                 will be echoed to the active window using the current text
  7952.                 attribute (See Appendix A), or to the Standard Output
  7953.                 device.  Cursor position is updated.  Escape checking is
  7954.                 provided by default, but can be turned off with the
  7955.                 WsetEsc() function.
  7956.  
  7957.  
  7958.  
  7959.  
  7960.  
  7961.  
  7962.  
  7963.  
  7964.  
  7965.  
  7966.  
  7967.  
  7968.  
  7969.  
  7970.  
  7971.  
  7972.  
  7973.  
  7974.  
  7975.  
  7976.  
  7977.  
  7978.  
  7979.  
  7980.  
  7981.  
  7982.  
  7983.  
  7984.  
  7985.  
  7986.  
  7987.  
  7988. Page 122                                 TesSeRact CXL V5.52 Documentation
  7989. ---------------------------------------------------------------------------
  7990. KwGetFmt
  7991. KvGetFmt
  7992.  
  7993. Synopsis........Get a formatted string from the keyboard, with echo.
  7994.  
  7995. Header File.....TCXLinp.h
  7996.  
  7997. Prototype.......IntT CTYP KwGetFmt(ChrP s, ChrP f);
  7998.                 IntT CTYP KvGetFmt(ChrP s, ChrP f);
  7999.  
  8000. Source File.....INP\KWGETFMT.C
  8001.                 INP\KVGETFMT.C
  8002.  
  8003. Arguments.......s  -  Buffer To Receive Input String
  8004.                 f  -  Format String (See Appendix D)
  8005.  
  8006. Returns.........ERR_NUL  -  No Error
  8007.                 ERR_ARG  -  Argument Failure
  8008.                    TcxlErr contains:
  8009.                    W_NOACTIVE  -  No Active Window
  8010.                    W_ESCPRESS  -  The [Esc] Key Was Pressed
  8011.                    W_INVFORMT  -  Invalid Format String
  8012.  
  8013. Notes...........Inputs a formatted string from the keyboard.  Entered
  8014.                 characters will be echoed to the active window using the
  8015.                 current text attribute (See Appendix A), or to the Standard
  8016.                 Output device.  Cursor position is updated.  Escape
  8017.                 checking is provided by default, but can be turned off with
  8018.                 the WsetEsc() function.
  8019.  
  8020.                 These functions provide an extremely powerful method of
  8021.                 accept single-line input from the user.  You can limit
  8022.                 input characters to certain characters of a type, such as
  8023.                 numbers, insert strings in between typed in characters,
  8024.                 create custom prompts, disable [Enter] until the field is
  8025.                 filled, and more.
  8026.  
  8027.                 Using these functions is virtually the same as creating a
  8028.                 single-field entry form, in the Entry System.  These
  8029.                 functions use the same primitives, but provide a convenient
  8030.                 access to the high-level formatting routines.
  8031.  
  8032.  
  8033.  
  8034.  
  8035.  
  8036.  
  8037.  
  8038.  
  8039.  
  8040.  
  8041.  
  8042.  
  8043.  
  8044.  
  8045.  
  8046.  
  8047. TesSeRact CXL V5.52 Documentation                                 Page 123
  8048. ---------------------------------------------------------------------------
  8049. KwGetSn
  8050. KvGetSn
  8051.  
  8052. Synopsis........Get a string from the keyboard, with maximum length, with
  8053.                 echo.
  8054.  
  8055. Header File.....TCXLinp.h
  8056.  
  8057. Prototype.......IntT CTYP KwGetSn(ChrP s, IntT m);
  8058.                 IntT CTYP KvGetSn(ChrP s, IntT m);
  8059.  
  8060. Source File.....INP\KWGETSN.C
  8061.                 INP\KVGETSN.C
  8062.  
  8063. Arguments.......s  -  Buffer To Receive Input String
  8064.                 m  -  Maximum Length of Input String
  8065.  
  8066. Returns.........ERR_NUL  -  No Error
  8067.                 ERR_ARG  -  Argument Failure
  8068.                    TcxlErr contains:
  8069.                    W_NOACTIVE  -  No Active Window
  8070.                    W_ESCPRESS  -  The [Esc] Key Was Pressed
  8071.  
  8072. Notes...........Gets a string from the keyboard, limiting the number of
  8073.                 characters input to the specified length.  Entered
  8074.                 characters will be echoed to the active window using the
  8075.                 current text attribute (See Appendix A), or to the Standard
  8076.                 Output device.  Cursor position is updated.  Escape
  8077.                 checking is provided by default, but can be turned off with
  8078.                 the WsetEsc() function.
  8079.  
  8080.  
  8081.  
  8082.  
  8083.  
  8084.  
  8085.  
  8086.  
  8087.  
  8088.  
  8089.  
  8090.  
  8091.  
  8092.  
  8093.  
  8094.  
  8095.  
  8096.  
  8097.  
  8098.  
  8099.  
  8100.  
  8101.  
  8102.  
  8103.  
  8104.  
  8105.  
  8106. Page 124                                 TesSeRact CXL V5.52 Documentation
  8107. ---------------------------------------------------------------------------
  8108. KwGetSt
  8109. KvGetSt
  8110.  
  8111. Synopsis........Get a string from the keyboard, with echo.
  8112.  
  8113. Header File.....TCXLinp.h
  8114.  
  8115. Prototype.......IntT CTYP KwGetSt(ChrP ps);
  8116.                 IntT CTYP KvGetSt(ChrP ps);
  8117.  
  8118. Source File.....INP\KWGETST.C
  8119.                 INP\KVGETST.C
  8120.  
  8121. Arguments.......ps -  Buffer To Receive Input String
  8122.  
  8123. Returns.........ERR_NUL  -  No Error
  8124.                 ERR_ARG  -  Argument Failure
  8125.                    TcxlErr contains:
  8126.                    W_NOACTIVE  -  No Active Window
  8127.                    W_ESCPRESS  -  The [Esc] Key Was Pressed
  8128.  
  8129. Notes...........Gets a string from the keyboard.  Entered characters will
  8130.                 be echoed to the active window using the current text
  8131.                 attribute (See Appendix A), or to the Standard Output
  8132.                 device.  Cursor position is updated.  Escape checking is
  8133.                 provided by default, but can be turned off with the
  8134.                 WsetEsc() function.
  8135.  
  8136.  
  8137.  
  8138.  
  8139.  
  8140.  
  8141.  
  8142.  
  8143.  
  8144.  
  8145.  
  8146.  
  8147.  
  8148.  
  8149.  
  8150.  
  8151.  
  8152.  
  8153.  
  8154.  
  8155.  
  8156.  
  8157.  
  8158.  
  8159.  
  8160.  
  8161.  
  8162.  
  8163.  
  8164.  
  8165. TesSeRact CXL V5.52 Documentation                                 Page 125
  8166. ---------------------------------------------------------------------------
  8167. KwGetYn
  8168. KvGetYn
  8169.  
  8170. Synopsis........Get a Yes/No response from the keyboard, with echo.
  8171.  
  8172. Header File.....TCXLinp.h
  8173.  
  8174. Prototype.......ChrT CTYP KwGetYn(ChrT cd);
  8175.                 ChrT CTYP KvGetYn(ChrT cd);
  8176.  
  8177. Source File.....INP\KWGETYN.C
  8178.                 INP\KVGETYN.C
  8179.  
  8180. Arguments.......cd -  The Default Value (0=No, 1=Yes)
  8181.  
  8182. Returns.........'Y' if Yes was selected, an 'N' if No was selected, or a
  8183.                 '\0' if the user pressed [Esc] and Escape checking was on.
  8184.  
  8185. Notes...........Gets a [Y]es or [N]o response from the keyboard.  Entered
  8186.                 characters will be echoed to the active window using the
  8187.                 current text attribute (See Appendix A), or to the Standard
  8188.                 Output device.  Cursor position is updated.  Escape
  8189.                 checking is provided by default, but can be turned off with
  8190.                 the WsetEsc() function.
  8191.  
  8192.                 Please note that the "acceptable" values for this function
  8193.                 are dependent on the NLS support provided under DOS.
  8194.                 Examine the YnoT structure in FMT\_NLSINIT.C for specific
  8195.                 country information.
  8196.  
  8197.                 These functions always return 'Y' or 'N', no matter what
  8198.                 language was detected with National Language Support.
  8199.  
  8200.  
  8201.  
  8202.  
  8203.  
  8204.  
  8205.  
  8206.  
  8207.  
  8208.  
  8209.  
  8210.  
  8211.  
  8212.  
  8213.  
  8214.  
  8215.  
  8216.  
  8217.  
  8218.  
  8219.  
  8220.  
  8221.  
  8222.  
  8223.  
  8224. Page 126                                 TesSeRact CXL V5.52 Documentation
  8225. ---------------------------------------------------------------------------
  8226. KwScanf
  8227. KvScanf
  8228.  
  8229. Synopsis........Get a formatted input string, with echo.
  8230.  
  8231. Header File.....TCXLinp.h
  8232.  
  8233. Prototype.......IntT CDC KwScanf(ChrP fs, ...);
  8234.                 IntT CDC KvScanf(ChrP fs, ...);
  8235.  
  8236. Source File.....INP\KWSCANF.C
  8237.                 INP\KVSCANF.C
  8238.  
  8239. Arguments.......fs -  Format String (see your compiler's documentation)
  8240.                 ...   -  Additional Arguments
  8241.  
  8242. Returns.........ERR_NUL  -  No Error
  8243.                 ERR_ARG  -  Argument Failure
  8244.                    TcxlErr contains:
  8245.                    W_NOACTIVE  -  No Active Window
  8246.                    W_ESCPRESS  -  The [Esc] Key Was Pressed
  8247.  
  8248. Notes...........
  8249.  
  8250.                 !!!!NOTE!!!!  These functions are only available with the
  8251.                 Turbo C versions of TCXL.  Neither Microsoft C nor Zortech
  8252.                 C/C++ provide the necessary vsscanf() function needed to
  8253.                 implement this procedure.
  8254.  
  8255.  
  8256.  
  8257.                 Inputs a formatted string from the keyboard.  Entered
  8258.                 characters will be echoed to the active window using the
  8259.                 current text attribute (See Appendix A), or to the Standard
  8260.                 Output device.  Cursor position is updated.  Escape
  8261.                 checking is provided by default, but can be turned off with
  8262.                 the WsetEsc() function.
  8263.  
  8264.                 These functions work identical to the C library routine
  8265.                 scanf(), except that input is done to the default window.
  8266.  
  8267.  
  8268.  
  8269.  
  8270.  
  8271.  
  8272.  
  8273.  
  8274.  
  8275.  
  8276.  
  8277.  
  8278.  
  8279.  
  8280.  
  8281.  
  8282.  
  8283. TesSeRact CXL V5.52 Documentation                                 Page 127
  8284.                               Strings System
  8285.  
  8286.  
  8287. The  Strings   System  supplements   and   augments   the   string-handling
  8288. capabilities of your compiler's run-time library.  Use it in good health.
  8289.  
  8290.                           Strings System Routines
  8291.  
  8292.  
  8293.                                  Trimming
  8294.  
  8295. ---------------------------------------------------------------------------
  8296. strbtrim
  8297.  
  8298. Synopsis........Trims both leading and trailing spaces off of a string.
  8299.  
  8300. Header File.....TCXLstr.h
  8301.  
  8302. Prototype.......ChrP strbtrim(ChrP s);
  8303.  
  8304. Arguments.......s  -  String to Modify
  8305.  
  8306. Returns.........The address of the input string.
  8307. ---------------------------------------------------------------------------
  8308. strltrim
  8309.  
  8310. Synopsis........Trims the leading spaces off of a string.
  8311.  
  8312. Header File.....TCXLstr.h
  8313.  
  8314. Prototype.......ChrP CTYP strltrim(ChrP s);
  8315.  
  8316. Source File.....STR\STRLTRIM.C
  8317.  
  8318. Arguments.......s  -  String to Modify
  8319.  
  8320. Returns.........Address of the modified string.
  8321. ---------------------------------------------------------------------------
  8322. strtrim
  8323. strrtrim
  8324.  
  8325. Synopsis........Trims the trailing spaces off of a string.
  8326.  
  8327. Header File.....TCXLstr.h
  8328.  
  8329. Prototype.......ChrP CTYP strtrim(ChrP s);
  8330.                 ChrP strrtrim(ChrP s);
  8331.  
  8332. Source File.....STR\STRTRIM.C
  8333.  
  8334. Arguments.......s  -  String to Modify
  8335.  
  8336. Returns.........Address of the modified string
  8337.  
  8338.  
  8339.  
  8340.  
  8341.  
  8342. Page 128                                 TesSeRact CXL V5.52 Documentation
  8343.                                  Changing
  8344.  
  8345. ---------------------------------------------------------------------------
  8346. strchg
  8347. strichg
  8348.  
  8349. Synopsis........Finds all letters in a string matching one character and
  8350.                 replaces them with another.  strichg() ignores case when
  8351.                 replacing.
  8352.  
  8353. Header File.....TCXLstr.h
  8354.  
  8355. Prototype.......IntT CTYP strchg(ChrP s, ChrT a, ChrT b);
  8356.                 IntT CTYP strichg(ChrP s, ChrT a, ChrT b);
  8357.  
  8358. Source File.....STR\STRCHG.C
  8359.                 STR\STRICHG.C
  8360.  
  8361. Arguments.......s  -  String to Search
  8362.                 a  -  Character to Search For
  8363.                 b  -  Character to Replace With
  8364.  
  8365. Returns.........The number of matches found.
  8366. ---------------------------------------------------------------------------
  8367. strschg
  8368. strischg
  8369.  
  8370. Synopsis........Changes all occurrences of one string to another.
  8371.                 strischg() ignores case when replacing.
  8372.  
  8373. Header File.....TCXLstr.h
  8374.  
  8375. Prototype.......ChrP CTYP strschg(ChrP s, ChrP a, ChrP b);
  8376.                 ChrP CTYP strischg(ChrP s, ChrP a, ChrP b);
  8377.  
  8378. Source File.....STR\STRSCHG.C
  8379.                 STR\STRISCHG.C
  8380.  
  8381. Arguments.......s  -  String to Search
  8382.                 a  -  String to Search For
  8383.                 b  -  String To Replace Found Strings With
  8384.  
  8385. Returns.........The address of the modified string, or NULL if no matches
  8386.                 were found.
  8387.  
  8388.  
  8389.  
  8390.  
  8391.  
  8392.  
  8393.  
  8394.  
  8395.  
  8396.  
  8397.  
  8398.  
  8399.  
  8400.  
  8401. TesSeRact CXL V5.52 Documentation                                 Page 129
  8402.                                  Checksum
  8403.  
  8404. ---------------------------------------------------------------------------
  8405. strchksum
  8406. strichksum
  8407.  
  8408. Synopsis........Calculates the checksum of a string.
  8409.  
  8410. Header File.....TCXLstr.h
  8411.  
  8412. Prototype.......DwdT CTYP strchksum(ChrP s);
  8413.                 DwdT CTYP strichksum(ChrP s);
  8414.  
  8415. Source File.....STR\STRCHKSU.C
  8416.                 STR\STRICHKS.C
  8417.  
  8418. Arguments.......s  -  String to Checksum
  8419.  
  8420. Returns.........The checksum of the input string.
  8421.  
  8422. Notes...........Returns the checksum of a string.  The checksum is
  8423.                 calculated by adding up the ASCII values of each character
  8424.                 in the string.  If using strichksum(), all lower-case
  8425.                 letters will be calculated as upper-case.
  8426.  
  8427.                                Delete/Insert
  8428.  
  8429. ---------------------------------------------------------------------------
  8430. strdel
  8431. stridel
  8432.  
  8433. Synopsis........Deletes a substring from within a string.  stridel()
  8434.                 ignores case of letters.
  8435.  
  8436. Header File.....TCXLstr.h
  8437.  
  8438. Prototype.......ChrP CTYP strdel(ChrP a, ChrP s);
  8439.                 ChrP CTYP stridel(ChrP a, ChrP s);
  8440.  
  8441. Source File.....STR\STRDEL.C
  8442.                 STR\STRIDEL.C
  8443.  
  8444. Arguments.......a  -  Substring to Delete
  8445.                 s  -  String to Delete From
  8446.  
  8447. Returns.........Address of the modified string, or NULL if substring not
  8448.                 found.
  8449.  
  8450.  
  8451.  
  8452.  
  8453.  
  8454.  
  8455.  
  8456.  
  8457.  
  8458.  
  8459.  
  8460. Page 130                                 TesSeRact CXL V5.52 Documentation
  8461. ---------------------------------------------------------------------------
  8462. strdela
  8463. stridela
  8464.  
  8465. Synopsis........Deletes all occurrences of a substring from within a
  8466.                 string.  stridela() ignores case of letters.
  8467.  
  8468. Header File.....TCXLstr.h
  8469.  
  8470. Prototype.......ChrP CTYP strdela(ChrP a, ChrP s);
  8471.                 ChrP CTYP stridela(ChrP a, ChrP s);
  8472.  
  8473. Source File.....STR\STRDELA.C
  8474.                 STR\STRIDELA.C
  8475.  
  8476. Arguments.......a  -  Substring to Delete
  8477.                 s  -  String to Delete From
  8478.  
  8479. Returns.........Address of the modified string, or NULL if substring not
  8480.                 found.
  8481. ---------------------------------------------------------------------------
  8482. strins
  8483.  
  8484. Synopsis........Inserts one string into another.
  8485.  
  8486. Header File.....TCXLstr.h
  8487.  
  8488. Prototype.......ChrP CTYP strins(ChrP a, ChrP s, IntT p);
  8489.  
  8490. Source File.....STR\STRINS.C
  8491.  
  8492. Arguments.......a  -  String to Insert
  8493.                 s  -  String to Receive Insertion
  8494.                 p  -  Starting position
  8495.  
  8496. Returns.........The address of the modified string.
  8497.  
  8498. Notes...........Make sure the receiving buffer is large enough to hold the
  8499.                 combined new string!
  8500.  
  8501.  
  8502.  
  8503.  
  8504.  
  8505.  
  8506.  
  8507.  
  8508.  
  8509.  
  8510.  
  8511.  
  8512.  
  8513.  
  8514.  
  8515.  
  8516.  
  8517.  
  8518.  
  8519. TesSeRact CXL V5.52 Documentation                                 Page 131
  8520.                                  Inclusion
  8521.  
  8522. ---------------------------------------------------------------------------
  8523. strinc
  8524. striinc
  8525.  
  8526. Synopsis........Determines if and where one string is included within
  8527.                 another.  striinc() ignores case of letters.
  8528.  
  8529. Header File.....TCXLstr.h
  8530.  
  8531. Prototype.......ChrP CTYP strinc(ChrP a, ChrP s);
  8532.                 ChrP CTYP striinc(ChrP a, ChrP s);
  8533.  
  8534. Source File.....INC\STRINC.C
  8535.                 INC\STRIINC.C
  8536.  
  8537. Arguments.......a  -  String to search for
  8538.                 s  -  String to search
  8539.  
  8540. Returns.........A pointer to the location in 's' that contains 'a', or NULL
  8541.                 if not found.
  8542. ---------------------------------------------------------------------------
  8543. strocc
  8544. striocc
  8545.  
  8546. Synopsis........Counts occurrences of a character in a string.  striocc()
  8547.                 ignores case of letters.
  8548.  
  8549. Header File.....TCXLstr.h
  8550.  
  8551. Prototype.......IntT CTYP strocc(ChrP s, ChrT c);
  8552.                 IntT CTYP striocc(ChrP s, ChrT c);
  8553.  
  8554. Source File.....INC\STROCC.C
  8555.                 INC\STRIOCC.C
  8556.  
  8557. Arguments.......s  -  String to Search
  8558.                 c  -  Character to search for
  8559.  
  8560. Returns.........The number of occurrences of the character in the string.
  8561.  
  8562.  
  8563.  
  8564.  
  8565.  
  8566.  
  8567.  
  8568.  
  8569.  
  8570.  
  8571.  
  8572.  
  8573.  
  8574.  
  8575.  
  8576.  
  8577.  
  8578. Page 132                                 TesSeRact CXL V5.52 Documentation
  8579. ---------------------------------------------------------------------------
  8580. strsocc
  8581. strisocc
  8582.  
  8583. Synopsis........Counts occurrences of one string within another.
  8584.                 strisocc() ignores case of letters.
  8585.  
  8586. Header File.....TCXLstr.h
  8587.  
  8588. Prototype.......IntT CTYP strsocc(ChrP a, ChrP s);
  8589.                 IntT CTYP strisocc(ChrP a, ChrP s);
  8590.  
  8591. Source File.....STR\STRSOCC.C
  8592.                 STR\STRISOCC.C
  8593.  
  8594. Arguments.......a  -  String to Search For
  8595.                 s  -  String to Search
  8596.  
  8597. Returns.........The number of times that string 'a' occurs in string 's'.
  8598.  
  8599.                                 Replacement
  8600.  
  8601. ---------------------------------------------------------------------------
  8602. strsrep
  8603. strisrep
  8604.  
  8605. Synopsis........Searches for, and replaces one string within another.
  8606.                 strisrep() ignores case of letters.
  8607.  
  8608. Header File.....TCXLstr.h
  8609.  
  8610. Prototype.......ChrP CTYP strsrep(ChrP s, ChrP a, ChrP b);
  8611.                 ChrP CTYP strisrep(ChrP s, ChrP a, ChrP b);
  8612.  
  8613. Source File.....STR\STRSREP.C
  8614.                 STR\STRISREP.C
  8615.  
  8616. Arguments.......s  -  String to Search
  8617.                 a  -  String to Search For
  8618.                 b  -  String to Replace With
  8619.  
  8620. Returns.........The address of the modified string, or NULL if the search
  8621.                 string wasn't found.
  8622.  
  8623.  
  8624.  
  8625.  
  8626.  
  8627.  
  8628.  
  8629.  
  8630.  
  8631.  
  8632.  
  8633.  
  8634.  
  8635.  
  8636.  
  8637. TesSeRact CXL V5.52 Documentation                                 Page 133
  8638.                                 Substrings
  8639.  
  8640. ---------------------------------------------------------------------------
  8641. strmid
  8642.  
  8643. Synopsis........Create a new string from part of an input string.
  8644.  
  8645. Header File.....TCXLstr.h
  8646.  
  8647. Prototype.......ChrP CTYP strmid(ChrP s, IntT p, IntT n);
  8648.  
  8649. Source File.....STR\STRMID.C
  8650.  
  8651. Arguments.......s  -  Input String
  8652.                 p  -  Position to start copying
  8653.                 n  -  Number of characters to copy
  8654.  
  8655. Returns.........Address of the newly created string or a NULL if a memory
  8656.                 allocation error occurred.
  8657.  
  8658. Notes...........Takes a section from input string starting at given
  8659.                 position and taking the given amount of characters creating
  8660.                 a new string.  Be sure to free() the string when or if you
  8661.                 are finished with it.
  8662. ---------------------------------------------------------------------------
  8663. strleft
  8664. strright
  8665.  
  8666. Synopsis........Create a new string from left or right.
  8667.  
  8668. Header File.....TCXLstr.h
  8669.  
  8670. Prototype.......ChrP strleft(ChrP s, IntT n);
  8671.                 ChrP strright(ChrP s, IntT n);
  8672.  
  8673. Arguments.......s  -  Input String
  8674.                 n  -  Number of Character to Copy
  8675.  
  8676. Returns.........Address of the newly created string or a NULL if a memory
  8677.                 allocation error occurred.
  8678.  
  8679. Notes...........Takes a specified portion of a string from its left or
  8680.                 right and creates a new string.  Be sure to free() this
  8681.                 string if or when you don't need it anymore.
  8682.  
  8683.  
  8684.  
  8685.  
  8686.  
  8687.  
  8688.  
  8689.  
  8690.  
  8691.  
  8692.  
  8693.  
  8694.  
  8695.  
  8696. Page 134                                 TesSeRact CXL V5.52 Documentation
  8697.                                Justification
  8698.  
  8699. ---------------------------------------------------------------------------
  8700. strljust
  8701. strrjust
  8702.  
  8703. Synopsis........Left or right justifies a text string.
  8704.  
  8705. Header File.....TCXLstr.h
  8706.  
  8707. Prototype.......ChrP CTYP strljust(ChrP s);
  8708.                 ChrP CTYP strrjust(ChrP s);
  8709.  
  8710. Source File.....STR\STRLJUST.C
  8711.                 STR\STRRJUST.C
  8712.  
  8713. Arguments.......s  -  String to Justify
  8714.  
  8715. Returns.........Address of the modified string.
  8716. ---------------------------------------------------------------------------
  8717. strrol
  8718. strror
  8719.  
  8720. Synopsis........Rotates a string.
  8721.  
  8722. Header File.....TCXLstr.h
  8723.  
  8724. Prototype.......ChrP CTYP strrol(ChrP s, IntT n);
  8725.                 ChrP CTYP strror(ChrP s, IntT n);
  8726.  
  8727. Source File.....STR\STRROL.C
  8728.                 STR\STRROR.C
  8729.  
  8730. Arguments.......s  -  String to Rotate
  8731.                 n  -  Count to Rotate
  8732.  
  8733. Returns.........Address of the modified string
  8734.  
  8735. Notes...........Rotates a string specified number of characters left or
  8736.                 right.  The rotated characters wrap around to the opposite
  8737.                 side of the string.
  8738.  
  8739.  
  8740.  
  8741.  
  8742.  
  8743.  
  8744.  
  8745.  
  8746.  
  8747.  
  8748.  
  8749.  
  8750.  
  8751.  
  8752.  
  8753.  
  8754.  
  8755. TesSeRact CXL V5.52 Documentation                                 Page 135
  8756. ---------------------------------------------------------------------------
  8757. strshl
  8758. strshr
  8759.  
  8760. Synopsis........Shifts a string.
  8761.  
  8762. Header File.....TCXLstr.h
  8763.  
  8764. Prototype.......ChrP CTYP strshl(ChrP s, IntT n);
  8765.                 ChrP CTYP strshr(ChrP s, IntT n);
  8766.  
  8767. Source File.....STR\STRSHL.C
  8768.                 STR\STRSHR.C
  8769.  
  8770. Arguments.......s  -  String to Shift
  8771.                 n  -  Character Count to Shift
  8772.  
  8773. Returns.........Address of the Modified String
  8774.  
  8775. Notes...........Shifts a string a specified number of characters left or
  8776.                 right.  Characters that shift past the beginning (or end)
  8777.                 of the string "drop off" and spaces are added to the right
  8778.                 (or left) of the string.
  8779.  
  8780.                                  Matching
  8781.  
  8782. ---------------------------------------------------------------------------
  8783. strbmatch
  8784.  
  8785. Synopsis........Finds "best" match.
  8786.  
  8787. Header File.....TCXLstr.h
  8788.  
  8789. Prototype.......ChrP CTYP strbmatch(ChrP s, ChrP a[]);
  8790.  
  8791. Source File.....STR\STRBMATC.C
  8792.  
  8793. Arguments.......s  -  String to Match
  8794.                 a  -  Array of pointers.  The last pointer in the array
  8795.                       must be NULL.
  8796.  
  8797. Returns.........Address of the string in the array that best matched the
  8798.                 given string.
  8799.  
  8800.  
  8801.  
  8802.  
  8803.  
  8804.  
  8805.  
  8806.  
  8807.  
  8808.  
  8809.  
  8810.  
  8811.  
  8812.  
  8813.  
  8814. Page 136                                 TesSeRact CXL V5.52 Documentation
  8815. ---------------------------------------------------------------------------
  8816. strmatch
  8817.  
  8818. Synopsis........Find match "score."
  8819.  
  8820. Header File.....TCXLstr.h
  8821.  
  8822. Prototype.......IntT CTYP strmatch(ChrP a, ChrP b);
  8823.  
  8824. Source File.....STR\STRMATCH.C
  8825.  
  8826. Arguments.......a  -  First String
  8827.                 b  -  Second String
  8828.  
  8829. Returns.........A match score.  The higher the score, the better they
  8830.                 match.  The maximum possible score is strlen(a) +
  8831.                 strlen(b).
  8832.  
  8833.                                Miscellaneous
  8834.  
  8835. ---------------------------------------------------------------------------
  8836. strblank
  8837.  
  8838. Synopsis........Determines if a given string is blank (whitespace).
  8839.  
  8840. Header File.....TCXLstr.h
  8841.  
  8842. Prototype.......IntT CTYP strblank(ChrP s);
  8843.  
  8844. Source File.....STR\STRBLANK.C
  8845.  
  8846. Arguments.......s  -  String to Check
  8847.  
  8848. Returns.........TRUE if string is blank, FALSE otherwise
  8849. ---------------------------------------------------------------------------
  8850. strcode
  8851.  
  8852. Synopsis........Encodes/decodes a string.
  8853.  
  8854. Header File.....TCXLstr.h
  8855.  
  8856. Prototype.......ChrP CTYP strcode(ChrP s, ChrP k);
  8857.  
  8858. Source File.....STR\STRCODE.C
  8859.  
  8860. Arguments.......s  -  String to encode
  8861.                 k  -  Key String
  8862.  
  8863. Returns.........The address of the input string
  8864.  
  8865. Notes...........Call this function to encode a string, then call again
  8866.                 using the same key to decode it.  When reading or writing
  8867.                 from a disk file, be sure to open the file in binary mode.
  8868.  
  8869.  
  8870.  
  8871.  
  8872.  
  8873. TesSeRact CXL V5.52 Documentation                                 Page 137
  8874. ---------------------------------------------------------------------------
  8875. strsetsz
  8876.  
  8877. Synopsis........Adjusts the length of a string.
  8878.  
  8879. Header File.....TCXLstr.h
  8880.  
  8881. Prototype.......ChrP CTYP strsetsz(ChrP s, IntT n);
  8882.  
  8883. Source File.....STR\STRSETSZ.C
  8884.  
  8885. Arguments.......s  -  Input String
  8886.                 n  -  New Length
  8887.  
  8888. Returns.........Address of the modified string.
  8889.  
  8890. Notes...........Adjusts the length of a string, either by truncation or
  8891.                 padding with spaces.  Make sure the string is large enough
  8892.                 to hold the entire buffer if it is expanded!
  8893. ---------------------------------------------------------------------------
  8894. struplow
  8895.  
  8896. Synopsis........Converts a string to mixed upper & lowercase characters.
  8897.  
  8898. Header File.....TCXLstr.h
  8899.  
  8900. Prototype.......ChrP CTYP struplow(ChrP s);
  8901.  
  8902. Source File.....STR\STRUPLOW.C
  8903.  
  8904. Arguments.......s  -  String to Convert
  8905.  
  8906. Returns.........Address of the modified string
  8907.  
  8908. Notes...........Characters are forced to upper or lowercase depending upon
  8909.                 the previous character in the string.
  8910.  
  8911.  
  8912.  
  8913.  
  8914.  
  8915.  
  8916.  
  8917.  
  8918.  
  8919.  
  8920.  
  8921.  
  8922.  
  8923.  
  8924.  
  8925.  
  8926.  
  8927.  
  8928.  
  8929.  
  8930.  
  8931.  
  8932. Page 138                                 TesSeRact CXL V5.52 Documentation
  8933.                            Cursor Control System
  8934.  
  8935.  
  8936. The Cursor  Control System provides access to hardware-specific display and
  8937. mouse cursors, in a system-independent manner.
  8938.  
  8939.                               Cursor Equates
  8940.  
  8941.  
  8942.                             Mouse support level
  8943.  
  8944.           MOU_NONE....................................No mouse support
  8945.           MOU_KEYS..................................Emulate arrow keys
  8946.           MOU_CURS..........................Free-moving visible cursor
  8947.           MOU_FULL..................................Full mouse support
  8948.  
  8949.                         Common Mouse Control Macros
  8950.  
  8951.           MOU_LBTN.........................................Left button
  8952.           MOU_RBTN........................................Right button
  8953.           MOU_MBTN.......................................Middle button
  8954.  
  8955.           MouLvl.........................................Current level
  8956.           MouInit..........................................Initialized
  8957.           Mou3btn.............................................3-button
  8958.           MouEnab..............................................Enabled
  8959.           MouDisa.............................................Disabled
  8960.           MouVisi.......................................Visible cursor
  8961.           MouHidd........................................Hidden cursor
  8962.           MouBtn....................................Button-status bits
  8963.           MouLbtn............................................Left down
  8964.           MouRbtn...........................................Right down
  8965.           MouMbtn..........................................Middle down
  8966.           MouBtnS..................................Saved Button-status
  8967.           MouLbtnS...........................................Left down
  8968.           MouRbtnS..........................................Right down
  8969.           MouMbtnS.........................................Middle down
  8970.           MouColS.........................................Saved column
  8971.           MouRowS............................................Saved row
  8972.  
  8973.  
  8974.                         Cursor sizes for CurSize()
  8975.  
  8976.           CUR_NOR...................................Normal (underline)
  8977.           CUR_MID...........................................Half-block
  8978.           CUR_BLK...........................................Full-block
  8979.  
  8980.                         Cursor states for CurPush()
  8981.  
  8982.           CUR_HID...............................................Hidden
  8983.           CUR_SHO................................................Shown
  8984.           CUR_MAX.....................................Max stack levels
  8985.  
  8986.  
  8987.  
  8988.  
  8989.  
  8990.  
  8991. TesSeRact CXL V5.52 Documentation                                 Page 139
  8992.                           Cursor Control Routines
  8993.  
  8994.  
  8995.                                Mouse Cursor
  8996.  
  8997. ---------------------------------------------------------------------------
  8998. MouHide
  8999. MouShow
  9000.  
  9001. Synopsis........Conditional hide/show of the mouse cursor.
  9002.  
  9003. Header File.....TCXLcur.h
  9004.  
  9005. Prototype.......VOID PAS MouHide(NOARG);
  9006.                 VOID PAS MouShow(NOARG);
  9007.  
  9008. Source File.....CUR\MOUHIDE.ASM
  9009.  
  9010. Arguments.......None.
  9011.  
  9012. Returns.........None.
  9013.  
  9014. Notes...........If mouse is enabled and the cursor is visible, MouHide()
  9015.                 will hide the cursor; if the cursor is hidden and MOU_CURS
  9016.                 or MOU_FULL, the cursor is conditionally shown.  These
  9017.                 functions maintain an internal count, so that repetitive
  9018.                 calls to MouHide() do not cause the cursor to be displayed
  9019.                 at the first MouShow() call; instead, the cursor is shown
  9020.                 at the same level it was originally hidden.
  9021. ---------------------------------------------------------------------------
  9022. MouPush
  9023. MouPop
  9024.  
  9025. Synopsis........Push/Pop current mouse state on internal stack, clearing
  9026.                 all status bits if the support level changed.
  9027.  
  9028. Header File.....TCXLcur.h
  9029.  
  9030. Prototype.......VOID CTYP MouPush(BytT s);
  9031.                 VOID CTYP MouPop(NOARG);
  9032.  
  9033. Source File.....CUR\MOUPUSH.C
  9034.  
  9035. Arguments.......s  -  New Mouse State
  9036.  
  9037. Returns.........None.
  9038.  
  9039.  
  9040.  
  9041.  
  9042.  
  9043.  
  9044.  
  9045.  
  9046.  
  9047.  
  9048.  
  9049.  
  9050. Page 140                                 TesSeRact CXL V5.52 Documentation
  9051.                               Display Cursor
  9052.  
  9053. ---------------------------------------------------------------------------
  9054. CurHide
  9055. CurShow
  9056.  
  9057. Synopsis........Hide/Show video display cursor.
  9058.  
  9059. Header File.....TCXLcur.h
  9060.  
  9061. Prototype.......VOID CTYP CurHide(NOARG);
  9062.                 VOID CTYP CurShow(NOARG);
  9063.  
  9064. Source File.....CUR\CURPUSH.C
  9065.  
  9066. Arguments.......None.
  9067.  
  9068. Returns.........None.
  9069. ---------------------------------------------------------------------------
  9070. CurPush
  9071. CurPop
  9072.  
  9073. Synopsis........Push/Pop current cursor state on internal stack, resetting
  9074.                 all internal variables and visible cursor.
  9075.  
  9076. Header File.....TCXLcur.h
  9077.  
  9078. Prototype.......VOID CTYP CurPush(IntT h, IntT s, IntT r, IntT c);
  9079.                 VOID CTYP CurPop(NOARG);
  9080.  
  9081. Source File.....CUR\CURPUSH.C
  9082.  
  9083. Arguments.......h  -  Hidden/Shown state
  9084.                 s  -  Cursor Size
  9085.                 r  -  Row position
  9086.                 c  -  Column Position
  9087.  
  9088. Returns.........None.
  9089. ---------------------------------------------------------------------------
  9090. CurSave
  9091. CurSize
  9092.  
  9093. Synopsis........Change cursor size or preserve cursor state.
  9094.  
  9095. Header File.....TCXLcur.h
  9096.  
  9097. Prototype.......VOID CurSave(NOARG);
  9098.                 VOID CTYP CurSize(IntT s);
  9099.  
  9100. Source File.....CUR\CURPUSH.C
  9101.  
  9102. Arguments.......s  -  CUR_NOR, CUR_MID or CUR_BLK.
  9103.  
  9104. Returns.........None
  9105.  
  9106.  
  9107.  
  9108.  
  9109. TesSeRact CXL V5.52 Documentation                                 Page 141
  9110.                           Mouse Control Routines
  9111.  
  9112. ---------------------------------------------------------------------------
  9113. MSclear
  9114.  
  9115. Synopsis........Clear internal mouse button counts and update position.
  9116.  
  9117. Header File.....TCXLmou.h
  9118.  
  9119. Prototype.......VOID PAS MSclear(NOARG);
  9120.  
  9121. Source File.....MOU\MOUHOME.ASM
  9122. ---------------------------------------------------------------------------
  9123. MSdelay
  9124.  
  9125. Synopsis........Set mouse response-delay time.
  9126.  
  9127. Header File.....TCXLmou.h
  9128.  
  9129. Prototype.......VOID MSdelay(BytT d)
  9130.  
  9131. Macro...........#define MSdelay(d) if(MouInit) MouDel = (d)
  9132.  
  9133. Arguments.......d  -  Mouse response delay (default is 3)
  9134.  
  9135. Returns.........None.
  9136. ---------------------------------------------------------------------------
  9137. MSdisab
  9138. MSenab
  9139.  
  9140. Synopsis........Disable/Enable global mouse support.
  9141.  
  9142. Header File.....TCXLmou.h
  9143.  
  9144. Prototype.......VOID MSdisab(NOARG);
  9145.                 VOID MSenab(NOARG);
  9146.  
  9147. Macro...........#define MSdisab() (MouFlg &= ~MOU_ENAB)
  9148.                 #define MSenab()  if(MouInit) MouFlg |= MOU_ENAB
  9149. ---------------------------------------------------------------------------
  9150. MShome
  9151.  
  9152. Synopsis........Clear internal mouse button counts and home mouse to center
  9153.                 of display
  9154.  
  9155. Header File.....TCXLmou.h
  9156.  
  9157. Prototype.......VOID PAS MShome(NOARG);
  9158.  
  9159. Source File.....MOU\MOUHOME.ASM
  9160.  
  9161.  
  9162.  
  9163.  
  9164.  
  9165.  
  9166.  
  9167.  
  9168. Page 142                                 TesSeRact CXL V5.52 Documentation
  9169. ---------------------------------------------------------------------------
  9170. MSkeys
  9171.  
  9172. Synopsis........Assign keycodes to mouse buttons (used with MOU_KEYS and
  9173.                 MOU_CURS only).  Pass 0xFFFF to not set a particular key.
  9174.  
  9175. Header File.....TCXLmou.h
  9176.  
  9177. Prototype.......VOID PAS MSkeys(KeyT l, KeyT r, KeyT m);
  9178.  
  9179. Source File.....MOU\MSKEYS.ASM
  9180.  
  9181. Arguments.......l  -  Keycode for Left Button
  9182.                 r  -  Keycode for Right Button
  9183.                 m  -  Keycode for Middle Button
  9184.  
  9185. Returns.........None.
  9186.  
  9187.  
  9188.  
  9189.  
  9190.  
  9191.  
  9192.  
  9193.  
  9194.  
  9195.  
  9196.  
  9197.  
  9198.  
  9199.  
  9200.  
  9201.  
  9202.  
  9203.  
  9204.  
  9205.  
  9206.  
  9207.  
  9208.  
  9209.  
  9210.  
  9211.  
  9212.  
  9213.  
  9214.  
  9215.  
  9216.  
  9217.  
  9218.  
  9219.  
  9220.  
  9221.  
  9222.  
  9223.  
  9224.  
  9225.  
  9226.  
  9227. TesSeRact CXL V5.52 Documentation                                 Page 143
  9228.                          Format Control Subsystem
  9229.  
  9230.  
  9231. The Format Control Subsystem is used by both the Entry System and the Input
  9232. System  to   handle  keyboard   input  in   formatted  fields  (KvGetFmt(),
  9233. KwGetFmt(), and, of course, EntGet()).
  9234.  
  9235. This subsystem is also the home of TCXL's National Language Support.
  9236.  
  9237. There are 3 possible usage-states, and in the equates described below, they
  9238. are marked as shown in each description.
  9239.  
  9240. a) FMT_VID......Input with echo to default video. (VID)
  9241.  
  9242. b) FMT_WIN......Input with echo or output to active window. (WIN)
  9243.  
  9244. c) FMT_ENT......input/output within the data-entry system. (ENT)
  9245.  
  9246. The format options are toggled on or off by "!..!" format-string sequences,
  9247. where valid option characters, depending on usage-state are:
  9248.  
  9249.    Option   Char                              VID  WIN  ENT
  9250.             '-'   Decrement attribute               X    X
  9251.             '+'   Increment attribute               X    X
  9252.             'Aa'  Set attribute 'a'                 X    X
  9253.    FMT_LWR  'L'   Convert to lower-case        X    X    X
  9254.    FMT_MIX  'M'   Convert to mixed-case        X    X    X
  9255.    FMT_PAS  'P'   Mask password field          X    X    X
  9256.    FMT_UPR  'U'   Convert to upper-case        X    X    X
  9257.    FMT_CPY  'C'   Copy strings to output       X    X
  9258.    FMT_ESC  'E'   Detect [Esc] key             X    X
  9259.    FMT_RTN  'R'   Detect [Enter] key           X    X
  9260.  
  9261.  
  9262. Default initial option-state also depends on usage:
  9263.  
  9264.           a) FMT_VID - No options enabled.
  9265.           b) FMT_WIN - [Esc] detection enabled unless suppressed by
  9266.               WctlEsc.
  9267.           c) FMT_ENT - Both [Enter] and [Esc] detection enabled.
  9268.           For FMT_ENT usage, additional initial option values are set by
  9269.               the
  9270.           field feature-mask.
  9271.  
  9272.  
  9273.  
  9274.  
  9275.  
  9276.  
  9277.  
  9278.  
  9279.  
  9280.  
  9281.  
  9282.  
  9283.  
  9284.  
  9285.  
  9286. Page 144                                 TesSeRact CXL V5.52 Documentation
  9287. Input character  validation is  specified, one input position at a time, by
  9288. one of the following format-string constructs:
  9289.  
  9290.   a) An  inclusion-set, enclosed in '<>', where the input character must
  9291.   be a member of the set.
  9292.   b) An  exclusion-set, enclosed in '[]', where the input character must
  9293.   NOT be a member of the set.
  9294.   c) A  format-type character,  where the input character must be one of
  9295.   those specified:
  9296.  
  9297.       'A'....Alphabetic      'X'....Alphanumeric
  9298.       'D'....Date            'Y'....Yes/No (NLS dependent)
  9299.       'F'....Valid filename  '#'....Numeric
  9300.       'H'....Hexadecimal     '%'....Numeric or space
  9301.       'L'....Lower-case      '*'....ASCII printable
  9302.       'M'....Mixed-case      '?'....Any character
  9303.       'P'....Password        '9'....Decimal numeric
  9304.       'T'....Telephone       '.'....Decimal point
  9305.       'U'....Upper-case      '$'....Decimal currency
  9306.       'W'....Filename with wildcards
  9307.  
  9308. Decimal fields specified by '9', '.' and '$' are formatted and handled only
  9309. for FMT_ENT usage at present.
  9310.  
  9311. Any 'L',  'M' and  'U' conversion  specified by  either  format  option  or
  9312. format-type character is done BEFORE validating an input character.
  9313.  
  9314. Format-strings may  also include  quoted strings  (which are  copied to the
  9315. output if  FMT_CPY is in effect), NewLines to format multi-line fields, and
  9316. spaces for readability. Any other character is invalid.
  9317.  
  9318.                          National Language Support
  9319.  
  9320.  
  9321. A quick  word about  TCXL's National  Language Support  is in order at this
  9322. point.   Most of  the controlling  information is stored in FMT\_NLSINIT.C.
  9323. Most of  the support  for languages  other than English is derived from the
  9324. built-in support  in DOS  3.3 and  later, with  some  enhancements.    This
  9325. implementation REQUIRES  MS/PC-DOS 3.30  or higher  and will  exit with  an
  9326. error at  a lower  DOS revision or if a DOS error occurs during startup (to
  9327. allow programs  to run  under DOS versions prior to 3.30, call TcxlNlsOff()
  9328. (Page 15) prior to calling TcxlInit()(Page 14).
  9329.  
  9330. NLS defaults  to United  States/Canadian (English);  however,  if  DOS  3.3
  9331. extended country  support indicates  a different  country code, the current
  9332. country information is used.
  9333.  
  9334.  
  9335.  
  9336.  
  9337.  
  9338.  
  9339.  
  9340.  
  9341.  
  9342.  
  9343.  
  9344.  
  9345. TesSeRact CXL V5.52 Documentation                                 Page 145
  9346. The NlsIs???()  and NlsTo???()  functions map  extended ASCII  (above  0x7F
  9347. ONLY. They  are only searched after an ASCII isupper(), etc., fails and are
  9348. used to:
  9349.  
  9350.   a) translate characters between cases
  9351.   b) determine if a character is alphabetic or printable.
  9352.  
  9353. The NLS  case-map table  is 256 bytes long. It contains 128 pairs of chars,
  9354. which map any country-dependent upper/lower case non-ASCII characters above
  9355. 0x7F, [0x80..0xFF].  Each pair  consists of  an uppercase, then a lowercase
  9356. char, if  any exist  for the  value of  the pair,  otherwise both chars are
  9357. 0x00.   It is  searched AFTER  an ASCII  isupper(), etc.  fails. _NlsInit()
  9358. builds the  table from the UCase table returned as part of the DOS Extended
  9359. Country information.
  9360.  
  9361. The NLS  print-map is  a NUL-terminated string of non-alphabetic, non-ASCII
  9362. chars  above  0x7F  that  are  to  be  considered  printable  (punctuation,
  9363. diacriticals, currency  symbols, etc.).  It is  searched AFTER the complete
  9364. case-map by  NlsIsPrn().  MLS_ML_PRN defines a print-map for the IBM Multi-
  9365. lingual code-page  (850). It (or any user-defined, NUL-terminated print-map
  9366. string of  chars) may  be assigned in place of the default US/CDN print-map
  9367. any time  after TcxlInit()  is called  via  the  NlsPrn  access-macro.  The
  9368. default map contains: "\x9B\x9C\x9D\x9E\x9F\xA7\xAD\x00".
  9369.  
  9370.                       National-language Access Macros
  9371.  
  9372.           NlsPag......................................Global code-page
  9373.           NlsCty..........................................Country-code
  9374.           NlsSym.......................................Currency symbol
  9375.           NlsSyl................................................Length
  9376.           NlsDsc.....................................Decimal separator
  9377.           NlsTsc...................................Thousands separator
  9378.           NlsDtc........................................Date separator
  9379.           NlsTmc........................................Time separator
  9380.           NlsNdp........................................Decimal places
  9381.           NlsLsc........................................List separator
  9382.           NlsYes..................................Uppercase 'Yes' char
  9383.           NlsNo ...................................Uppercase 'No' char
  9384.           NlsUpl.....................................Extended case-map
  9385.           NlsPrn....................................Extended print-map
  9386.  
  9387.                           Format Control Equates
  9388.  
  9389.  
  9390.                          FmtSet/FmtOpt option bits
  9391.  
  9392.           FMT_LWR............................'L' Convert to lower case
  9393.           FMT_MIX............................'M' Convert to mixed case
  9394.           FMT_UPR............................'U' Convert to upper case
  9395.           FMT_PAS.......................'P' Password -- masked display
  9396.           FMT_CPY............................'C' Copy to output (!ENT)
  9397.           FMT_ESC..............................'E' [Esc] detect (!ENT)
  9398.           FMT_RTN...............................'R' [CR] detect (!ENT)
  9399.           FMT_EOF........................................End-of-format
  9400.           FMT_FIN.........................End | 'R' - Done with format
  9401.  
  9402.  
  9403.  
  9404. Page 146                                 TesSeRact CXL V5.52 Documentation
  9405.                              FmtUse usage-bits
  9406.  
  9407.           FMT_VID...............................KvGetFmt(), etc. (VID)
  9408.           FMT_WIN...............................KwGetFmt(), etc. (WIN)
  9409.           FMT_ENT.................................EntFld(), etc. (ENT)
  9410.           FMT_USE...........................................Usage mask
  9411.           FMT_PUT..........................................Output mode
  9412.           FMT_DEC..................................Decimal field (ENT)
  9413.           FMT_CUR.................................Currency field (ENT)
  9414.           FMT_INP.................................Input to field (ENT)
  9415.           FMT_CHK.............................Validation pending (ENT)
  9416.           FMT_PND.......................Input/validation pending (ENT)
  9417.  
  9418.                         FmtFlg transient-flag bits
  9419.  
  9420.           FMT_MOD...................................Display-mode (ENT)
  9421.           FMT_INI..............................................Initial
  9422.           FMT_CHG...............................................Change
  9423.           FMT_CND...................................Conditional-update
  9424.           FMT_DSP...............................Re-display field (ENT)
  9425.           FMT_INS.......................................Insert mode ON
  9426.           FMT_WRP.....................................Field-wrap (ENT)
  9427.           FMT_PRV................................End of previous field
  9428.           FMT_NXT..................................Start of next field
  9429.  
  9430.  
  9431.  
  9432.  
  9433.  
  9434.  
  9435.  
  9436.  
  9437.  
  9438.  
  9439.  
  9440.  
  9441.  
  9442.  
  9443.  
  9444.  
  9445.  
  9446.  
  9447.  
  9448.  
  9449.  
  9450.  
  9451.  
  9452.  
  9453.  
  9454.  
  9455.  
  9456.  
  9457.  
  9458.  
  9459.  
  9460.  
  9461.  
  9462.  
  9463. TesSeRact CXL V5.52 Documentation                                 Page 147
  9464.                            _FmtCtl Access Macros
  9465.  
  9466.           FmtSep.......................................Word-separators
  9467.           FmtGet........................................Input function
  9468.           FmtVal......................................"Valid" function
  9469.           FmtFmt.........................................Format string
  9470.           FmtPtr........................................Format pointer
  9471.           FmtBfr.........................................Buffer string
  9472.           FmtOrg.......................................Screen position
  9473.           FmtOrgW.................................................Word
  9474.           FmtOrgR..................................................Row
  9475.           FmtOrgC..................................................Col
  9476.           FmtPos.......................................Cursor position
  9477.           FmtPosW.................................................Word
  9478.           FmtRow...................................................Row
  9479.           FmtCol...................................................Col
  9480.           FmtLen..........................................Field length
  9481.           FmtOfs........................................Current offset
  9482.           FmtExt..........................................Input-extent
  9483.           FmtDot........................................Decimal offset
  9484.           FmtErr..........................................Error offset
  9485.           FmtChr..................................Field-fill character
  9486.           FmtMsk....................................Password mask char
  9487.           FmtAtr.......................................Field attribute
  9488.           FmtSet.......................................Initial options
  9489.           FmtOpt..........................................Option state
  9490.           FmtLwr............................................Lower case
  9491.           FmtMix............................................Mixed case
  9492.           FmtUpr............................................Upper case
  9493.           FmtPas.........................................Password mask
  9494.           FmtCpy........................................Copy to output
  9495.           FmtEsc..........................................[Esc] detect
  9496.           FmtRtn........................................[Enter] detect
  9497.           FmtEof.........................................End-of-format
  9498.           FmtFin......................................Done with format
  9499.           FmtUse...........................................Usage state
  9500.           FmtVid.......................................KvGetFmt(), etc
  9501.           FmtWin.......................................KwGetFmt(), etc
  9502.           FmtEnt.....................................EntDsp()/EntGet()
  9503.           FmtPut...........................................Output mode
  9504.           FmtDec.........................................Decimal field
  9505.           FmtCur........................................Currency field
  9506.           FmtInp.................................................Input
  9507.           FmtChk............................................Validation
  9508.           FmtPnd...............................................Pending
  9509.           FmtFlg.......................................Transient flags
  9510.           FmtMod..........................................Display mode
  9511.           FmtIni...............................................Initial
  9512.           FmtChg................................................Change
  9513.           FmtCnd...........................................Conditional
  9514.           FmtDsp......................................Re-display field
  9515.           FmtIns........................................Insert mode ON
  9516.           FmtWrp............................................Field-wrap
  9517.           FmtPrv..............................................Previous
  9518.           FmtNxt..................................................Next
  9519.  
  9520.  
  9521.  
  9522. Page 148                                 TesSeRact CXL V5.52 Documentation
  9523.                                NLS Routines
  9524.  
  9525. ---------------------------------------------------------------------------
  9526. NlsIsAlpha
  9527. NlsIsPrint
  9528. NlsIsLower
  9529. NlsIsUpper
  9530.  
  9531. Synopsis........Determines if the passed character is alphanumeric,
  9532.                 printable, upper case or lower case.  These functions
  9533.                 correctly interpret international characters.
  9534.  
  9535. Header File.....TCXLnls.h
  9536.  
  9537. Prototype.......FlgT CTYP NlsIsAlpha(ChrT c);
  9538.                 FlgT CTYP NlsIsPrint(ChrT c);
  9539.                 FlgT CTYP NlsIsLower(ChrT c);
  9540.                 FlgT CTYP NlsIsUpper(ChrT c);
  9541.  
  9542. Source File.....FMT\NLSISALP.C
  9543.  
  9544. Arguments.......c  -  Character to test
  9545.  
  9546. Returns.........TRUE if passes test, FALSE otherwise.
  9547. ---------------------------------------------------------------------------
  9548. NlsToLower
  9549. NlsToUpper
  9550.  
  9551. Synopsis........Converts a character to upper or lower case, correctly
  9552.                 interpreting international characters.
  9553.  
  9554. Header File.....TCXLnls.h
  9555.  
  9556. Prototype.......ChrT CTYP NlsToUpper(ChrT c);
  9557.                 ChrT CTYP NlsToLower(ChrT c);
  9558.  
  9559. Source File.....FMT\NLSISALP.C
  9560.  
  9561. Arguments.......c  -  Character to convert.
  9562.  
  9563. Returns.........Converted character.
  9564.  
  9565.  
  9566.  
  9567.  
  9568.  
  9569.  
  9570.  
  9571.  
  9572.  
  9573.  
  9574.  
  9575.  
  9576.  
  9577.  
  9578.  
  9579.  
  9580.  
  9581. TesSeRact CXL V5.52 Documentation                                 Page 149
  9582.                           Format Control Routines
  9583.  
  9584.  
  9585. Please note  that ALL  of the  routines in the Format Control Subsystem are
  9586. internal, and not to be called by user programs.
  9587.  
  9588.  
  9589. ---------------------------------------------------------------------------
  9590. cvtic
  9591. cvtci
  9592.  
  9593. Synopsis........Convert Integer to TCXL field string, or convert string to
  9594.                 integer.
  9595.  
  9596. Header File.....TCXLfmt.h
  9597.  
  9598. Prototype.......VOID CTYP cvtic(ChrP fp, IntT iv, IntT fs);
  9599.                 IntT CTYP cvtci(ChrP fp);
  9600.  
  9601. Source File.....FMT\CVTIC.C
  9602.                 FMT\CVTCI.C
  9603.  
  9604. Arguments.......fp -  Buffer to hold field string
  9605.                 iv -  Integer value to convert
  9606.                 fs -  Field size (width)
  9607.  
  9608. Returns.........cvtci() returns the value of the passed field string.
  9609.  
  9610. Notes...........cvtic() will right justify the integer value in the buffer
  9611.                 passed.  The field size parameter should match the maximum
  9612.                 number of digits of input permitted during EntGet
  9613.                 processing.  Make sure that memory has been allocated to
  9614.                 <fp> to hold the entire field, as well as the trailing
  9615.                 NULL.
  9616.  
  9617.  
  9618.  
  9619.  
  9620.  
  9621.  
  9622.  
  9623.  
  9624.  
  9625.  
  9626.  
  9627.  
  9628.  
  9629.  
  9630.  
  9631.  
  9632.  
  9633.  
  9634.  
  9635.  
  9636.  
  9637.  
  9638.  
  9639.  
  9640. Page 150                                 TesSeRact CXL V5.52 Documentation
  9641. ---------------------------------------------------------------------------
  9642. cvtfc
  9643. cvtcf
  9644.  
  9645. Synopsis........Convert floating point value to TCXL field string, or
  9646.                 convert string to floating point number.
  9647.  
  9648. Header File.....TCXLfmt.h
  9649.  
  9650. Prototype.......VOID CTYP cvtfc(ChrP p, DblT v, IntT w, IntT d);
  9651.                 DblT CTYP cvtcf(ChrP p);
  9652.  
  9653. Source File.....FMT\CVTFC.C
  9654.                 FMT\CVTCF.C
  9655.  
  9656. Arguments.......p  -  Buffer to hold field string
  9657.                 v  -  Floating point value to convert
  9658.                 w  -  Field size (width)
  9659.  
  9660. Returns.........cvtcf() returns the value of the passed field string.
  9661.  
  9662. Notes...........cvtfc() will right justify the floating point value in the
  9663.                 buffer passed, padding with zeros to the number of decimal
  9664.                 places specified.  The field size parameter should match
  9665.                 the maximum number of digits of input permitted during
  9666.                 EntGet processing.  Make sure that memory has been
  9667.                 allocated to <p> to hold the entire field, as well as the
  9668.                 trailing NULL.
  9669. ---------------------------------------------------------------------------
  9670. _FmtAttr (Internal)
  9671.  
  9672. Synopsis........Assign a field attribute.
  9673.  
  9674. Header File.....TCXLfmt.h
  9675.  
  9676. Prototype.......VOID _FmtAttr(AtrT c);
  9677. ---------------------------------------------------------------------------
  9678. _FmtChar (Internal)
  9679.  
  9680. Synopsis........Validate character <c> against TCXL format-string at
  9681.                 FmtPtr.
  9682.  
  9683. Header File.....TCXLfmt.h
  9684.  
  9685. Prototype.......FlgT CTYP _FmtChar(ChrT c);
  9686.  
  9687. Source File.....FMT\_FMTINIT.C
  9688. ---------------------------------------------------------------------------
  9689. _FmtFill (Internal)
  9690.  
  9691. Synopsis........Assign field fill character.
  9692.  
  9693. Header File.....TCXLfmt.h
  9694.  
  9695. Prototype.......VOID _FmtFill(ChrT c);
  9696.  
  9697.  
  9698.  
  9699. TesSeRact CXL V5.52 Documentation                                 Page 151
  9700. ---------------------------------------------------------------------------
  9701. _FmtFunc (Internal)
  9702.  
  9703. Synopsis........Assign input function for formatted-field input. If <gf> is
  9704.                 NULL, restore default input function [KeyGetc()].
  9705.  
  9706. Header File.....TCXLfmt.h
  9707.  
  9708. Prototype.......VOID CTYP _FmtFunc(KfvCP gf);
  9709.  
  9710. Source File.....FMT\_FMTSEPS.C
  9711. ---------------------------------------------------------------------------
  9712. _FmtGetc (Internal)
  9713.  
  9714. Synopsis........Return next input key and display TCXL format-string input-
  9715.                 field with updated cursor position, performing all cursor-
  9716.                 movement and validating input characters.
  9717.  
  9718. Header File.....TCXLfmt.h
  9719.  
  9720. Prototype.......KeyT CTYP _FmtGetc(NOARG);
  9721.  
  9722. Source File.....FMT\_FMTGETC.C
  9723. ---------------------------------------------------------------------------
  9724. _FmtGets (Internal)
  9725.  
  9726. Synopsis........Get input string to <s> with echo, following TCXL format
  9727.                 string <f>.  Return TRUE on [Enter] or null <s> and return
  9728.                 FALSE on [Esc] ending the field.
  9729.  
  9730. Header File.....TCXLfmt.h
  9731.  
  9732. Prototype.......FlgT CTYP _FmtGets(ChrP s, ChrP f);
  9733.  
  9734. Source File.....FMT\_FMTGETS.C
  9735. ---------------------------------------------------------------------------
  9736. _FmtInit (Internal)
  9737.  
  9738. Synopsis........Verify TCXL format string <fs> for usage <us>. Return 0 on
  9739.                 failure, else initialize globals in FmtCtl object and
  9740.                 return field length.
  9741.  
  9742. Header File.....TCXLfmt.h
  9743.  
  9744. Prototype.......IntT CTYP _FmtInit(ChrP fs, BytT us);
  9745.  
  9746. Source File.....FMT\_FMTINIT.C
  9747. ---------------------------------------------------------------------------
  9748. _FmtMask (Internal)
  9749.  
  9750. Synopsis........Assign password mask character.
  9751.  
  9752. Header File.....TCXLfmt.h
  9753.  
  9754. Prototype.......VOID _FmtMask(ChrT c);
  9755.  
  9756.  
  9757.  
  9758. Page 152                                 TesSeRact CXL V5.52 Documentation
  9759. ---------------------------------------------------------------------------
  9760. _FmtOpts (Internal)
  9761.  
  9762. Synopsis........Toggle all TCXL "!..!" format-string options at FmtPtr,
  9763.                 through tail '!' and update FmtPtr past tail '!'.
  9764.  
  9765. Header File.....TCXLfmt.h
  9766.  
  9767. Prototype.......VOID CTYP _FmtOpts(NOARG);
  9768.  
  9769. Source File.....FMT\_FMTINIT.C
  9770. ---------------------------------------------------------------------------
  9771. _FmtPuts (Internal)
  9772.  
  9773. Synopsis........Display current field-buffer using TCXL format-string
  9774.  
  9775. Header File.....TCXLfmt.h
  9776.  
  9777. Prototype.......VOID CTYP _FmtPuts(NOARG);
  9778.  
  9779. Source File.....FMT\_FMTPUTS.C
  9780. ---------------------------------------------------------------------------
  9781. _FmtSeps (Internal)
  9782.  
  9783. Synopsis........Assign alternate word-separation string <ws>. If <ws> is
  9784.                 NULL, restore default string.
  9785.  
  9786. Header File.....TCXLfmt.h
  9787.  
  9788. Prototype.......VOID CTYP _FmtSeps(ChrP ws);
  9789.  
  9790. Source File.....FMT\_FMTSEPS.C
  9791. ---------------------------------------------------------------------------
  9792. _FmtVali (Internal)
  9793.  
  9794. Synopsis........Validate current TCXL format-string input-field.
  9795.  
  9796. Header File.....TCXLfmt.h
  9797.  
  9798. Prototype.......FlgT CTYP _FmtVali(NOARG);
  9799.  
  9800. Source File.....FMT\_FMTVALI.C
  9801. ---------------------------------------------------------------------------
  9802. _FmtClr (Internal)
  9803.  
  9804. Synopsis........Clear buffer from offset <o> to end and update global
  9805.                 FmtExt.
  9806.  
  9807. Header File.....TCXLfmt.h
  9808.  
  9809. Prototype.......VOID CTYP _FmtClr(IntT o);
  9810.  
  9811. Source File.....FMT\_FMTCPY.C
  9812.  
  9813.  
  9814.  
  9815.  
  9816.  
  9817. TesSeRact CXL V5.52 Documentation                                 Page 153
  9818. ---------------------------------------------------------------------------
  9819. _FmtCpy (Internal)
  9820.  
  9821. Synopsis........Copy string <s> to cleared buffer, limiting length and set
  9822.                 global FmtExt.
  9823.  
  9824. Header File.....TCXLfmt.h
  9825.  
  9826. Prototype.......VOID CTYP _FmtCpy(ChrP s);
  9827.  
  9828. Source File.....FMT\_FMTCPY.C
  9829. ---------------------------------------------------------------------------
  9830. _FmtCur (Internal)
  9831.  
  9832. Synopsis........Display initial national-language currency-symbol
  9833.                 prefix/suffix and update current cursor and/or screen
  9834.                 positions.
  9835.  
  9836. Header File.....TCXLfmt.h
  9837.  
  9838. Prototype.......VOID CTYP _FmtCur(NOARG);
  9839.  
  9840. Source File.....FMT\_FMTDEC.C
  9841. ---------------------------------------------------------------------------
  9842. _FmtDec (Internal)
  9843.  
  9844. Synopsis........Format decimal/currency field with blank-fill left of
  9845.                 point, zero-fill right of point and national-language
  9846.                 decimal/currency separator.  Update global input-extent
  9847.                 FmtExt.
  9848.  
  9849. Header File.....TCXLfmt.h
  9850.  
  9851. Prototype.......VOID CTYP _FmtDec(NOARG);
  9852.  
  9853. Source File.....FMT\_FMTDEC.C
  9854. ---------------------------------------------------------------------------
  9855. _FmtDel (Internal)
  9856.  
  9857. Synopsis........Delete <n> chars from buffer at offset <o> and update
  9858.                 global FmtExt.  Also delete any spurious points from
  9859.                 decimal fields.
  9860.  
  9861. Header File.....TCXLfmt.h
  9862.  
  9863. Prototype.......VOID CTYP _FmtDel(IntT o, IntT n);
  9864.  
  9865. Source File.....FMT\_FMTCPY.C
  9866.  
  9867.  
  9868.  
  9869.  
  9870.  
  9871.  
  9872.  
  9873.  
  9874.  
  9875.  
  9876. Page 154                                 TesSeRact CXL V5.52 Documentation
  9877. ---------------------------------------------------------------------------
  9878. _FmtIns (Internal)
  9879.  
  9880. Synopsis........Insert <n> blanks in buffer at offset <o> and update global
  9881.                 FmtExt.
  9882.  
  9883. Header File.....TCXLfmt.h
  9884.  
  9885. Prototype.......VOID CTYP _FmtIns(IntT o, IntT n);
  9886.  
  9887. Source File.....FMT\_FMTCPY.C
  9888. ---------------------------------------------------------------------------
  9889. _FmtPos (Internal)
  9890.  
  9891. Synopsis........Update TCXL format-string pointer, cursor-position and
  9892.                 buffer offset to next field input position at or past
  9893.                 offset <o>.  Return updated buffer offset.
  9894.  
  9895. Header File.....TCXLfmt.h
  9896.  
  9897. Prototype.......IntT CTYP _FmtPos(IntT o);
  9898.  
  9899. Source File.....FMT\_FMTPOS.C
  9900. ---------------------------------------------------------------------------
  9901. _FmtSpa (Internal)
  9902.  
  9903. Synopsis........Return TRUE if buffer is clear from offset <o>, else FALSE.
  9904.  
  9905. Header File.....TCXLfmt.h
  9906.  
  9907. Prototype.......FlgT CTYP _FmtSpa(IntT o);
  9908.  
  9909. Source File.....FMT\_FMTCPY.C
  9910. ---------------------------------------------------------------------------
  9911. _NlsInit (Internal)
  9912.  
  9913. Synopsis........Install National Language Support.
  9914.  
  9915. Header File.....TCXLnls.h
  9916.  
  9917. Prototype.......WrdT CTYP _NlsInit(NOARG);
  9918.  
  9919. Source File.....FMT\_NLSINIT.C
  9920. ---------------------------------------------------------------------------
  9921. _NlsGet (Internal)
  9922.  
  9923. Synopsis........Get DOS international language control block.
  9924.  
  9925. Header File.....TCXLnls.h
  9926.  
  9927. Prototype.......WrdT PAS _NlsGet(BytP b);
  9928.  
  9929. Source File.....FMT\_NLSGET.ASM
  9930.  
  9931.  
  9932.  
  9933.  
  9934.  
  9935. TesSeRact CXL V5.52 Documentation                                 Page 155
  9936.                         Selection Engine Subsystem
  9937.  
  9938.  
  9939. The Selection  Engine  Subsystem  forms  the  heart  of  TCXL's  user-level
  9940. systems.  It is used internally to manipulate both selection bars and mouse
  9941. "hot" spots throughout the high level operations.  Please note that this is
  9942. for internal use, and not designed to be called by user programs.
  9943.  
  9944.                              Selection Equates
  9945.  
  9946.  
  9947.                       EngFlg and EngFut flag settings
  9948.  
  9949.           ENG_HOR...........................................Horizontal
  9950.           ENG_VER.............................................Vertical
  9951.           ENG_OMN.....................................Multidirectional
  9952.           ENG_BDR.........................................Mouse Arrows
  9953.           ENG_PGU.........................................PgUp Allowed
  9954.           ENG_PGD.........................................PgDn Allowed
  9955.           ENG_WRA..........................................Wrap cursor
  9956.           ENG_HOT......................................Mouse PgUp/PgDn
  9957.           ENG_NOA.................................No Arrow Translation
  9958.  
  9959.                             _Elst Access Macros
  9960.  
  9961.           EngPos(e)................................Item position array
  9962.           EngPosI(e,i)...................................Item position
  9963.           EngRowI(e,i)........................................Item row
  9964.           EngColI(e,i).....................................Item column
  9965.           EngLen(e)..................................Item length array
  9966.           EngLenI(e,i).....................................Item length
  9967.           EngRet(e)..........................Pointer to return keycode
  9968.           EngRetP(e)............................Return keycode storage
  9969.           EngCnt(e)............................Number of items on page
  9970.           EngWid(e)..........................Number of columns on page
  9971.           EngCur(e)...............................Initial Item on page
  9972.           EngBef(e)........................Function to call before bar
  9973.           EngAft(e).........................Function to call after bar
  9974.           EngBln(e).............................Width of Selection Bar
  9975.           EngWat(e)........................Attribute of Current Window
  9976.           EngSat(e).........................Attribute of Selection Bar
  9977.           EngQat(e)........................Attribute of Quick-Sel Char
  9978.           EngFlg(e)........................Page Selection Engine Flags
  9979.           EngHor(e)...............................Horizontal Selection
  9980.           EngVer(e).................................Vertical Selection
  9981.           EngBoth(e)..................................Multidirectional
  9982.           EngBdr(e).............................Mouse Arrows on Border
  9983.           EngPgUp(e)..............................Previous Page Exists
  9984.           EngPgDn(e)..................................Next page Exists
  9985.           EngWrap(e).......................................Wrap cursor
  9986.           EngHot(e)..........................Mouse PgUp/PgDn on Border
  9987.           EngFut(e)...................................Additional Flags
  9988.           EngNoa(e)....................No left-to-up arrow translation
  9989.  
  9990.  
  9991.  
  9992.  
  9993.  
  9994. Page 156                                 TesSeRact CXL V5.52 Documentation
  9995.                          Selection Engine Routines
  9996.  
  9997. ---------------------------------------------------------------------------
  9998. _SelPag (Internal)
  9999.  
  10000. Synopsis........Internal selection engine for all systems.  Returns current
  10001.                 item index, and the activating return keycode in the
  10002.                 pointer sret.
  10003.  
  10004. Header File.....TCXLeng.h.h
  10005.  
  10006. Prototype.......IntT CTYP _SelPag(ElstP e);
  10007.  
  10008. Source File.....ENG\_SELPAG.C
  10009. ---------------------------------------------------------------------------
  10010. _SelMou (Internal)
  10011.  
  10012. Synopsis........Determine if mouse event occurred on item in passed
  10013.                 location array.  Return index into the array.
  10014.  
  10015. Header File.....TCXLeng.h
  10016.  
  10017. Prototype.......IntT CTYP _SelMou(VposP pos, BytP len, IntT cnt);
  10018.  
  10019. Source File.....ENG\_SELMOU.C
  10020.  
  10021.  
  10022.  
  10023.  
  10024.  
  10025.  
  10026.  
  10027.  
  10028.  
  10029.  
  10030.  
  10031.  
  10032.  
  10033.  
  10034.  
  10035.  
  10036.  
  10037.  
  10038.  
  10039.  
  10040.  
  10041.  
  10042.  
  10043.  
  10044.  
  10045.  
  10046.  
  10047.  
  10048.  
  10049.  
  10050.  
  10051.  
  10052.  
  10053. TesSeRact CXL V5.52 Documentation                                 Page 157
  10054.                              Display Subsystem
  10055.  
  10056.  
  10057. The display  system is  designed to be used for output to the video display
  10058. that is  NOT window-oriented.   It  is separated from the physical display,
  10059. and it is also used by the Window System and the User Level systems.
  10060.  
  10061. It is not necessary to call any functions provided in this system from most
  10062. programs.   There are  User Level  and Service  Level functions  to provide
  10063. functionality that  precludes the  use of the functions here.  Although the
  10064. routines here  are portable,  they are  one  step  closer  to  the  display
  10065. hardware, and therefore, should be avoided by most programs.
  10066.  
  10067. The DOS-specific Ultravision Support functions are described in Appendix G.
  10068.  
  10069.                               Display Equates
  10070.  
  10071.  
  10072.                      Supported adapter types (MS-DOS)
  10073.  
  10074.           V_NONE..................................................None
  10075.           V_MDA ......................................Vanilla MDA/mono
  10076.           V_EGAMONO...........................................EGA/mono
  10077.           V_MCGAMONO.........................................MCGA/mono
  10078.           V_VGAMONO...........................................VGA/mono
  10079.           V_HGC ..............................................Hercules
  10080.           V_HGCPLUS......................................Hercules Plus
  10081.           V_INCOLOR...................................Hercules Incolor
  10082.           V_CGA ...........................................Vanilla CGA
  10083.           V_EGA .............................................EGA/color
  10084.           V_MCGA............................................MCGA/color
  10085.           V_VGA .............................................VGA/color
  10086.  
  10087.                     VidParm() video parameters (MS-DOS)
  10088.  
  10089.           VP_DMA..................................Direct screen writes
  10090.           VP_CGA............................Direct writes, no CGA snow
  10091.           VP_BIO....................................BIOS screen writes
  10092.           VP_MON...........................Mono attribute translate on
  10093.           VP_COL..........................Mono attribute translate off
  10094.  
  10095.                            VidFlg bits (MS-DOS)
  10096.  
  10097.           VF_MON............................................Monochrome
  10098.           VF_MAP...........................................Map to mono
  10099.           VF_CGA.....................................Suppress CGA snow
  10100.           VF_BIO........................................Use video BIOS
  10101.           VF_DQV............................DesqView/Windows installed
  10102.  
  10103.  
  10104.  
  10105.  
  10106.  
  10107.  
  10108.  
  10109.  
  10110.  
  10111.  
  10112. Page 158                                 TesSeRact CXL V5.52 Documentation
  10113.                              Box-border types
  10114.  
  10115.           BOX_SNG...........................................all single
  10116.           BOX_DBL...........................................all double
  10117.           BOX_VER............................horiz single, vert double
  10118.           BOX_HOR............................horiz double, vert single
  10119.           BOX_HVY..........................................heavy lines
  10120.           BOX_SPA......................................spaces [no box]
  10121.           BOX_EXP...........................exploding Wopen()/WpopUp()
  10122.  
  10123.                             Video Cursor Object
  10124.  
  10125.           VcseW(x)........................................Overlay word
  10126.           VcseE(x)...........................................Stop line
  10127.           VcseB(x)..........................................Start line
  10128.  
  10129.                             _Vctl Access Macros
  10130.  
  10131.           VidSeg........................................Buffer segment
  10132.           VidHdw..........................................Adapter type
  10133.           VidMod..........................................Display mode
  10134.           VidFlg.................................................Flags
  10135.           VidMon............................................Monochrome
  10136.           VidMap...........................................Map to mono
  10137.           VidCga..............................................CGA snow
  10138.           VidBio..............................................Use BIOS
  10139.           VidDqv..............................................DesQview
  10140.           VidPag..........................................Display page
  10141.           VidWid..........................................Columns wide
  10142.           VidDep.............................................Rows deep
  10143.           VidCur...........................................Cursor save
  10144.           VidPos.........................................Line-position
  10145.           VidPosW.................................................Word
  10146.           VidPosC...............................................Column
  10147.           VidPosR..................................................Row
  10148.           VidLen...........................................Line-length
  10149.           VidBfr...........................................Line-buffer
  10150.           VidBfrW(b)..................................Word (b => cell)
  10151.           VidBfrC(b)..............................................Char
  10152.           VidBfrA(b)..............................................Attr
  10153.  
  10154.  
  10155.  
  10156.  
  10157.  
  10158.  
  10159.  
  10160.  
  10161.  
  10162.  
  10163.  
  10164.  
  10165.  
  10166.  
  10167.  
  10168.  
  10169.  
  10170.  
  10171. TesSeRact CXL V5.52 Documentation                                 Page 159
  10172.                              Display Routines
  10173.  
  10174.  
  10175.                                Video Control
  10176.  
  10177. ---------------------------------------------------------------------------
  10178. VidMode
  10179.  
  10180. Synopsis........Get/Set display mode
  10181.  
  10182. Header File.....TCXLvid.h
  10183.  
  10184. Prototype.......BytT PAS VidMode(IntT m);
  10185.  
  10186. Source File.....DSP\VIDMODE.ASM
  10187.  
  10188. Arguments.......m  -  New Video Mode, or 0xFF to return current mode.
  10189.  
  10190. Returns.........Current or New Video Mode
  10191.  
  10192. Notes...........This function either gets the current video mode (if the
  10193.                 passed parameter is 0xFF), or it sets the display mode to
  10194.                 the passed parameter.  In either case, the _VidCtl (See
  10195.                 User's Guide) structure is updated.
  10196.  
  10197.                 Please note that the "video mode" passed here is completely
  10198.                 hardware/system dependent, and therefore this function
  10199.                 should not be used when portability is a factor.
  10200. ---------------------------------------------------------------------------
  10201. VidOfs
  10202.  
  10203. Synopsis........Calculate offset into screen buffer.
  10204.  
  10205. Header File.....TCXLvid.h
  10206.  
  10207. Prototype.......WrdT VidOfs(IntT r, IntT c);
  10208.  
  10209. Arguments.......r  -  Screen Row
  10210.                 c  -  Screen Column
  10211.  
  10212. Returns.........The offset into the video display buffer of the passed
  10213.                 cursor coordinates.
  10214. ---------------------------------------------------------------------------
  10215. VidParm
  10216.  
  10217. Synopsis........Set video display parameters.
  10218.  
  10219. Header File.....TCXLvid.h
  10220.  
  10221. Prototype.......IntT CTYP VidParm(IntT p);
  10222.  
  10223. Source File.....DSP\VIDPARM.C
  10224.  
  10225. Arguments.......p  -  Video Display Parameter (VP_????) (See page 158)
  10226.  
  10227. Returns.........Nonzero if invalid parameter.
  10228.  
  10229.  
  10230. Page 160                                 TesSeRact CXL V5.52 Documentation
  10231. ---------------------------------------------------------------------------
  10232. VposDec
  10233. VposInc
  10234.  
  10235. Synopsis........Increments/Decrements both the row and column members of a
  10236.                 VposT union.
  10237.  
  10238. Header File.....TCXLvid.h
  10239.  
  10240. Prototype.......VOID VposDec(VposT v);
  10241.                 VOID VposInc(VposT v);
  10242.  
  10243. Arguments.......v  -  A VposT object.
  10244.  
  10245. Returns.........None.
  10246.  
  10247. Notes...........Provided for portability purposes, where the VcelT object
  10248.                 is not necessarily a Word.
  10249. ---------------------------------------------------------------------------
  10250. VsetLin
  10251.  
  10252. Synopsis........Set screen lines.
  10253.  
  10254. Header File.....TCXLvid.h
  10255.  
  10256. Prototype.......IntT CTYP VsetLin(IntT n);
  10257.  
  10258. Source File.....DSP\VSETLIN.C
  10259.  
  10260. Arguments.......n  -  Number of lines (only 25, 43 and 50 are valid).
  10261.  
  10262. Returns.........Nonzero if invalid line value.
  10263.  
  10264. Notes...........Sets the number of lines on the display.  If UltraVision
  10265.                 (under DOS) has been detected, this function calls
  10266.                 _VuvSet() (Page (?)).
  10267.  
  10268.                         Boxes, Clearing and Filling
  10269.  
  10270. ---------------------------------------------------------------------------
  10271. Vclear
  10272.  
  10273. Synopsis........Clears the screen using the passed text attribute (See
  10274.                 Appendix A) and homes the cursor.
  10275.  
  10276. Header File.....TCXLvid.h
  10277.  
  10278. Prototype.......VOID CTYP Vclear(AtrT a);
  10279.  
  10280. Source File.....DSP\VCLEAR.C
  10281.  
  10282. Arguments.......a  -  Attribute (See Appendix A)
  10283.  
  10284. Returns.........None.
  10285.  
  10286.  
  10287.  
  10288.  
  10289. TesSeRact CXL V5.52 Documentation                                 Page 161
  10290. ---------------------------------------------------------------------------
  10291. VclrBox
  10292.  
  10293. Synopsis........Clears a section of the screen using the text attribute
  10294.                 (See Appendix A) at the current cursor position.
  10295.  
  10296. Header File.....TCXLvid.h
  10297.  
  10298. Prototype.......VOID CTYP VclrBox(VposT s, VposT e);
  10299.  
  10300. Source File.....DSP\VCLRBOX.C
  10301.  
  10302. Arguments.......s  -  Start Position
  10303.                 e  -  End Position
  10304.  
  10305. Returns.........None.
  10306. ---------------------------------------------------------------------------
  10307. VclrEol
  10308.  
  10309. Synopsis........Clears to the end of the video line using the text
  10310.                 attribute (See Appendix A) under the cursor.
  10311.  
  10312. Header File.....TCXLvid.h
  10313.  
  10314. Prototype.......VOID CTYP VclrEol(NOARG);
  10315.  
  10316. Source File.....DSP\VCLREOL.C
  10317.  
  10318. Arguments.......None.
  10319.  
  10320. Returns.........None.
  10321. ---------------------------------------------------------------------------
  10322. VclrScr
  10323.  
  10324. Synopsis........Clears the screen using the text attribute (See Appendix A)
  10325.                 under the cursor, and homes the cursor.
  10326.  
  10327. Header File.....TCXLvid.h
  10328.  
  10329. Prototype.......VOID CTYP VclrScr(NOARG);
  10330.  
  10331. Source File.....DSP\VCLRSCR.C
  10332.  
  10333. Arguments.......None.
  10334.  
  10335. Returns.........None.
  10336.  
  10337.  
  10338.  
  10339.  
  10340.  
  10341.  
  10342.  
  10343.  
  10344.  
  10345.  
  10346.  
  10347.  
  10348. Page 162                                 TesSeRact CXL V5.52 Documentation
  10349. ---------------------------------------------------------------------------
  10350. VdrwBox
  10351.  
  10352. Synopsis........"Draws" a text box on the screen.
  10353.  
  10354. Header File.....TCXLvid.h
  10355.  
  10356. Prototype.......VOID VdrwBox(VposT s, VposT e, BytT b, AtrT a);
  10357.  
  10358. Source File.....DSP\VDRWBOX.C
  10359.  
  10360. Arguments.......s  -  Start Position
  10361.                 e  -  End Position
  10362.                 b  -  Frame Type (One of the following)
  10363.                   BOX_SNG..all single
  10364.                   BOX_DBL..all double
  10365.                   BOX_VER..horiz single, vert double
  10366.                   BOX_HOR..horiz double, vert single
  10367.                   BOX_HVY..heavy lines
  10368.                   BOX_SPA..spaces [no box]
  10369.                 a  -  Attribute (See Appendix A)
  10370.  
  10371. Returns.........None.
  10372. ---------------------------------------------------------------------------
  10373. VdrwHor
  10374.  
  10375. Synopsis........Draws a horizontal line on the screen
  10376.  
  10377. Header File.....TCXLvid.h
  10378.  
  10379. Prototype.......VOID CTYP VdrwHor(VposT s, IntT l, BytT c, AtrT a);
  10380.  
  10381. Source File.....DSP\VDRWHOR.C
  10382.  
  10383. Arguments.......s  -  Start Position
  10384.                 l  -  Length
  10385.                 c  -  Character to use
  10386.                 a  -  Attribute (See Appendix A)
  10387.  
  10388. Returns.........None.
  10389.  
  10390.  
  10391.  
  10392.  
  10393.  
  10394.  
  10395.  
  10396.  
  10397.  
  10398.  
  10399.  
  10400.  
  10401.  
  10402.  
  10403.  
  10404.  
  10405.  
  10406.  
  10407. TesSeRact CXL V5.52 Documentation                                 Page 163
  10408. ---------------------------------------------------------------------------
  10409. VdrwVer
  10410.  
  10411. Synopsis........Draws a vertical line on the screen
  10412.  
  10413. Header File.....TCXLvid.h
  10414.  
  10415. Prototype.......VOID CTYP VdrwVer(VposT s, IntT l, BytT c, AtrT a);
  10416.  
  10417. Source File.....DSP\VDRWVER.C
  10418.  
  10419. Arguments.......s  -  Start Position
  10420.                 l  -  Length
  10421.                 c  -  Character to use
  10422.                 a  -  Attribute (See Appendix A)
  10423.  
  10424. Returns.........None.
  10425. ---------------------------------------------------------------------------
  10426. VexpBox
  10427.  
  10428. Synopsis........Draws and fill an exploding text box.
  10429.  
  10430. Header File.....TCXLvid.h
  10431.  
  10432. Prototype.......VOID VexpBox(VposT sp, VposT ep, BytT bt, AtrT ba, ChrT fc,
  10433.                      AtrT fa);
  10434.  
  10435. Source File.....DSP\VEXPBOX.C
  10436.  
  10437. Arguments.......sp -  Start Position
  10438.                 ep -  End Position
  10439.                 bt -  Frame Type (One of the following)
  10440.                   BOX_SNG..all single
  10441.                   BOX_DBL..all double
  10442.                   BOX_VER..horiz single, vert double
  10443.                   BOX_HOR..horiz double, vert single
  10444.                   BOX_HVY..heavy lines
  10445.                   BOX_SPA..spaces [no box]
  10446.                 ba -  Frame Attribute (See Appendix A)
  10447.                 fc -  Fill Character
  10448.                 fa -  Fill Attribute
  10449.  
  10450. Returns.........None.
  10451.  
  10452.  
  10453.  
  10454.  
  10455.  
  10456.  
  10457.  
  10458.  
  10459.  
  10460.  
  10461.  
  10462.  
  10463.  
  10464.  
  10465.  
  10466. Page 164                                 TesSeRact CXL V5.52 Documentation
  10467. ---------------------------------------------------------------------------
  10468. VfilBox
  10469.  
  10470. Synopsis........Fills in a region of the screen with a specified character
  10471.                 and attribute (See Appendix A).
  10472.  
  10473. Header File.....TCXLvid.h
  10474.  
  10475. Prototype.......VOID VfilBox(VposT s, VposT e, ChrT c, AtrT a);
  10476.  
  10477. Source File.....DSP\VFILBOX.C
  10478.  
  10479. Arguments.......s  -  Start Position
  10480.                 e  -  End Position
  10481.                 c  -  Character to fill
  10482.                 a  -  Attribute (See Appendix A)
  10483.  
  10484. Returns.........None.
  10485. ---------------------------------------------------------------------------
  10486. VsavBox
  10487. VlodBox
  10488.  
  10489. Synopsis........Save a box-image to disk, or retrieve a box-image from
  10490.                 disk.
  10491.  
  10492. Header File.....TCXLvid.h
  10493.  
  10494. Prototype.......IntT VsavBox(VposT s, VposT e, ChrP f);
  10495.                 IntT CTYP VlodBox(ChrP f);
  10496.  
  10497. Source File.....DSP\VSAVBOX.C
  10498.                 DSP\VLODBOX.C
  10499.  
  10500. Arguments.......s  -  Start Position
  10501.                 e  -  End Position
  10502.                 f  -  Filename
  10503.  
  10504. Returns.........Nonzero on error
  10505. ---------------------------------------------------------------------------
  10506. VsavScr
  10507. VlodScr
  10508.  
  10509. Synopsis........Saves or restores a screen from disk.
  10510.  
  10511. Header File.....TCXLvid.h
  10512.  
  10513. Prototype.......IntT VsavScr(ChrP f);
  10514.                 IntT VlodScr(ChrP f);
  10515.  
  10516. Source File.....DSP\_VSAVSCR.C
  10517.  
  10518. Arguments.......f  -  Filename
  10519.  
  10520. Returns.........Nonzero on error
  10521.  
  10522.  
  10523.  
  10524.  
  10525. TesSeRact CXL V5.52 Documentation                                 Page 165
  10526. ---------------------------------------------------------------------------
  10527. Vsave
  10528. Vrestore
  10529.  
  10530. Synopsis........Save or restore current video display to memory.
  10531.  
  10532. Header File.....TCXLvid.h
  10533.  
  10534. Prototype.......VcelP Vsave(NOARG);
  10535.                 VOID Vrestore(VcelP b);
  10536.  
  10537. Source File.....DSP\_VSAVE_.C
  10538.  
  10539. Arguments.......b  -  Previously Saved Buffer
  10540.  
  10541. Returns.........Address of the buffer save area, or NULL if a memory
  10542.                 allocation error occurred.
  10543. ---------------------------------------------------------------------------
  10544. Vscroll
  10545.  
  10546. Synopsis........Scroll a region of the display up or down.
  10547.  
  10548. Header File.....TCXLvid.h
  10549.  
  10550. Prototype.......VOID Vscroll(IntT d, VposT s, VposT e, IntT n, AtrT a);
  10551.  
  10552. Source File.....DSP\VSCROLL.ASM
  10553.  
  10554. Arguments.......d  -  Direction (0=down, 1=up)
  10555.                 s  -  Upper Left Corner
  10556.                 e  -  Lower Right Corner
  10557.                 n  -  Number of Lines to Scroll
  10558.                 a  -  Attribute (See Appendix A) to clear area to
  10559.  
  10560. Returns.........None.
  10561.  
  10562.                               Cursor Control
  10563.  
  10564. ---------------------------------------------------------------------------
  10565. VcurGet
  10566.  
  10567. Synopsis........Reads the current cursor location.
  10568.  
  10569. Header File.....TCXLvid.h
  10570.  
  10571. Prototype.......VOID VcurGet(VposT v);
  10572.  
  10573. Source File.....DSP\VCURGET.ASM
  10574.  
  10575. Arguments.......v  -  Position
  10576.  
  10577. Returns.........None.
  10578.  
  10579.  
  10580.  
  10581.  
  10582.  
  10583.  
  10584. Page 166                                 TesSeRact CXL V5.52 Documentation
  10585. ---------------------------------------------------------------------------
  10586. VcurHid
  10587.  
  10588. Synopsis........Hide or show the video cursor, and return the current
  10589.                 cursor state.
  10590.  
  10591. Header File.....TCXLvid.h
  10592.  
  10593. Prototype.......IntT CTYP VcurHid(IntT s);
  10594.  
  10595. Source File.....DSP\VCURHID.C
  10596.  
  10597. Arguments.......s  -  Hide if zero, Show if positive, just return state if
  10598.                       negative.
  10599.  
  10600. Returns.........FALSE if previously hidden, TRUE if previously shown.
  10601. ---------------------------------------------------------------------------
  10602. VcurPut
  10603.  
  10604. Synopsis........Set a new cursor position.
  10605.  
  10606. Header File.....TCXLvid.h
  10607.  
  10608. Prototype.......VOID VcurPut(VposT v);
  10609.  
  10610. Source File.....DSP\VCURGET.ASM
  10611.  
  10612. Arguments.......v  -  New Position
  10613.  
  10614. Returns.........None.
  10615. ---------------------------------------------------------------------------
  10616. VcurSet
  10617.  
  10618. Synopsis........Set the cursor size/shape.
  10619.  
  10620. Header File.....TCXLvid.h
  10621.  
  10622. Prototype.......VOID CTYP VcurSet(IntT s);
  10623.  
  10624. Source File.....DSP\VCURSET.C
  10625.  
  10626. Arguments.......s  -  Underline cursor if zero, block cursor otherwise.
  10627.  
  10628. Returns.........None.
  10629.  
  10630.  
  10631.  
  10632.  
  10633.  
  10634.  
  10635.  
  10636.  
  10637.  
  10638.  
  10639.  
  10640.  
  10641.  
  10642.  
  10643. TesSeRact CXL V5.52 Documentation                                 Page 167
  10644. ---------------------------------------------------------------------------
  10645. VcurSiz
  10646.  
  10647. Synopsis........Sets and gets the current cursor size/shape.
  10648.  
  10649. Header File.....TCXLvid.h
  10650.  
  10651. Prototype.......VOID VcurSiz(VcseT c);
  10652.  
  10653. Source File.....DSP\VCURSIZ.ASM
  10654.  
  10655. Arguments.......c  -  If 0:0, return cursor start/stop lines; otherwise,
  10656.                       set cursor shape.
  10657.  
  10658. Returns.........Current Cursor Size
  10659. ---------------------------------------------------------------------------
  10660. Vgotoxy
  10661.  
  10662. Synopsis........Sets the cursor position to the passed row/col coordinate.
  10663.  
  10664. Header File.....TCXLvid.h
  10665.  
  10666. Prototype.......VOID PAS Vgotoxy(IntT r, IntT c);
  10667.  
  10668. Source File.....DSP\VGOTOXY.ASM
  10669.  
  10670. Arguments.......r  -  Row
  10671.                 c  -  Column
  10672.  
  10673. Returns.........None.
  10674. ---------------------------------------------------------------------------
  10675. VposGet
  10676.  
  10677. Synopsis........Reads the current cursor location.
  10678.  
  10679. Header File.....TCXLvid.h
  10680.  
  10681. Prototype.......VOID PAS VposGet(IntP r, IntP c);
  10682.  
  10683. Source File.....DSP\VPOSGET.C
  10684.  
  10685. Arguments.......r  -  Row
  10686.                 c  -  Column
  10687.  
  10688. Returns.........The current cursor location
  10689.  
  10690.  
  10691.  
  10692.  
  10693.  
  10694.  
  10695.  
  10696.  
  10697.  
  10698.  
  10699.  
  10700.  
  10701.  
  10702. Page 168                                 TesSeRact CXL V5.52 Documentation
  10703.                              Attribute Control
  10704.  
  10705. ---------------------------------------------------------------------------
  10706. VatrInv
  10707.  
  10708. Synopsis........Returns the inverse of the given text attribute (See
  10709.                 Appendix A).
  10710.  
  10711. Header File.....TCXLvid.h
  10712.  
  10713. Prototype.......IntT PAS VatrInv(AtrT a);
  10714.  
  10715. Source File.....DSP\VATRINV.ASM
  10716.  
  10717. Arguments.......a  -  Attribute (See Appendix A) to Invert
  10718.  
  10719. Returns.........Inverted Attribute
  10720. ---------------------------------------------------------------------------
  10721. VatrMap
  10722.  
  10723. Synopsis........Translate color attribute to monochrome mapping.
  10724.  
  10725. Header File.....TCXLvid.h
  10726.  
  10727. Prototype.......IntT CTYP VatrMap(AtrT a);
  10728.  
  10729. Source File.....DSP\VATRMAP.ASM
  10730.  
  10731. Arguments.......a  -  Attribute (See Appendix A) to translate
  10732.  
  10733. Returns.........Monochrome Equivalent
  10734.  
  10735. Notes...........Translates a color text attribute (See Appendix A) into its
  10736.                 approximate monochrome equivalent.  All of TCXL's video
  10737.                 functions (where described) automatically call this, so you
  10738.                 would only need to call this for your own functions.
  10739. ---------------------------------------------------------------------------
  10740. VatrRev
  10741.  
  10742. Synopsis........Reverse <n> attributes
  10743.  
  10744. Header File.....TCXLvid.h
  10745.  
  10746. Prototype.......VOID CTYP VatrRev(IntT n);
  10747.  
  10748. Source File.....DSP\VATRREV.C
  10749.  
  10750. Arguments.......n  -  Count of Characters to Reverse
  10751.  
  10752. Returns.........None.
  10753.  
  10754. Notes...........Reverses the attribute (See Appendix A) of the character
  10755.                 under the current cursor position, and continues for the
  10756.                 specified number of characters.
  10757.  
  10758.  
  10759.  
  10760.  
  10761. TesSeRact CXL V5.52 Documentation                                 Page 169
  10762. ---------------------------------------------------------------------------
  10763. VatrSet
  10764.  
  10765. Synopsis........Set <n> Attributes.
  10766.  
  10767. Header File.....TCXLvid.h
  10768.  
  10769. Prototype.......VOID CTYP VatrSet(AtrT a, IntT n);
  10770.  
  10771. Source File.....DSP\VATRSET.C
  10772.  
  10773. Arguments.......a  -  Attribute (See Appendix A) to set
  10774.                 n  -  Count of Characters to Set
  10775.  
  10776. Returns.........None.
  10777.  
  10778. Notes...........Sets the attribute (See Appendix A) of the character under
  10779.                 the current cursor location, and continues for the
  10780.                 specified number of characters.
  10781. ---------------------------------------------------------------------------
  10782. VatrTxt
  10783.  
  10784. Synopsis........Converts an attribute (See Appendix A) to it's text-based
  10785.                 equivalent.
  10786.  
  10787. Header File.....TCXLvid.h
  10788.  
  10789. Prototype.......ChrP CTYP VatrTxt(AtrT a);
  10790.  
  10791. Source File.....DSP\VATRTXT.C
  10792.  
  10793. Arguments.......a  -  Attribute (See Appendix A)
  10794.  
  10795. Returns.........Static string with color text.
  10796. ---------------------------------------------------------------------------
  10797. Vattrib
  10798.  
  10799. Synopsis........Construct an attribute from it's component parts.
  10800.  
  10801. Header File.....TCXLvid.h
  10802.  
  10803. Prototype.......IntT Vattrib(IntT f, IntT b, IntT i, IntT h);
  10804.  
  10805. Arguments.......f  -  Foreground Color
  10806.                 b  -  Background Color
  10807.                 i  -  Intensity
  10808.                 h  -  Blink Bit
  10809.  
  10810. Returns.........The new attribute code
  10811.  
  10812. Notes...........Creates a text attribute (See Appendix A).  It is usually
  10813.                 much easier to create a create attribute using the
  10814.                 attribute identifiers listed in Appendix A, but this
  10815.                 provides an alternate method.
  10816.  
  10817.  
  10818.  
  10819.  
  10820. Page 170                                 TesSeRact CXL V5.52 Documentation
  10821.                                 Video Input
  10822.  
  10823. ---------------------------------------------------------------------------
  10824. Vgetw
  10825.  
  10826. Synopsis........Get char/attr from screen as a VcelT object
  10827.  
  10828. Header File.....TCXLvid.h
  10829.  
  10830. Prototype.......VOID Vgetw(IntT r, IntT c, VcelT x);
  10831.  
  10832. Arguments.......r  -  Row
  10833.                 c  -  Column
  10834.  
  10835. Returns.........x  -  VcelT from screen.
  10836. ---------------------------------------------------------------------------
  10837. Vgetc
  10838.  
  10839. Synopsis........Get char from screen.
  10840.  
  10841. Header File.....TCXLvid.h
  10842.  
  10843. Prototype.......VOID Vgetc(IntT r, IntT c, ChrT x);
  10844.  
  10845. Arguments.......r  -  Row
  10846.                 c  -  Column
  10847.  
  10848. Returns.........x  -  VcelT from screen.
  10849. ---------------------------------------------------------------------------
  10850. Vgets
  10851.  
  10852. Synopsis........Get chars from screen for specified length.
  10853.  
  10854. Header File.....TCXLvid.h
  10855.  
  10856. Prototype.......VOID CTYP Vgets(IntT r, IntT c, ChrP b, IntT l);
  10857.  
  10858. Source File.....DIO\VGETS.C
  10859.  
  10860. Arguments.......r  -  Row
  10861.                 c  -  Column
  10862.                 b  -  Buffer to receive array
  10863.                 l  -  Length
  10864.  
  10865. Returns.........None.
  10866.  
  10867.  
  10868.  
  10869.  
  10870.  
  10871.  
  10872.  
  10873.  
  10874.  
  10875.  
  10876.  
  10877.  
  10878.  
  10879. TesSeRact CXL V5.52 Documentation                                 Page 171
  10880. ---------------------------------------------------------------------------
  10881. Vgetb
  10882.  
  10883. Synopsis........Get char/attr array from screen for specified length.
  10884.  
  10885. Header File.....TCXLvid.h
  10886.  
  10887. Prototype.......VOID CTYP Vgetb(IntT r, IntT c, ChrP b, IntT l);
  10888.  
  10889. Source File.....DIO\VGETB.C
  10890.  
  10891. Arguments.......r  -  Row
  10892.                 c  -  Column
  10893.                 b  -  Buffer to receive array
  10894.                 l  -  Length
  10895.  
  10896. Returns.........None.
  10897. ---------------------------------------------------------------------------
  10898. Vgetv
  10899.  
  10900. Synopsis........Get vertical array of VcelT objects for specified length.
  10901.                 If <f> is TRUE, get row-wise array of <l> by 2 cells, else
  10902.                 array of <l> by 1 cell.
  10903.  
  10904. Header File.....TCXLvid.h
  10905.  
  10906. Prototype.......VOID CTYP Vgetv(IntT r, IntT c, VcelP p, IntT l, FlgT f);
  10907.  
  10908. Source File.....DIO\VGETV.C
  10909.  
  10910. Arguments.......r  -  Row
  10911.                 c  -  Column
  10912.                 p  -  Buffer to receive array
  10913.                 l  -  Length
  10914.                 f  -  TRUE for 2-wide, FALSE for 1-wide
  10915.  
  10916. Returns.........None.
  10917. ---------------------------------------------------------------------------
  10918. Vgetsv
  10919.  
  10920. Synopsis........Get vertical column of chars only for specified length.
  10921.  
  10922. Header File.....TCXLvid.h
  10923.  
  10924. Prototype.......VOID CTYP Vgetsv(IntT r, IntT c, ChrP p, IntT l);
  10925.  
  10926. Source File.....DIO\VGETSV.C
  10927.  
  10928. Arguments.......r  -  Row
  10929.                 c  -  Column
  10930.                 p  -  Buffer to receive array
  10931.                 l  -  Length
  10932.  
  10933. Returns.........None.
  10934.  
  10935.  
  10936.  
  10937.  
  10938. Page 172                                 TesSeRact CXL V5.52 Documentation
  10939.                                Video Output
  10940.  
  10941.  
  10942. There are  two flavors of video output routines.  The Vput??() functions go
  10943. directly to  the video hardware; while the Vprint?? functions conditionally
  10944. hide the mouse, and map color attributes to monochrome if needed.
  10945.  
  10946. The TCXL  Window System  routines call  the Vput??  functions  exclusively,
  10947. since all mouse control and attribute mapping is duplicated there.
  10948.  
  10949. In order  to avoid  confusion between  the types of functions, the order of
  10950. the parameters is different between the two series.
  10951.  
  10952.  
  10953. ---------------------------------------------------------------------------
  10954. Vprintc
  10955. Vputc
  10956.  
  10957. Synopsis........Put char/attr to screen.
  10958.  
  10959. Header File.....TCXLvid.h
  10960.  
  10961. Prototype.......VOID CTYP Vprintc(IntT r, IntT c, AtrT a, ChrT x);
  10962.                 VOID CTYP Vputc(IntT r, IntT c, ChrT x, AtrT a);
  10963.  
  10964. Source File.....DIO\VPRINTC.C
  10965.                 DIO\VPUTC.C
  10966.  
  10967. Arguments.......r  -  Row
  10968.                 c  -  Column
  10969.                 a  -  Attribute (See Appendix A)
  10970.                 x  -  Character to Display
  10971.  
  10972. Returns.........None.
  10973.  
  10974. Notes...........Displays a character to the screen at a specified location,
  10975.                 using a specified attribute (See Appendix A).  Does not
  10976.                 recognize control characters and does not affect cursor
  10977.                 position.  Vprintc() hides the mouse cursor, if necessary,
  10978.                 and performs character mapping.
  10979.  
  10980.  
  10981.  
  10982.  
  10983.  
  10984.  
  10985.  
  10986.  
  10987.  
  10988.  
  10989.  
  10990.  
  10991.  
  10992.  
  10993.  
  10994.  
  10995.  
  10996.  
  10997. TesSeRact CXL V5.52 Documentation                                 Page 173
  10998. ---------------------------------------------------------------------------
  10999. Vprints
  11000. Vputs
  11001.  
  11002. Synopsis........Put string/attr to screen.
  11003.  
  11004. Header File.....TCXLvid.h
  11005.  
  11006. Prototype.......VOID CTYP Vprints(IntT r, IntT c, AtrT a, ChrP s);
  11007.                 VOID CTYP Vputs(IntT r, IntT c, ChrP s, AtrT a);
  11008.  
  11009. Source File.....DIO\VPRINTS.C
  11010.                 DIO\VPUTS.C
  11011.  
  11012. Arguments.......r  -  Row
  11013.                 c  -  Column
  11014.                 a  -  Attribute (See Appendix A)
  11015.                 s  -  String to Display
  11016.  
  11017. Returns.........None.
  11018.  
  11019. Notes...........Displays a string to the screen at a specified location,
  11020.                 using a specified attribute (See Appendix A).  Does not
  11021.                 recognize control characters and does not affect cursor
  11022.                 position.  Vprints() hides the mouse cursor, if necessary,
  11023.                 and performs character mapping.
  11024. ---------------------------------------------------------------------------
  11025. Vprintn
  11026. Vputn
  11027.  
  11028. Synopsis........Put filled string/attr to screen.
  11029.  
  11030. Header File.....TCXLvid.h
  11031.  
  11032. Prototype.......VOID CTYP Vprintn(IntT r, IntT c, AtrT a, ChrP s, IntT l);
  11033.                 VOID CTYP Vputn(IntT r, IntT c, ChrP s, AtrT a, IntT l);
  11034.  
  11035. Source File.....DIO\VPRINTN.C
  11036.                 DIO\VPUTN.C
  11037.  
  11038. Arguments.......r  -  Row
  11039.                 c  -  Column
  11040.                 a  -  Attribute (See Appendix A)
  11041.                 s  -  String to Display
  11042.                 l  -  Length to fill
  11043.  
  11044. Returns.........None.
  11045.  
  11046. Notes...........Displays a string, padded with spaces to the specified
  11047.                 length, to the screen at a specified location, using a
  11048.                 specified attribute (See Appendix A).  Does not recognize
  11049.                 control characters and does not affect cursor position.
  11050.                 Vprintn() hides the mouse cursor, if necessary, and
  11051.                 performs character mapping.
  11052.  
  11053.  
  11054.  
  11055.  
  11056. Page 174                                 TesSeRact CXL V5.52 Documentation
  11057. ---------------------------------------------------------------------------
  11058. Vprintw
  11059. Vputw
  11060.  
  11061. Synopsis........Put VcelT object to screen.
  11062.  
  11063. Header File.....TCXLvid.h
  11064.  
  11065. Prototype.......VOID Vprintw(IntT r, IntT c, VcelT x);
  11066.                 VOID Vputw(IntT r, IntT c, VcelT x);
  11067.  
  11068. Arguments.......r  -  Row
  11069.                 c  -  Column
  11070.                 a  -  Attribute (See Appendix A)
  11071.                 s  -  String to Display
  11072.                 l  -  Length to fill
  11073.  
  11074. Returns.........None.
  11075.  
  11076. Notes...........Displays a VcelT object to the screen at a specified
  11077.                 location, using a specified attribute (See Appendix A).
  11078.                 Does not recognize control characters and does not affect
  11079.                 cursor position.  Vprintw() hides the mouse cursor, if
  11080.                 necessary, and performs character mapping.
  11081. ---------------------------------------------------------------------------
  11082. Vprintb
  11083. Vputb
  11084.  
  11085. Synopsis........Put row array of VcelT objects to screen.
  11086.  
  11087. Header File.....TCXLvid.h
  11088.  
  11089. Prototype.......VOID CTYP Vprintb(IntT r, IntT c, VcelP b, IntT l);
  11090.                 VOID CTYP Vputb(IntT r, IntT c, VcelP b, IntT l);
  11091.  
  11092. Source File.....DIO\VPRINTB.C
  11093.                 DIO\VPUTB.C
  11094.  
  11095. Arguments.......r  -  Row
  11096.                 c  -  Column
  11097.                 b  -  Array of VcelT to display
  11098.                 l  -  Length
  11099.  
  11100. Returns.........None.
  11101.  
  11102. Notes...........Displays an array of VcelT objects of the specified length,
  11103.                 to the screen at a specified location, using a specified
  11104.                 attribute (See Appendix A).  Does not recognize control
  11105.                 characters and does not affect cursor position.  Vprintb()
  11106.                 hides the mouse cursor, if necessary, and performs
  11107.                 character mapping.
  11108.  
  11109.  
  11110.  
  11111.  
  11112.  
  11113.  
  11114.  
  11115. TesSeRact CXL V5.52 Documentation                                 Page 175
  11116. ---------------------------------------------------------------------------
  11117. Vputv
  11118.  
  11119. Synopsis........Put column array of VcelT objects to screen.  If <f> is
  11120.                 TRUE, put row-wise array of <l> by 2 cells, else array of
  11121.                 <l> by 1 cell.
  11122.  
  11123. Header File.....TCXLvid.h
  11124.  
  11125. Prototype.......VOID CTYP Vputv(IntT r, IntT c, VcelP p, IntT l, FlgT f);
  11126.  
  11127. Source File.....DIO\VPUTV.C
  11128.  
  11129. Arguments.......r  -  Row
  11130.                 c  -  Column
  11131.                 p  -  Array of VcelT to display
  11132.                 l  -  Length
  11133.                 f  -  TRUE for 2-wide, FALSE for 1-wide
  11134.  
  11135. Returns.........None.
  11136.  
  11137. Notes...........Displays an vertical array of VcelT objects of the
  11138.                 specified length, to the screen at a specified location,
  11139.                 using a specified attribute (See Appendix A).  Does not
  11140.                 recognize control characters and does not affect cursor
  11141.                 position.
  11142. ---------------------------------------------------------------------------
  11143. Vputx
  11144.  
  11145. Synopsis........Display VcelT object at specified position for specified
  11146.                 count.  If either element of the VcelT is zero, then only
  11147.                 write the other byte.
  11148.  
  11149. Header File.....TCXLvid.h
  11150.  
  11151. Prototype.......VOID CTYP Vputx(IntT r, IntT c, VcelT x, IntT l);
  11152.  
  11153. Source File.....DIO\VPUTX.C
  11154.  
  11155. Arguments.......r  -  Row
  11156.                 c  -  Column
  11157.                 x  -  VcelT to display
  11158.                 l  -  Length
  11159.  
  11160. Returns.........None.
  11161.  
  11162.  
  11163.  
  11164.  
  11165.  
  11166.  
  11167.  
  11168.  
  11169.  
  11170.  
  11171.  
  11172.  
  11173.  
  11174. Page 176                                 TesSeRact CXL V5.52 Documentation
  11175. ---------------------------------------------------------------------------
  11176. VputSpa
  11177. Vputnca
  11178.  
  11179. Synopsis........Displays <n> spaces (or char/attr pairs) to display.
  11180.  
  11181. Header File.....TCXLvid.h
  11182.  
  11183. Prototype.......VOID PAS VputSpa(IntT n);
  11184.                 VOID PAS Vputnca(ChrT c, AtrT a, IntT n);
  11185.  
  11186. Source File.....DIO\VPUTSPA.ASM
  11187.                 DIO\VPUTNCA.ASM
  11188.  
  11189. Arguments.......n  -  Number of spaces to display
  11190.                 c  -  Character to display
  11191.                 a  -  Attribute (see Appendix A)
  11192.  
  11193. Returns.........None.
  11194.  
  11195. Notes...........Displays the appropriate characters/attributes, updating
  11196.                 the cursor position.  Under DOS, these functions calls the
  11197.                 video BIOS.
  11198.  
  11199.  
  11200.  
  11201.  
  11202.  
  11203.  
  11204.  
  11205.  
  11206.  
  11207.  
  11208.  
  11209.  
  11210.  
  11211.  
  11212.  
  11213.  
  11214.  
  11215.  
  11216.  
  11217.  
  11218.  
  11219.  
  11220.  
  11221.  
  11222.  
  11223.  
  11224.  
  11225.  
  11226.  
  11227.  
  11228.  
  11229.  
  11230.  
  11231.  
  11232.  
  11233. TesSeRact CXL V5.52 Documentation                                 Page 177
  11234.                               Event Subsystem
  11235.  
  11236.  
  11237. The Event  Subsystem is  the "home"  of  TCXL's  keyboard  bindings,  which
  11238. provide functionality  similar to  keyboard macros;  input direct  from the
  11239. keyboard and  mouse that  does not echo, and manages the internal key event
  11240. queue.  All upper-level TCXL functions call to the Event Subsystem for user
  11241. input.
  11242.  
  11243.                               Event Routines
  11244.  
  11245.  
  11246.                             Asynchronous Input
  11247.  
  11248.  
  11249. TCXL can maintain multiple key-binding stacks simultaneously (although only
  11250. one is  active at  any time).   The Kbnd..() functions are used to directly
  11251. manipulate the  global key  bindings, while the Kusr..() functions are used
  11252. to manipulate  the additional  binding stacks.   This  makes it possible to
  11253. build all  your key  bindings during  program  initialization,  and  easily
  11254. switch between  the stacks  internally, using  the KbndChg() function.  The
  11255. KbndMou() function  also makes  it possible  to trap  mouse events  at  any
  11256. location on  the video  display, regardless  of which  window/menu has  the
  11257. current input focus.
  11258.  
  11259.  
  11260. ---------------------------------------------------------------------------
  11261. KbndChg
  11262.  
  11263. Synopsis........Exchange global binding stack-head with passed stack.
  11264.  
  11265. Header File.....TCXLinp.h
  11266.  
  11267. Prototype.......KbndP CTYP KbndChg(KbndP s);
  11268.  
  11269. Source File.....EVT\KBNDSET.C
  11270.  
  11271. Arguments.......s  -  New Key Binding
  11272.  
  11273. Returns.........Old Key Binding
  11274.  
  11275. Notes...........This function allows you to maintain multiple key binding
  11276.                 lists and change back and forth between them.  KbndChg()
  11277.                 provides painless switching between various Key Binding
  11278.                 lists.  If the passed pointer is NULL, disable all keyboard
  11279.                 bindings.
  11280.  
  11281.  
  11282.  
  11283.  
  11284.  
  11285.  
  11286.  
  11287.  
  11288.  
  11289.  
  11290.  
  11291.  
  11292. Page 178                                 TesSeRact CXL V5.52 Documentation
  11293. ---------------------------------------------------------------------------
  11294. KbndClr
  11295. KusrClr
  11296.  
  11297. Synopsis........Removes bindings for the passed keycode.
  11298.  
  11299. Header File.....TCXLinp.h
  11300.  
  11301. Prototype.......IntT CTYP KbndClr(KeyT kc);
  11302.                 IntT CTYP KusrClr(KeyT kc, KbndP kb);
  11303.  
  11304. Source File.....EVT\KBNDSET.C
  11305.                 EVT\KUSRSET.C
  11306.  
  11307. Arguments.......kc -  Keycode to unbind
  11308.                 kb -  Key Binding stack
  11309.  
  11310. Returns.........0 on success, 1 if not found.
  11311. ---------------------------------------------------------------------------
  11312. KbndFre
  11313. KusrFre
  11314.  
  11315. Synopsis........Free key bindings from memory.
  11316.  
  11317. Header File.....TCXLinp.h
  11318.  
  11319. Prototype.......VOID CTYP KbndFre(NOARG);
  11320.                 VOID CTYP KusrFre(KbndP kb);
  11321.  
  11322. Source File.....EVT\KBNDSET.C
  11323.                 EVT\KUSRSET.C
  11324.  
  11325. Arguments.......kb -  Key Binding stack
  11326.  
  11327. Returns.........None.
  11328. ---------------------------------------------------------------------------
  11329. KbndIdle
  11330.  
  11331. Synopsis........Bind function to keyboard idle loop.
  11332.  
  11333. Header File.....TCXLinp.h
  11334.  
  11335. Prototype.......VOID KbndIdle(VfvCP fi);
  11336.  
  11337. Arguments.......fi -  Idle Function
  11338.  
  11339. Returns.........None.
  11340.  
  11341. Notes...........This binds the passed function to the keyboard idle loop.
  11342.                 During KeyGetc() processing, if no input is available, this
  11343.                 routine is called.  !!! WARNING !!! Do not attempt to
  11344.                 update the display or windows every time this routine is
  11345.                 called.  Doing so will cause a mouse cursor to "flicker".
  11346.                 Only update the display when needed.
  11347.  
  11348.  
  11349.  
  11350.  
  11351. TesSeRact CXL V5.52 Documentation                                 Page 179
  11352. ---------------------------------------------------------------------------
  11353. KbndMac
  11354. KusrMac
  11355.  
  11356. Synopsis........Bind macro key string to keycode.
  11357.  
  11358. Header File.....TCXLinp.h
  11359.  
  11360. Prototype.......IntT CTYP KbndMac(KeyT kc, KcodP ks);
  11361.                 IntT CTYP KusrMac(KeyT kc, KcodP ks, KbndP kb);
  11362.  
  11363. Source File.....EVT\KBNDSET.C
  11364.                 EVT\KUSRSET.C
  11365.  
  11366. Arguments.......kc -  Keycode to bind
  11367.                 ks -  Macro string
  11368.                 kb -  Key Binding stack
  11369.  
  11370. Returns.........0 on success, 1 on allocation failure or circular
  11371.                 reference.
  11372.  
  11373.  
  11374.  
  11375.  
  11376.  
  11377.  
  11378.  
  11379.  
  11380.  
  11381.  
  11382.  
  11383.  
  11384.  
  11385.  
  11386.  
  11387.  
  11388.  
  11389.  
  11390.  
  11391.  
  11392.  
  11393.  
  11394.  
  11395.  
  11396.  
  11397.  
  11398.  
  11399.  
  11400.  
  11401.  
  11402.  
  11403.  
  11404.  
  11405.  
  11406.  
  11407.  
  11408.  
  11409.  
  11410. Page 180                                 TesSeRact CXL V5.52 Documentation
  11411. ---------------------------------------------------------------------------
  11412. KbndMou
  11413.  
  11414. Synopsis........Bind function to passed mouse keycode and coordinates.
  11415.  
  11416. Header File.....TCXLinp.h
  11417.  
  11418. Prototype.......IntT CTYP KbndMou(KeyT kc, VfvCP fn, IntT r, IntT c,
  11419.                      IntT l);
  11420.  
  11421. Source File.....EVT\KBNDSET.C
  11422.  
  11423. Arguments.......kc -  Keycode to Bind.
  11424.                 fn -  Function to Call When Key is Pressed.
  11425.                 r  -  Start row of mouse "hot spot"
  11426.                 c  -  Start col of mouse "hot spot"
  11427.                 l  -  Length of "hot spot"
  11428.  
  11429. Returns.........0 on success, 1 on allocation failure.
  11430.  
  11431. Notes...........This function adds a mouse "hot spot" to the video display.
  11432.                 The <r,c> coordinates passed are video-relative, not
  11433.                 window-relative, since this function will detect hotspots
  11434.                 anywhere on the video display.  This is similar to KbndSet,
  11435.                 except there is no user-definable return-code; if a valid
  11436.                 hot spot is found, the function is called, and then
  11437.                 keyboard polling continues; if no hot spot is detected, the
  11438.                 mouse event is passed back to the caller of KeyGetc().
  11439.  
  11440.                 If the bound function is executed, the complete keyboard
  11441.                 binding stack is disabled and replaced by a NULL stack --
  11442.                 this is to prevent reentrancy.  The bindings are restored
  11443.                 after the bound function returns.
  11444.  
  11445.                 Mouse "keycodes" are listed in INC\TCXLCOD.H.  Make sure
  11446.                 you use the full keycode; use Key_M_ClkL for a left button
  11447.                 click, not Key_M_Clk.  Note that Press/Release/Double-click
  11448.                 keycodes are only returned when the mouse level is
  11449.                 MOU_FULL.
  11450.  
  11451.                 Works by intercepting any calls to TCXL input functions.
  11452.                 During Input processing, the input function will determine
  11453.                 if a key-binding exists; if so, the bound routine will be
  11454.                 executed.  If no binding exists, the Input System will
  11455.                 continue processing as normal.
  11456.  
  11457.  
  11458.  
  11459.  
  11460.  
  11461.  
  11462.  
  11463.  
  11464.  
  11465.  
  11466.  
  11467.  
  11468.  
  11469. TesSeRact CXL V5.52 Documentation                                 Page 181
  11470. ---------------------------------------------------------------------------
  11471. KbndPut
  11472.  
  11473. Synopsis........Put bound key macro into TCXL key queue.
  11474.  
  11475. Header File.....TCXLinp.h
  11476.  
  11477. Prototype.......VOID CTYP KbndPut(KbndP p);
  11478.  
  11479. Source File.....EVT\KBNDSET.C
  11480.  
  11481. Arguments.......p  -  Key Binding
  11482.  
  11483. Returns.........None.
  11484.  
  11485. Notes...........This function is called automatically by KeyGetc() if a
  11486.                 macro binding is detected.  It should not be needed from
  11487.                 user programs.
  11488. ---------------------------------------------------------------------------
  11489. KbndSet
  11490. KusrSet
  11491.  
  11492. Synopsis........Bind function and return keycode to passed keycode.
  11493.  
  11494. Header File.....TCXLinp.h
  11495.  
  11496. Prototype.......IntT CTYP KbndSet(KeyT kc, VfvCP fn, KeyT rc);
  11497.                 IntT CTYP KusrSet(KeyT kc, VfvCP fn, KeyT rc, KbndP kb);
  11498.  
  11499. Source File.....EVT\KBNDSET.C
  11500.                 EVT\KUSRSET.C
  11501.  
  11502. Arguments.......kc -  Keycode to Bind.
  11503.                 fn -  Function to Call When Key is Pressed.
  11504.                 rc -  Keycode to Return to Caller After 'f' is Completed.
  11505.                       If zero, then nothing will be returned, and execution
  11506.                       will resume as if no key had been pressed.
  11507.                 kb -  Key Binding stack
  11508.  
  11509. Returns.........0 on success, 1 on allocation failure.
  11510.  
  11511. Notes...........Binds a keypress to a function call.  Works by intercepting
  11512.                 any calls to TCXL input functions.  During Input
  11513.                 processing, the input function will determine if a key-
  11514.                 binding exists; if so, the bound routine will be executed,
  11515.                 and the appropriate key will be returned to the calling
  11516.                 function.  If no binding exists, the Input System will
  11517.                 continue processing as normal.
  11518.  
  11519.  
  11520.  
  11521.  
  11522.  
  11523.  
  11524.  
  11525.  
  11526.  
  11527.  
  11528. Page 182                                 TesSeRact CXL V5.52 Documentation
  11529.                             Input With No Echo
  11530.  
  11531. ---------------------------------------------------------------------------
  11532. KeyClear
  11533.  
  11534. Synopsis........Clears the keyboard and mouse event buffers.
  11535.  
  11536. Header File.....TCXLinp.h
  11537.  
  11538. Prototype.......VOID CTYP KeyClear(NOARG);
  11539.  
  11540. Source File.....EVT\KEYEVENT.C
  11541.  
  11542. Arguments.......None.
  11543.  
  11544. Returns.........None.
  11545. ---------------------------------------------------------------------------
  11546. KeyEvent
  11547.  
  11548. Synopsis........Determines if a keyboard/mouse event occurred.
  11549.  
  11550. Header File.....TCXLinp.h
  11551.  
  11552. Prototype.......FlgT CTYP KeyEvent(NOARG);
  11553.  
  11554. Source File.....EVT\KEYEVENT.C
  11555.  
  11556. Arguments.......None.
  11557.  
  11558. Returns.........TRUE if event pending, FALSE otherwise.
  11559.  
  11560. Notes...........If no events are pending, calls the Idle function (if
  11561.                 defined) as set by KbndIdle() (Page 179)
  11562. ---------------------------------------------------------------------------
  11563. KeyGetc
  11564.  
  11565. Synopsis........Gets a keycode (ASCII/ScanCode) from the keyboard, mouse,
  11566.                 and internal queue.
  11567.  
  11568. Header File.....TCXLinp.h
  11569.  
  11570. Prototype.......KeyT CTYP KeyGetc(NOARG);
  11571.  
  11572. Source File.....EVT\KEYGETC.C
  11573.  
  11574. Arguments.......None.
  11575.  
  11576. Returns.........Keycode of the event.
  11577.  
  11578. Notes...........Gets a keycode (ASCII/ScanCode) from the keyboard, mouse,
  11579.                 and internal queue.  If no events are pending, calls the
  11580.                 Idle function (if defined) as set by KbndIdle() (Page 179)
  11581.                 until an event occurs.
  11582.  
  11583.  
  11584.  
  11585.  
  11586.  
  11587. TesSeRact CXL V5.52 Documentation                                 Page 183
  11588. ---------------------------------------------------------------------------
  11589. KeyPeek
  11590.  
  11591. Synopsis........Look ahead at the next keystroke and return its value.
  11592.  
  11593. Header File.....TCXLinp.h
  11594.  
  11595. Prototype.......KeyT CTYP KeyPeek(NOARG);
  11596.  
  11597. Source File.....EVT\KEYEVENT.C
  11598.  
  11599. Arguments.......None.
  11600.  
  11601. Returns.........KeyCode of the next key in buffer, or zero if nothing
  11602.                 available.
  11603. ---------------------------------------------------------------------------
  11604. KeyStat
  11605.  
  11606. Synopsis........Returns the status of the keyboard control keys.
  11607.  
  11608. Header File.....TCXLinp.h
  11609.  
  11610. Prototype.......WrdT CTYP KeyStat(NOARG);
  11611.  
  11612. Source File.....EVT\KEYEVENT.C
  11613.  
  11614. Arguments.......None.
  11615.  
  11616. Returns.........Status Word of the Keyboard Flag
  11617. ---------------------------------------------------------------------------
  11618. KeyTime
  11619. KeyWait
  11620.  
  11621. Synopsis........Flushes the input buffers, and waits for a keyboard/mouse
  11622.                 event.
  11623.  
  11624. Header File.....TCXLinp.h
  11625.  
  11626. Prototype.......KeyT CTYP KeyTime(IntT t);
  11627.                 KeyT CTYP KeyWait(NOARG);
  11628.  
  11629. Source File.....EVT\KEYTIME.C
  11630.  
  11631. Arguments.......t  -  Timer Ticks to Wait Before Timing Out, or -1 to never
  11632.                       time out.
  11633.  
  11634. Returns.........KeyCode of the event, or -1 if timed out.
  11635.  
  11636. Notes...........KeyTime() will time out and return after the passed number
  11637.                 of timer ticks.  KeyWait() will not return until an event
  11638.                 occurs.
  11639.  
  11640.  
  11641.  
  11642.  
  11643.  
  11644.  
  11645.  
  11646. Page 184                                 TesSeRact CXL V5.52 Documentation
  11647.                             TCXL Keyboard Queue
  11648.  
  11649. ---------------------------------------------------------------------------
  11650. KqueChk
  11651.  
  11652. Synopsis........This function determines if any keystrokes are waiting in
  11653.                 the internal keyboard queue.
  11654.  
  11655. Header File.....TCXLinp.h
  11656.  
  11657. Prototype.......IntT KqueChk(NOARG);
  11658.  
  11659. Arguments.......None
  11660.  
  11661. Returns.........TRUE if keys are waiting, FALSE otherwise
  11662. ---------------------------------------------------------------------------
  11663. KqueClr
  11664.  
  11665. Synopsis........Clears the internal keyboard queue.
  11666.  
  11667. Header File.....TCXLinp.h
  11668.  
  11669. Prototype.......VOID PAS KqueClr(NOARG);
  11670.  
  11671. Source File.....EVT\KQUEPUT.ASM
  11672.  
  11673. Arguments.......None.
  11674.  
  11675. Returns.........None.
  11676. ---------------------------------------------------------------------------
  11677. KqueGet
  11678.  
  11679. Synopsis........Returns the next keycode from the internal queue.
  11680.  
  11681. Header File.....TCXLinp.h
  11682.  
  11683. Prototype.......KeyT PAS KqueGet(NOARG);
  11684.  
  11685. Source File.....EVT\KQUEPUT.ASM
  11686.  
  11687. Arguments.......None.
  11688.  
  11689. Returns.........Next keycode; 0 if no keys are in queue
  11690.  
  11691.  
  11692.  
  11693.  
  11694.  
  11695.  
  11696.  
  11697.  
  11698.  
  11699.  
  11700.  
  11701.  
  11702.  
  11703.  
  11704.  
  11705. TesSeRact CXL V5.52 Documentation                                 Page 185
  11706. ---------------------------------------------------------------------------
  11707. KquePut
  11708.  
  11709. Synopsis........Inserts the passed keystroke into the internal keyboard
  11710.                 queue.
  11711.  
  11712. Header File.....TCXLinp.h
  11713.  
  11714. Prototype.......IntT PAS KquePut(KeyT k);
  11715.  
  11716. Source File.....EVT\KQUEPUT.ASM
  11717.  
  11718. Arguments.......k  -  Keystroke to Enqueue
  11719.  
  11720. Returns.........0 on success, 1 if queue is full
  11721. ---------------------------------------------------------------------------
  11722. KqueStr
  11723.  
  11724. Synopsis........Inserts the passed string into the internal keyboard queue.
  11725.                 This is an ASCII-only string; scan codes are inserted based
  11726.                 on KscnCod(), a DOS-only internal function.
  11727.  
  11728. Header File.....TCXLinp.h
  11729.  
  11730. Prototype.......IntT CTYP KqueStr(ChrP s);
  11731.  
  11732. Source File.....EVT\KQUESTR.C
  11733.  
  11734. Arguments.......s  -  String to Enqueue
  11735.  
  11736. Returns.........0 on success, 1 if queue is full
  11737.  
  11738.  
  11739.  
  11740.  
  11741.  
  11742.  
  11743.  
  11744.  
  11745.  
  11746.  
  11747.  
  11748.  
  11749.  
  11750.  
  11751.  
  11752.  
  11753.  
  11754.  
  11755.  
  11756.  
  11757.  
  11758.  
  11759.  
  11760.  
  11761.  
  11762.  
  11763.  
  11764. Page 186                                 TesSeRact CXL V5.52 Documentation
  11765.                              Utility Subsystem
  11766.  
  11767.  
  11768.                              Utility Routines
  11769.  
  11770.  
  11771. The Utility Subsystem provides a series of useful routines for programmers.
  11772. They are  primarily designed  for system-independent  access to some useful
  11773. functionality, that  may or  may not  be provided  directly by the hardware
  11774. platform.
  11775.  
  11776.  
  11777. ---------------------------------------------------------------------------
  11778. Beep
  11779.  
  11780. Synopsis........Sounds a beep in the speaker.
  11781.  
  11782. Header File.....TCXLdef.h
  11783.  
  11784. Prototype.......VOID Beep(NOARG);
  11785.  
  11786. Arguments.......None.
  11787.  
  11788. Returns.........None.
  11789. ---------------------------------------------------------------------------
  11790. RandFile
  11791.  
  11792. Synopsis........Creates a random file name.
  11793.  
  11794. Header File.....TCXLdef.h
  11795.  
  11796. Prototype.......ChrP CTYP RandFile(NOARG);
  11797.  
  11798. Source File.....UTL\RANDFILE.C
  11799.  
  11800. Arguments.......None.
  11801.  
  11802. Returns.........Address of the static string containing the random file
  11803.                 name.
  11804. ---------------------------------------------------------------------------
  11805. Sound
  11806.  
  11807. Synopsis........Sounds a tone of specified pitch and duration.
  11808.  
  11809. Header File.....TCXLdef.h
  11810.  
  11811. Prototype.......VOID CTYP Sound(WrdT pv, WrdT dt);
  11812.  
  11813. Source File.....UTL\SOUND.C
  11814.  
  11815. Arguments.......pv -  Pitch (0-65535)
  11816.                 dt -  Duration (in timer ticks; 182=10 seconds)
  11817.  
  11818. Returns.........None.
  11819.  
  11820.  
  11821.  
  11822.  
  11823. TesSeRact CXL V5.52 Documentation                                 Page 187
  11824. ---------------------------------------------------------------------------
  11825. SysDate
  11826.  
  11827. Synopsis........Returns a string containing the current system date.
  11828.  
  11829. Header File.....TCXLdef.h
  11830.  
  11831. Prototype.......ChrP CTYP SysDate(IntT d);
  11832.  
  11833. Source File.....UTL\SYSDATE.C
  11834.  
  11835. Arguments.......d  -  Date type code.  One of the following:
  11836.  
  11837.             Code     Example
  11838.             ----     -------
  11839.                    0.December 3, 1988
  11840.                    1.3 Dec 88
  11841.                    2.12-3-88
  11842.                    3.12/3/88
  11843.                    4.3/12/88
  11844.                    5.12/03/88
  11845.  
  11846. Returns.........Address of the static string containing the system date.
  11847. ---------------------------------------------------------------------------
  11848. SysTime
  11849.  
  11850. Synopsis........Returns a string containing the current system time.
  11851.  
  11852. Header File.....TCXLdef.h
  11853.  
  11854. Prototype.......ChrP CTYP SysTime(IntT t);
  11855.  
  11856. Source File.....UTL\SYSTIME.C
  11857.  
  11858. Arguments.......t  -  Time type code.  Can be one of the following:
  11859.  
  11860.                   Code..Example
  11861.                   ----..-------
  11862.                    0.16:30:57.89
  11863.                    1.16:30:57
  11864.                    2.4:30 PM
  11865.                    3.4:30p
  11866.                    4.4:30
  11867.                    5.04:30
  11868.  
  11869. Returns.........Address of the static string containing the system date.
  11870.  
  11871.  
  11872.  
  11873.  
  11874.  
  11875.  
  11876.  
  11877.  
  11878.  
  11879.  
  11880.  
  11881.  
  11882. Page 188                                 TesSeRact CXL V5.52 Documentation
  11883. ---------------------------------------------------------------------------
  11884. TabNxt
  11885.  
  11886. Synopsis........Calculates the next tab stop from given column and tab
  11887.                 width.
  11888.  
  11889. Header File.....TCXLdef.h
  11890.  
  11891. Prototype.......IntT PAS TabNxt(IntT c, IntT w);
  11892.  
  11893. Source File.....UTL\TABNXT.C
  11894.  
  11895. Arguments.......c  -  Column
  11896.                 w  -  Tab Width
  11897.  
  11898. Returns.........The column of the next tab stop
  11899. ---------------------------------------------------------------------------
  11900. _Delay
  11901.  
  11902. Synopsis........Delays program execution for a specified duration.
  11903.  
  11904. Header File.....TCXLdef.h
  11905.  
  11906. Prototype.......VOID PAS _Delay(WrdT d);
  11907.  
  11908. Source File.....UTL\_DELAY.ASM
  11909.  
  11910. Arguments.......d  -  Duration (In Timer Ticks; 182 = 10 seconds)
  11911.  
  11912. Returns.........None.
  11913. ---------------------------------------------------------------------------
  11914. _StdOut
  11915.  
  11916. Synopsis........Outputs a character to the Standard Output Device (stdout).
  11917.  
  11918. Header File.....TCXLdef.h
  11919.  
  11920. Prototype.......VOID PAS _StdOut(ChrT ch);
  11921.  
  11922. Source File.....UTL\_STDOUT.ASM
  11923.  
  11924. Arguments.......ch -  Character to Output
  11925.  
  11926. Returns.........None.
  11927.  
  11928.  
  11929.  
  11930.  
  11931.  
  11932.  
  11933.  
  11934.  
  11935.  
  11936.  
  11937.  
  11938.  
  11939.  
  11940.  
  11941. TesSeRact CXL V5.52 Documentation                                 Page 189
  11942. ---------------------------------------------------------------------------
  11943. _StdOutS
  11944.  
  11945. Synopsis........Outputs a string to the Standard Output Device (stdout).
  11946.  
  11947. Header File.....TCXLdef.h
  11948.  
  11949. Prototype.......VOID PAS _StdOutS(ChrP s);
  11950.  
  11951. Source File.....UTL\_STDOUTS.C
  11952.  
  11953. Arguments.......s  -  String to output.
  11954.  
  11955. Returns.........None.
  11956. ---------------------------------------------------------------------------
  11957. _Timer
  11958.  
  11959. Synopsis........Returns the value of the machine hardware timer.  This
  11960.                 value is incremented by one every 18.2 seconds.
  11961.  
  11962. Header File.....TCXLdef.h
  11963.  
  11964. Prototype.......DwdT PAS _Timer(NOARG);
  11965.  
  11966. Source File.....UTL\_TIMER.ASM
  11967.  
  11968. Arguments.......None.
  11969.  
  11970. Returns.........Current value of the BIOS timer.
  11971. ---------------------------------------------------------------------------
  11972. _WaitMs
  11973.  
  11974. Synopsis........This is a millisecond-resolution delay function.  Waits for
  11975.                 the specified number of milliseconds before returning
  11976.                 control.
  11977.  
  11978. Header File.....TCXLdef.h
  11979.  
  11980. Prototype.......VOID PAS _WaitMs(IntT ms);
  11981.  
  11982. Source File.....UTL\_WAITMS.ASM
  11983.  
  11984. Arguments.......ms -  Number of milliseconds to wait
  11985.  
  11986.  
  11987.  
  11988.  
  11989.  
  11990.  
  11991.  
  11992.  
  11993.  
  11994.  
  11995.  
  11996.  
  11997.  
  11998.  
  11999.  
  12000. Page 190                                 TesSeRact CXL V5.52 Documentation
  12001.                               Opsys Subsystem
  12002.  
  12003.  
  12004. The routines  in the  Opsys Subsystem  provide system-independent access to
  12005. operating system  functions.   These routines,  like those  in the  Utility
  12006. Subsystem, can  often  provide  programmers  with  useful  routines  across
  12007. operating environments.
  12008.  
  12009.                               Opsys Routines
  12010.  
  12011. ---------------------------------------------------------------------------
  12012. _CerrGet
  12013. _CerrSet
  12014. _CerrOut
  12015. _CerrPush
  12016. _CerrPop
  12017.  
  12018. Synopsis........Critical Error Handler manipulation.
  12019.  
  12020. Header File.....TCXLdos.h
  12021.  
  12022. Prototype.......IffpCP PAS _CerrGet(NOARG);
  12023.                 IntT PAS _CerrSet(IffpCP fa);
  12024.                 VOID PAS _CerrOut(NOARG);
  12025.                 IntT PAS _CerrPush(IffpCP fa);
  12026.                 IntT PAS _CerrPop(NOARG);
  12027.  
  12028. Source File.....OPS\_CRITERR.ASM
  12029.  
  12030. Arguments.......fa -  Critical Error Handler Routine
  12031.  
  12032. Notes...........Under normal conditions, these routines should not be
  12033.                 needed by users.  A default critical error handler
  12034.                 [_DefCrit] is installed by TcxlInit() when your program
  12035.                 begins.  This is a "bare-bones" error handler.
  12036.  
  12037.                 If you want more detail provided, the library also contains
  12038.                 an alternate critical error handler [_AltCrit] that
  12039.                 provides more detail than you or your customers would ever
  12040.                 want.
  12041.  
  12042.                 To replace the current error handler with either _AltCrit()
  12043.                 or one of your own design, use _CerrPush() with a pointer
  12044.                 to your own handler.  When you are finished using your own
  12045.                 handler just call _CerrPop().
  12046.  
  12047.                 For more details on writing your own critical error
  12048.                 handlers, see OPS\_ALTCRIT.C and OPS\_DEFCRIT.C.
  12049.  
  12050.  
  12051.  
  12052.  
  12053.  
  12054.  
  12055.  
  12056.  
  12057.  
  12058.  
  12059. TesSeRact CXL V5.52 Documentation                                 Page 191
  12060. ---------------------------------------------------------------------------
  12061. _ChgDir
  12062.  
  12063. Synopsis........Change Current Directory.
  12064.  
  12065. Header File.....TCXLdos.h
  12066.  
  12067. Prototype.......IntT PAS _ChgDir(ChrP p);
  12068.  
  12069. Source File.....OPS\_CHDIR.ASM
  12070.  
  12071. Arguments.......p  -  New Directory Name
  12072.  
  12073. Returns.........0 on success, 1 on failure.
  12074. ---------------------------------------------------------------------------
  12075. _ChgDrv
  12076.  
  12077. Synopsis........Change Current Drive.
  12078.  
  12079. Header File.....TCXLdos.h
  12080.  
  12081. Prototype.......IntT PAS _ChgDrv(ChrT d);
  12082.  
  12083. Source File.....OPS\_CHDRV.ASM
  12084.  
  12085. Arguments.......d  -  New Drive Letter
  12086.  
  12087. Returns.........Last Drive in System as an upper-case letter
  12088. ---------------------------------------------------------------------------
  12089. _FilFnd
  12090.  
  12091. Synopsis........Find file in current directory or along path, and return
  12092.                 fully-qualified path name in passed buffer.
  12093.  
  12094. Header File.....TCXLdos.h
  12095.  
  12096. Prototype.......IntT CTYP _FilFnd(ChrP fn, ChrP bf);
  12097.  
  12098. Source File.....OPS\_FILFND.C
  12099.  
  12100. Arguments.......fn -  Filename to find
  12101.                 bf -  Return buffer area
  12102.  
  12103. Returns.........0 if found, and bf filled with pathname; else returns 1.
  12104.  
  12105.  
  12106.  
  12107.  
  12108.  
  12109.  
  12110.  
  12111.  
  12112.  
  12113.  
  12114.  
  12115.  
  12116.  
  12117.  
  12118. Page 192                                 TesSeRact CXL V5.52 Documentation
  12119. ---------------------------------------------------------------------------
  12120. _FndFst
  12121. _FndNxt
  12122.  
  12123. Synopsis........File FindFirst/FindNext Routines.
  12124.  
  12125. Header File.....TCXLdos.h
  12126.  
  12127. Prototype.......FlgT PAS _FndFst(ChrP p, _FfbP f, IntT a);
  12128.                 FlgT PAS _FndNxt(_FfbP f);
  12129.  
  12130. Source File.....OPS\_FNDFST.ASM
  12131.  
  12132. Arguments.......p  -  FileSpec to match
  12133.                 f  -  FindFirst structure
  12134.                 a  -  Attribute to match:
  12135.                   FA_RDO...Read only
  12136.                   FA_HID...Hidden
  12137.                   FA_SYS...System
  12138.                   FA_VOL...Volume label
  12139.                   FA_DIR...Directory
  12140.                   FA_ARC...Archive
  12141.                   FA_DEV...Device
  12142.  
  12143. Returns.........0 on success, 1 on failure.
  12144. ---------------------------------------------------------------------------
  12145. _GetDir
  12146.  
  12147. Synopsis........Get Current Directory Routine.
  12148.  
  12149. Header File.....TCXLdos.h
  12150.  
  12151. Prototype.......IntT PAS _GetDir(ChrT d, ChrP p);
  12152.  
  12153. Source File.....OPS\_GETDIR.ASM
  12154.  
  12155. Arguments.......d  -  Drive Letter (0 means current drive)
  12156.                 p  -  Return Buffer
  12157.  
  12158. Returns.........Zero on success, or 1 for invalid drive.
  12159.  
  12160.  
  12161.  
  12162.  
  12163.  
  12164.  
  12165.  
  12166.  
  12167.  
  12168.  
  12169.  
  12170.  
  12171.  
  12172.  
  12173.  
  12174.  
  12175.  
  12176.  
  12177. TesSeRact CXL V5.52 Documentation                                 Page 193
  12178. ---------------------------------------------------------------------------
  12179. _GetDtm
  12180.  
  12181. Synopsis........Get system date/time and update global date/time object.
  12182.  
  12183. Header File.....TCXLdos.h
  12184.  
  12185. Prototype.......VOID PAS _GetDtm(NOARG);
  12186.  
  12187. Source File.....OPS\_GETDTM.ASM
  12188.  
  12189. Arguments.......None.
  12190.  
  12191.                 The global date/time object may be accessed using the
  12192.                 following macros:
  12193.  
  12194.                   _DtmYr...Year
  12195.                   _DtmMon..Month
  12196.                   _DtmDay..Day of month
  12197.                   _DtmDow..Day of week
  12198.                   _DtmHr...Hour
  12199.                   _DtmMin..Minute
  12200.                   _DtmSec..Second
  12201.                   _DtmDec..Hundredth
  12202.  
  12203. Returns.........None.
  12204. ---------------------------------------------------------------------------
  12205. _GetDrv
  12206.  
  12207. Synopsis........Get Current Drive Routine.
  12208.  
  12209. Header File.....TCXLdos.h
  12210.  
  12211. Prototype.......IntT PAS _GetDrv(NOARG);
  12212.  
  12213. Source File.....OPS\_GETDRV.ASM
  12214.  
  12215. Arguments.......None.
  12216.  
  12217. Returns.........The current drive as an upper-case letter.
  12218. ---------------------------------------------------------------------------
  12219. _GetSys
  12220.  
  12221. Synopsis........Get system version number.
  12222.  
  12223. Header File.....TCXLdos.h
  12224.  
  12225. Prototype.......WrdT PAS _GetSys(NOARG);
  12226.  
  12227. Source File.....OPS\_GETSYS.ASM
  12228.  
  12229. Arguments.......None
  12230.  
  12231. Returns.........The operating system version number.  This value is system-
  12232.                 dependent.
  12233.  
  12234.  
  12235.  
  12236. Page 194                                 TesSeRact CXL V5.52 Documentation
  12237.                            Information Subsystem
  12238.  
  12239.  
  12240. The routines provided in the Information Subsystem were originally designed
  12241. for the  IBM-PC/MS-DOS environment,  although their  functionality has been
  12242. duplicated (where  possible) on the different platforms TCXL has been moved
  12243. to.
  12244.  
  12245.                             Information Equates
  12246.  
  12247.  
  12248.                      Machine ID's returned by Machid()
  12249.  
  12250.           IBMPC ................................................IBM PC
  12251.           IBMPCXT......................IBM PC/XT, Portable, old Compaq
  12252.           IBMPCJR.............................................IBM PCjr
  12253.           IBMPCAT..................IBM PC/AT, XT/286, PS/2 Model 50,60
  12254.           IBMPCXT2 ..........................................IBM PC/XT
  12255.           IBMPS30....................................IBM PS/2 model 30
  12256.           IBMCONV...................................IBM PC Convertible
  12257.           IBMPS80....................................IBM PS/2 model 80
  12258.           SPERRYPC ..........................................Sperry PC
  12259.           CPQPORT..................................Old Compaq portable
  12260.           CPQPLUS......................................Old Compaq plus
  12261.           HP110 .......................................HP-110 portable
  12262.  
  12263.                            HdwFlg() option flags
  12264.  
  12265.           HDW_GAM.........................................Game-adapter
  12266.           HDW_NDP.....................................Math-coprocessor
  12267.           HDW_MOU...........................................PS/2 mouse
  12268.           HDW_MDM...........................................PS/2 modem
  12269.           HDW_C40.........................................40-col color
  12270.           HDW_C80.........................................80-col color
  12271.           HDW_M80..........................................80-col mono
  12272.  
  12273.                            Information Routines
  12274.  
  12275. ---------------------------------------------------------------------------
  12276. _BioEqp
  12277.  
  12278. Synopsis........Initializes the global _HdwCtl object with hardware-
  12279.                 specific equipment flag data.
  12280.  
  12281. Header File.....TCXLhdw.h
  12282.  
  12283. Prototype.......VOID PAS _BioEqp(NOARG);
  12284.  
  12285. Source File.....HDW\_BIOEQP.ASM
  12286.  
  12287. Arguments.......None.
  12288.  
  12289. Returns.........None.
  12290.  
  12291.  
  12292.  
  12293.  
  12294.  
  12295. TesSeRact CXL V5.52 Documentation                                 Page 195
  12296. ---------------------------------------------------------------------------
  12297. _InpByt
  12298. _InpWrd
  12299. _OutByt
  12300. _OutWrd
  12301.  
  12302. Synopsis........Read/Write from a hardware port.
  12303.  
  12304. Header File.....TCXLdos.h
  12305.  
  12306. Prototype.......BytT PAS _InpByt(WrdT p);
  12307.                 WrdT PAS _InpWrd(WrdT p);
  12308.                 VOID PAS _OutByt(WrdT p, BytT b);
  12309.                 VOID PAS _OutWrd(WrdT p, WrdT w);
  12310.  
  12311. Source File.....HDW\_INPBYT.ASM
  12312.  
  12313. Arguments.......p  -  Port to Read/Write
  12314.                 b  -  Value to write
  12315.  
  12316. Returns.........The returned value.
  12317. ---------------------------------------------------------------------------
  12318. _IntEna
  12319. _IntDis
  12320.  
  12321. Synopsis........Enable/Disable hardware interrupts.
  12322.  
  12323. Header File.....TCXLdos.h
  12324.  
  12325. Prototype.......VOID PAS _IntEna(NOARG);
  12326.                 VOID PAS _IntDis(NOARG);
  12327.  
  12328. Source File.....HDW\_INTDIS.ASM
  12329.  
  12330. Arguments.......None.
  12331.  
  12332. Returns.........None.
  12333. ---------------------------------------------------------------------------
  12334. BiosVer
  12335.  
  12336. Synopsis........Returns the machine's version date.  May not return
  12337.                 meaningful information on some machines.
  12338.  
  12339. Header File.....TCXLhdw.h
  12340.  
  12341. Prototype.......ChrP CTYP BiosVer(NOARG);
  12342.  
  12343. Source File.....HDW\BIOSVER.C
  12344.  
  12345. Arguments.......None.
  12346.  
  12347. Returns.........The address of the static string containing the version
  12348.                 date.
  12349.  
  12350.  
  12351.  
  12352.  
  12353.  
  12354. Page 196                                 TesSeRact CXL V5.52 Documentation
  12355. ---------------------------------------------------------------------------
  12356. ClockCal
  12357.  
  12358. Synopsis........Determines if a clock-calendar board is installed.  This
  12359.                 usually will only work with the clock-calendar boards in
  12360.                 XT-style machines.
  12361.  
  12362. Header File.....TCXLhdw.h
  12363.  
  12364. Prototype.......FlgT CTYP ClockCal(NOARG);
  12365.  
  12366. Source File.....HDW\CLOCKCAL.C
  12367.  
  12368. Arguments.......None.
  12369.  
  12370. Returns.........Nonzero if a clock-calendar board is present.
  12371. ---------------------------------------------------------------------------
  12372. MachId
  12373.  
  12374. Synopsis........Returns the current machine type, if known.
  12375.  
  12376. Header File.....TCXLhdw.h
  12377.  
  12378. Prototype.......WrdT CTYP MachId(NOARG);
  12379.  
  12380. Source File.....HDW\MACHID.C
  12381.  
  12382. Arguments.......None.
  12383.  
  12384. Returns.........The machine type.  Under MS-DOS, this is the value of the
  12385.                 machine ROM ID byte.
  12386.  
  12387.  
  12388.  
  12389.  
  12390.  
  12391.  
  12392.  
  12393.  
  12394.  
  12395.  
  12396.  
  12397.  
  12398.  
  12399.  
  12400.  
  12401.  
  12402.  
  12403.  
  12404.  
  12405.  
  12406.  
  12407.  
  12408.  
  12409.  
  12410.  
  12411.  
  12412.  
  12413. TesSeRact CXL V5.52 Documentation                                 Page 197
  12414. ---------------------------------------------------------------------------
  12415. HdwFlg
  12416. HdwGam
  12417. HdwNdp
  12418. HdwMou
  12419. HdwMdm
  12420. HdwC40
  12421. HdwC80
  12422. HdwM80
  12423. HdwDrv
  12424. HdwPar
  12425. HdwSer
  12426.  
  12427.  
  12428. Synopsis........Return hardware configuration information.  These do not
  12429.                 work on all machines, under all configurations.
  12430.  
  12431. Header File.....TCXLhdw.h
  12432.  
  12433. Prototype.......BytT HdwFlg(NOARG);
  12434.  
  12435. Arguments.......None.
  12436.  
  12437. Returns.........HdwFlg   -  The full flag word of the hardware settings
  12438.                 HdwGam   -  TRUE if game port is installed
  12439.                 HdwNdp   -  TRUE if math coprocessor is installed
  12440.                 HdwMou   -  TRUE if Mouse installed
  12441.                 HdwMdm   -  TRUE if modem installed
  12442.                 HdwC40   -  TRUE if machine booted in 40x25 color
  12443.                 HdwC80   -  TRUE if machine booted in 80x25 color
  12444.                 HdwM80   -  TRUE if machine booted in 80x25 monochrome
  12445.                 HdwDrv   -  The number of floppy disk drives installed
  12446.                 HdwPar   -  The number of parallel ports installed
  12447.                 HdwSer   -  The number of serial ports installed
  12448.  
  12449.  
  12450.  
  12451.  
  12452.  
  12453.  
  12454.  
  12455.  
  12456.  
  12457.  
  12458.  
  12459.  
  12460.  
  12461.  
  12462.  
  12463.  
  12464.  
  12465.  
  12466.  
  12467.  
  12468.  
  12469.  
  12470.  
  12471.  
  12472. Page 198                                 TesSeRact CXL V5.52 Documentation
  12473.                             Near/Far Subsystem
  12474.  
  12475.  
  12476. The routines  provided in  the Near/Far  Subsystem were originally designed
  12477. for the  IBM-PC/MS-DOS environment.    Conversions  between  near  and  far
  12478. pointers may  not exist  on all  platforms; however, these routines will be
  12479. available on all systems to provide full compatibility.
  12480.  
  12481.                              Near/Far Routines
  12482.  
  12483. ---------------------------------------------------------------------------
  12484. MK_FP
  12485. MK_FPT
  12486.  
  12487. Synopsis........Create far pointers from component parts.
  12488.  
  12489. Header File.....TCXLfar.h
  12490.  
  12491. Arguments.......s  -  Segment Value
  12492.                 o  -  Offset Value
  12493.                 t  -  Type to cast return pointer
  12494.  
  12495. Notes...........These macros are used to create far pointers from
  12496.                 segment/offset combinations.  MK_FP creates an anonymous
  12497.                 pointer (void far *), while MK_FPT creates a "typed" far
  12498.                 pointer, necessary in C++, since C++ does not permit
  12499.                 assigning a VOID to a typed pointer.   
  12500. ---------------------------------------------------------------------------
  12501. _FarCpy
  12502. _CpyFar
  12503.  
  12504. Synopsis........Copy data from one far pointer to another.
  12505.  
  12506. Header File.....TCXLfar.h
  12507.  
  12508. Source File.....HDW\_FARCPY.C
  12509.  
  12510. Prototype.......VOID PAS _FarCpy(WrdT st, WrdT ot, WrdT sf, WrdT of,
  12511.                      WrdT n);
  12512.                 VOID PAS _CpyFar(BytFP t, BytFP f, WrdT n);
  12513.  
  12514. Arguments.......st -  Destination Segment
  12515.                 ot -  Destination Offset
  12516.                 t  -  Far Pointer to Destination
  12517.                 sf -  Source Segment
  12518.                 of -  Source Offset
  12519.                 f  -  Far Pointer to Source
  12520.                 n  -  Number of Bytes to copy
  12521.  
  12522. Returns.........None.
  12523.  
  12524.  
  12525.  
  12526.  
  12527.  
  12528.  
  12529.  
  12530.  
  12531. TesSeRact CXL V5.52 Documentation                                 Page 199
  12532. ---------------------------------------------------------------------------
  12533. _FarGet
  12534. _GetFar
  12535.  
  12536. Synopsis........Copy from far pointer to standard pointer.
  12537.  
  12538. Header File.....TCXLfar.h
  12539.  
  12540. Source File.....HDW\_FARGET.ASM
  12541.  
  12542. Prototype.......VOID PAS _FarGet(BytP p, WrdT s, WrdT o, WrdT n);
  12543.                 VOID PAS _GetFar(BytP p, BytFP f, WrdT n);
  12544.  
  12545. Arguments.......p  -  Destination Pointer
  12546.                 s  -  Source Segment
  12547.                 o  -  Source Offset
  12548.                 f  -  Far Pointer to Source
  12549.                 n  -  Number of Characters to copy
  12550.  
  12551. Returns.........None.
  12552. ---------------------------------------------------------------------------
  12553. _FarPut
  12554. _PutFar
  12555.  
  12556. Synopsis........Copy from standard pointer to far pointer.
  12557.  
  12558. Header File.....TCXLfar.h
  12559.  
  12560. Source File.....HDW\_FARGET.ASM
  12561.  
  12562. Prototype.......VOID PAS _FarGet(WrdT s, WrdT o, BytP p, WrdT n);
  12563.                 VOID PAS _PutFar(BytFP t, BytP p, WrdT n);
  12564.  
  12565. Arguments.......s  -  Destination Segment
  12566.                 o  -  Destination Offset
  12567.                 t  -  Far Pointer to Destination
  12568.                 p  -  Source Pointer
  12569.                 n  -  Number of Characters to copy
  12570.  
  12571. Returns.........None.
  12572.  
  12573.  
  12574.  
  12575.  
  12576.  
  12577.  
  12578.  
  12579.  
  12580.  
  12581.  
  12582.  
  12583.  
  12584.  
  12585.  
  12586.  
  12587.  
  12588.  
  12589.  
  12590. Page 200                                 TesSeRact CXL V5.52 Documentation
  12591.                              Memory Subsystem
  12592.  
  12593.  
  12594. The routines  provided in the Memory Subsystem were originally designed for
  12595. the IBM-PC/MS-DOS  environment. Although  Extended and Expanded memory have
  12596. no analog  in other  environments, these  routines will be available on all
  12597. systems to provide full compatibility.  Under Non-MS-DOS implementations of
  12598. TCXL, all the Memory Subsystem allocation routines will fail.
  12599.  
  12600. The function  descriptions and  prototype information  for the expanded and
  12601. extended memory functions are described in the Appendix G.
  12602.  
  12603.                               Memory Routines
  12604.  
  12605. ---------------------------------------------------------------------------
  12606. _MemInit
  12607.  
  12608. Synopsis........Initializes the Memory Subsystem.  It is called
  12609.                 automatically from inside TcxlInit().
  12610.  
  12611. Header File.....TCXLmem.h
  12612.  
  12613. Prototype.......VOID PAS MemInit(NOARG);
  12614.  
  12615. Source File.....MEM\MEMINIT.ASM
  12616.  
  12617. Arguments.......None.
  12618.  
  12619. Returns.........None.
  12620. ---------------------------------------------------------------------------
  12621. _MemTerm
  12622.  
  12623. Synopsis........Unhook the memory subsystem.
  12624.  
  12625. Header File.....TCXLmem.h
  12626.  
  12627. Prototype.......VOID MemTerm(NOARG);
  12628.  
  12629. Arguments.......None.
  12630.  
  12631. Returns.........None.
  12632.  
  12633. Notes...........This routine currently does nothing.  It is provided for
  12634.                 future compatibility.
  12635.  
  12636.  
  12637.  
  12638.  
  12639.  
  12640.  
  12641.  
  12642.  
  12643.  
  12644.  
  12645.  
  12646.  
  12647.  
  12648.  
  12649. TesSeRact CXL V5.52 Documentation                                 Page 201
  12650.                              Printer Subsystem
  12651.  
  12652.  
  12653.                              Printer Routines
  12654.  
  12655. ---------------------------------------------------------------------------
  12656. _LPputC (Internal)
  12657.  
  12658. Synopsis........This is an internal routine to output a character to the
  12659.                 printer port, expanding a single "\n" to "\r\n".
  12660.  
  12661. Header File.....TCXLprn.h
  12662.  
  12663. Prototype.......VOID PAS _LPputC(IntT ch);
  12664.  
  12665. Source File.....PRT\_LPPUTC.ASM
  12666.  
  12667. Arguments.......ch -  Char to Output
  12668.  
  12669. Returns.........None.
  12670. ---------------------------------------------------------------------------
  12671. lcrlf
  12672.  
  12673. Synopsis........Prints a carriage return and line feed on the printer
  12674.                 (PRN).
  12675.  
  12676. Header File.....tcxlprn.h
  12677.  
  12678. Prototype.......VOID lcrlf(NOARG);
  12679.  
  12680. Arguments.......None.
  12681.  
  12682. Returns.........None.
  12683. ---------------------------------------------------------------------------
  12684. lprintc
  12685.  
  12686. Synopsis........Prints a character on the printer (PRN).
  12687.  
  12688. Header File.....TCXLprn.h
  12689.  
  12690. Prototype.......VOID lprintc(IntT ch);
  12691.  
  12692. Arguments.......ch -  Character to print
  12693.  
  12694. Returns.........None.
  12695.  
  12696.  
  12697.  
  12698.  
  12699.  
  12700.  
  12701.  
  12702.  
  12703.  
  12704.  
  12705.  
  12706.  
  12707.  
  12708. Page 202                                 TesSeRact CXL V5.52 Documentation
  12709. ---------------------------------------------------------------------------
  12710. lprintf
  12711.  
  12712. Synopsis........Sends formatted output to the printer (PRN).  Works similar
  12713.                 to the standard C printf() function.
  12714.  
  12715. Header File.....TCXLprn.h
  12716.  
  12717. Prototype.......VOID CDC lprintf(ChrP fs, ...);
  12718.  
  12719. Source File.....PRT\LPRINTF.C
  12720.  
  12721. Arguments.......fs -  Format String
  12722.                 ...   -  Additional Arguments
  12723.  
  12724. Returns.........None.
  12725. ---------------------------------------------------------------------------
  12726. lprintn
  12727.  
  12728. Synopsis........Prints a fixed width buffer on the printer (PRN).
  12729.  
  12730. Header File.....TCXLprn.h
  12731.  
  12732. Prototype.......VOID CTYP lprintn(ChrP ps, IntT nc);   
  12733.  
  12734. Source File.....PRT\LPRINTN.C
  12735.  
  12736. Arguments.......ps -  Buffer to Print
  12737.                 nc -  Number of Bytes to Print
  12738.  
  12739. Returns.........None.
  12740. ---------------------------------------------------------------------------
  12741. lprintns
  12742.  
  12743. Synopsis........Prints a string to a fixed width on the printer (PRN).
  12744.  
  12745. Header File.....TCXLprn.h
  12746.  
  12747. Prototype.......VOID CTYP lprintns(ChrP ps, IntT nc);
  12748.  
  12749. Source File.....PRT\LPRINTNS.C
  12750.  
  12751. Arguments.......ps -  String to Print
  12752.                 nc -  Number of Characters to Print
  12753.  
  12754. Returns.........None
  12755.  
  12756.  
  12757.  
  12758.  
  12759.  
  12760.  
  12761.  
  12762.  
  12763.  
  12764.  
  12765.  
  12766.  
  12767. TesSeRact CXL V5.52 Documentation                                 Page 203
  12768. ---------------------------------------------------------------------------
  12769. lprints
  12770.  
  12771. Synopsis........Prints a string on the printer (PRN).
  12772.  
  12773. Header File.....TCXLprn.h
  12774.  
  12775. Prototype.......VOID CTYP lprints(ChrP ps);
  12776.  
  12777. Source File.....PRT\LPRINTS.C
  12778.  
  12779. Arguments.......ps -  String to Print
  12780.  
  12781. Returns.........None.
  12782. ---------------------------------------------------------------------------
  12783. lprintsb
  12784.  
  12785. Synopsis........Prints a bold-faced string on the printer (PRN).
  12786.  
  12787. Header File.....TCXLprn.h
  12788.  
  12789. Prototype.......VOID CTYP lprintsb(ChrP ps, IntT nr);  
  12790.  
  12791. Source File.....PRT\LPRINTSB.C
  12792.  
  12793. Arguments.......ps -  String to Print
  12794.                 nr -  Number of Repetitions
  12795.  
  12796. Returns.........None
  12797. ---------------------------------------------------------------------------
  12798. lprintsu
  12799.  
  12800. Synopsis........Prints an underlined string on the printer (PRN).
  12801.  
  12802. Header File.....TCXLprn.h
  12803.  
  12804. Prototype.......VOID CTYP lprintsu(ChrP ps);
  12805.  
  12806. Source File.....PRT\LPRINTSU.C
  12807.  
  12808. Arguments.......ps -  String to Print
  12809.  
  12810. Returns.........None
  12811.  
  12812.  
  12813.  
  12814.  
  12815.  
  12816.  
  12817.  
  12818.  
  12819.  
  12820.  
  12821.  
  12822.  
  12823.  
  12824.  
  12825.  
  12826. Page 204                                 TesSeRact CXL V5.52 Documentation
  12827. ---------------------------------------------------------------------------
  12828. scrndump
  12829.  
  12830. Synopsis........Dumps the current screen to the printer (PRN).
  12831.  
  12832. Header File.....TCXLprn.h
  12833.  
  12834. Prototype.......VOID CTYP scrndump(NOARG);
  12835.  
  12836. Source File.....UTL\SCRNDUMP.C
  12837.  
  12838. Arguments.......None.
  12839.  
  12840. Returns.........None.
  12841. ---------------------------------------------------------------------------
  12842. windump
  12843.  
  12844. Synopsis........Dumps a screen window to the printer (PRN).
  12845.  
  12846. Header File.....TCXLprn.h
  12847.  
  12848. Prototype.......VOID CTYP windump(IntT sr, IntT sc, IntT er, IntT ec);
  12849.  
  12850. Arguments.......sr -  Start Row
  12851.                 sc -  Start Column
  12852.                 er -  End Row
  12853.                 ec -  End Column
  12854.  
  12855. Returns.........None.
  12856.  
  12857.  
  12858.  
  12859.  
  12860.  
  12861.  
  12862.  
  12863.  
  12864.  
  12865.  
  12866.  
  12867.  
  12868.  
  12869.  
  12870.  
  12871.  
  12872.  
  12873.  
  12874.  
  12875.  
  12876.  
  12877.  
  12878.  
  12879.  
  12880.  
  12881.  
  12882.  
  12883.  
  12884.  
  12885. TesSeRact CXL V5.52 Documentation                                 Page 205
  12886.                        Appendix A - Text Attributes
  12887.  
  12888.   Foreground Colors                 Background Colors
  12889.  
  12890.   Identifier  Value  Color          Identifier Value Color
  12891.   --------------------------        --------------------------
  12892.   BLACK       0x00   Black          _BLACK     0x00  Black
  12893.   BLUE        0x01   Blue           _BLUE      0x10  Blue
  12894.   GREEN       0x02   Green          _GREEN     0x20  Green
  12895.   CYAN        0x03   Cyan           _CYAN      0x30  Cyan
  12896.   RED         0x04   Red            _RED       0x40  Red
  12897.   MAGENTA     0x05   Magenta        _MAGENTA   0x50  Magenta
  12898.   BROWN       0x06   Brown          _BROWN     0x60  Brown
  12899.   LGREY       0x07   Light Grey     _LGREY     0x70  Light Grey
  12900.   DGREY       0x08   Dark Grey      _DGREY     0x80  Dark Grey
  12901.   LBLUE       0x09   Light Blue     _LBLUE     0x90  Light Blue
  12902.   LGREEN      0x0A   Light Green    _LGREEN    0xA0  Light Green
  12903.   LCYAN       0x0B   Light Cyan     _LCYAN     0xB0  Light Cyan
  12904.   LRED        0x0C   Light Red      _LRED      0xC0  Light Red
  12905.   LMAGENTA    0x0D   Light Magenta  _LMAGENTA  0xD0  Light Magenta
  12906.   YELLOW      0x0E   Yellow         _YELLOW    0xE0  Yellow
  12907.   WHITE       0x0F   White          _WHITE     0xF0  White
  12908.   INTENSE     0x08   Intensity Bit  _BLINK     0x80  Blink/Int Bit
  12909.  
  12910.  
  12911.   Monochrome Colors
  12912.  
  12913.   Identifier  Value  Description
  12914.   --------------------------------
  12915.   MONO_N      0x07   Normal
  12916.   MONO_I      0x0F   Intense
  12917.   MONO_U      0x01   Underline
  12918.   MONO_IU     0x09   Intense Underline
  12919.   MONO_R      0x70   Reverse
  12920.   MONO_NB     0x87   Blink Normal
  12921.   MONO_IB     0x8F   Blink Intense
  12922.   MONO_UB     0x81   Blink Underline
  12923.   MONO_IUB    0x89   Blink Intense Underline
  12924.   MONO_RB     0xF0   Blink Reverse
  12925.   MONO_INT    0x80   Blink Bit
  12926.  
  12927.  
  12928.  
  12929.  
  12930.  
  12931.  
  12932.  
  12933.  
  12934.  
  12935.  
  12936.  
  12937.  
  12938.  
  12939.  
  12940.  
  12941.  
  12942.  
  12943.  
  12944. Page 206                                 TesSeRact CXL V5.52 Documentation
  12945.                         Appendix B - Keycode Table
  12946.  
  12947.  
  12948.                    (Note:  All Keycodes are Hex values)
  12949.  
  12950.  
  12951.               Also See TCXLcod.H for Keyboard Mapping Equates
  12952.  
  12953.   Key   Norm  Shift  Ctrl  Alt        Key      Norm  Shift  Ctrl  Alt
  12954.   ----  ----  -----  ----  ----       ----     ----  -----  ----  ----
  12955.   A.....1E61..1E41...1E01..1E00       F1.......3B00..5400...5E00..6800
  12956.   B.....3062..3042...3002..3000       F2.......3C00..5500...5F00..6900
  12957.   C.....2E63..2E43...2E03..2E00       F3.......3D00..5600...6000..6A00
  12958.   D.....2064..2044...2004..2000       F4.......3E00..5700...6100..6B00
  12959.   E.....1265..1245...1205..1200       F5.......3F00..5800...6200..6C00
  12960.   F.....2166..2146...2106..2100       F6.......4000..5900...6300..6D00
  12961.   G.....2267..2247...2207..2200       F7.......4100..5A00...6400..6E00
  12962.   H.....2368..2348...2308..2300       F8.......4200..5B00...6500..6F00
  12963.   I.....1769..1749...1709..1700       F9.......4300..5C00...6600..7000
  12964.   J.....246A..244A...240A..2400       F10......4400..5D00...6700..7100
  12965.   K.....256B..254B...250B..2500       Enter....1C0D..1C0D...1C0A..N/A
  12966.   L.....266C..264C...260C..2600       Ins......5200..5230...N/A...N/A
  12967.   M.....326D..324D...320D..3200       Del......5300..532E...N/A...N/A
  12968.   N.....316E..314E...310E..3100       Esc......011B..011B...011B..N/A
  12969.   O.....186F..184F...180F..1800       Home.....4700..4737...7700..N/A
  12970.   P.....1970..1950...1910..1900       End......4F00..4F31...7500..N/A
  12971.   Q.....1071..1051...1011..1000       PgUp.....4900..4939...8400..N/A
  12972.   R.....1372..1352...1312..1300       PgDn.....5100..5133...7600..N/A
  12973.   S.....1F73..1F53...1F13..1F00       <Tab>....0F09..0F00...N/A...N/A
  12974.   T.....1474..1454...1414..1400       <BckSpc>.0E08..0E08...0E7F..N/A
  12975.   U.....1675..1655...1615..1600       <LfArr>..4B00..4B34...7300..N/A
  12976.   V.....2F76..2F56...2F16..2F00       <RtArr>..4D00..4D36...7400..N/A
  12977.   W.....1177..1157...1117..1100       <UpArr>..4800..4838...N/A...N/A
  12978.   X.....2D78..2D58...2D18..2D00       <DnArr>..5000..5032...N/A...N/A
  12979.   Y.....1579..1559...1519..1500       <Kpad 5>.N/A...4C35...N/A...N/A
  12980.   Z.....2C7A..2C5A...2C1A..2C00       <Grey *>.372A..N/A....7200..N/A
  12981.   1.....0231..0221...N/A...7800       <Grey ->.4A2D..4A2D...N/A...N/A
  12982.   2.....0332..0340...0300..7900       <Grey +>.4E2B..4E2B...N/A...N/A
  12983.   3.....0433..0423...N/A...7A00
  12984.   4.....0534..0524...N/A...7B00
  12985.   5.....0635..0625...N/A...7C00
  12986.   6.....0736..075E...071E..7D00
  12987.   7.....0837..0826...N/A...7E00
  12988.   8.....0938..092A...N/A...7F00
  12989.   9.....0A39..0A28...N/A...8000
  12990.   0.....0B30..0B29...N/A...8100
  12991.   ,.....332C..333C...N/A...N/A
  12992.   ......342E..343E...N/A...N/A
  12993.   /.....352F..353F...N/A...N/A
  12994.   ;.....273B..273A...N/A...N/A
  12995.   '.....2827..2822...N/A...N/A
  12996.   [.....1A5B..1A7B...1A1B..N/A
  12997.   ].....1B5D..1B7D...1B1D..N/A
  12998.   `.....2960..297E...N/A...N/A
  12999.   -.....0C2D..0C5F...0C1F..8200
  13000.   =.....0D3D..0D2B...N/A...8300
  13001.   \.....2B5C..2B7C...2B1C..N/A
  13002.  
  13003. TesSeRact CXL V5.52 Documentation                                 Page 207
  13004.                   Appendix C - Window Output Escape Codes
  13005.  
  13006.  
  13007.                 Escape
  13008.                 Code     Function
  13009.                 ------   --------
  13010.                 +........increase text attribute
  13011.                 -........decrease text attribute
  13012.                 Ax.......set text attribute to (x)
  13013.                 Fx.......set foreground text attribute to (x)
  13014.                 Bx.......set background text attribute to (x)
  13015.                 I........toggle intensity
  13016.                 L........toggle blink
  13017.                 X........reverse text attribute
  13018.                 Rx.......set window row coordinate to (x)
  13019.                 Cx.......set window column coordinate to (x)
  13020.                 Ex.......erase (x):
  13021.                       W....entire window, home cursor
  13022.                       L....to end-of-line
  13023.                       S....to end-of-window
  13024.                 Dxy......display (x) character (y) times
  13025.  
  13026. Window output  Escape codes  are only  available in  the window  TTY output
  13027. string functions.   Valid  functions are  the  entire  Wput..()  series  of
  13028. functions, incuding  Wputs(), Wputf(),  etc.   Also, the  text inside  help
  13029. files can  contain Escape  codes (excluding  cross-reference items).    The
  13030. Escape code parameters MUST be character (byte) size.  Parameters should be
  13031. input as  binary.   For example,  5 would be '\005'.  If you are using them
  13032. from inside  a Wputf() format string, you can use the '%c' format specifier
  13033. to supply the parameter from the list of variables.
  13034.  
  13035. Example:        Wputf("\033A%cNormal \033IBright\033I \033LBlink\033L"
  13036.                 " \033XReverse\033X\n",CYAN|_BLUE);
  13037.  
  13038.                 Wputf("\033R%c\033C%cRow %d, Col %d\n",3,5,3,5);
  13039.  
  13040.                 Wputs("\033DA\014 = 'A' 12 times\n");
  13041.  
  13042.  
  13043.  
  13044.  
  13045.  
  13046.  
  13047.  
  13048.  
  13049.  
  13050.  
  13051.  
  13052.  
  13053.  
  13054.  
  13055.  
  13056.  
  13057.  
  13058.  
  13059.  
  13060.  
  13061.  
  13062. Page 208                                 TesSeRact CXL V5.52 Documentation
  13063.                   Appendix D - Format Control Characters
  13064.  
  13065.  
  13066.   FCC      Description
  13067.   ---      -----------
  13068.  
  13069.  
  13070.  
  13071.  
  13072.  
  13073.  
  13074.  
  13075.  
  13076.  
  13077.  
  13078.  
  13079.  
  13080.  
  13081.  
  13082.  
  13083.  
  13084.  
  13085.  
  13086.  
  13087.  
  13088.  
  13089.  
  13090.  
  13091.  
  13092.  
  13093.  
  13094.  
  13095.  
  13096.  
  13097.  
  13098.  
  13099.  
  13100.  
  13101.  
  13102.  
  13103.  
  13104.  
  13105.  
  13106.  
  13107.  
  13108.  
  13109.  
  13110.  
  13111.  
  13112.  
  13113.  
  13114.  
  13115.  
  13116.  
  13117.  
  13118.  
  13119.  
  13120.  
  13121. TesSeRact CXL V5.52 Documentation                                 Page 209
  13122.   #........Allows numeric characters '0' thru '9'.
  13123.   %........Allows numeric characters '0' thru '9' and ' '.
  13124.   9........Allows numeric characters '0' thru '9', '.', '-', and '+'.
  13125.              This field is for floating-point numeric input.  The
  13126.              decimal does NOT need to appear in the format string, as in
  13127.              previous versions.  The decimal IS returned as part of the
  13128.              input buffer.  If the decimal point does not appear in this
  13129.              string, then the field will be treated as pure floating
  13130.              point, and the first time you press a decimal, the number
  13131.              of decimal places will be determined.
  13132.   $........Allows numeric characters '0' thru '9', '.', '-', and '+'.
  13133.              This field is for currency input.  TCXL treats it as
  13134.              floating-point input ('9'), but the displayed field will
  13135.              show a '$'.  This field format is valid only in an entry
  13136.              form, and uses the currency prefix/suffix/separator
  13137.              characters defined in _EntCtl.
  13138.   ?........Allows any character.
  13139.   *........Allows any printable character.
  13140.   A........Allows alpha characters 'A' thru 'Z', 'a' thru 'z', and ' '.
  13141.   D........Allows date characters '0' thru '9', '-', and '/'.
  13142.   F........Allows legal MS-DOS filename characters.
  13143.   H........Allows hexadecimal characters '0' thru '9', 'A' thru 'F', and
  13144.              'a' thru 'f'.
  13145.   L........Allows alpha characters 'A' thru 'Z', 'a' thru 'z', and ' '.
  13146.              Input letters will be converted to lowercase.
  13147.   M........Allows alpha characters 'A' thru 'Z', 'a' thru 'z', and ' '.
  13148.              Input letters will be converted to mixed case
  13149.   P........Allows alpha characters 'A' thru 'Z', 'a' thru 'z', and ' '.
  13150.              Input letters will be displayed as spaces, which is useful
  13151.              for entering passwords.
  13152.   T........Allows telephone number characters '0' thru '9', '(', ')','-
  13153.              ', and ' '.
  13154.   U........Allows alpha characters 'A' thru 'Z', 'a' thru 'z', and ' '.
  13155.              Input letters will be converted to uppercase.
  13156.   W........Allows legal MS-DOS filename characters, including wildcards.
  13157.   X........Allows alphanumeric characters 'A' thru 'Z', 'a' thru 'z',
  13158.              '0' thru '9', and ' '.
  13159.   Y........Allows yes/no response characters 'Y', 'N', 'y', and 'n'.
  13160.   (space)..Space characters can be used throughout a format string to
  13161.              improve its readability.
  13162.   <........Start of inclusion set.  An inclusion set allows you to
  13163.              specify the only allowable characters for a position.
  13164.   >........End of inclusion set.  Any characters listed between the left
  13165.              and right angle brackets are part of the set.
  13166.   [........Start of exclusion set.  An exclusion set allows you to
  13167.              specify characters that aren't allowed in that position.
  13168.   ]........End of exclusion set.  Any characters listed between the left
  13169.              and right square brackets are part of the set.
  13170.   '........Start or end of quoted text that will be displayed either in
  13171.              the input field or as you are typing.  All characters in
  13172.              between the start and end quotes will be displayed as text.
  13173.   "........Same as the single quote.  Is useful if you need to actually
  13174.              display a single quote as text.  Note that in C, you must
  13175.              represent the double quote as:  \"
  13176.  
  13177.  
  13178.  
  13179.  
  13180. Page 210                                 TesSeRact CXL V5.52 Documentation
  13181.   !........Start and stop a command toggle sequence.  Any characters in
  13182.              between the start and stop exclamation points are treated
  13183.              as command toggles.  You can have as many command toggles
  13184.              as you like between the exclamation points.  Valid command
  13185.              toggles are listed below.  Command Toggles are valid with
  13186.              KvGetFmt() and KwGetFmt() only!
  13187.   Command
  13188.   Toggle   Description
  13189.   -------  -----------
  13190.   -........Decreases text attribute.  Valid with KwGetFmt() only.
  13191.   +........Increases text attribute.  Valid with KwGetFmt() only.
  13192.   C........Toggles copying of quoted characters to receiving buffer.
  13193.              Default is off.
  13194.   E........Toggles Escape checking.  When on, if [Esc] is pressed, the
  13195.              receiving buffer will be emptied and an error code will be
  13196.              returned.  Default is on.
  13197.   L........Toggles lower-case conversion.  When on, all input letters
  13198.              will be forced to lower-case.  Default is off.
  13199.   M........Toggles mixed-case conversion.  When on, input letters will
  13200.              be forced to upper-case for the first letter of each word
  13201.              and lower-case for the remaining letters.  Default is off.
  13202.   P........Toggles password mode.  When on, input characters will be
  13203.              echoed to the screen as spaces.  This is useful for
  13204.              password fields.  Default is off.
  13205.   R........Toggles Return checking.  When off, if [Enter] is pressed, it
  13206.              will be ignored.  This is useful for forcing the user's
  13207.              input.  Default is on.
  13208.   U........Toggles upper-case conversion.  When on, input letters will
  13209.              be forced to upper-case.  Default is off.
  13210.  
  13211. Examples:
  13212.  
  13213.           KvGetFmt(name,"'Enter name:  ' !UR! XXXXX !R! XXXXXXXXXX");
  13214.  
  13215. Prompts for  name, inputs  string from  keyboard converting  characters  to
  13216. uppercase as  it goes,  allows up  to 15  alphanumeric characters as input.
  13217. The return  key is  disabled until at least 5 characters have been entered.
  13218. Input characters  will be  copied to the receiving buffer, name, which must
  13219. be large  enough to  hold all  16 characters - 15 for the input string, and
  13220. one for the terminating '\0'.
  13221.  
  13222.           KwGetFmt(phone," 'Enter phone:  '!RC! '(' ### ') ' ### '-'
  13223.               ####");
  13224.  
  13225. Prompts for  a full  phone number  including area  code, allows  only digit
  13226. characters and  displays format  punctuation as  it goes.  The entire field
  13227. must be  filled before return can be pressed.  All of the characters except
  13228. the prompt will be copied to the receiving buffer, phone.  This buffer must
  13229. be large  enough to  hold 15 characters - 10 for the phone number digits, 4
  13230. for the copied punctuation characters, and 1 for the terminating '\0'.
  13231.  
  13232.           EntFld( 1,16,date,"<01>#'/'<0123>#'/'<89>#",0,0,NULL,0);
  13233.  
  13234. Defines an input field that will accept a MMDDYY date.  Note the use of the
  13235. inclusion set '<' and '>' characters to aid in allowing only valid numbers.
  13236. The receiving  buffer, date,  must be  at least  7 characters to hold the 6
  13237. date characters and the terminating '\0'.
  13238.  
  13239. TesSeRact CXL V5.52 Documentation                                 Page 211
  13240.                   Appendix E - Movement and Editing Keys
  13241.  
  13242.   Field Editing Key  Action
  13243.   -----------------  ------
  13244.   LeftArrow..........cursor left
  13245.   RightArrow.........cursor right
  13246.   UpArrow............cursor up
  13247.   DownArrow..........cursor down
  13248.   Ctrl-LeftArrow.....word left
  13249.   Ctrl-RightArrow....word right
  13250.   Tab................field right
  13251.   Shift-Tab..........field left
  13252.   Enter..............process field
  13253.   Ctrl-Enter.........process all fields
  13254.   Decimal (.)........move to right side of decimal point
  13255.   Home...............beginning of field
  13256.   End................end of field line / end of field
  13257.   Ctrl-Home..........beginning of first field
  13258.   Ctrl-End...........end of last field
  13259.   Ins................toggle field insert mode
  13260.   Del................delete character at cursor
  13261.   BackSpace..........delete character left
  13262.   Ctrl-BackSpace.....delete word left
  13263.   Ctrl-R.............restore field to original contents
  13264.   Ctrl-T.............delete word right
  13265.   Ctrl-U.............delete to end of field
  13266.   Ctrl-Y.............delete to end of last field
  13267.   Esc................abort data entry (if Escape checking is on)
  13268.  
  13269.  
  13270.  
  13271.   Menu Movement Key  Action
  13272.   -----------------  ------
  13273.   LeftArrow..........moves selection bar to item left.
  13274.   RightArrow.........moves selection bar to item right.
  13275.   UpArrow............moves selection bar to item upwards.
  13276.   DownArrow..........moves selection bar to item downwards.  If the
  13277.              current menu item has a pull-down menu attached, then it
  13278.              will be opened for processing.
  13279.   Enter..............selects the item that the selection bar is on.  If
  13280.              selected item has a sub-menu attached, then processing of
  13281.              that menu will begin.
  13282.   Home...............moves selection bar to upper-leftmost item.
  13283.   End................moves selection bar to lower-rightmost item.
  13284.   Esc................if Escape checking is on, and your are in the root
  13285.              menu, pressing this cancels input and returns a -1. If
  13286.              inside a sub-menu, then you will just back up to the
  13287.              previous menu.
  13288.  
  13289.  
  13290.  
  13291.  
  13292.  
  13293.  
  13294.  
  13295.  
  13296.  
  13297.  
  13298. Page 212                                 TesSeRact CXL V5.52 Documentation
  13299.                       Appendix F - Global Error Codes
  13300.  
  13301.   ERR_MEM     (-2)   Allocation failure
  13302.   ERR_ARG     (-1)   Argument failure
  13303.   ERR_NUL     0      Successful return
  13304.  
  13305.  
  13306.   W_ESCPRESS  0x01   Escape Key Was Pressed
  13307.   W_ALLOCERR  0x02   Memory Allocation Error
  13308.   W_NOTFOUND  0x03   Record Not Found
  13309.   W_NOACTIVE  0x04   No Active Window
  13310.   W_INVCOORD  0x05   Invalid Coordinates
  13311.   W_INVFORMT  0x06   Invalid Format String
  13312.   W_NOINPDEF  0x07   No Input Fields Defined
  13313.   W_STRLONG   0x08   String Too Long For Window
  13314.   W_INVBTYPE  0x09   Invalid Border Type
  13315.   W_NOBORDER  0x0A   No Window Border
  13316.   W_NOHIDDEN  0x0B   No Hidden Windows
  13317.   W_NOTHIDD   0x0C   Window Is Not Hidden
  13318.   W_NOSELECT  0x0D   No Selectable Menu Items
  13319.   W_NOITMDEF  0x0E   No Menu Items Defined
  13320.   W_NOMNUEND  0x0F   No End Of Menu Specified
  13321.   W_NOMNUDEF  0x10   No Menu Defined
  13322.   W_NOMNUBEG  0x11   No Begin Of Menu Specified
  13323.   W_NOFRMDEF  0x12   No Form Defined
  13324.   W_NOFRMBEG  0x13   No Begin Of Form Specified
  13325.   W_NOHLPDEF  0x14   No Help Record Defined
  13326.   W_HLPSTKOV  0x15   Help Stack Overflow
  13327.   W_HLPSTKUN  0x16   Help Stack Underflow
  13328.   W_DOSERROR  0x17   DOS Error
  13329.   W_NOMATCH   0x18   No Files Matched Input Filespec
  13330.   W_INVTAGID  0x19   Invalid Tag Identifier
  13331.   W_INVPATH   0x1A   Path Invalid Or Not Found
  13332.   W_FRMISDEF  0x1B   Entry-form already defined
  13333.   W_FRMSTKOV  0x1C   Form-stack overflow
  13334.   W_FRMSTKUN  0x1D   Form-stack underflow
  13335.   W_NOHLPFIL  0x1E   No help-file found
  13336.   W_INP2MANY  0x1F   Too many entry-fields
  13337.   W_MNU2MANY  0x20   Too many menu-items
  13338.   W_INP2FEW   0x21   Not enough entry-fields
  13339.   W_NOINPENA  0x22   No enabled entry-field
  13340.   W_MNU2FEW   0x23   Not enough menu items
  13341.  
  13342.  
  13343.  
  13344.  
  13345.  
  13346.  
  13347.  
  13348.  
  13349.  
  13350.  
  13351.  
  13352.  
  13353.  
  13354.  
  13355.  
  13356.  
  13357. TesSeRact CXL V5.52 Documentation                                 Page 213
  13358.                   Appendix G - OS/2 Specific Information
  13359.  
  13360.  
  13361.                            Notes about compilers
  13362.  
  13363.  
  13364. TCXL-OS/2 currently  supports Microsoft C, TopSpeed C/C++, Watcom C 8.5 and
  13365. Zortech C/C++ 3.0.
  13366.  
  13367. TCXL-OS/2 fully  supports all  TCXL-DOS functionality,  with the  following
  13368. exceptions:
  13369.  
  13370.   There is no cricitical error handler support.
  13371.  
  13372.   There is no Ultravision support.
  13373.  
  13374.   The routines  in the  Memory and Information Subsystems have been stubbed
  13375.      out, and have no effect.
  13376.  
  13377.  
  13378. Please note that the Watcom and Zortech compilers do not ship with the OS/2
  13379. header files;  either the  IBM or  Microsoft OS/2  Programmer's Toolkit  is
  13380. required to  recompile the library.  This toolkit is not necessary to build
  13381. your applications; just to rebuild the TCXL-OS/2 libraries.
  13382.  
  13383. If you  are using  TopSpeed C/C++,  you must  copy OS2PM.H  to OS2.H before
  13384. rebuilding the TCXL Libraries.
  13385.  
  13386.  
  13387.  
  13388.  
  13389.  
  13390.  
  13391.  
  13392.  
  13393.  
  13394.  
  13395.  
  13396.  
  13397.  
  13398.  
  13399.  
  13400.  
  13401.  
  13402.  
  13403.  
  13404.  
  13405.  
  13406.  
  13407.  
  13408.  
  13409.  
  13410.  
  13411.  
  13412.  
  13413.  
  13414.  
  13415.  
  13416. Page 214                                 TesSeRact CXL V5.52 Documentation
  13417.                          Mid-Level Mouse Functions
  13418.  
  13419.  
  13420. For normal  purposes, it  is not  necessary for users to call the mid-level
  13421. mouse functions.  All mouse support is internal to the upper-level systems,
  13422. and totally  automatic.   If it  becomes necessary  to call these low level
  13423. functions, test  your code  carefully; we do not guarantee that full status
  13424. information will  be maintained  once these  functions are  called.   These
  13425. functions are  also dependent  on mouse driver capabilities, and may not be
  13426. portable to other operating environments/hardware platforms.
  13427.  
  13428.  
  13429. ---------------------------------------------------------------------------
  13430. MSgoto
  13431.  
  13432. Synopsis........Absolutely position mouse cursor
  13433.  
  13434. Header File.....TCXLmou.h
  13435.  
  13436. Prototype.......VOID PAS MSgoto(IntT r, IntT c);
  13437.  
  13438. Source File.....MOU\MSGOTO.ASM
  13439. ---------------------------------------------------------------------------
  13440. MSlimit
  13441.  
  13442. Synopsis........Limit mouse cursor to specified screen area
  13443.  
  13444. Header File.....TCXLmou.h
  13445.  
  13446. Prototype.......VOID PAS MSlimit(IntT sr, IntT sc, IntT er, IntT ec);
  13447.  
  13448. Source File.....MOU\MSLIMIT.ASM
  13449. ---------------------------------------------------------------------------
  13450. MSmove
  13451.  
  13452. Synopsis........Read mouse driver motion counters into global _MouCtl
  13453.                 object.
  13454.  
  13455. Header File.....TCXLmou.h
  13456.  
  13457. Prototype.......VOID PAS MSmove(NOARG);
  13458.  
  13459. Source File.....MOU\MSMOVE.ASM
  13460. ---------------------------------------------------------------------------
  13461. MSpress
  13462.  
  13463. Synopsis........Update global _MouCtl object with button press information.
  13464.  
  13465. Header File.....TCXLmou.h
  13466.  
  13467. Prototype.......VOID PAS MSpress(IntT b);
  13468.  
  13469. Source File.....MOU\MSPRESS.ASM
  13470.  
  13471.  
  13472.  
  13473.  
  13474.  
  13475. TesSeRact CXL V5.52 Documentation                                 Page 215
  13476. ---------------------------------------------------------------------------
  13477. MSreles
  13478.  
  13479. Synopsis........Update global _MouCtl object with button release
  13480.                 information.
  13481.  
  13482. Header File.....TCXLmou.h
  13483.  
  13484. Prototype.......VOID PAS MSreleas(IntT b);
  13485.  
  13486. Source File.....MOU\MSPRESS.ASM
  13487. ---------------------------------------------------------------------------
  13488. MSreset
  13489.  
  13490. Synopsis........Reset mouse hardware/software, maintaining mouse support
  13491.                 level.
  13492.  
  13493. Header File.....TCXLmou.h
  13494.  
  13495. Prototype.......VOID POS MSreset(NOARG);
  13496.  
  13497. Source File.....MOU\TCXLMOU.ASM
  13498. ---------------------------------------------------------------------------
  13499. MSspeed
  13500.  
  13501. Synopsis........Reset mouse speed by adjusting mickey/pixel ratios.
  13502.  
  13503. Header File.....TCXLmou.h
  13504.  
  13505. Prototype.......VOID PAS MSspeed(IntT x, IntT y);
  13506.  
  13507. Source File.....MOU\MSMOVE.ASM
  13508. ---------------------------------------------------------------------------
  13509. MSstat
  13510.  
  13511. Synopsis........If mouse is enabled, get current position and button status
  13512.                 bits to mouse control structure
  13513.  
  13514. Header File.....TCXLmou.h
  13515.  
  13516. Prototype.......VOID PAS MSstat(NOARG);
  13517.  
  13518. Source File.....MOU\TCXLMOU.ASM
  13519. ---------------------------------------------------------------------------
  13520. MSupdat
  13521.  
  13522. Synopsis........Call mouse driver to conditionally hide or show mouse
  13523.                 cursor before update of passed screen area.
  13524.  
  13525. Header File.....TCXLmou.h
  13526.  
  13527. Prototype.......FlgT PAS MSupdat(FlgT hs, IntT sr, IntT sc, IntT er,
  13528.                      IntT ec)
  13529.  
  13530. Source File.....MOU\MSUPDAT.ASM
  13531.  
  13532.  
  13533.  
  13534. Page 216                                 TesSeRact CXL V5.52 Documentation
  13535.                        IBM Enhanced Keyboard Support
  13536.  
  13537. ---------------------------------------------------------------------------
  13538. KextOff
  13539. KextOn
  13540. KfixOff
  13541. KfixOn
  13542.  
  13543. Synopsis........If an enhanced (101-Key) keyboard is detected at startup
  13544.                 time, the default action is to enable the extended keyboard
  13545.                 BIOS and to translate all enhanced keycodes to their normal
  13546.                 equivalents.  KextOn() and KextOff() enable/disable the
  13547.                 extended BIOS function calls, and KfixOn() and KfixOff()
  13548.                 enable/disable the enhanced keycode translation.
  13549.  
  13550. Header File.....TCXLinp.h
  13551.  
  13552. Prototype.......VOID KextOff(NOARG);
  13553.                 VOID KextOn(NOARG);
  13554.                 VOID KfixOff(NOARG);
  13555.                 VOID KfixOn(NOARG);
  13556.  
  13557. Arguments.......None.
  13558.  
  13559. Returns.........None.
  13560.  
  13561.  
  13562.  
  13563.  
  13564.  
  13565.  
  13566.  
  13567.  
  13568.  
  13569.  
  13570.  
  13571.  
  13572.  
  13573.  
  13574.  
  13575.  
  13576.  
  13577.  
  13578.  
  13579.  
  13580.  
  13581.  
  13582.  
  13583.  
  13584.  
  13585.  
  13586.  
  13587.  
  13588.  
  13589.  
  13590.  
  13591.  
  13592.  
  13593. TesSeRact CXL V5.52 Documentation                                 Page 217