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);
}