RT
就是实现简单地在编辑框中输入文本(序列号),光标左移右移,后退删除确认输入的功能。
程序里目前定义了5个按键分别是右移、左移、后退删除、确认输入、‘0’ 键(做输入测试用)
现在的问题是我将焦点转到EDIT框后,按‘0’键输入字符就会死机,按其他按键目前无异常。
以下是我写的EDIT框函数,个人觉得可能是指针出了问题,请各位大大帮忙看一下。。
/*******************************************************************************
* Function Name : Edit_Delete,Edit_Input,Edit_MoveLeft,Edit_MoveRight
* Description : 编辑框内光标操作函数.
* Input : None,char keyvalue
* Output : None
* Return : None
*******************************************************************************/
MaxNum_Serial//宏定义序列号的最大字符数
Edit_CurPos//宏定义目前的光标位置
Edit//全局变量EDIT框的句柄
void Edit_Delete()//后退删除功能
{
/*if(0 != Edit_CurPos)
{
Edit_CurPos--;
}*/
}
//在当前光标处插入字符
void Edit_Input(char keyvalue)//输入功能
{
int num,count;
char *p;
char text[MaxNum_Serial];
if(MaxNum_Serial > Edit_CurPos)
{
num=EDIT_GetNumChars(Edit);
count=num-Edit_CurPos;
EDIT_GetText(Edit,text,MaxNum_Serial);
p=text;
while(*p != '\0')
{
p++;
}
p++;
while(count--)
{
*p=*(p-sizeof(char));
p--;
}
*p=keyvalue;
EDIT_SetText(Edit, tr(text));
Edit_CurPos++;
}
}
void Edit_MoveLeft()
{
if(0 < Edit_CurPos)
{
EDIT_SetCursorAtChar(Edit,Edit_CurPos-1);
}
}
void Edit_MoveRight()
{
if((MaxNum_Serial > Edit_CurPos)&&(EDIT_GetNumChars(Edit)) > Edit_CurPos)
{
EDIT_SetCursorAtChar(Edit,Edit_CurPos+1);
}
}
|