名稱:
OLED_Window.h
OLED_Window.c
功能:對外資提供三個接口:1添加圖標控件
2光標移動(選擇圖標)函數
3光標確定(執行圖標)函數
4顯示函數
OLED_Window.h代碼:
#ifndef _OLED_WINDOW_H #define _OLED_WINDOW_H #include "OLED.h" //OLED驅動庫 /*******************OLED驅動庫函數接口************************/ #define DRAW_string /*******************************************/ #define PAGE 2 //Icon 頁數 #define NUM 6 //每頁多少個 #define Icon_Max 12 //Icon最大個數 PAGE*NUM #define ICON_W 42 //圖標寬 #define ICON_H 24 //圖標高 #define FistRow_Distan 16 //第一行狀態欄高度 #define ICON_STR_H 16 //字高 #define ICON_STR_W 32 //字最大寬 #define ICON_Distan_H 4 // 圖標空白角高 #define ICON_Distan_W 5 //圖標空白角寬 #define STRING_LE 10 //允許最大字符數 #define Power_Len 10 #define Power_H 8 #define Power_W 12 #define Power_X 4 #define Power_Y 2 #define Power_W_dis 1 //Power_W_dis=(Power_W-Power_Len)/2 /**************函數宏**************************/ #define Set_Pos(x,y) LCD_Set_Pos(x,y) #define Print_string(x,y,p) OLED_ShowString(x,y,p) #define Print_string_Mode(x,y,p,m) OLED_ShowString_Mode(x,y,p,m) #define Print_Fill(x1,y1,x2,y2,dot) OLED_Fill(x1,y1,x2-1,y2-1,dot) #define Print_Clear() OLED_Clear() /*****************************************/ #ifndef U8 #define U8 unsigned char #endif /***********************************/ #define C_ERR 0 #define C_OK 1 /**************************************/ //typedef struct { // table[PAGE][NUM]; //}HOME_map; typedef struct{ U8 x; U8 y; }Point; typedef struct { unsigned char name[STRING_LE]; void (*Event)(void); }Icon; U8 Window_Icon_Add(unsigned char *name,void (*Event)(void));//添加圖標 void Point_Select(void); //光標移動(選擇圖標) void Point_Select_Ok(void); //光標確定(執行圖標) void Window_Home_DIS(void);//顯示 #endif
.c部分代碼
U8 Window_Icon_Add(unsigned char *name,void (*Event)(void)) //圖標控件注冊 { if(Icon_num<=12) { Icon *Temp_Icon; U8 i; unsigned char c; Icon_num++; Temp_Icon=&Icon_table[(Icon_num-1)/NUM][(Icon_num-1)%NUM]; for(i=0;i<STRING_LE;i++) { c=*name; if(c!='\0') Temp_Icon->name[i]=c; else break; name++; } Temp_Icon->name[i+1]='\0'; Temp_Icon->Event=Event; return C_OK; } else return C_ERR; }