www.pudn.com > cwin.rar > GETFIG.C


    /*----------------------------------------------------------- 
        函数 _GetFigure : 输入图形符号 
    -----------------------------------------------------------*/ 
    #include  
 
    extern void _Cdecl _ClearPrompt(int clear_mode); 
    static void _Cdecl _DisplayFigurePrompt(int section,int position); 
 
    unsigned _Cdecl _GetFigure(h) 
    unsigned h;                  /* 进入该输入法时的编码串首码 */ 
    { 
        /*-- 如果已在图形符号方式,可以连续选择输入图形符号 ----*/ 
        if(_PositionCode) 
        { 
 
            /*-- 如果是数字键直接确定图形符号的机内码 ---------*/ 
            if(h>='0' && h<='9') 
                h = (_SectionCode+160)|(_PositionCode+160+(h=='0'?9:h-'1')<<8); 
 
            /*-- 如果是 - 或 + 重码区向前或向后翻页 -----------*/ 
            else if(h=='=' || h=='-') 
            { 
                if(h=='=') 
                    _PositionCode = _PositionCode<91?_PositionCode+10:_PositionCode; 
                else 
                    _PositionCode = _PositionCode>1?_PositionCode-10:1; 
                _DisplayFigurePrompt(_SectionCode,_PositionCode); 
                h = 0; 
            } 
        } 
 
        /*-- 如果是第一次进入图形符号方式,输入区码 ------------*/ 
        else if(h>='1' && h<='9') 
        { 
            _ClearPrompt(1); 
            outxyc(16,_PromptLine+7,_PmtColor,h); 
            _SectionCode  = h-'0'; 
            _PositionCode = 1; 
            _DisplayFigurePrompt(_SectionCode,_PositionCode); 
            h = 0; 
        } 
        return h; 
    } 
 
    /*-- 内部函数 _DisplayFigurePrompt : 显示图形符号输入法的提示 -- */ 
    static void _Cdecl _DisplayFigurePrompt(section,position) 
    int section;               /* 区号 ( 1 - 9 )               */ 
    int position;              /* 该页首位号(每页10个图形符号) */ 
    { 
        int i,j = 29; 
        char rest[6]; 
 
        /*-- 显示该页的图形符号提示 ---------------------------*/ 
        _ClearPrompt(2); 
        for(i=1;i<=(position==91?4:10);i++) 
        { 
            outxyc(j++,_PromptLine+7,_PmtColor,i%10+'0'); 
            outxyc(j++,_PromptLine+7,_PmtColor,':'); 
            outxyh(j,_PromptLine+7,_PmtColor,(section+160)|(position+i+159)<<8); 
            j+=2; 
        } 
 
        /*-- 显示该区剩余图形符号数目 -------------------------*/ 
        sprintf(rest,"%03d",position==91?0:(85-position)); 
        outxys(70,_PromptLine+7,_PmtColor,rest); 
    }