?? menu_gui.c
字號:
//========================================================================
// 文件名: Menu_GUI.c
// 作 者: Xinqiang Zhang(email: Xinqiang@Mzdesign.com.cn)
// www.Mzdesign.com.cn
// 日 期: 2007/03/24
// 描 述: 菜單應用范例程序--UI顯示刷新控制函數,配合MzDesign提供的通用版
// LCD基礎驅動程序
//
//
// 參 考:
// 版 本:
// 2007/03/24 First version Mz Design
// 2007/07/26 V1.01 Mz Design
// 修改Show_Item函數,使之適應不同的LCD模塊的驅動
//
//========================================================================
#include "./Driver/LCD_Driver/LCD_Dis.h"
#include "./Driver/LCD_Driver/LCD_Config.h"
#include "./MzMenu_GUI/Menu_GUI_config.h"
UCHAR Y_WIDTH_MENU=16;
UCHAR X_SPACE_FRONT=10;
UCHAR Dis_Menu_Num=0;
UCHAR Font_GB=0;
UCHAR Font_String=0;
//=====================================================================//
//函數:UCHAR ShowMenu_Item(UCHAR y,UINT* Menu_String,UCHAR Font_Color)
//描述:顯示菜單項子函數
//參數:space_front 顯示縮進值
// y Y軸坐標
// Menu_String 菜單項鏈表的首地址指針
//返回:顯示溢出情況 0:溢出 1:無溢出
//注意:無
//=====================================================================//
UCHAR ShowMenu_Item(UCHAR y,UCHAR* Menu_String,UCHAR Font_Color)
{
UCHAR *uiTemp;
UCHAR uiTemp1;
UCHAR i,x,Char_Nmb;
x = X_SPACE_FRONT; //Mune show front space....
Char_Nmb = (UCHAR)Menu_String[0];
if(Char_Nmb<0xA1)
{
for(i=1;i<=Char_Nmb;i++)
{
uiTemp = (UCHAR*)(Menu_String+i);
uiTemp1 = (UCHAR)*uiTemp;
if(uiTemp1>=128)
{
FontSet(Font_GB,Font_Color); //選擇漢字字庫
uiTemp1 = uiTemp1-128;
}
else
{
FontSet(Font_String,Font_Color);//選擇ASCII碼字庫
}
PutChar(x,y,uiTemp1);
x = x+X_Witch;//GetASIIX();
if(x>=Dis_X_MAX) return 0; //橫坐標溢出,返回零
}
}
#ifdef Hz_Lib_II
else
{
FontSet_cn(Font_String,Font_Color);
PutString_cn(x,y,(unsigned short *)Menu_String);
}
#endif
return 1;
}
//=====================================================================//
//函數:void UpDate_Menu(UCHAR First_Index,UCHAR Menu_Index,UINT** Menu_List)
//描述:刷新整屏菜單顯示函數
//參數:First_Index 當面顯示頁的第一條菜單號
// Menu_Index 當前處于選用的菜單項
// Menu_List 菜單資源鏈表指針
//返回:無
//注意:無
//=====================================================================//
UCHAR First_Index_old=0xff;
UCHAR y_Index_old = 0xff;
void UpDate_Menu(UCHAR First_Index,UCHAR Menu_Index,UCHAR** Menu_List)
{
UINT y_width,y_Index;
UCHAR List_Num,i;
List_Num = (UINT)**Menu_List;
y_width = Y_WIDTH_MENU;
y_Index = 0;
while(First_Index>List_Num) First_Index -= List_Num;
if(List_Num>Dis_Menu_Num) List_Num = Dis_Menu_Num;
// if(Menu_Index>List_Num) return;
if(First_Index_old!=First_Index)
{
SetPaintMode(1,MENU_BACK_COLOR);
ClrScreen(0); //清屏
SetPaintMode(1,MENU_SELE_COLOR);
if(y_Index_old==0xff)
{
Rectangle(0,0/*First_Index*y_width*/,Dis_X_MAX,/*First_Index*y_width+*/y_width-1,1);
i=First_Index+1;
ShowMenu_Item(y_Index,(UCHAR *)Menu_List[i++],MENU_SELF_COLOR);
y_Index = y_Index+Y_WIDTH_MENU;
for(;i<List_Num+1;i++)
{
ShowMenu_Item(y_Index,(UCHAR *)Menu_List[i],MENU_FONT_COLOR);
y_Index = y_Index+Y_WIDTH_MENU;
}
}
else
{
y_Index_old = Menu_Index-First_Index;
Rectangle(0,y_Index_old*Y_WIDTH_MENU,Dis_X_MAX,y_Index_old*Y_WIDTH_MENU+Y_WIDTH_MENU-1,1);
i=First_Index+1;
while(List_Num)
{
if((i-1)==Menu_Index) ShowMenu_Item(y_Index,(UCHAR *)Menu_List[i],MENU_SELF_COLOR);
else ShowMenu_Item(y_Index,(UCHAR *)Menu_List[i],MENU_FONT_COLOR);
y_Index = y_Index+Y_WIDTH_MENU;
i++;
List_Num--;
}
}
First_Index_old = First_Index;
}
else
{
y_Index = y_Index_old-First_Index_old;
y_Index = y_Index*Y_WIDTH_MENU;
SetPaintMode(1,MENU_BACK_COLOR);
Rectangle(0,y_Index/*y_Index_old*Y_WIDTH_MENU*/,Dis_X_MAX,/*y_Index_old*Y_WIDTH_MENU*/y_Index+Y_WIDTH_MENU-1,1);
ShowMenu_Item(y_Index,(UCHAR *)Menu_List[y_Index_old+1],MENU_FONT_COLOR);
y_Index = Menu_Index-First_Index;
y_Index = y_Index*Y_WIDTH_MENU;
SetPaintMode(1,MENU_SELE_COLOR);
Rectangle(0,/*Menu_Index*Y_WIDTH_MENU*/y_Index,Dis_X_MAX,/*Menu_Index*Y_WIDTH_MENU*/y_Index+Y_WIDTH_MENU-1,1);
ShowMenu_Item(y_Index,(UCHAR *)Menu_List[Menu_Index+1],MENU_SELF_COLOR);
}
y_Index_old = Menu_Index;
}
//=====================================================================//
//函數:void Redraw_Menu(UCHAR First_Index,UCHAR Menu_Index,UINT** Menu_List)
//描述:刷新整屏菜單顯示函數
//參數:First_Index 當面顯示頁的第一條菜單號
// Menu_Index 當前處于選用的菜單項
// Menu_List 菜單資源鏈表指針
//返回:
//注意:無
//=====================================================================//
void Redraw_Menu(UCHAR First_Index,UCHAR Menu_Index,UCHAR** Menu_List)
{
UCHAR *Menu_Config;
First_Index_old=0xff;
Menu_Config = (UCHAR *)(*Menu_List);
Font_GB = *(Menu_Config+1);
Font_String = *(Menu_Config+2);
Y_WIDTH_MENU = *(Menu_Config+3);
X_SPACE_FRONT = *(Menu_Config+4);
Dis_Menu_Num = (Dis_Y_MAX+1)/Y_WIDTH_MENU;
UpDate_Menu(First_Index,Menu_Index,Menu_List);
}
//=====================================================================//
//函數:void Initial_Menu(UINT** Menu_List)
//描述:刷新整屏菜單顯示函數
//參數:Menu_List 菜單資源鏈表指針
//返回:
//注意:無
//=====================================================================//
void Initial_Menu(UCHAR** Menu_List)
{
UCHAR *Menu_Config;
First_Index_old=0xff;
y_Index_old = 0xff;
Menu_Config = (UCHAR *)(*Menu_List);
Font_GB = *(Menu_Config+1);
Font_String = *(Menu_Config+2);
Y_WIDTH_MENU = *(Menu_Config+3);
X_SPACE_FRONT = *(Menu_Config+4);
Dis_Menu_Num = (Dis_Y_MAX+1)/Y_WIDTH_MENU;
UpDate_Menu(0,0,Menu_List);
}
//=====================================================================//
//函數:unsigned int GetMLNum(unsigned int* Menu_List)
//描述:獲取菜單資源的菜單項個數函數
//參數: Menu_List 菜單資源鏈表指針
//返回:菜單項個數
//注意:無
//=====================================================================//
UCHAR GetMLNum(UCHAR **Menu_List)
{
UCHAR uiTemp;
// UCHAR code*Menu_Config;
uiTemp/*Menu_Config*/ = (unsigned char)**Menu_List;
// uiTemp = (UCHAR)*Menu_Config;
return uiTemp-1;
}
//=====================================================================//
//函數:unsigned int GetMLiNum_Page(unsigned int* Menu_List)
//描述:獲取菜單資源在一屏可以顯示的菜單項個數函數
//參數: Menu_List 菜單資源鏈表指針
//返回:菜單項個數
//注意:無
//=====================================================================//
UCHAR GetMLiNum_Page(UCHAR** Menu_List)
{
UCHAR uiTemp;
UCHAR *Menu_Config;
Menu_Config = (UCHAR *)(Menu_List[0]);
uiTemp = *(Menu_Config+3);
uiTemp = (Dis_Y_MAX+1)/uiTemp; //
return uiTemp;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -