📄 menushow.c
字号:
//***************************************************************************//
//文件描述:SPLC501菜单应用范例程序--UI显示刷新控制函数
//
//声明: 小丑 20050810 Sunnorth Mz Design
// xinqiang@sunnorth.com.cn
//
//***************************************************************************//
#define Clear_Watchdog() *(unsigned *)0x7012=1; // 清看门狗
#include "SPLC501User.h"
#include "chinese.h"
//=====================================================================//
//函数:unsigned int GetBitMapX(unsigned int *Map)
//描述:获取位图(包括汉字字模)的X轴数据(宽度)
//参数:unsigned int *Map 数据表的首地址指针
//返回:宽度
//注意:无
//=====================================================================//
unsigned int GetBitMapX(unsigned int *Map)
{
unsigned int uiTemp;
uiTemp = *Map;
uiTemp = (uiTemp&0xff00)>>8;
return uiTemp;
}
//=====================================================================//
//函数:unsigned int GetBitMapY(unsigned int *Map)
//描述:获取位图(包括汉字字模)的Y轴数据(高度)
//参数:unsigned int *Map 数据表的首地址指针
//返回:高度
//注意:无
//=====================================================================//
unsigned int GetBitMapY(unsigned int *Map)
{
unsigned int uiTemp;
uiTemp = *Map;
uiTemp = uiTemp&0x00ff;
return uiTemp;
}
//=====================================================================//
//函数:unsigned int GetASIIX(void)
//描述:获取当前ASCII码显示的宽度信息
//参数:无
//返回:ASCII码宽度
//注意:无
//=====================================================================//
unsigned int GetASIIX(void)
{
unsigned int uiTemp;
uiTemp = LCD501_FontGet();
if(uiTemp) uiTemp = 8;
else uiTemp = 6;
return uiTemp;
}
//=====================================================================//
//函数:unsigned int ShowMenu_Item(unsigned int space_front,unsigned int y,
// unsigned int* Menu_String)
//描述:显示菜单项子函数
//参数:space_front 显示缩进值
// y Y轴坐标
// Menu_String 菜单项链表的首地址指针
//返回:显示溢出情况 0:溢出 1:无溢出
//注意:无
//=====================================================================//
unsigned int ShowMenu_Item(unsigned int space_front,unsigned int y,unsigned int* Menu_String)
{
unsigned int *uiTemp;
unsigned int uiTemp1;
unsigned int i,x,Char_Nmb;
x = space_front; //Mune show front space....
Char_Nmb = (unsigned int)Menu_String[0];
for(i=1;i<=Char_Nmb;i++)
{
uiTemp = (unsigned int*)(Menu_String+i);
uiTemp1 = (unsigned int)*uiTemp;
if(uiTemp1>0x0100)
{ //Show Chinese or bitmap
LCD501_Bitmap(x,y,(unsigned int*)*uiTemp);
x = x+GetBitMapX((unsigned int*)*uiTemp);
}
else
{
LCD501_PutChar(x,y,uiTemp1);
x = x+GetASIIX();
}
if(x>=SCR_MAX_COL) return 0; //横坐标溢出,返回零
}
return 1;
}
//=====================================================================//
//函数:void UpDateMenu(unsigned int First_Index,unsigned int Menu_Index,
// unsigned int* Menu_List)
//描述:刷新整屏菜单显示函数
//参数:First_Index 当面显示页的第一条菜单号
// Menu_Index 当前处于选用的菜单项
// Menu_List 菜单资源链表指针
//返回:无
//注意:无
//=====================================================================//
void UpDateMenu(unsigned int First_Index,unsigned int Menu_Index,unsigned int* Menu_List)
{
unsigned int y_width,List_Num,i,y_Index;
unsigned int uiTemp;
List_Num = (unsigned int)Menu_List[0];
y_width = (unsigned int)Menu_List[1];
y_Index = 0;
switch(y_width)
{
case 1: y_width = 16;break;
case 2: y_width = 12;break;
case 3: y_width = 8;break;
default:return ;break;
}
while(First_Index>List_Num) First_Index -= List_Num;
if(Menu_Index>List_Num) return;
LCD501_ClrScreen(0);
for(i=First_Index+2;i<List_Num+2;i++)
{
ShowMenu_Item(0,y_Index,(unsigned int *)Menu_List[i]);
y_Index = y_Index+y_width;
}
y_Index = Menu_Index-First_Index;
y_Index = y_Index*y_width;
uiTemp = LCD501_GetPaintMode();
LCD501_SetPaintMode(3);
LCD501_Rectangle(0,y_Index,128,y_Index+y_width-1,1);
LCD501_SetPaintMode(uiTemp);
}
//=====================================================================//
//函数:unsigned int GetMLNum(unsigned int* Menu_List)
//描述:获取菜单资源的菜单项个数函数
//参数: Menu_List 菜单资源链表指针
//返回:菜单项个数
//注意:无
//=====================================================================//
unsigned int GetMLNum(unsigned int* Menu_List)
{
unsigned int uiTemp;
uiTemp = (unsigned int)Menu_List[0];
return uiTemp-1;
}
//=====================================================================//
//函数:unsigned int GetMLiNum_Page(unsigned int* Menu_List)
//描述:获取菜单资源在一屏可以显示的菜单项个数函数
//参数: Menu_List 菜单资源链表指针
//返回:菜单项个数
//注意:无
//=====================================================================//
unsigned int GetMLiNum_Page(unsigned int* Menu_List)
{
unsigned int uiTemp;
uiTemp = (unsigned int)Menu_List[1];
switch(uiTemp)
{
case 1: uiTemp = 4;break;
case 2: uiTemp = 5;break;
case 3: uiTemp = 8;break;
default:break;
}
return uiTemp;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -