www.pudn.com > cwin.rar > HANENV.H


    /************************************************************ 
        头文件 HANENV.H : 应用程序中文用户界面软件包 HANENV 
                          的定义和说明 
 
        作           者 : 刘路放 
        日           期 : 1995.7 
    ************************************************************/ 
    #include  
    #include  
 
    /*----------------------------------------------------------- 
        第一部分 : 基础与环境 
 
                   定义逻辑常数 
                   EGA/VGA图形模式12H的显示存储器和寄存器操作 
                   鼠标操作 
                   键盘操作 
                   使用扩充内存 
                   HANENV系统的初始化和退出 
    -----------------------------------------------------------*/ 
    /*----------------------------------------------------------- 
        1.定义逻辑常数 
    -----------------------------------------------------------*/ 
    #ifndef NO 
        #define NO        0 
        #define YES       1 
    #endif 
    /*----------------------------------------------------------- 
        2.EGA/VGA图形模式12H的有关定义和操作 
    -----------------------------------------------------------*/ 
    /*------------------- 省缺颜色常数 ------------------------*/ 
    #if !defined(__COLORS) 
        #define __COLORS 
        enum COLORS 
        { 
            BLACK,                               /* 黑         */ 
            BLUE,                                /* 蓝         */ 
            GREEN,                               /* 绿         */ 
            CYAN,                                /* 青         */ 
            RED,                                 /* 红         */ 
            MAGENTA,                             /* 洋红       */ 
            BROWN,                               /* 棕         */ 
            LIGHTGRAY,                           /* 浅灰       */ 
            DARKGRAY,                            /* 深灰       */ 
            LIGHTBLUE,                           /* 亮蓝       */ 
            LIGHTGREEN,                          /* 亮绿       */ 
            LIGHTCYAN,                           /* 亮青       */ 
            LIGHTRED,                            /* 亮红       */ 
            LIGHTMAGENTA,                        /* 亮洋红     */ 
            YELLOW,                              /* 黄         */ 
            WHITE                                /* 白         */ 
        }; 
    #endif 
    #define EDGE_COLOR        16                 /* 屏幕边缘色 */ 
 
    /*---------------- 说明屏幕窗口的全局变量 -----------------*/ 
    extern int _ScreenTop;       /* 当前屏幕首行位置           */ 
    extern int _ScreenWidth;     /* 逻辑屏幕宽度(以字节为单位) */ 
    extern int _ScreenHigh;      /* 逻辑屏幕高度(以象素为单位) */ 
    extern int _WindowLeft;      /* 屏幕显示窗口左上角列坐标   */ 
    extern int _WindowTop;       /* 屏幕显示窗口左上角行坐标   */ 
    extern int _WindowHigh;      /* 屏幕显示窗口高度           */ 
    extern int _VideoBusy;       /* 是否正在操作VGA寄存器组    */ 
 
    /*----- 向屏幕写操作的类型(_SetWriteMode函数的参数) -------*/ 
    #define PUT_MODE    0    /* 新数据覆盖屏上原有数据         */ 
    #define AND_MODE    0x08 /* 新数据和屏上原有数据作与运算   */ 
    #define OR_MODE     0x10 /* 新数据和屏上原有数据作或运算   */ 
    #define XOR_MODE    0x18 /* 新数据和屏上原有数据作异或运算 */ 
 
    /*---------- 对EGA/VGA图形模式12H的操作函数(宏) -----------*/ 
    void   _Cdecl _SetWriteMode (int write_mode); 
    void   _Cdecl close_display (void); 
    void   _Cdecl open_display  (void); 
    void   _Cdecl get_color     (int color_no,int *red,int *green,int *blue); 
    void   _Cdecl set_color     (int color_no,int red,int green,int blue); 
    void   _Cdecl change_color  (int color,int new_color); 
    char **_Cdecl getblock      (int col,int line,int width,int high); 
    void   _Cdecl putblock      (int col,int line,int width,int high,char **block); 
    void   _Cdecl _MoveImage    (int col1,int y1,int width,int h,int col2,int y2); 
    void   _Cdecl _Block        (int col,int line,int width,int high,int color); 
    void   _Cdecl _SmoothScroll (int x,int y); 
 
    #define set_screen_width(width) (_ScreenWidth = (width)) 
    #define set_screen_high(high)   (_ScreenHigh  = (high)) 
    #define split_screen(high)      (_WindowHigh  = (high)) 
    #define smooth_scroll(x,y)      (_VideoBusy=1,_SmoothScroll(x,(_WindowTop=(y))),_VideoBusy=0) 
 
    /*----------------------------------------------------------- 
         3.鼠标操作 
    -----------------------------------------------------------*/ 
    /*------------- 说明鼠标工作状态的全局变量 ----------------*/ 
    extern int _HaveMouse;   /* 鼠标装载成功标记               */ 
    extern int _MouseLight;  /* 当前鼠标光标是否显示           */ 
    extern int _MouseCol;    /* 当前鼠标光标列坐标(单位为象素) */ 
    extern int _MouseRow;    /* 当前鼠标光标行坐标(单位为象素) */ 
    extern int _MouseColor;  /* 鼠标光标颜色                   */ 
    extern int _MouseBk;     /* 鼠标光标边缘颜色               */ 
    extern int _MouseLeft;   /* 鼠标活动范围左上角列坐标       */ 
    extern int _MouseTop;    /* 鼠标活动范围左上角行坐标       */ 
    extern int _MouseRight;  /* 鼠标活动范围右下角列坐标       */ 
    extern int _MouseBottom; /* 鼠标活动范围右下角行坐标       */ 
                             /* (以上4个变量值的单位均为象素)  */ 
 
    /*-------------- 对鼠标的操作函数(宏) ---------------------*/ 
    void _Cdecl reset_mouse     (void); 
    void _Cdecl light_mouse     (void); 
    void _Cdecl delight_mouse   (void); 
    int  _Cdecl get_mouse_status(int *x,int *y); 
    void _Cdecl set_mouse_pos   (int x,int y); 
    int  _Cdecl mouse_pressed   (int which_button,int *x,int *y,int *count); 
    int  _Cdecl mouse_release   (int which_button,int *x,int *y,int *count); 
    void _Cdecl set_mouse_range (int left,int top,int right,int bottom); 
    void _Cdecl get_mouse_range (int *left,int *top,int *right,int *bottom); 
    void _Cdecl till_mouse_pop  (int which_button); 
    void _Cdecl mouse_moved     (int *dx,int *dy); 
 
    #define havemouse()               _HaveMouse 
    #define ismouselight()            _MouseLight 
    #define mousecolor()              _MouseColor 
    #define mousebk()                 _MouseBk 
    #define mousecol()                _MouseCol 
    #define mouserow()                _MouseRow 
    #define set_mouse_color(color,bk) (_MouseColor=(color),_MouseBk=(bk)) 
    #define mouse_enter(l,t,r,b)      (_MouseCol>=(l)&&_MouseCol<=(r)&&_MouseRow>=(t)&&_MouseRow<=(b)) 
 
    /*----------------------------------------------------------- 
        4.键盘操作 
    -----------------------------------------------------------*/ 
    /*---------- 触发器的类型定义及全局变量的说明 -------------*/ 
    typedef struct                   /* 触发器类型的定义       */ 
    { 
        unsigned press_key;          /* 按键触发事件           */ 
        unsigned mouse_affair;       /* 鼠标触发事件           */ 
        int left;                    /* 鼠标左边界(单位为象素) */ 
        int top;                     /* 鼠标上边界(单位为象素) */ 
        int right;                   /* 鼠标右边界(单位为象素) */ 
        int bottom;                  /* 鼠标下边界(单位为象素) */ 
        unsigned (*trigger)(unsigned h); /* 事件函数           */ 
    }TRIGGER; 
 
    extern int        _TriggerCount;     /* 触发器个数         */ 
    extern TRIGGER    _Triggers[];       /* 触发器             */ 
    extern unsigned (*mouseKB)();        /* 虚拟键盘激活条件   */ 
    extern int        _DoublePressTime;  /* 双击鼠标按钮时间   */ 
    extern void     (*_GethFunction)();  /* geth函数的内部函数 */ 
    extern void      *_GethParameter;    /* geth函数的函数参数 */ 
 
    /*-------------- 键盘操作函数的说明 -----------------------*/ 
    #define set_double_press_time(time) (_DoublePressTime=(time)) 
 
    unsigned _Cdecl geth          (void); 
    int      _Cdecl double_press  (unsigned key); 
    void     _Cdecl ungetstr      (char *string); 
    void     _Cdecl ungeth        (unsigned h); 
    unsigned _Cdecl mouse_keyboard(unsigned h); 
    void     _Cdecl load_MKB      (unsigned key); 
    void     _Cdecl enableMKB     (void); 
    void     _Cdecl disableMKB    (void); 
    void     _Cdecl set_mouse_KB  (int x,int y,unsigned color,int left,int top,int right,int bottom); 
    void     _Cdecl free_MKB      (void); 
    int      _Cdecl isins         (void); 
    int      _Cdecl isedit        (unsigned key); 
 
    /*-------------- HANENV系统的统一键盘编码定义 -------------*/ 
    /*-- 功能键 F1 - F10 ----------------------*/ 
    #define KEY_F1              315 
    #define KEY_F2              316 
    #define KEY_F3              317 
    #define KEY_F4              318 
    #define KEY_F5              319 
    #define KEY_F6              320 
    #define KEY_F7              321 
    #define KEY_F8              322 
    #define KEY_F9              323 
    #define KEY_F10             324 
 
    /*-- 复合功能键 Ctrl+F1 - Ctrl+F10 --------*/ 
    #define KEY_Ctr_F1          350 
    #define KEY_Ctr_F2          351 
    #define KEY_Ctr_F3          352 
    #define KEY_Ctr_F4          353 
    #define KEY_Ctr_F5          354 
    #define KEY_Ctr_F6          355 
    #define KEY_Ctr_F7          356 
    #define KEY_Ctr_F8          357 
    #define KEY_Ctr_F9          358 
    #define KEY_Ctr_F10         359 
 
    /*-- 复合功能键 Alt+F1 - Alt+F10 ----------*/ 
    #define KEY_Alt_F1          360 
    #define KEY_Alt_F2          361 
    #define KEY_Alt_F3          362 
    #define KEY_Alt_F4          363 
    #define KEY_Alt_F5          364 
    #define KEY_Alt_F6          365 
    #define KEY_Alt_F7          366 
    #define KEY_Alt_F8          367 
    #define KEY_Alt_F9          368 
    #define KEY_Alt_F10         369 
 
    /*-- 复合功能键 Shift+F1 - Shift+F10 ------*/ 
    #define KEY_Shift_F1        340 
    #define KEY_Shift_F2        341 
    #define KEY_Shift_F3        342 
    #define KEY_Shift_F4        343 
    #define KEY_Shift_F5        344 
    #define KEY_Shift_F6        345 
    #define KEY_Shift_F7        346 
    #define KEY_Shift_F8        347 
    #define KEY_Shift_F9        348 
    #define KEY_Shift_F10       349 
 
    /*-- 数字小键盘上的功能键 -----------------*/ 
    #define KEY_Home            327 
    #define KEY_Up              328 
    #define KEY_PgUp            329 
    #define KEY_Left            331 
    #define KEY_Right           333 
    #define KEY_End             335 
    #define KEY_Down            336 
    #define KEY_PgDn            337 
    #define KEY_Ins             338 
    #define KEY_Del             339 
 
    /*-- 左 Shift 键与数字小键盘的功能键复合 --*/ 
    #define KEY_LS_Left         587 
    #define KEY_LS_Up           584 
    #define KEY_LS_Right        589 
    #define KEY_LS_Down         592 
    #define KEY_LS_Home         583 
    #define KEY_LS_End          591 
    #define KEY_LS_PgUp         585 
    #define KEY_LS_PgDn         593 
 
    /*-- 右 Shift 键与数字小键盘的功能键复合 --*/ 
    #define KEY_RS_Left         459 
    #define KEY_RS_Up           456 
    #define KEY_RS_Right        461 
    #define KEY_RS_Down         464 
    #define KEY_RS_Home         455 
    #define KEY_RS_End          463 
    #define KEY_RS_PgUp         457 
    #define KEY_RS_PgDn         465 
 
    /*-- Ctrl 键与数字小键盘的功能键复合 ------*/ 
    #define KEY_Ctr_Home        375 
    #define KEY_Ctr_PgUp        388 
    #define KEY_Ctr_Left        371 
    #define KEY_Ctr_Right       372 
    #define KEY_Ctr_End         373 
    #define KEY_Ctr_PgDn        374 
 
    /*-- Alt, Ctrl 和 Shift 键 tab 键的复合 ---*/ 
    #define KEY_Alt_Tab         321 
    #define KEY_Ctr_Tab         304 
    #define KEY_Shift_Tab       271 
 
    /*-- Alt 键 + 字母键 ----------------------*/ 
    #define KEY_Alt_A           286 
    #define KEY_Alt_B           304 
    #define KEY_Alt_C           302 
    #define KEY_Alt_D           288 
    #define KEY_Alt_E           274 
    #define KEY_Alt_F           289 
    #define KEY_Alt_G           290 
    #define KEY_Alt_H           291 
    #define KEY_Alt_I           279 
    #define KEY_Alt_J           292 
    #define KEY_Alt_K           293 
    #define KEY_Alt_L           294 
    #define KEY_Alt_M           306 
    #define KEY_Alt_N           305 
    #define KEY_Alt_O           280 
    #define KEY_Alt_P           281 
    #define KEY_Alt_Q           272 
    #define KEY_Alt_R           275 
    #define KEY_Alt_S           287 
    #define KEY_Alt_T           276 
    #define KEY_Alt_U           278 
    #define KEY_Alt_V           303 
    #define KEY_Alt_W           273 
    #define KEY_Alt_X           301 
    #define KEY_Alt_Y           277 
    #define KEY_Alt_Z           300 
 
    /*-- Alt 键 + 数字键 ----------------------*/ 
    #define KEY_Alt_1           376 
    #define KEY_Alt_2           377 
    #define KEY_Alt_3           378 
    #define KEY_Alt_4           379 
    #define KEY_Alt_5           380 
    #define KEY_Alt_6           381 
    #define KEY_Alt_7           382 
    #define KEY_Alt_8           383 
    #define KEY_Alt_9           384 
    #define KEY_Alt_0           385 
    #define KEY_Alt_MINUS       386 
    #define KEY_Alt_EQUAL       387 
 
    /*-- Ctrl 键 + 字母键 ---------------------*/ 
    #define KEY_Ctr_A           641 
    #define KEY_Ctr_B           642 
    #define KEY_Ctr_C           643 
    #define KEY_Ctr_D           644 
    #define KEY_Ctr_E           645 
    #define KEY_Ctr_F           646 
    #define KEY_Ctr_G           647 
    #define KEY_Ctr_H           648 
    #define KEY_Ctr_I           649 
    #define KEY_Ctr_J           650 
    #define KEY_Ctr_K           651 
    #define KEY_Ctr_L           652 
    #define KEY_Ctr_M           653 
    #define KEY_Ctr_N           654 
    #define KEY_Ctr_O           655 
    #define KEY_Ctr_P           656 
    #define KEY_Ctr_Q           657 
    #define KEY_Ctr_R           658 
    #define KEY_Ctr_S           659 
    #define KEY_Ctr_T           660 
    #define KEY_Ctr_U           661 
    #define KEY_Ctr_V           662 
    #define KEY_Ctr_W           663 
    #define KEY_Ctr_X           664 
    #define KEY_Ctr_Y           665 
    #define KEY_Ctr_Z           666 
 
    /*-- 常用的 ASCII 码 ----------------------*/ 
    #define Beep                0x07 
    #define Backspace           0x08 
    #define KEY_ENTER           0x0d 
    #define KEY_ESC             0x1b 
    #define KEY_SPACE           0x20 
 
    /*-- 鼠标按扭按下或释放的组合情况 ---------*/ 
    #define NO_BUTTON           400 
    #define LEFT_BUTTON         401 
    #define RIGHT_BUTTON        402 
    #define L_R_BUTTON          403 
 
    /*----------------------------------------------------------- 
        5.使用扩充存储器 
    -----------------------------------------------------------*/ 
    /*--- 通过INT15H使用扩充内存的数据类型和全局变量的定义 ----*/ 
    typedef struct         /* 保护地址模式下段的描述符类型定义 */ 
    { 
	unsigned      size;        /* 读写缓冲区长度           */ 
	unsigned      baselow;     /* 基地址低位字             */ 
	unsigned char basehigh;    /* 基地址高位字节           */ 
	unsigned char attr;        /* 存取权                   */ 
	unsigned      blank;       /* 保留字                   */ 
    }Descriptor;                   /* 描述符类型               */ 
 
    typedef struct                 /* 全局描述符表GDT类型      */ 
    { 
        Descriptor BlankDsc;       /* 空地址描述符             */ 
        Descriptor GDTDsc;         /* 本GDT表的地址描述符      */ 
        Descriptor Source;         /* 源数据块地址描述符       */ 
        Descriptor Destin;         /* 目标数据块地址描述符     */ 
        Descriptor BiosCS;         /* ROM BIOS代码地址描述符   */ 
        Descriptor BiosSS;         /* ROM BIOS堆栈地址描述符   */ 
    }GDT;                          /* 全局描述符表GDT类型      */ 
 
    extern long _CurrentEMM;       /* 当前自由扩充存储器地址   */ 
    extern GDT  _MemCtrlBlock;     /* 全局描述符表GDT的说明    */ 
 
    /*----------- 通过INT15H使用扩充内存的函数说明 ------------*/ 
    void     _Cdecl _Init_GDT   (void); 
    unsigned _Cdecl _GetEMMsize (void); 
    void     _Cdecl _SetSourAddr(long addr,unsigned size); 
    void     _Cdecl _SetDestAddr(long addr,unsigned size); 
    void     _Cdecl _MoveDataEMM(unsigned size); 
    long     _Cdecl _LoadEMM    (FILE *file,long size); 
 
    /*- 通过XMS规范使用扩充内存所用的数据结构和全局变量的定义 -*/ 
    struct EMB                     /* 扩充内存移动结构定义     */ 
    { 
        unsigned long len;         /* 需传输的数据字节数(32位) */ 
        unsigned      sour_han;    /* 源数据块句柄             */ 
        unsigned long sour_off;    /* 源偏移量(32位)           */ 
        unsigned      dest_han;    /* 目标数据块句柄           */ 
        unsigned long dest_off;    /* 目标偏移量(32位)         */ 
    }; 
 
    extern struct EMB _Emb;        /* 扩充内存移动结构变量     */ 
    extern int        _LargestXMS; /* 最大自由扩充内存块尺寸   */ 
    extern int        _AmountOfXMS;/* 剩余自由扩充内存数量总和 */ 
    extern void far (*_FunctionXMS)(); /* XMS服务程序入口地址  */ 
 
    /*----------- 通过XMS规范使用扩充内存的函数说明 -----------*/ 
    void _Cdecl init_XMS    (void); 
    void _Cdecl _SizeofXMS  (void); 
    int  _Cdecl _GetXMS     (int size); 
    int  _Cdecl _ChangeXMS  (int handle,int size); 
    void _Cdecl _FreeXMS    (int handle); 
    void _Cdecl _MoveDataXMS(void); 
    int  _Cdecl _LoadXMS    (FILE *file,long size); 
    int  _Cdecl getblockXMS (int left,int top,int right,int bottom); 
    void _Cdecl putblockXMS (int left,int top,int right,int bottom,int handle); 
 
    #define sizeofXMS()         _AmountOfXMS 
    #define largestXMS()        _LargestXMS 
    #define haveXMS()           ((int)_FunctionXMS) 
 
    /*----------------------------------------------------------- 
        6.HANENV系统的初始化和退出 
    -----------------------------------------------------------*/ 
    /*--------- HANENV系统的错误检查变量和函数的说明 ----------*/ 
    extern int _ErrorNo;     /* 某些函数将其出错码放在此变量中 */ 
    int  _Cdecl han_error(void); 
 
    /*------------ HANENV系统的初始化等函数的说明 -------------*/ 
    extern void interrupt far (*_Oldint1CH)(); /* 原中断1CH地址*/ 
    extern void interrupt far (*_Oldint09H)(); 
    extern void interrupt far (*_Oldint23H)(); 
    extern void far (*_Int1CHfun[])();     /* 时钟处理程序向量 */ 
 
 
    void interrupt _Newint1CH(void); 
    void interrupt _Newint09H(void); 
    void interrupt _Newint23H(void); 
    void _Cdecl _SaveEnv     (void); 
    void _Cdecl _LoadEnv     (void); 
    void _Cdecl init_hanenv  (void); 
    void _Cdecl close_hanenv (void); 
    int  _Cdecl call_DOS     (char *envname); 
 
    /*----------------------------------------------------------- 
        第二部分 : 汉字处理 
 
                   汉字库 
                   汉字显示 
                   正文方式与光标 
                   汉字输入模块 
    -----------------------------------------------------------*/ 
    /*----------------------------------------------------------- 
        1.有关汉字库的数据类型定义、全局变量和函数说明 
    -----------------------------------------------------------*/ 
    typedef struct               /* 汉字库类型                 */ 
    { 
        int fontwidth;           /* 点阵宽(以字节为单位)       */ 
        int fonthigh;            /* 点阵高(以象素为单位)       */ 
        unsigned char *codelist; /* 指向小字库索引表的指针     */ 
        int wherefont;           /* 字库装载位置               */ 
        int fontcount;           /* 字库中的字模数量           */ 
        FILE *fontfile;          /* 字库文件名                 */ 
        unsigned long EMM_addr;  /* 字库在扩充内存中的地址     */ 
        int fonthandle;          /* 字库在XMS扩充内存中的句柄  */ 
        unsigned char *fontbuff; /* 字库区在常规内存中的指针   */ 
    }HZK; 
                                 /* 汉字库的装载位置定义       */ 
    #define DSK      0           /* 汉字库在硬盘中             */ 
    #define EMM      1           /* 汉字库在扩充内存中         */ 
    #define XMS      2           /* 汉字库在XMS扩充内存中      */ 
    #define MEM      3           /* 小字库在内存中             */ 
 
    extern HZK *_CurrentHZK;     /* 当前汉字库结构变量的指针   */ 
 
    HZK *_Cdecl load_HZK(int width,int high,char *hzkname,unsigned char *codelist,int wherefont); 
    HZK *_Cdecl free_HZK(HZK *hzk); 
    int  _Cdecl takefont(unsigned h); 
 
    /*----------------------------------------------------------- 
        2.汉字和西文字符的显示 
    -----------------------------------------------------------*/ 
    /*--------------- HANENV系统的判定函数(宏) ----------------*/ 
    #define isSP(h)   ((unsigned)(h)>0xa0a0) 
    #define ishan(s)  (*((unsigned *)(s))>0xa0a0) 
 
    int _Cdecl isscan (unsigned h); 
 
    /*----- 有关汉字和西文字符显示的全局变量和函数的说明 ------*/ 
    #define CHAR_HIGH           18      /* ASCII码高度(行高)   */ 
    #define HORIZONTAL          0       /* 横向显示字模点阵    */ 
    #define VERTICAL            1       /* 纵向显示字模点阵    */ 
 
    #define SOLIDLINE           0       /* 字模笔划用实线填充  */ 
    #define DOTTEDLINE          1       /* 字模笔划用实线填充  */ 
 
    extern  unsigned char _ChrFont[];   /* 标准ASCII码字模点阵 */ 
    extern  unsigned char _HanFont[];   /* 汉字显示缓冲区      */ 
    extern  int _Xtimes;                /* 横向放大倍数        */ 
    extern  int _Ytimes;                /* 纵向放大倍数        */ 
    extern  int _FontDirection;         /* 点阵显示方向        */ 
    extern  int _FontBkStyle;           /* 字模笔划填充方式    */ 
 
    #define set_xtimes(times)             (_Xtimes=(times)) 
    #define set_ytimes(times)             (_Ytimes=(times)) 
    #define set_font_direction(direction) (_FontDirection=(direction)) 
    #define set_font_bk_style(style)      (_FontBkStyle=(style)) 
 
    void _Cdecl _DrawF   (int x,int y,int width,int high,int color,unsigned char *font); 
    void _Cdecl _OutF    (int col,int line,int width,int high,int color,unsigned char *font); 
    void _Cdecl _DrawFont(int x,int y,int width,int high,int color,unsigned char *font); 
    void _Cdecl _OutFont (int col,int line,int width,int high,int color,unsigned char *font); 
 
    unsigned char *_Cdecl takehan(unsigned char *string,unsigned *h); 
    void _Cdecl drawxys  (int x,int y,int color,char *s); 
    void _Cdecl drawxystr(int x,int y,int color,char *string); 
    void _Cdecl outxys   (int col,int line,int color,char *string); 
    void _Cdecl outxystr (int col,int line,int color,char *string); 
    void _Cdecl putxys   (int col,int line,int color,int bk,char *string); 
    void _Cdecl putxystr (int col,int line,int color,int bk,char *string); 
 
    #define drawxyc(x,y,color,ch)           _DrawF(x,y,1,CHAR_HIGH,color,_ChrFont+(ch)*CHAR_HIGH) 
    #define outxyc(col,line,color,ch)       _OutF(col,line,1,CHAR_HIGH,color,_ChrFont+(ch)*CHAR_HIGH) 
    #define putxyc(col,line,color,bk,ch)    _Block(col,line,1,CHAR_HIGH,bk),outxyc(col,line,color,ch) 
    #define drawxychar(x,y,color,ch)        _DrawFont(x,y,1,CHAR_HIGH,color,_ChrFont+(ch)*CHAR_HIGH) 
    #define outxychar(col,line,color,ch)    _OutFont(col,line,1,CHAR_HIGH,color,_ChrFont+(ch)*CHAR_HIGH) 
    #define putxychar(col,line,color,bk,ch) _Block(col,line,_Xtimes,CHAR_HIGH*_Ytimes,bk),outxychar(col,line,color,ch) 
 
    #define drawxyh(x,y,color,han)          takefont(han),_DrawF(x,y,_CurrentHZK->fontwidth,_CurrentHZK->fonthigh,color,_HanFont) 
    #define outxyh(col,line,color,han)      takefont(han),_OutF(col,line,_CurrentHZK->fontwidth,_CurrentHZK->fonthigh,color,_HanFont) 
    #define putxyh(col,line,color,bk,han)   _Block(col,line,_CurrentHZK->fontwidth,_CurrentHZK->fonthigh,bk),outxyh(col,line,color,han) 
    #define drawxyhan(x,y,color,han)        takefont(han),_DrawFont(x,y,_CurrentHZK->fontwidth,_CurrentHZK->fonthigh,color,_HanFont) 
    #define outxyhan(col,line,color,han)    takefont(han),_OutFont(col,line,_CurrentHZK->fontwidth,_CurrentHZK->fonthigh,color,_HanFont) 
    #define putxyhan(col,line,color,bk,han) _Block(col,line,_Xtimes*_CurrentHZK->fontwidth,_CurrentHZK->fonthigh*_Ytimes,bk),outxyhan(col,line,color,han) 
 
    /*---------------- 扩充微型西文 ASCII 字符 ----------------*/ 
    #define UP_ARROW     127            /* 向上箭头            */ 
    #define DOWN_ARROW   128            /* 向下箭头            */ 
    #define RIGHT_ARROW  129            /* 向右箭头            */ 
    #define LEFT_ARROW   130            /* 向左箭头            */ 
    #define SMALL_BAR    131            /* 矩形块              */ 
 
    extern  unsigned char _TinyFonts[]; /* 微型ASCII码字模点阵 */ 
 
    #define drawxyt(x,y,c,ch) (_DrawF(x,y,1,8,c,_TinyFonts+((ch)-' ')*8)) 
 
    void    _Cdecl drawxytiny (int x,int y,int color,char *s); 
 
    /*----------------------------------------------------------- 
        3.正文方式下的汉字和字符显示函数 
    -----------------------------------------------------------*/ 
    extern int _TextCol;       /* 当前光标列坐标(单位为字节)   */ 
    extern int _TextLine;      /* 当前光标行坐标(单位为象素)   */ 
    extern int _TextColor;     /* 当前正文前景色               */ 
    extern int _Background;    /* 当前正文背景色               */ 
    extern int _TextWinLeft;   /* 正文窗口左列坐标(单位为字节) */ 
    extern int _TextWinTop;    /* 正文窗口顶行坐标(单位为象素) */ 
    extern int _TextWinRight;  /* 正文窗口右列坐标(单位为字节) */ 
    extern int _TextWinBottom; /* 正文窗口底行坐标(单位为象素) */ 
 
    #define set_text_color(color) (_TextColor=(color)) 
    #define set_background(color) (_Background=(color)) 
    #define set_window(l,t,r,b)   (_TextWinLeft=(l),_TextWinTop=(t),_TextWinRight=(r),_TextWinBottom=(b)) 
    #define get_window(l,t,r,b)   (l=_TextWinLeft,t=_TextWinTop,r=_TextWinRight,b=_TextWinBottom) 
 
    #define outc(ch)              outxyc(_TextCol,_TextLine,_TextColor,ch) 
    #define outchar(ch)           outxychar(_TextCol,_TextLine,_TextColor,ch) 
    #define outh(han)             outxyh(_TextCol,_TextLine,_TextColor,han) 
    #define outhan(han)           outxyhan(_TextCol,_TextLine,_TextColor,han) 
 
    void _Cdecl outh1   (unsigned h,int whichhalf); 
    void _Cdecl outhan1 (unsigned h,int whichhalf); 
    void _Cdecl outs    (char *string); 
    void _Cdecl outstr  (char *string); 
    void _Cdecl putnstr (char *string,int width); 
 
    /*------------------ 光标操作函数(宏) ---------------------*/ 
    #define movecursor(x,y)  (_TextCol=(x),_TextLine=(y)) 
    #define iscursorlight()  ((int)_Int1CHfun[1]) 
 
    void far    _CursorFun   (void); 
    void _Cdecl setcursor    (int width,int high,int line,int speed,int color); 
    void _Cdecl lightcursor  (void); 
    void _Cdecl delightcursor(void); 
 
    void _Cdecl scroll_up    (int high); 
    void _Cdecl scroll_down  (int high); 
 
    /*----------------------------------------------------------- 
        4.汉字输入模块 
    -----------------------------------------------------------*/ 
    /*------------- 定义汉字输入提示行风格 --------------------*/ 
    #define WIN_STYLE   0             /* WINDOWS 风格          */ 
    #define DOS_STYLE   1             /* DOS 风格              */ 
    /*------------ 汉字输入法模块的类型定义 -------------------*/ 
    typedef struct 
    { 
        char       modename[9];   /* 汉字输入法名称            */ 
        int        maxcodes;      /* 码表长度                  */ 
        char      *codeset;       /* 输入法所用按键集合        */ 
        int        wildchar;      /* 通用替代键                */ 
        int        haveload;      /* 该汉字输入法是否已经装载  */ 
        unsigned (*get_han)();    /* 汉字输入法模块指针        */ 
        int        wherecodes;    /* 码表位置                  */ 
        FILE      *codefile;      /* 码表文件                  */ 
        long       filefront;     /* 码表文件头指针            */ 
        long       filelen;       /* 码表文件长度              */ 
        int        handle;        /* 码表在XMS扩充内存的句柄   */ 
        unsigned long EMM_addr;   /* 码表在扩充内存中的地址    */ 
    }MODE_TYPE; 
 
    /*-------------------- 全局变量定义 -----------------------*/ 
    extern int _HanMode;          /* 当前汉字输入方法          */ 
    extern int _PromptStyle;      /* 提示行风格                */ 
    extern int _PmtColor;         /* 提示行字符颜色            */ 
    extern int _PmtBk;            /* 提示行背景颜色            */ 
    extern int _DispPrompt;       /* 提示行是否弹出            */ 
    extern int _PromptLine;       /* 提示行位置                */ 
    extern int _SectionCode;      /* 区码                      */ 
    extern int _PositionCode;     /* 位码                      */ 
    extern MODE_TYPE _Mode[];     /* 汉字输入法参数            */ 
 
    /*------------- 汉字输入法切换功能键定义 ------------------*/ 
    #define ALT_F1       0        /* 功能键 Alt+F1             */ 
    #define ALT_F2       1        /* 功能键 Alt+F2             */ 
    #define ALT_F3       2        /* 功能键 Alt+F3             */ 
    #define ALT_F4       3        /* 功能键 Alt+F4             */ 
    #define ALT_F5       4        /* 功能键 Alt+F5             */ 
    #define ALT_F6       5        /* 功能键 Alt+F6             */ 
    #define ALT_F7       6        /* 功能键 Alt+F7             */ 
    #define ALT_F8       7        /* 功能键 Alt+F8             */ 
    #define ALT_F9       8        /* 功能键 Alt+F9             */ 
    #define ALT_F10      9        /* 功能键 Alt+F10            */ 
 
    /*-------------- 汉字输入模块函数说明 ---------------------*/ 
    #define set_prompt_style(color,bk,style) (_PmtColor=(color),_PmtBk=(bk),_PromptStyle=(style)) 
    #define set_prompt_line(line)            (_PromptLine=(line)) 
 
    unsigned _Cdecl _GetSP          (unsigned h); 
    unsigned _Cdecl _GetAscii       (unsigned h); 
    unsigned _Cdecl _GetFigure      (unsigned h); 
    unsigned _Cdecl _SetAscMode     (unsigned h); 
    unsigned _Cdecl _GetNewCode     (unsigned h); 
    unsigned _Cdecl _GetPY          (unsigned h); 
    unsigned _Cdecl _GetSY          (unsigned h); 
    void     _Cdecl _ClearPrompt    (int clear_mode); 
    void     _Cdecl set_asc_mode    (void); 
    int      _Cdecl set_han_mode    (int altfn,char *modename,unsigned (*get_han)(),char *codefile,int wherecodes); 
    void     _Cdecl free_han_mode   (int altfn); 
    unsigned _Cdecl gethan          (void); 
 
    /*----------------------------------------------------------- 
        第三部分 : 用户界面 
 
                   点、线、框、曲线 
                   仿WINDOWS窗口式界面的构件函数 
                   菜单设计 
                   全屏幕数据录入函数 
                   定时器 
                   字符串处理函数 
                   表达式与计算器 
    -----------------------------------------------------------*/ 
    /*----------------------------------------------------------- 
        1.屏幕作图函数 
    -----------------------------------------------------------*/ 
    void _Cdecl _PutPixel     (int x,int y,int color); 
    int  _Cdecl _GetPixel     (int x,int y); 
    void _Cdecl _H_Line       (int x,int y,int len,int color,unsigned char pattern); 
    void _Cdecl _V_Line       (int x,int y,int len,int color,unsigned char pattern); 
    void _Cdecl draw_rectangle(int x,int y,int width,int high,int color,unsigned char pattern); 
    void _Cdecl draw_line     (int x1,int y1,int x2,int y2,int color); 
    void _Cdecl _Bar          (int x,int y,int width,int hight,int color,unsigned long pattern); 
 
    /*------------- 画弧(扇形的填充参数 -----------------------*/ 
    #define ONLY_ARC        0                  /* 只画弧线     */ 
    #define DRAW_SECTOR     1                  /* 画空心扇形   */ 
    #define FILL_SECTOR     2                  /* 画实心扇形   */ 
 
    void _Cdecl _DrawArc      (int col,int row,int a,int b,int t1,int t2,int color,int fill); 
 
    #define draw_circle(x,y,r,color)    _DrawArc(x,y,r,r,0,360,color,ONLY_ARC) 
    #define draw_arc(x,y,r,t1,t2,color) _DrawArc(x,y,r,r,t1,t2,color,ONLY_ARC) 
    #define draw_pie(x,y,r,color)       _DrawArc(x,y,r,r,0,360,color,FILL_SECTOR) 
    #define draw_fan(x,y,r,t1,t2,color) _DrawArc(x,y,r,r,t1,t2,color,FILL_SECTOR) 
    #define draw_ellipse(x,y,a,b,color) _DrawArc(x,y,a,b,0,360,color,ONLY_ARC) 
 
    /*-- 西文制表符画线、框的线型(用于填写以下函数的参数type) -*/ 
    #define SINGLE   0                         /* 单线         */ 
    #define DOUBLE   1                         /* 双线         */ 
 
    void _Cdecl char_rectangle(int col,int line,int width,int high,int type); 
    void _Cdecl char_v_line   (int col,int line,int len,int type); 
    void _Cdecl char_h_line   (int col,int line,int len,int type); 
 
    /*----------------------------------------------------------- 
        2.仿WINDOWS窗口式界面的构件函数 
    -----------------------------------------------------------*/ 
    /*- 按钮颜色(用于填写使用按键的函数的颜色参数及_BarColor) -*/ 
    #define BLUE_BAR     0x891f 
    #define GREEN_BAR    0x8a2f 
    #define CYAN_BAR     0x8b3f 
    #define RED_BAR      0x8c4f 
    #define MAGENTA_BAR  0x8d5f 
    #define BROWN_BAR    0x8e6f 
    #define GRAY_BAR     0x8f70 
 
    extern unsigned _BarColor;    /* 按钮颜色 : 0- 3 -- 前景色 
                                                4- 7 -- 背景色 
                                                8-11 -- 阳边色 
                                               12-15 -- 暗边色 */ 
    extern int      _TitleColor;               /* 标题前景色   */ 
    extern int      _TitleBk;                  /* 标题背景色   */ 
    extern int      _EditColor;                /* 编辑框前景色 */ 
    extern int      _EditBk;                   /* 编辑框背景色 */ 
    extern int      _TabColor;                 /* 表格前景色   */ 
    extern int      _TabBk;                    /* 表格背景色   */ 
    extern int      _BoxLineColor;             /* 画框颜色     */ 
    extern int      _MouseSpeed;               /* 鼠标响应速度 */ 
 
    #define set_bar_color(c)   (_BarColor=(c)) 
    #define set_edit_color(c)  (_EditColor=(c)) 
    #define set_edit_bk(b)     (_EditBk=(b)) 
    #define set_title_color(c) (_TitleColor=(c)) 
    #define set_title_bk(b)    (_TitleBk=(b)) 
    #define set_tab_color(c)   (_TabColor=(c)) 
    #define set_tab_bk(b)      (_TabBk=(b)) 
    #define set_mouse_speed(s) (_MouseSpeed=(s)) 
 
    void     _Cdecl _Hole       (int x,int y,int width,int high,int color1, 
                                int color2,int thickness); 
    void     _Cdecl _Box        (int x,int y,int width,int high); 
    void     _Cdecl scroll_h_box(int x,int y,int len,int pagesize, 
                                unsigned key,int range,int *n,int *oldpos); 
    void     _Cdecl scroll_v_box(int x,int y,int len,int pagesize, 
                                unsigned key,int range,int *n,int *oldpos); 
    void     _Cdecl dispinfo    (int col,int line,int width,int high, 
                                char *prompt); 
    int      _Cdecl ask         (int col,int line,int width,int high, 
                                char *title,char *prompt); 
	unsigned _Cdecl getinfo     (int col,int line,int width,int high, 
                                char *prompt,int twolines,int type,void *v, 
                                int *len,int dec,char *set,double l1, 
                                double l2); 
    unsigned _Cdecl getcode     (int col,int line,int width,int high, 
                                char *title,int n,char *codelist[],int *no, 
                                int mark); 
    unsigned _Cdecl _GetCode    (int col,int line,int width,int high, 
                                char *title,int n,void (*getrec)(),int *no); 
    unsigned _Cdecl dir_menu    (int col,int line,int high,char *path, 
                                int attrib,int full_width,void (*fun)(), 
                                int multiselect); 
    unsigned _Cdecl ascii_list  (int col,int line,int *no); 
    void     _Cdecl SP_list     (int col,int line); 
 
    unsigned _Cdecl palette     (int col,int line,char *buffer); 
    void     _Cdecl prnscr      (int x1,int y1,int x2,int y2,int margin, 
                                unsigned palette); 
 
    /*----------------------------------------------------------- 
        3.菜单设计 
    -----------------------------------------------------------*/ 
    /*----------- 有关按键式菜单的按键类型的定义 --------------*/ 
    typedef struct             /* 按键类型定义                 */ 
    { 
        int x;                 /* 按键左上角相对于菜单的列坐标 */ 
        int y;                 /* 按键左上角相对于菜单的行坐标 */ 
        int w;                 /* 按键宽                       */ 
        int h;                 /* 按键高                       */ 
                               /* 以上4个参数的单位均为象素    */ 
        unsigned butncolor;    /* 正常按键颜色                 */ 
        unsigned pushcolor;    /* 被选中的按键颜色             */ 
                               /* 以上两个参数均可用按钮颜色宏 */ 
        unsigned fonttimes;    /* 按键名的放大倍数(第0字节为横 
                                  向放大倍数,第1字节为纵向放大 
                                  倍数,如不放大则此参数填257)  */ 
        char *name;            /* 按键名                       */ 
        unsigned key;          /* 按下该按键时菜单函数的返回值 */ 
        unsigned pressed;      /* 与该菜单按键同功能的键盘键码 */ 
        int high;              /* 按键厚度(单位为象素,可为0)   */ 
        int lock;              /* 按键是否被锁住               */ 
        unsigned (*fun)();     /* 按下按键时执行的功能模块指针 */ 
    }BUTTON_TYPE; 
 
    /*------------ 有关按键式菜单的结构类型定义 ---------------*/ 
    typedef struct             /* 按键式菜单类型               */ 
    { 
        int col;               /* 菜单左上角列坐标(单位为字节) */ 
        int line;              /* 菜单左上角行坐标(单位为象素) */ 
        int width;             /* 菜单宽度(单位为字节)         */ 
        int high;              /* 菜单高度(单位为象素)         */ 
        int arrow_ctrl;        /* 可否用键盘控制菜单           */ 
        int fixed;             /* 菜单是否固定                 */ 
        int left;              /* 菜单移动范围:左边界(字节)    */ 
        int top;               /* 菜单移动范围:上边界(象素)    */ 
        int right;             /* 菜单移动范围:右边界(字节)    */ 
        int bottom;            /* 菜单移动范围:下边界(象素)    */ 
        unsigned quit_key1;    /* 退出菜单所用键               */ 
        unsigned quit_key2;    /* 退出菜单所用键               */ 
        unsigned press_key1;   /* 选择菜单项目所用键           */ 
        unsigned press_key2;   /* 选择菜单项目所用键           */ 
        unsigned forward1;     /* 向前移动当前菜单条目所用键   */ 
        unsigned forward2;     /* 向前移动当前菜单条目所用键   */ 
        unsigned backward1;    /* 向后移动当前菜单条目所用键   */ 
        unsigned backward2;    /* 向后移动当前菜单条目所用键   */ 
        BUTTON_TYPE *buttons;  /* 指向按键表的指针             */ 
        int button_count;      /* 按键个数                     */ 
        int pop_up;            /* 菜单是否已经弹出             */ 
        int current;           /* 当前菜单条目的序号           */ 
        int saveimage;         /* 是否存储菜单背景             */ 
        char **block;          /* 菜单背景存储指针             */ 
        void (*disp_fun)();    /* 显示菜单轮廓图样函数(可为空) */ 
    }BUTTON_MENU; 
 
    void     _Cdecl _DrawButton(BUTTON_TYPE button,int col,int line,int chameleon,int op); 
    unsigned _Cdecl button_menu(BUTTON_MENU *b,unsigned h); 
 
    /*-------- 有关图标式菜单的菜单条目的结构类型定义 ---------*/ 
    typedef struct             /* 图标类型                     */ 
    { 
        int x;                 /* 图标左上角列坐标(单位为象素) */ 
        int y;                 /* 图标左上角行坐标(单位为象素) */ 
        int width;             /* 图标宽(单位为象素)           */ 
        int high;              /* 图标高(单位为象素)           */ 
        char *title;           /* 条目标题                     */ 
        unsigned key;          /* 返回值                       */ 
        void (*draw_icon)();   /* 图标绘制函数                 */ 
        unsigned (*fun)();     /* 选中本条目时执行的功能       */ 
    }ICON_TYPE; 
 
    /*------------- 有关图标式菜单的结构类型定义 --------------*/ 
    typedef struct             /* 图标式菜单类型               */ 
    { 
        int x;                 /* 条目标题的列坐标(单位为字节) */ 
        int y;                 /* 条目标题的行坐标(单位为象素) */ 
        int width;             /* 条目标题的宽度(单位为字节)   */ 
        int arrow_ctrl;        /* 可否用键盘控制菜单           */ 
        unsigned forward1;     /* 向前移动当前菜单条目所用键   */ 
        unsigned forward2;     /* 向前移动当前菜单条目所用键   */ 
        unsigned backward1;    /* 向后移动当前菜单条目所用键   */ 
        unsigned backward2;    /* 向后移动当前菜单条目所用键   */ 
        unsigned press_key1;   /* 选择当前菜单条目所用键       */ 
        unsigned press_key2;   /* 选择当前菜单条目所用键       */ 
        int icon_count;        /* 图标数量                     */ 
        ICON_TYPE *icons;      /* 指向图标表的指针             */ 
        int current;           /* 当前菜单条目的序号           */ 
        int mouse_x;           /* 当前鼠标列坐标               */ 
        int mouse_y;           /* 当前鼠标行坐标               */ 
    }ICON_MENU; 
 
    unsigned _Cdecl icon_menu(ICON_MENU *menu); 
 
    /*----------------------------------------------------------- 
        4.全屏幕数据录入函数 
          该族函数受以下全局变量的影响: 
          _Xtimes和_Ytimes        -- 字符的横向和纵向放大倍数; 
          _EditColor和_EditBk     -- 编辑时字符及编辑区背景颜色; 
          _TextColor和_Background -- 退出编辑后字符及编辑区颜色。 
          该族函数的参数col以字节为单位,line以象素为单位,width以 
          字符为单位。 
    -----------------------------------------------------------*/ 
    unsigned _Cdecl getxya(int col,int line,int width,char *string,char *picture); 
    unsigned _Cdecl getxyb(int col,int line,int *value); 
    unsigned _Cdecl getxyc(int col,int line,int *value,char *set); 
    unsigned _Cdecl getxyd(int col,int line,struct date *d); 
    unsigned _Cdecl getxyf(int col,int line,int width,double *value,int dec,double limit1,double limit2); 
    unsigned _Cdecl getxyi(int col,int line,int width,int *value,int limit1,int limit2); 
    unsigned _Cdecl getxyl(int col,int line,int width,long *value,long limit1,long limit2); 
    unsigned _Cdecl getxyp(int col,int line,int width,char *s); 
    unsigned _Cdecl getxys(int col,int line,int width,char *string,int *slen); 
    unsigned _Cdecl getxyt(int col,int line,int width,int high,char *string); 
 
    /*----------------------------------------------------------- 
        5.时钟与定时器 
    -----------------------------------------------------------*/ 
    typedef struct                /* 定时器类型的定义          */ 
    { 
        struct date d;            /* 日期                      */ 
        struct time t;            /* 时间                      */ 
        int tag;                  /* 闹钟激活方式              */ 
        unsigned (*fun)();        /* 事件函数                  */ 
    }ALARM; 
                                  /* 定义闹钟激活方式          */ 
    #define PER_SECOND  0         /* 每秒激活                  */ 
    #define PER_MINATE  1         /* 每分钟激活                */ 
    #define PER_HOUR    2         /* 每小时激活                */ 
    #define PER_DAY     3         /* 每日激活                  */ 
    #define PER_MONTH   4         /* 每月激活                  */ 
    #define PER_YEAR    5         /* 每年激活                  */ 
    #define ONCE_ONLY   6         /* 只在指定时间激活一次      */ 
 
    extern ALARM *_Alarm[];       /* 定时器表                  */ 
    extern int    _AlarmCount;    /* 定时器个数                */ 
 
    void _Cdecl set_clock  (int col,int line,int xtimes,int ytimes,int color,int bk); 
    void _Cdecl run_clock  (void); 
    void _Cdecl light_clock(void); 
    void _Cdecl close_clock(void); 
    int  _Cdecl set_alarm  (struct date date,struct time time,int type,unsigned (*fun)()); 
    void _Cdecl del_alarm  (int alarm_no); 
 
    /*----------------------------------------------------------- 
        6.字符串处理函数 
    -----------------------------------------------------------*/ 
    char *_Cdecl space(int len); 
    char *_Cdecl trim (char *string); 
    char *_Cdecl ltrim(char *string); 
    char *_Cdecl skipspace(char *string); 
 
    /*----------------------------------------------------------- 
        7.表达式与计算器 
    -----------------------------------------------------------*/ 
    /*------------------ 表达式函数的错误码 -------------------*/ 
    #define NO_ERROR            0          /* 无语法错误       */ 
    #define NULL_EXPRESSION     201        /* 空表达式         */ 
    #define NONCOMPLETE_EXP     202        /* 表达式不完全     */ 
    #define NO_RIGHT_BRACKET    203        /* 缺少右括号       */ 
    #define HAVE_NOT_ITEM       204        /* 表达式缺项       */ 
    #define NO_RIGHT_QUOTATION  205        /* 缺少右引号       */ 
    #define CONTINUOUS_OPTION   207        /* 连续的运算符     */ 
    #define ITEM_TYPE_WRONG     208        /* 运算对象类型错误 */ 
    #define SQRT_OF_NEGATIVE    209        /* 求负数的平方根   */ 
    #define LOG_OF_NEGATIVE     210        /* 求0和负数的对数  */ 
    #define IS_NOT_FUNCTION     211        /* 函数名拼写错误   */ 
    #define TOO_MUCH_OP         212        /* 运算符过多       */ 
    #define WRONG_NUMERAL       213        /* 数值错误         */ 
 
    extern int  _ResultType; 
    extern char _ResultString[]; 
 
    double _Cdecl expression(char *string); 
    double _Cdecl calcultor (int col,int line);