 
         NN      NN     JJJJJJ   SSSSSSSS DDDDDDDD   KK      KK (TM)
         NN      NN       JJ   SS         DD      DD KK    KK
         NNNN    NN       JJ   SS         DD      DD KK  KK
         NN  NN  NN       JJ     SSSSSS   DD      DD KKKK
         NN    NNNN       JJ           SS DD      DD KK  KK
         NN      NN JJ    JJ           SS DD      DD KK    KK
         NN      NN   JJJJ     SSSSSSSS   DDDDDDDD   KK      KK

                              NJSDK (tm)

             NJStar Chinese Software Development Kits v3.0
        Copyright (c) Hongbo Ni 1992-1994. All Rights Reserved


        Hongbo Data Systems
        P.O. Box 40                    Telephone:  +61-2-869-0821
        Epping NSW 2121                Fax:        +61-2-869-0823
        AUSTRALIA                      Compuserve: 100032,2724
___________________________________________________________________________

1. Introduction
============================================================================

NJSDK is a C Library based on NJSTAR Version 3.0. It contains  all  the
functions for handling Chinese input, display and printing. With NJSDK, user
can develop any Chinese applications without knowing how Chinese  characters
are inputed, displayed or printed. It is  as  easy  as  writing  an  English
program.

NJSDK provides a Chinese interface for any C program. It reserves the bottom
line for Chinese input, and all other 24 lines (on VGA, 18  on  EGA,  29  on
SVGA) are working area for the application. NJSDK starts by loading  Chinese
font and dictionaries into memory, which require 200KB. If  user  select  to
leave font on disk, then NJSDK only requires 80KB  to  operate.  When  NJSDK
exits, all used memory are released, and screen is back to text mode.

NJSDK supports all the input methods in NJSTAR v3.0,  user  defined  methods
also supported in the same way as in NJSTAR. ALT+Function Keys are  reserved
by NJSDK for switching between the Chinese input methods (as listed in  next
section), and other Chinese related function.

Mouse operations are directly supported by NJSDK,  application  program  can
get mouse position by calling the NJSDK mouse functions.

Screen Saver and AutoSave  facilities  have  been  built  in  NJSDK.  Active
interval can be set by a configuration program NJSDKCFG.EXE.

2. License Information
============================================================================

With the full payment for NJSDK, the developer are  granted  a  distribution
license which permits the distribution of all NJSTAR  dictionaries,  drivers
and fonts (total 30  files)  with  their  application  without  any  further
royalty payment. Distribution of any Executable file (*.EXE)  of  NJSTAR  is
strictly prohibited. Each licensed copy has an unique  serial  number,  this
protects any illegal use of NJSDK by other un-licensed users. Licensed  user
are entitled a free upgrade  to  next  version  of  NJSDK  when  it  becomes
available.  Please contact the author for current price.  Please contact the
author if you or your company have any special requirements or cooperations.

                              LIMITED WARRANTY

A)   The Author  of NJSDK warrants  that all disks provided  are free from
     defects in material and workmanship, assuming normal use, for a period
     of 30 days from the date of purchase.

B)   The  Author  of NJSDK  warrants  that  the  program will  perform  in
     substantial  compliance with  the documentation  supplied  within this
     document.    If a  significant  defect in  the  product is  found, the
     Purchaser may return the product for a  refund.  In no event will such
     a refund exceed the purchase price of the product.

C)   Use of this product for any period of time constitutes your acceptance
     of this agreement and subjects you to its contents.

D)   EXCEPT  AS  PROVIDED  ABOVE,  THE   AUTHOR   OF  NJSDK  DISCLAIMS  ALL
     WARRANTIES, EITHER EXPRESS OR  IMPLIED, INCLUDING, BUT NOT  LIMITED TO
     IMPLIED WARRANTIES  OF MERCHANTABILITY  AND FITNESS  FOR A  PARTICULAR
     PURPOSE,  WITH RESPECT  TO  THE  PRODUCT.   SHOULD  THE PROGRAM  PROVE
     DEFECTIVE, THE PURCHASER ASSUMES THE RISK OF PAYING THE ENTIRE COST OF
     ALL NECESSARY SERVICING,  REPAIR, OR CORRECTION AND  ANY INCIDENTAL OR
     CONSEQUENTIAL DAMAGES.  IN NO  EVENT WILL THE  AUTHOR   OF   NJSDK BE
     LIABLE  FOR  ANY  DAMAGES  WHATSOEVER  (INCLUDING  WITHOUT  LIMITATION
     DAMAGES FOR LOSS OF  BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS  OF
     BUSINESS INFORMATION  AND  THE LIKE)  ARISING OUT  OF THE  USE OR  THE
     INABILITY TO USE THIS  PRODUCT EVEN IF THE AUTHOR HAS  BEEN ADVISED OF
     THE POSSIBILITY OF SUCH DAMAGES.


3. List of files in NJSDK package
============================================================================

        NJSDK.LIB       The NJSDK C subroutine library (MSC 7.0 Large model)
        NJSDK.H         The header file for NJSDK
        KEYS.H          The header file for key and mouse button definitions
        ******.C        Example programs
        CC.BAT          Batch file used to compile program, eg.  CC hello
        NJSDK.DOC       NJSDK user manual in MS-Word 2.0 for Win. Format
        NJSDK.TXT       Text version of NJSDK.DOC
        NJSDK.INI       Tell NJSDK where are the NJSTAR dictionaries & font
        NJSDK.CFG       NJSDK configuration file
        NJSDKCFG.EXE    The application configuration program
        SUPER.VGA       The super VGA definition file (required by NJSDKCFG)

Following files from NJSTAR are needed for program based on  NJSDK  to  run.
Those files can be distributed with user's .EXE file  only  after  a  proper
distribution license has been purchased.

        CCLIB.16        16x16 Simplified Chinese bitmap
        CCLIB.24        24x24 Simplified Chinese bitmap (With Reg. ver)
        CCLIBF.16       16x16 un-Simplified Chinese bitmap
        CCLIBF.24       24x24 un-Simplified Chinese bitmap (With Reg. ver)
        ASCII.16        16x8 Ascii bitmap
        ASCII.24        24x12 Ascii bitmap

        NANJIPY.DIC      NJSTAR PinYin dictionary
        NANJILX.DIC     NJSTAR Lianxiang dictionary
        NJINPUT*.DIC    External character input methods dictionary
        NJCIZU*.DIC     External word input methods dictionary
        TOLERATE.DIC    PinYin Tolerance lists (text file)
        ********.DRV    Printer drivers

If NJSTAR is installed on C:\NJSTAR, a file NJSDK.INI can be created in
the same directory as user's application. It should contains two lines:

NJDIC=C:\NJSTAR
NJZK=C:\NJSTAR

NJSDK will try to locate the font and dictionaries in the same directory as
users EXE file. If not found, NJSDK will try those as defined in NJSDK.INI.
user can also set two DOS environment variables in AUTOEXEC.BAT to specify
the location of fonts and dictionaries (override NJSDK.INI).

SET NJZK=C:\NJSTAR
SET NJDIC=C:\NJSTAR

In this way, only one set of font and dictionaries are needed in one
computer, all the NJSDK applications and NJSTAR can access the same font
and dictionaries.


4. Function Keys Reserved by NJSDK
============================================================================

        Alt+F1  -  NJSDK Help           Alt+F9   -  Pure Chinese Input
        Alt+F2  -  Other Input Methods  Alt+F10  -  FanTiZi or JianTiZi
        Alt+F3  -  QuWeiMa Input        Alt+F11  -  Adding Character/Word
        Alt+F4  -  GuoBiao Input        Alt+F12  -  Remove Character/Word
        Alt+F5  -  PinYin Input
        Alt+F6  -  ASCII Input          Alt+'X'  -  LianXiang
        Alt+F7  -  ZhuYin Input         Alt+'Z'  -  Get PinYin/ Input Code
        Alt+F8  -  Options              ESC      -  Cancel Current Input


5. List of NJSDK Functions
============================================================================

Function Name   Descriptions
--------------  ------------------------------------------------------------
NJ_AutoSave     Tell NJSDK which is your AutoSave function
NJ_box          Draw a rectangle box in given color
NJ_button       Select from a list of buttons
NJ_clscolum     clear a column of text
NJ_clsrows      clear rows of text
NJ_cursorOnOff  turn on / off the blinking input cursor
NJ_dialog       A dialog entry program
NJ_end          end of NJSDK session (unload font and dictionaries)
NJ_entry        entry input routine
NJ_fillwin      fill a window with color
NJ_fontsize     Change the size of Chinese characters.
NJ_formfeed     Form Feed
NJ_getinput     get current input method set by the user
NJ_getkey       get the key pressed by user
NJ_getmouse     get mouse position
NJ_gets         get a string with Chinese characters
NJ_gets0        get a string without Chinese characters
NJ_init         Initialise NJSDK library (setup Graphics mode, load Chinese)
NJ_line         Draw a horizontal or vertical line
NJ_linefeed     Line feed
NJ_menu         menu selection routine
NJ_mousecursor  turn on /off the mouse cursor
NJ_prt_end      end of the printing
NJ_prt_init     Initialising printer
NJ_prts         print a string to printer
NJ_putc         put a English (ascii 1-255) to screen
NJ_puts         put a string on screen (with or without Chinese Characters)
NJ_setcursor    set cursor position
NJ_setinput     set Chinese input Method
NJ_setmargin    Set Margins and line spacing
NJ_window       draw a window with color




6. Detailed Description of NJSDK functions
============================================================================

*       Initialization
__________________________________________________________________________

NJ_init         Initialise NJSDK library, such as setup graphics mode, load
                Chinese font and dictionaries. This function must be called
                before any NJSDK function is used.

Calling Syntax: NJ_init(char *homedir)
Input:          homedir - a char pointer points to the dir where application
                is started this is used for NJSDK to locate font and
                dictionaries
Return:         0  - Initialisation OK
                -1 - Initialisation failed
See also:       NJ_end
Example:        
        main(int argc, char **argv)
        {
                NJ_init(argv[0]);
                ....
                ....
                NJ_end();
        }
__________________________________________________________________________

NJ_end          Exit NJSDK library, font and dictionaries are unloaded and
                screen are set back to text mode.

Calling Syntax: NJ_end()
Input:          (none)
Output:         (none)
Return:         (none)
See also:       NJ_init
Example:        see NJ_init
___________________________________________________________________________

NJ_AutoSave     Tell NJSDK which is your AutoSave function

Calling Syntax: int NJ_AutoSave(int(*asfun)())
Input:  int *asfun() -- a function pointer points to the user's
        SaveSave Funcion.
Output: (none)
Example:
        int myautosave()
        {
            /* Close the data base, or    */
            /* do anything you like to do */
        }

        main(int argc, char **argv)
        {
                NJ_init(argv[0]);
                NJ_AutoSave(myautosave);
                ....
                ....
                NJ_end();
        }

NOTE: User should call this function if Autosave features are needed, and do
      any thing you want to do in it. such as backup data base. NJSDK will
      call this  function in a preset interval or when any emergency happen.
      a default function is provided by NJSDK, which does nothing.
____________________________________________________________________________

NJ_getvideo     Get Video screen parameters

Calling Syntax: int NJ_getvideo(struct NJVIDEO *njv)
Input:          struct NJVIDEO *njv -- pointer to NJVIDEO structure

                struct NJVIDEO {
                  int Videomode;    /* Current Video Mode (see NJSDK.H)    */
                  int Nrows;        /* number of rows EGA=18 VGA=24 SVGA=29*/
                  int BytesPerLine; /* bytes per line EGA/VGA=80 SVGA=100  */
                  int PixelsPerRow; /* Pixels per row EGA=18 VGA/SVGA=19   */
                  int Mono;         /* Is a monochrome mornitor            */
                };

Output:         struct NJVIDEO *njv

See also:       NJ_init()
Example:
        #include "njsdk.h"
        struct NJVIDEO njv;
        main(int argc, char **argv)
        {
                NJ_init(argv[0]);
                NJ_getvideo(&njv)

                ....
                ....
                NJ_end();
        }
__________________________________________________________________________


*       Keyboard and Mouse Input
___________________________________________________________________________

NJ_getkey       wait for user to press a key, and return the key values as
                defined in header file KEYS.H

Calling Syntax: NJ_getkey()
Input:  (none)
Output: (none)
Return:         the key pressed (see KEYS.H for predefined value)
See also:       NJ_getmouse()
Example:        
        #include "keys.h"
        ....
        k=NJ_getkey();
        if(k==ESC) exit(0);
        ....
___________________________________________________________________________

NJ_getmouse     report the current mouse position (row, column in pixels).

Calling Syntax: NJ_getmouse(int *row, int *col) 
Input:          (none)
Output:         int *row, *col -- the current mouse cursor position
Return:         the key value if any key is pressed
See also:       NJ_getkey()
Example:        
        int row, col;
        NJ_getmouse(&row, &col);
        sprintf(str,"mouse position: %d %d", row,col);
        NJ_puts(str, 10,10,15);
___________________________________________________________________________

NJ_mousecursor  Turn on / off mouse cursor during screen outputs
                 
Calling Syntax: NJ_mousecursor(int on)
Input:          on = 1 -- turn ON the mouse cursor
                on = 0 -- turn OFF the mouse cursor
Output:         (none)
Return:         (none)
See also:       NJ_getmouse()
Example:        
        NJ_mousecursor(0);
        NJ_puts(str, ...);
        NJ_mousecursor(1);
        ....
___________________________________________________________________________

NJ_cursorOnOff  turn ON / OFF the blinking input cursor

Calling Syntax: NJ_cursorOnOff(int on)
Input:          on = 1 -- turn ON the cursor
                on = 0 -- turn OFF the cursor
Output:         (none)
Return:         (none)
See also:       NJ_getkey()
Example:        
        NJ_cursorOnOff(1);
        NJ_gets(str, ...);
        NJ_cursorOnOff(0);
        ....
__________________________________________________________________________

NJ_setcursor    set the blinking cursor position

Calling Syntax: NJ_setcursor(int row, int col) 
Input:          row, col  -- the new cursor position in character
                             coordinate (25x80)
Output:         (none)
Return:         (none)
See also:       NJ_cursorOnOff()
Example:        
        NJ_setcursor(24, 1);
__________________________________________________________________________

NJ_gets get a string including Chinese characters from screen

Calling Syntax: int NJ_gets(char *str, int row, int col, int len, int 
                Fcolor, int Bcolor)
Input:          str -- the buffer for holding the input string, minimum
                        length = len.
                len -- the maximum len of input string
                row, col -- the screen position where input string starts
                Fcolor -- foreground color (0 - 15)
                Bcolor -- background color (0 - 15)
Output:         str -- the string entered by user
Return:         -1  -- user cancel the input by ESC
                0   -- user end the input by ENTER
                >0 -- other non-editing keys
See also:       NJ_puts()
Example:        
        char str[80];
        NJ_gets(str, 10,5, 70, 15, 1);
        ....
__________________________________________________________________________
        
NJ_gets0        Same as NJ_gets, except that Chinese input is not allowed
                in this function
__________________________________________________________________________

NJ_setinput     set Chinese input method
         
Calling Syntax: int NJ_setinput(int method, char select)
Input:          method =0 -- ascii input
                        1 -- PinYin input
                        2 -- QuWeiMa input
                        3 -- GuoBiao Input
                        4 -- Other inputs
                        5 -- ZhuYin input
                select -- for select a sub-method if the method has multiple
                          choose such as 4 and 5. Not used for methods 0-3.
Output:         (none)
Return:         (none)
See also:       NJ_getinput()
Example:        /* select WuBiZiXin method */
                NJ_setinput(4, 'B');
___________________________________________________________________________

NJ_getinput     get the current input method
         
Calling Syntax: int NJ_getinput(int *method, char *select)
Input:          (none)
Output:         method =0 -- ascii input
                        1 -- PinYin input
                        2 -- QuWeiMa input
                        3 -- GuoBiao Input
                        4 -- Other inputs
                        5 -- ZhuYin input
                select -- for select a sub-method if the method has multiple
                          choose such as 4 and 5. Not used for methods 0-3.
Return:         (none)
See also:       NJ_setinput()
Example:        /* Find out current input method */
                int m, s,
                ...
                NJ_setinput(&m, &s);
                if(m==4 && s=='B'){
                   // You are using Wu BI Zi Xin
                   ...
                }
___________________________________________________________________________


*       Screen Display
__________________________________________________________________________

NJ_puts         Display a string of ascii, Chinese or mix of them on
                specific position of the screen with specific color.
Calling Syntax: int NJ_puts(char str,int row,int col,int Fcolor,int Bcolor)
Input:          str -- the string to display (ascii, Chinese or mix )
                row, col -- the screen position where the output starts
                Fcolor -- foreground color (0 - 15)
                Bcolor -- background color (0 - 15)
Output:         (none)
Return:         (none)
See also:       NJ_gets()
Example:        
        /* display 'Chinese char' on 20,10 with Yellow on Red*/
        NJ_puts("CHINESE Char", 20,10, 14,4);
        .....
__________________________________________________________________________

NJ_putc         Display a ascii character on specific position of the
                screen with color.
Calling Syntax: int NJ_putc(char c,int row,int col,int Fcolor,int Bcolor)
Input:          c -- the character to display (ascii 1-255)
                row, col -- the screen position where the output starts
                Fcolor -- foreground color (0 - 15)
                Bcolor -- background color (0 - 15)
Output:         (none)
Return:         (none)
See also:       NJ_puts()
Example:        
        /* display 'A' on 20,10 with Yellow on Red*/
        NJ_putc('A', 20,10, 14,4);
        
__________________________________________________________________________

NJ_window       Draw a outline window with specific color

Calling Syntax: int NJ_window(int r1, int c1, int h, int v, int color)
Input:          r1, c1 -- upper left corner of the window (in pixels)
                h,  v  -- the Horizontal and vertical size of the
                                window (in pixels)
                color  -- the color of the screen
Output:         (none)
Return:         (none)
See also:       NJ_fillwin()
Example:        
        NJ_window(50,100, 100, 400, 2);
        ....
__________________________________________________________________________

NJ_fillwin      Same as NJ_window, except not boarder outline

Calling Syntax: int NJ_fillwin(int r1, int c1, int h, int v, int color)
Input:          r1, c1 -- upper left corner of the window (in pixels)
                h,  v  -- the Horizontal and vertical size of the
                                window (in pixels)
                color  -- the color of the screen
Output:         (none)
Return:         (none)
See also:       NJ_window()
Example:        
        NJ_fillwin(50,100, 100, 400, 2);
        ....
__________________________________________________________________________

NJ_clscolum     Clear portion of the line with specified color

Calling Syntax: int NJ_clscolum(int row1, int col1, int col2, int color)
Input:          row -- the line number
                col1 -- the start column number
                col2 -- the end column number
                color -- the color
Output:         (none)
Return:         (none)
See also:       NJ_clsrows()
Example:        
        NJ_clscolum(1, 0,80, 15);
        ....
__________________________________________________________________________

NJ_clsrows      Clear number of lines

Calling Syntax: int NJ_clsrows(int row1, int row2, int color) 
Input:          row1 -- the start line number
                row2 -- the end line number
                color -- the color
Output:         (none)
Return:         (none)
See also:       NJ_clscolum()
Example:        
        NJ_clsrows(5,10, 15);
        ....
__________________________________________________________________________

NJ_line         Draw a horizontal or vertical line

Calling Syntax: int NJ_line(int row1, int col1, int row2, int col2, int color)
Input:          row1 -- the start row in pixel
                col1  -- the start column in pixel
                row2 -- the end row in pixel
                col2  -- the end column in pixel
                color -- the line color
Output:  (none)
Return:  (none)
See also:       NJ_box()
Example:
        NJ_line(5,0,5,640,15);
        ....
__________________________________________________________________________

NJ_box          Draw a rectangle box in given color

Calling Syntax: int NJ_line(int row1, int col1, int row2, int col2, int color)
Input:          row1 -- the start row in pixel
                col1  -- the start column in pixel
                row2 -- the end row in pixel
                col2  -- the end column in pixel
                color -- the line color
Output:  (none)
Return:  (none)
See also:       NJ_line()
Example:
        NJ_box(5,0,50,640,15);
        ....
__________________________________________________________________________

NJ_menu         Selecting a list of options by menu

Calling Syntax: int NJ_menu(int Fcolor1, int Bcolor1, int Fcolor2,int 
                        Bcolor2,int pressed, struct MENU_S *sl,int ns,
                        int ini,int(*msgfun)(char *))

Input:          Fcolor1, Bcolor1 -- the foreground and background color
                                    of normal text
                Fcolor2, Bcolor2 -- the foreground and background color
                                    of high lighted text (0 - 15).
                pressed=0 -- mouse cursor will move the selection item
                             without press the mouse button
                       =1 -- mouse cursor will move the selection item
                             only if mouse button are pressed
                ns       -- number of selections in sl
                ini      -- the initial selection
                msgfun() -- the pointer to a user provided function for
                            display the message
                sl       -- pointer to the structure of menu items.

                struct MENU_S { /* as defined in NJSDK.H */
                        char row;    /* display row */
                        char col;    /* display col */
                        char len;    /* display background len */
                        char list;   /* the selection key in upper case */
                        char *str;   /* menu string */
                        char *msg;   /* message associated */
                } ;
        
Output:         (none)
Return:         the number of selected item
See also:       NJ_entry()
Example:        
        putmsg(char *str)
        {
                NJ_puts(str, 20,20, 2,15);
        }
        struct MENU_S sl[2]={
                20,10, 10, 'Y', "Yes", "Confirm",
                21,10, 10, 'N', "No ", "quit"
        }
        main()
        {
            ....
                NJ_menu(11, 2, 14,4, 0, sl,2,0, putmsg);
            ....
        }
__________________________________________________________________________

NJ_button       Select a list of options by pressing the button

Calling Syntax: int NJ_button(struct MENU_S *sl, int ns, int ini, int pressed)

Input:  pressed=0 -- mouse cursor will move the selection item without press
                     the mouse button
        pressed=1 -- mouse cursor will move the selection item only if mouse
                     buttons are pressed
        ns   -- number of selections in sl
        ini  -- the initial selection
        sl   -- pointer to the structure of menu items.

        struct MENU_S { /* as defined in NJSDK.H */
               char row;     /* display row */
               char col;     /* display col */
               char len;     /* display background len */
               char list;    /* the selection key in upper case */
               char *str;    /* menu string */
               char *msg;    /* message associated, not used by this function*/
        } ;
 
Output:   (none)
Return:   the number of selected item
See also: NJ_menu()
Example:
        struct MENU_S sl[2]={
                {20,10, 10, 'Y', "Yes", " "},
                {21,10, 10, 'N', "No ", " "}
        }
        main()
        {
            ....
                NJ_button(sl,2,0,1);
            ....
        }

__________________________________________________________________________

NJ_entry        data entry routine

Calling Syntax: int NJ_entry(int Fcolor1, int Bcolor1, int Fcolor2,
                        int Bcolor2, struct ENTRY_S *sl,int ns,int ini,
                        int(*msgfun)(char *))

Input:          Fcolor1, Bcolor1 -- the foreground and background color
                                    of normal text
                Fcolor2, Bcolor2 -- the foreground and background color
                                    of high lighted text (0 - 15).
                ns       -- number of selections in sl
                ini      -- the initial selection
                msgfun() -- the pointer to a user provided function for
                            display the message
                sl       -- pointer to the structure of menu items.

                struct ENTRY_S {
                    char row;           /* display row */
                    char col;           /* display row */
                    char len;           /* len of the  field */
                    char type;          /* type of the field, not used*/
                    char str[80];       /* str to hold field */
                    char *msg;          /*message associated*/
                };

                msgfun(char *msg) -- the pointer to a user provided
                                     function for display the message.
                      INPUT:  msg -- the string of message
        
Output:         sl -- the data entered are stored in sl[i].str.
Return:         0 -- Normal return
                -1 - Data entry is cancelled by user
See also:       NJ_menu
Example:        
        putmsg(char *str)
        {
                NJ_puts(str, 20,20, 2,15);
        }
        struct ENTRY_S sl[2]={
                20,10, 10,0, " ", "Enter Your Name",
                21,10, 10,0, " ", "Enter you age"
        }
        main()
        {
            ....
                NJ_entry(11, 2, 14,4, sl,2,0, putmsg);
            ....
        }
__________________________________________________________________________

NJ_dialog       data entry with push button and radio buttons

Calling Syntax: int NJ_dialog(int Fcol1,int Bcol1,int Fcol2,int Bcol2,
                    int Fcol3, int Bcol3, struct DIALOG_S *sl,int ns,int ini,
                    int(*DialogProc)(int, int), int(*msgfun)(char *));

Input:  Fcol1, Bcol1 -- the foreground and background color of normal text
        Fcol2, Bcol2 -- the foreground and background color of data entry
                        non-current item (0 - 15)
        Fcol3, Bcol3 -- the foreground and background color of high lighted
                        data entry item (0 - 15)

        ns   -- number of selections in sl
        ini  -- the initial selection
        sl   -- pointer to the structure of dialog items.

        struct DIALOG_S {
            char row;           /* display row */
            char col;           /* display row */
            char len;           /* len of the  field */
            char type;          /* type of the field:  0 - data entry */
                                /*                    -1 - push button */
                                /*                    -2 - radio button */
            char radio;         /* store radio status*/
            char str[80];       /* str to hold field value*/
            char *msg;          /*message assorciated*/
        };

        msgfun(char *msg) -- the pointer to a user provided function for
                             display the message.
              INPUT:  msg -- the string of message

        DialogProc(int k, int s) -- the pointer to a user provided function for
                                    handling the dialog messages.
                    INPUT:  k=-1 -- initialize dialog setting
                            k=0  -- button number S has been pressed,
                            k>0  -- a non-editing key has been pressed

                   Output:   -1 -- Cancel the dialog box
                              0 -- End dialog and return to calling program
                              1 -- Re-paint all entries

        NOTE: In DialogProc, user can access the information in DIALOG_S
                     structure -- sl. See *****.C for example usage.

Output:  sl -- the data entered are stored in sl[i].str.
Return:  0 -- Normal return, entry valid
        -1 -- Data entry is cancelled by ESC or a push button.
See also:     NJ_menu
Example:
        #include <stdio.h>
        #include "njsdk.h'
        #include "keys.h'

        struct ENTRY_S sl[4]={
                {10,10, 10,0,0 " ", "Enter Your Name"},
                {12,10, 10,0,0 " ", "Enter you age"},
                {15,10, 10,-1,0 "OK",     "Accept the input"},
                {15,13, 10,-1,0 "Cancel", "Quit the dialog"}
        }

        int putmsg(char *str)
        {
                NJ_puts(str, 20,20, 2,15);
        }


        int mydialogproc(int k, int s)
        {
                if(k<0){
                        if(s==2) return (0);      /* Ok     */
                        else if(s==3) return(-1); /* cancel */
                }else if(k==PGUP){GetLastRecordFromDataBase();}
                }else if(k==PGDN){GetNextRecordFromDataBase();}
                return(1);
        }

        main()
        {
            ....
                i=NJ_entry(15,1,11,2,14,4,sl,2,0,mydialogproc, putmsg);
                if(i<0)         /* Cancelled */
                else if(i>=0)   /* Ok       */
            ....
        }
__________________________________________________________________________


*       Printer Output  (Not included in trial version)
__________________________________________________________________________

NJ_prt_init     Initialise printer driver

Calling Syntax: NJ_prt_init()
Input:          (none)
Return:         0  - Initialisation OK
                -1 - Initialisation failed
See also:       NJ_init()
Example:        
        main(int argc, char **argv)
        {
                NJ_init(argv[0]);
                ....
                NJ_prt_init()
                NJ_prts("CHINESE string");
                ....
                NJ_end();
        }
__________________________________________________________________________

NJ_prt_end     end of the printing

Calling Syntax: NJ_prt_end()
Input:          (none)
Return:         0  - Ok
                -1 - failed
See also:       NJ_prt_init()
Example:        
        main(int argc, char **argv)
        {
                NJ_init(argv[0]);
                ....
                NJ_prt_init()
                NJ_prts("CHINESE string");
                NJ_prt_end()
                ....
                NJ_end();
        }
__________________________________________________________________________

NJ_fontsize     Change the size of Chinese characters.

Calling Syntax: int NJ_fontsize(int size)
Input:          size - size of printed Chinese chars (=1 or 2)
Output:         (none)
Return:         (none)
See also:       NJ_prts()
Example:        
        NJ_fontsize(2);
        .....
__________________________________________________________________________

NJ_setmargin    Set Margins and line spacing

Calling Syntax: NJ_setmargin(int l, int r, int t, int b, int s)
Input:          l = left margin in number of Chinese characters
                r = right margin in number of Chinese characters
                t = top margin in number of lines (1 line = 30 dots)
                b = bottom margin in number of lines (1 line = 30 dots)
                s = line spacing in number of pixels/dots
Return:         0 - Ok;  -1 -Failed.
See also:       NJ_linefeed()
Example:        
        NJ_setmargin(5,5,2,6,12);
        ....
__________________________________________________________________________

NJ_prts         Print a string to printer.

Calling Syntax: int NJ_puts(char str)
Input:          str -- the string to display (ascii, Chinese or mix of them)
Output:         (none)
Return:         0  - OK
                -1 - Faild.
See also:       NJ_puts()
Example:        
        NJ_prts("CHINESE Chars");
        .....
__________________________________________________________________________

NJ_linefeed     Feed the printer by number of pixels/dots

Calling Syntax: NJ_linefeed(int lines)
Input:          lines -- the number of pixels/lines to feed
Return:         (none)
See also:       NJ_formfeed()
Example:        
        NJ_linefeed(5);
        ....
__________________________________________________________________________

NJ_formfeed     Feed the printer paper to next page

Calling Syntax: NJ_formfeed()
Input:          (none)
Return:         (none)
See also:       NJ_linefeed()
Example:        
        NJ_formfeed(5);
        ....

============================================================================
END of NJSDK.TXT
