lect + 1;
}
/*************************************************************************
* 函数原型:
* 功能描述:
* 入口参数:
* 出口参数:
* 返 回 值:
*************************************************************************/
void WndDrawMenu(void)
{
int i;
char buf[17];
const char *pmn = pMenuStr + menuTop * 16;
DispClr();
for (i=0; i<4; i++)
{
if (menuTop + i == menuLine)
break;
memcpy(buf, pmn, 16);
buf[16] = '\0';
if (menuSelect == menuTop + i)
DispSetStyle(DISP_POSITION | DISP_REVERSE | DISP_7x9);
else
DispSetStyle(DISP_POSITION | DISP_NORMAL | DISP_7x9);
DispString(0, i * 2, buf);
pmn += 16;
}
}
/*************************************************************************
* 函数原型:
* 功能描述:
* 入口参数:
* 出口参数:
* 返 回 值:
*************************************************************************/
long WndGetPaseword(int x, int y, char *psw, int len, long qevent)
{
int pin = 0;
long keyevt;
char key;
char buf[20];
memset(buf, '_', len);
buf[len] = '\0';
PSW_INPUT_LOOP:
DispString(x, y, buf);
keyevt = delay_and_wait_key(0, EXIT_KEY_ALL, 0);
if (keyevt == qevent)
{
psw[0] = '\0';
return keyevt;
}
switch (keyevt)
{
case EXIT_KEY_0:
key = '0';
break;
case EXIT_KEY_1:
key = '1';
break;
case EXIT_KEY_2:
key = '2';
break;
case EXIT_KEY_3:
key = '3';
break;
case EXIT_KEY_4:
key = '4';
break;
case EXIT_KEY_5:
key = '5';
break;
case EXIT_KEY_6:
key = '6';
break;
case EXIT_KEY_7:
key = '7';
break;
case EXIT_KEY_8:
key = '8';
break;
case EXIT_KEY_9:
key = '9';
break;
case EXIT_KEY_COMM:
if (pin != 0)
{
buf[--pin] = '_';
}
goto PSW_INPUT_LOOP;
break;
case EXIT_KEY_ENTER:
psw[pin] = 0;
return 0;
default:
goto PSW_INPUT_LOOP;
}
if (pin != len)
{
psw[pin] = key;
buf[pin] = '*';
pin++;
}
goto PSW_INPUT_LOOP;
}
在软件设计时,如果添加界面和对应的按键处理,很灵活,只需要新添加一个文件就可以了,文件的内容,只需要实现OnPain和对应的OnKey
#include "PageMenu.h"
/*=====================================================
=
=====================================================*/
const char mainMenuTab[] = /*
1234567890123456*/"\
1. 现场采集 \
2. 数据上传 \
3. 存储状态查询 \
4. 时间设置 \
5. 对比度设置 \
6. 恢复出厂设置 \
7. 关于 ";
/*=====================================================
=
=====================================================*/
void PageMenuOnPain(void);
void WndMenuOnKey(short key);
const TypePage pageMenu = {PageMenuOnPain, WndMenuOnKey};
/*************************************************************************
* 函数原型:
* 功能描述:
* 入口参数:
* 出口参数:
* 返 回 值:
*************************************************************************/
void PageMenuOnPain(void)
{
WndMenuInit(mainMenuTab, 7);
}
/*************************************************************************
* 函数原型:
* 功能描述:
* 入口参数:
* 出口参数:
* 返 回 值:
*************************************************************************/
void WndMenuOnKey(short key)
{
int res;
switch (key)
{
case KEY_F1:
case KEY_ENTER:
res = WndMenuGetSelet();
switch (res)
{
case 1:
WndPageSet(&pageSimp);
break;
case 2:
WndPageSet(&pagePclink);
break;
case 3:
WndPageSet(&pageInquire);
break;
case 4:
WndPageSet(&pageRtc);
break;
case 5:
WndPageSet(&pageGray);
break;
case 6:
SPageInit();
WndPageSet(&pageMenu, 1);
break;
case 7:
WndPageSet(&pageAbout);
break;
}
break;
case KEY_F2:
case KEY_F3:
WndPageSet(&pageMain);
break;
case KEY_1:
WndPageSet(&pageSimp);
break;
case KEY_2:
WndPageSet(&pagePclink);
break;
case KEY_3:
WndPageSet(&pageInquire);
break;
case KEY_4:
WndPageSet(&pageRtc);
break;
case KEY_5:
WndPageSet(&pageGray);
break;
case KEY_6:
SPageInit();
WndPageSet(&pageMenu, 1);
break;
case KEY_7:
WndPageSet(&pageAbout);
break;
case KEY_UP:
WndMenuSelet(-1);
break;
case KEY_DOWN:
WndMenuSelet(1);
break;
case KEY_POWER:
WndPageSet(&pagePower);
break;
}
}
pageMain,pageAbout,pageRtc,pagePclink等文件,他们的结构很类似。都是实现了OnPaint和OnKey函数。
如:pagePclink.c文件内容:
实现了PagePclinkOnPaint和PagePclinOnKey函数.
CommPclink函数是自己想要实现的功能,可以自己定义。
#include "pagePclink.h"
/*=====================================================
=
=====================================================*/
void PagePclinkOnPaint(void);
void PagePclinOnKey(short key);
const TypePage pagePclink = {PagePclinkOnPaint, PagePclinOnKey};
/*************************************************************************
* 函数原型:
* 功能描述:
* 入口参数:
* 出口参数:
* 返 回 值:
*************************************************************************/
void PagePclink