名称:
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; }
时间: 2024-11-08 22:34:20