ude "pageWnd.h"
/*=====================================================
=
=====================================================*/
char flagPaint = 0;
void (* pOnPaint)(void) = 0;
void (* pOnKey)(short) = 0;
const char *pMenuStr;
uchar menuSelect = 0;
uchar menuLine = 0;
uchar menuTop;
TypePage *pageCurrent;
TypePage *pageTreeTab[10];
uchar pageIndex = 0;
/*=====================================================
=
=====================================================*/
void WndDrawMenu(void);
/*************************************************************************
* 函数原型:
* 功能描述:
* 入口参数:
* 出口参数:
* 返 回 值:
*************************************************************************/
void WndPageSet(const TypePage *pg, int type)
{
if (pg == &pageMain) //防止出错
{
pageIndex = 0;
}
else if (type == 0)
{
pageTreeTab[pageIndex++] = pageCurrent;
}
pageCurrent = (TypePage *)pg;
pOnPaint = pg->OnPaint;
pOnKey = pg->OnKey;
flagPaint = 1;
}
/*************************************************************************
* 函数原型:
* 功能描述:
* 入口参数:
* 出口参数:
* 返 回 值:
*************************************************************************/
TypePage * WndGetPage(void)
{
return pageCurrent;
}
/*************************************************************************
* 函数原型:
* 功能描述:
* 入口参数:
* 出口参数:
* 返 回 值:
*************************************************************************/
void WndPageEsc(void)
{
TypePage *pg;
if (pageIndex != 0)
{
pageIndex--;
pg = pageTreeTab[pageIndex];
}
else
{
pg = (TypePage *)&pageMain;
}
pageCurrent = pg;
pOnPaint = pg->OnPaint;
pOnKey = pg->OnKey;
flagPaint = 1;
}
/*************************************************************************
* 函数原型:
* 功能描述:
* 入口参数:
* 出口参数:
* 返 回 值:
*************************************************************************/
void WndOnPaint(void)
{
if (flagPaint != 0)
{
flagPaint = 0;
(*pOnPaint)();
}
}
/*************************************************************************
* 函数原型:
* 功能描述:
* 入口参数:
* 出口参数:
* 返 回 值:
*************************************************************************/
void WndOnKey(short key)
{
if (pOnKey != 0)
{
(*pOnKey)(key);
}
}
/*************************************************************************
* 函数原型:
* 功能描述:
* 入口参数:
* 出口参数:
* 返 回 值:
*************************************************************************/
void WndMenuInit(const char *pmn, char mline)
{
menuSelect = 0;
pMenuStr = pmn;
menuLine = mline;
menuTop = 0;
WndDrawMenu();
}
/*************************************************************************
* 函数原型:
* 功能描述:
* 入口参数:
* 出口参数:
* 返 回 值:
*************************************************************************/
void WndMenuSelet(int m)
{
//光标滑动
if (m > 0) //下移
{
menuSelect++;
if (menuSelect == menuLine)
menuSelect = 0;
if (menuSelect > menuTop + 4)
{
if (menuLine < menuTop + 4)
menuTop = menuLine - 4;
else
menuTop = menuSelect - 4;
}
}
else if (m < 0) //上移
{
if (menuSelect == 0)
menuSelect = menuLine - 1;
else
menuSelect--;
}
//图框移动
if (menuSelect < menuTop) //上移
{
menuTop = menuSelect;
}
else if (menuSelect >= menuTop + 4) //下移
{
menuTop = menuSelect - 3;
}
WndDrawMenu();
}
/*************************************************************************
* 函数原型:
* 功能描述:
* 入口参数:
* 出口参数:
* 返 回 值:
*************************************************************************/
char WndMenuGetSelet(void)
{
return menuSe |