|
项目用户登陆要求,用户使用初始密码0,不需要输入密码直接登陆,但一旦更改,就必须用更改后的密码登陆。
所以用户名标签上对应的不是一个数值输入控件,是一个按键返回控件,因为每个用户返回的键值不同所以就确定是哪个用户的登陆请求,收到请求后判断是不是密码0,若是就直接登陆,不是则触发一个位置设置有效分辩率以外的数字输入控件来接收密码。
功能实现还算不错。
//用户登陆界面
void PageUserLogin(void) {
static BOOL fInit = FAIL;
U16 whUserSel;
U32 lhPass1;
U32 lhPass2;
U8 rgbh[20],bh;
if(!fInit) {
fInit = TRUE;
Write_Dgus(0xff00,0);
Write_Dgus(0xff01,0);
Write_Dgus(0xff02,0);
for(bh=0;bh<USER_MAXSIZE;bh++) {
MyStrCpy(rgbh,vsUser.rgsItem[bh].rgbhUser,12);
write_dgus_vp(0xf000+bh*8,rgbh,6);
}
}
whUserSel = Read_Dgus(0xff00);
if(whUserSel > 0) {
if(whUserSel <= USER_MAXSIZE) {
vsRunInfo.whUser = whUserSel-1;
if(0==vsUser.rgsItem[vsRunInfo.whUser].lhPass) {
vsRunInfo.whPageNum = 2;
fInit = FAIL;
}
else SimTouchKey(1210,410);
}
Write_Dgus(0xff00,0);
}
lhPass1 = Read_Dgus(0xff01)*65536L + Read_Dgus(0xff02);
lhPass2 = Read_Dgus(0xff01)*65536L + Read_Dgus(0xff02);
if((lhPass1 >0)&&(lhPass1==lhPass2)) {
if(lhPass1==vsUser.rgsItem[vsRunInfo.whUser].lhPass) {
vsRunInfo.whPageNum = 2;
fInit = FAIL;
}
Write_Dgus(0xff01,0);
Write_Dgus(0xff02,0);
}
}
//模拟按键
void SimTouchKey(U16 whX,U16 whY) {
U8 rgbh[8];
rgbh[0] = 0x5a;
rgbh[1] = 0xa5;
rgbh[2] = 0;
rgbh[3] = 4; //点击
rgbh[4] = whX/256;
rgbh[5] = whX%256;
rgbh[6] = whY/256;
rgbh[7] = whY%256;
write_dgus_vp(0x00d4,rgbh,4);
}
|
-
1.jpg
(62.2 KB, 下载次数: 74)
登陆界面设计
|