|
楼主 |
发表于 2005-12-2 09:08:08
|
显示全部楼层
示例二:4位的数值输入函数(支持编辑)
/********************************************************
* 函数说明:用户数据输入函数 *
* 输出: 获取的数值 当前的坐标 *
********************************************************/
unsigned int Input(char x,char y)
{
char InputBuff[5] = {0x0f,0x0f,0x0f,0x0f,0x0f};
signed char Tail = 0;
signed char WritePoint = 0;
char a = 0;
char IfInputOk = False;
unsigned int TempReturn = 0;
while (IfInputOk == False)
{
KeyScan();
AddKeyCode();
if (GetKeyCode() == True)
{
switch (ReturnKeyNum)
{
case Key_1:
InputBuff[WritePoint] = 1;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_2:
InputBuff[WritePoint] = 2;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_3:
InputBuff[WritePoint] = 3;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_4:
InputBuff[WritePoint] = 4;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_5:
InputBuff[WritePoint] = 5;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_6:
InputBuff[WritePoint] = 6;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_7:
InputBuff[WritePoint] = 7;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_8:
InputBuff[WritePoint] = 8;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_9:
InputBuff[WritePoint] = 9;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_0:
InputBuff[WritePoint] = 0;
WritePoint ++;
if (WritePoint == 4)
{
WritePoint = 0;
}
if (WritePoint > Tail)
{
Tail ++;
}
break;
case Key_Delete:
if ((WritePoint == 0) && (Tail == 0) && (InputBuff[WritePoint] != 0))
{
InputBuff[0] = 0x0f;
}
else if (Tail != 0)
{
for (a = WritePoint;a<=Tail;a++)
{
InputBuff[a] = InputBuff[a+1];
}
InputBuff[Tail] = 0x0f;
Tail --;
if (WritePoint > Tail)
{
WritePoint = Tail;
}
}
break;
case Key_Enter:
IfInputOk = True;
break;
}
switch (ReturnLongKeyPressNum)
{
case Key_Left:
WritePoint --;
if (WritePoint < 0)
{
WritePoint = Tail;
}
break;
case Key_Right:
WritePoint ++;
if (WritePoint > Tail)
{
WritePoint = 0;
}
break;
}
}
Locate(x,y)
for (a = 0;a<4;a ++)
{
if (InputBuff[a] != 0x0f)
{
PrintN(InputBuff[a],1)
}
else
{
Print(" ")
}
}
Locate(WritePoint+x,y)
ShowIcon
}
HideIcon
for (a = 0;a<4;a++)
{
if (InputBuff[a] != 0x0f)
{
TempReturn <<= 4;
TempReturn |= InputBuff[a];
}
}
return TempReturn;
} |
|