本文共 18605 字,大约阅读时间需要 62 分钟。
一、屏幕常用类:
clear_screen//清屏entry_full_screen//全屏幕gui_BLT_double_buffer//重绘二、图形类:GDI:1、颜色格式转换(宏):GDI_RGB_TO_BUFFER_FORMAT(R,G,B)GDI_BUFFER_FORMAT_TO_RGB_R(VALUE)GDI_BUFFER_FORMAT_TO_RGB_G(VALUE)GDI_BUFFER_FORMAT_TO_RGB_B(VALUE)eg:gdi_color blue_color;blue_color = GDI_RGB_TO_BUFFER_FORMAT(0,0,255);2、绘制像素点:gdi_draw_point3、绘制直线及线条:gdi_draw_linegdi_draw_line_style4、绘制矩形及框gdi_draw_rectgdi_draw_solid_rectvoid gdi_draw_frame_rect(S32 x1,S32 y1,S32 x2,S32 y2,gdi_color rect_color,gdi_color frame_color,S32 frame_width);//绘制带边框填充矩形gdi_draw_round_rectgdi_draw_button_rectgdi_draw_shadow_rectgdi_draw_gradient_rectGUI:void (*gui_putpixel)(S32 x,S32 y,color c) = NULL;//在x,y处绘制一个GUI颜色cvoid (*gui_line)(S32 x1,S32 y1,S32 x2,S32 y2,color c) = NULL;void (*gui_draw_horizontal_line)(S32 x1,S32 x2,S32 y,color c) = NULL;//绘制水平线void (*gui_draw_vertical_line)(S32 y1,S32 y2,S32 x,color c) = NULL;//绘制垂直线void (*gui_draw_rectangle)(S32 x1,S32 y1,S32 x2,S32 y2,color c) = NULL;void (*gui_fill_rectangle)(S32 x1,S32 y1,S32 x2,S32 y2,color c) = NULL;//实心矩形三、图像类:GDI:绘制相关:GDI_RESULT gdi_image_draw(S32 offset_x,S32 offset_y,U8 *image_ptr);eg:gdi_image_draw(10,10,get_image(IMG_ID));GDI_RESULT gdi_image_draw_id(S32 offset_x,S32 offset_y,U16 image_id);gdi_image_draw_fileeg:gdi_image_draw_file(10,10,(S8*)L"E://MTK6226/plutommi/mmi/firstapp/new_icon.gif");gdi_image_draw_resizedgdi_image_draw_animationgdi_image_draw_animation_oncegdi_image_draw_animation_framesgdi_image_draw_animation_single_framegdi_image_get_dimensiongdi_image_stop_animationgdi_image_stop_animation_allgdi_anim_draw_id//通过ID绘制动态图片,6226版用gdi_image_draw_animation_ideg:gdi_handle my_anim;gdi_anim_draw_id(50,100,IMG_FIRSTAPP_ANIMATE,&my_anim);gdi_anim_stop//停止动画播放eg:gdi_handle my_anim;gdi_anim_stop(my_anim);GDI_RESULT gdi_image_get_dimension_id(U16 image_id,S32 *width,S32 *height);//测量图片所占宽高像素解码器相关:gdi_image_decoder_creategdi_image_decoder_freegdi_image_decoder_decode_filegdi_image_decoder_decode_file_with_output_clippinggdi_image_decoder_get_dimension_filegdi_image_decoder_stopgdi_image_decoder_stop_allGUI:绘制相关:void (*gui_show_image)(S32 x,S32 y,PU8 i) = NULL;eg:gui_show_image(10,10,(PU8) GetImage(IMG_ID));//使用GetImage方式将资源读取出来剪裁区相关:void (*gui_push_clip)(void) = NULL;//进入剪切区域void (*gui_set_clip)(S32 x1,S32 y1,S32 x2,S32 y2) = NULL;//设置剪切区域范围void (*gui_pop_clip)(void) = NULL;//恢复本来的剪切区域void (*gui_get_clip)(S32 *x1,S32 *y1,S32 *x2,S32 *y2) = NULL;//获得当前激活的剪裁区的大小void (*gui_reset_clip)(void) = NULL;//重置图像剪切区到默认范围即屏幕大小四、文本类:void (*gui_move_text_cursor)(S32 x,S32 y) = NULL;//设定绘制文本处屏幕坐标gui_set_text_colorvoid (*gui_print_text)(UI_string_type_text) = NULL;//绘制文本eg:gui_print_text(L"Hello");//只用于模拟器调试,真机不支持gui_print_text((UI_string_type)GetString(STR_ID));//推荐使用,支持多语言gui_print_text((UI_string_type)Str);//传递S8(char)类型字符数字指针void (*gui_print_character)(UI_character_type c) = NULL;//在屏幕上输出一个字符void (*gui_print_bordered_text)(UI_string_type_text) = NULL;//输出一个带边框的文本void (*gui_measure_string)(UI_string_type text,S32 *width,S32 *height) = NULL;//测量字符串在屏幕上占的像素长度和高度UI_string_type(*gui_itoa)(S32 value,UI_string_type s,S32 radix) = NULL;//将整形数据转换为字符串,radix是进制,gui_atoi作用相反五、字体类:1、字体封装结构体:typedef struct stFontAttribute{ U8 bold; //粗体,0正常,1粗体,下同U8 italic; //斜体U8 underline; //下划线U8 size; //字号:SMALL_FONT,MEDIUM_FONT,LARGE_FONT,SUBLCD_FONT(副屏字体),DIALER_FONT(拨号字体),VIRTUAL_KEYBOARD_FONT(虚拟键盘字体)U8 color; //颜色,暂无效,使用gui_set_text_color实现U8 type; //字体,暂无效U8 oblique; //倾斜,比italic斜度小U8 smallCaps; //小写锁定,暂无效}eg:stFontAttribute newfont = {0,0,0,MEDIUM_FONT,0,0};gui_set_font(&newfont);注意:该设置只对英文起作用,汉字大小由字库文件决定。六、颜色类:1、常用颜色常量:GUI:UI_COLOR_LIGHT_GREYUI_COLOR_WHITEUI_COLOR_DARK_GREYUI_COLOR_BLACKUI_COLOR_NONEUI_COLOR_REDUI_COLOR_3D_FILLERUI_COLOR_GREYUI_COLOR_GREENGDI:GDI_COLOR_WHITEGDI_COLOR_BLACKGDI_COLOR_GRAYGDI_COLOR_REDGDI_COLOR_BLUEGDI_COLOR_GREEN可利用下面的方式设定需要的颜色:GUI:color my_color = {20,20,60,100};GDI:gdi_color my_gdi_color = gdi_act_color_from_rgb(255,255,103,102);注意:my_color中第四个参数100和my_gdi_color第一个参数255表示透明度。七、背景类:1、填充结构体:typedef struct _UI_filled_area{ U32 flags; //控制背景具体类型的标志PU8 b; //背景图片gradient_color *gc; //渐进颜色color c; //背景色color ac; //用于绘制交叉填充图形的替换色color border_color; //边框颜色color shadow_color; //阴影颜色UI_transparent_color_type transparent_color; //透明色} UI_filled_area;flags组合公式:flags = 类型标志 | 边框标志 | 阴影标志(可以是任意个数,不一定非得是3个一样一个)对应类型如下:12个类型标志:#define UI_FILLED_AREA_TYPE_COLOR //颜色#define UI_FILLED_AREA_TYPE_GRADIENT_COLOR //渐进色#define UI_FILLED_AREA_TYPE_TEXTURE //纹理#define UI_FILLED_AREA_TYPE_BITMAP //位图#define UI_FILLED_AREA_TYPE_HATCH_COLOR //百叶窗(背景色c与原始底色交替)#define UI_FILLED_AREA_TYPE_ALTERNATE_HATCH_COLOR //交叉百叶窗(背景色c与替换色ac交替)#define UI_FILLED_AREA_TYPE_CROSS_HATCH_COLOR //十字图纹(背景色c与原始底色交替)#define UI_FILLED_AREA_TYPE_ALTERNATE_CROSS_HATCH_COLOR //交叉十字纹(背景色c与替换色ac交替)#define UI_FILLED_AREA_TYPE_NO_BACKGROUND //无背景#define UI_FILLED_AREA_TYPE_CUSTOM_FILL_TYPE1 //自定义背景1#define UI_FILLED AREA_TYPE_CUSTOM_FILL_TYPE2 //自定义背景2#define UI_FILLED_AREA_TYPE_3D_BORDER //3D边框8个边框标志:#define UI_FILLED_AREA_BORDER //单边框(一个像素宽)#define UI_FILLED_AREA_SINGLE_BORDER //单边框,同上#define UI_FILLED_AREA_DOUBLE_BORDER //双边框(两个像素宽)#define UI_FILLED_AREA_ROUNDED_BORDER //圆角边框#define UI_FILLED_AREA_3D_DEPRESSED_BORDER //下陷边框(类似按钮下陷效果)#define UI_FILLED_AREA_DEPRESSED_BORDER //突起边框(类似按钮弹起效果)#define UI_FILLED_AREA_LEFT_ROUNDED_BORDER //左圆角边框#define UI_FILLED_AREA_RIGHT_ROUNDED_BORDER //右圆角边框2个阴影标志:#define UI_FILLED_AREA_SHADOW //单阴影(一个像素宽)#define UI_FILLED_AREA_SHADOW_DOUBLE_LINE //双阴影(两个像素宽)2、渐进色结构体:typedef struct _gradient_color{ color *c; //总共多少种颜色进行渐进U8 *p; //每种颜色所占比例U8 n; //总共颜色数量} gradient_color;eg:color g_colors[3] = { {255,0,0},{0,255,0},{255,0,255}};U8 perc[2] = {40,60};gradient_color gc = {g_colors,perc,3};……filler.gc = &gc;系统定义的3种渐进效果标志:UI_FILLED_AREA_HORIZONTAL_FILL //水平渐进,默认UI_FILLED_AREA_VERTICAL_FILL //垂直渐进,从上到下UI_FILLED_AREA_FLIP_FILL //反转显示3、常用UI_filled_area结构体对象:MMI_down_button_fillerMMI_up_button_fillerMMI_disabled_button_fillerMMI_focussed_button_fillerMMI_clicked_button_fillerMMI_multitap_fillerMMI_inputbox_normal_fillerMMI_inputbox_selected_fillerMMI_inputbox_disabled_fillerMMI_scrollcontrol_up_button_fillerMMI_scrollcontrol_down_button_fillerMMI_scrollcontrol_disabled_button_fillerMMI_scrollcontrol_focussed_button_fillerMMI_scroll_up_button_fillerMMI_scroll_down_button_fillerMMI_scroll_disabled_button_fillerMMI_scroll_focussed_button_fillerMMI_scrollbar_normal_fillerMMI_scrollbar_disabled_fillerMMI_scrollbar_focussed_filler八、层类:1、层句柄:主屏幕层句柄:GDI_LAYER_MAIN_BASE_LAYER_HANDLE副屏幕层句柄:GDI_LAYER_SUB_BASE_LAYER_HANDLE2、层函数:#define gdi_layer_create(OFFSET_X,OFFSET_Y,WIDTH,HEIGHT,HANDLE_PTR)/gdi_layer_create_cf(GDI_LCD->cf,OFFSET_X,OFFSET_Y,WIDTH,HEIGHT,HANDLE_PTR)//创建新层/* 参数含义:OFFSET_X:新层的起始x坐标OFFSET_Y:新层的起始y坐标WIDTH:新层的宽度HEIGHT:新层的高度HANDLE_PTR:新层的句柄地址 */gdi_layer_multi_layer_enable//用于创建新图层之前,开启多层支持gdi_layer_multi_layer_disable//退出屏幕时在退出函数中调用关闭多层void gdi_layer_set_active(gdi_handle handle)//激活层gdi_layer_push_and_set_active(gdi_handle handle)//层入激活栈gdi_layer_push_and_set_active()gdi_layer_pop_and_restore_active()//层出激活栈,恢复之前层显示,与入栈函数成对使用gdi_push_and_set_alpha_blending_source_layer(active_layer)//该对函数实现png图片透明效果gdi_pop_and_restore_alpha_blending_source_layer()gdi_layer_set_blt_layer(gdi_handle base_layer,gdi_handle handle,gdi_handle handle,gdi_handle handle)//申明要合并的图层,最多4个,没有时为NULL,第一个层在最下面gdi_layer_blt(gdi_handle base_layer,gdi_handle handle,gdi_handle handle,gdi_handle handle,S32 offset_x1,S32 offset_y1,S32 offset_x2,S32 offset_y2)//和上面的函数意义一样,可以省去重绘函数gui_BLT_double_bufferGDI_RESULT gdi_layer_clear(gdi_color bg_color)//将新建层颜色刷成bg_colorgdi_layer_get_base_handle(&base_handle)//获取基础层句柄GDI_RESULT gdi_layer_set_source_key(BOOL source_key_enable,gdi_color source_key_value)//实现通透函数,参数一判断通透是否打开,参数二不需要显示的颜色值void gdi_layer_set_clip(S32 x1,S32 y1,S32 x2,S32 y2)//设置层剪切区域gdi_layer_reset_clip//重置剪切区域GDI_RESULT gdi_layer_set_opacity(BOOL opacity_enable, U8 opacity_value)//设置透明,第一个参数判断是否启用,第二个参数透明度0~255gdi_layer_free//用于退出时释放图层资源#define gdi_layer_create_using_outside_memory(X,Y,WIDTH,HEIGHT,HANDLE_PTR,OUTMEM_PTR,OUTMEM_SIZE)/gdi_layer_create_cf_using_outside_memory(GDI_LCD->cf,X,Y,WIDTH,HEIGHT,HANDLE_PTR,OUTMEM_PTR,OUTMEM_SIZE)//用于当前资源不够创建新图层时使用此函数分配更多内存用于新建图层/* 参数含义:X,Y:新图层起始坐标WIDTH,HEIGHT:新图层的宽度和高度HANDLE_PTR:新图层句柄地址OUTMEM_PTR:新分配内存地址OUTMEM_SIZE:内存容量 eg:gdi_handle new_layer;void EntryFirstAppScreen(void){ ……U8 *outside_mem = NULL;gdi_layer_multi_layer_enable();EntryNewScreen(SCR_FIRSTAPP_MAIN,ExitFirstAppScreen,NULL,NULL);outside_mem = (U8 *)mmi_frm_scrmem_alloc(((GDI_LCD_WIDTH*GDI_LCD_HEIGHT*GDI_MAINLCD_BIT_PER_PIXEL)>>3));……gdi_layer_create_using_outside_memory(10,10,150,150,&new_layer,outside_mem,((GDI_LCD_WIDTH*GDI_LCD_HEIGHT*GDI_MAINLCD_BIT_PER_PIXEL)>>#));……mmi_frm_scrmem_free(outside_mem);SetKeyHandler(GoBackHistory,KEY_RSK,KEY_EVENT_UP); */#define mmi_frm_scrmem_alloc_framebuffer(mem_size)/mmi_frm_scrmem_alloc_framebuffer_int(mem_size, __LINE__)//使用多媒体内存gdi_layer_lock_frame_buffer//锁层,用于一个屏幕绘制多个元素且每个元素都有独立的图层合并和重绘函数gdi_layer_unlock_frame_buffer//解锁层#define GDI_LOCK gdi_fast_mutex_lock()//GDI锁#define GDI_UNLOCK gdi_fast_mutex_unlock()//GDI解锁gdi_layer_push_text_clipgdi_layer_pop_text_clip注意:在层中绘制的图形坐标全部是以该层的起始点作为开始绘制的原点。九、文件类:FS_HANDLE FS_Open(const WCHAR * FileName,UINT Flag)//打开或创建一个文件/* 1)文件名为宽字符,可为:[Drive:]/[Path/]Name[.Ext][Drive:/]//./Drive://./PHYSICALDRIVEx之一2)Flag可选:FS_READ_WRITE:可读可写FS_READ_ONLY:只读FS_OPEN_SHARED:可避免Access Denied异常FS_CREATE:文件不存在则创建FS_CREATE_ALWAYS:总是创建即使文件存在FS_COMMITTED:修改过的文件立即写入物理设备FS_CACHE_DATA:不要丢弃缓存数据,经常读写使用FS_LAZY_DATA:不要刷新修改过的数据缓冲,可提高性能,避免相同内容重复写在物理设备上3)返回值:成功则返回文件句柄为且返回值为0,失败返回错误代码返回值小于0 */int FS_Close(FS_HANDLE FileHandle)//关闭文件并返回整形值,释放资源。文件必须是之前FS_Open成功创建的文件句柄,成功返回FS_NO_ERROR失败返回负数错误编码int FS_CloseAll(void)int FS_Read(FS_HANDLE FileHandle,void * DataPtr,UINT Length,UINT * Read)//从打开的文件中读取数据,返回值同上/* DataPtr:要读取的数据地址Length:要读取的数据字节数Read:无符号整型指针,接收实际度入得字节数,可设置为NULL */int FS_Write(FS_HANDLE FileHandle,void * DataPtr,UINT Length,UINT * Written)//将数据写入打开的文件int FS_Seek(FS_HANDLE FileHandle,int Offset,int Whence)//复位文件指针,并能扩展文件,移动指针以添加数据。成功返回新的文件指针,可以通过FS_GetFileInfo查询;失败返回负数错误代码。/* Offset:指明用于数据读写的文件指针移动的距离Whence:文件指针从何处开始移动,有如下三种方式:FS_FILE_BEGIN:文件指针移动到文件头FS_FILE_CURRENT:文件指针移动到当前位置FS_FILE_END:文件指针移动到文件末尾 */int FS_Commit(FS_HANDLE FileHandle)//立即刷新文件缓冲区数据并写入磁盘,当文件打开FS_LAZY_DATA时文件缓存中的脏数据将被刷新,否则该文件数据缓冲区、目录项、完整FAT表都将被刷新int FS_GetFileInfo(FS_HANDLE File,FS_FileInfo * FileInfo)//返回当前打开文件的具体信息/* FileInfo:输出文件信息存入的FS_FileInfo结构体实例,定义如下:typedef struct { const F_DOSDirEntry * DirEntry;//目录信息,文件打开才有效UINT FilePos;//当前文件指针位置UINT AllocatedSize;//当前分配的文件大小UINT ClusterChains;//当前文件已分配了多少个cluster簇UINT VolumeSerialNumber;//卷标序列号,很少用const char * FullName;//完整文件名,包括路径,文件打开才有效} FS_FileInfo; */int FS_GetAttributes(const WCHAR * FileName)//获得当前文件的属性/* 返回正数则包含文件属性可以由若干宏组合:#define FS_ATTR_READ_ONLY 0x01 //只读#define FS_ATTR_HIDDEN 0x02 //隐藏#define FS_ATTR_SYSTEM 0x04 //系统文件#define FS_ATTR_VOLUME 0x08 //文件是卷标#define FS_ATTR_DIR 0x10 //文件是目录#define FS_ATTR_ARCHIVE 0x20 //该文件作为备份失败则返回负数错误码。 */int FS_SetAttributes(const WCHAR * FileName, BYTE Attributes)int FS_Delete(const WCHAR * FileName)int FS_GetCurrentDir(WCHAR * DirName,UINT MaxLength)int FS_SetCurrentDir(const WCHAR * DirName)int FS_CreateDir(const WCHAR * DirName)//创建一个新的目录int FS_RemoveDir(const WCHAR * DirName)int FS_FindFirst(const WCHAR * NamePattern,BYTE Attr,BYTE AttrMask,FS_DOSDirEntry * FileInfo,WCHAR * FileName,UINT MaxLength)//在目录下搜索匹配NamePattern模式的文件/* NamePattern:类似正则表达式,文件名可包含通配符(*,?等)Attr:指明要搜索的文件具有的属性AttrMask:文件不需要匹配的属性FileInfo:返回成功则该结构体实例填充文件目录信息FileName:已找到的文件名MaxLength:文件名最大长度(大于最大长度-1则无法找到,指宽字符长度)成功则FileInfo包含第一个文件目录项,且返回值大于0,返回值为句柄,可能作为FS_FindNext的参数;失败则返回负数错误码。 */int FS_FindNext(FS_HANDLE FileHandle,FS_DOSDirEntry * FileInfo,WCHAR * FileName,UINT MaxLength)//根据FS_FindFirst返回的句柄继续查找满足相同条件的文件int FS_FindClose(FS_HANDLE FileHandle)//关闭由FS_FindFirst所打开的文件句柄,成功返回FS_NO_ERROR,失败返回负数错误代码。注意FS_FindFirst打开的句柄不用一定要关闭int FS_GetDrive(UINT Type, UINT Serial, UINT AltMask)//根据当前系统特性获取磁盘盘符/* Type的3中磁盘类型:FS_DRIVE_I_SYSTEM:0x00000004FS_DRIVE_V_NORMAL:0x00000008FS_DRIVE_V_REMOVABLE:0x00000010Serial盘符数量:SYSTEM:1或2;NORMAL:1或2;REMOVABLE:1。AltMask提供3种不同盘符方式:FS_NO_ALT_DRIVE、FS_ONLY_ALT_SERIAL、FS_DRIVE_I_SYSTEMIFS_DRIVE_V_NORMALIFS_DRIVE_V_NORMAL:前两种不能组合,第三种是组合模式返回值为整形盘符名:C:67,D:68,E:69,F:70;失败返回FS_PARAM_ERROR(-2)没有定义类型或盘符越界或AltMask组合方式不正确,FS_DRIVE_NOT_FOUND(-4)没有找到指定盘符。 */十、控件类:1、GUI基本控件:void gui_create_button(button *b, S32 x, S32 y, S32 width, S32 height)void gui_set_button_theme(button *b, UI_button_theme *t)gui_text_button_set_text_position(text_button *b, S32 x, S32 y)void gui_show_button(button *b)列表框架结构体:typedef struct _fixed_list_menu{ S32 x, y;S32 width, height;UI_filled_area *normal_filler;UI_filled_area *focussed_filler;UI_filled_area *focussed_without_sc_filler;U32 flags;vertical_scrollbar vbar;S32 n_items;S32 displayed_items;S32 first_displayed_item;S32 last_displayed_item;S32 highlighted_item;S32 current_displayed_item;S32 default_inline_item;S32 highlight_x;S32 highlight_y;S32 spacing, top;gui_menu_type_enum menu_style;/* MTK Leo end */void **items;void *common_item_data;void (*item_unhighlighted)(S32 i);void (*item_highlighted)(S32 i);void (*item_display_function)(void *item, void *common_item_data, S32 x, S32 y);void (*item_measure_function)(void *item, void *common_item_data, S32 *width, S32 *height);void (*item_highlight_function)(void *item, void *common_item_data);void (*item_remove_highlight_function)(void *item, void *common_item_data);void (*item_hide_function)(void *item, void *common_item_data, S32 x, S32 y);void (*item_displayed_callback)(S32 index, S32 x1, S32 y1, S32 x2, S32 y2);/* add for inline indicator */void (*item_indicator_display_callback)(S32 index, S32 x, S32 y);void (*item_resize_function)(S32 x, S32 y);void (*item_get_flag_function)(void *item, void *common_item_data, S32 index, U32* flag, U32* flag_ext);void (*pre_display_function)(void);MMI_BOOL resized_before_locate;gdi_handle alpha_blend_layer_handle;gdi_handle act_layer_handle;gdi_handle act_lcd_handle;#ifdef __MMI_TOUCH_SCREEN__/* Configured in gui_set_fixed_list_menu_item_pen_function() */fixed_menuitem_pen_hdlr item_pen_function;MMI_BOOL disable_move_highlight;MMI_BOOL disable_up_select;/* Configured in associate_fixed_xxx_list */void (*pen_event_current_selected_callback_function)(void);void (*pen_event_default_selected_callback_function)(void);/* Configured in pen handler */void (*pen_redraw_menu_function) (void);/* Configured in gui_fixed_list_menu_set_pen_scroll_delay() */S32 pen_scroll_delay_time;S32 pen_scroll_after_delay;/* Runtime data */gui_list_pen_state_struct pen_state;#ifdef __MMI_UI_LIST_GRID_LINE__gui_list_key_info_enum key_info;#endif /* __MMI_UI_LIST_GRID_LINE__ */#endif /* __MMI_TOUCH_SCREEN__ */ } fixed_list_menu;用于菜单项公共属性设置的结构体:typedef struct _fixed_icontext_menuitem{ S32 width, height;UI_filled_area *normal_filler;UI_filled_area *disabled_filler;UI_filled_area *selected_filler;UI_filled_area *focussed_filler;U32 flags;U32 ext_flags;S32 text_x, text_y;color normal_text_color;color disabled_text_color;color selected_text_color;color focussed_text_color;UI_font_type text_font;S32 icon_x, icon_y;UI_transparent_color_type icon_transparent_color;S32 scroll_x, scroll_width;S32 text_width;fixed_list_menu *parent_list;fixed_matrix_menu *parent_matrix;} fixed_icontext_menuitem;文本图标列表结构体:typedef struct _fixed_icontext_menuitem_type{ /* Icon of menu item */PU8 item_icon;/* Handle of icon */gdi_handle item_icon_handle;/* Text of menuitem */UI_string_type item_text;/* Flags to indicate the state */U32 flags;/* Extension flags to indicate the state */U32 ext_flags;} fixed_icontext_menuitem_type;2、WGUI控件:MMI_current_menu_type//设置显示风格常量void move_fixed_list(S32 x, S32 y)//设置位置void resize_fixed_list(S32 width, S32 height)//设置宽高void create_fixed_icontext_menuitems(void)//创建并初始化列表菜单项通用属性void associate_fixed_icontext_list(void)//关联列表项和菜单项void add_fixed_icontext_item(UI_string_type s, PU8 img)//初始化菜单项void register_fixed_list_highlight_handler(void (*f)(S32 item_index))//注册高亮接口void register_fixed_list_keys(void)//注册方向键void register_fixed_list_shortcut_handler(void)//注册数字键void fixed_list_goto_item_no_redraw(S32 item_index)//高亮第item_index项,0开始void show_fixed_list(void)void init_dynamic_item_buffer(//初始化动态列表S32 n_items,//当前列表菜单项个数GetItemFuncPtr get_item_func,//列表菜单项的具体内容(包括图标、文本)的回调函数GetHintFuncPtr get_hint_func,//高亮显示某个菜单项时提示信息的回调函数,一般为NULLFlushDataFuncPtr flush_data_func)//刷新缓存数据的回调函数,一般为UI_dummy_function十一、按键类:1、键盘代码(Key Code)对应表:0~9 KEY_0~KEY_9拨号键 KEY_SEND终止键 KEY_END* KEY_STAR# KEY_POUND左右中软键 KEY_LSK,KEY_RSK,KEY_CSK上下左右方向键 KEY_UP_ARROW,KEY_DOWN_ARROW,KEY_LEFT_ARROW,KEY_RIGHT_ARROW确认(OK)键 KEY_ENTER清除键 KEY_CLEAR上下音量键 KEY_VOL_UP,KEY_VOL_DOWN2、按键操作方式(Key Type)对应表:按下 KEY_EVENT_DOWN,KEY_FULL_PRESS_DOWN放开 KEY_EVENT_UP长按 KEY_LONG_PRESS重复 KEY_REPEAT半按 KEY_HALF_PRESS_DOWN半按放开 KEY_HALF_PRESS_UP3、按键函数:1)GUI基本控件void SetKeyHandle(FuncPtr funPtr, U16 keyCode, U16 keyType);void SetLeftSoftkeyFunction(void (*f)(void), MMI_key_event_type k);//该函数和上面函数的区别是可以关联触摸笔、长按等状态void SetRightSoftkeyFunction(void (*f)(void), MMI_key_event_type k);void ChangeLeftSoftkey(U16 key_text, U16 key_image)void ChangeRightSoftkey(U16 key_text, U16 key_image)void SetGroupKeyHandler(FuncPtr funcPtr, PU16 keyCodes, U8 len, U16 keyType)//群组按键设置,len总共注册的按键数量void GetkeyInfo(PU16 keyCode, PU16 keyType)//获得当前操作的键值2)WGUI高级控件change_left_softkey(U16 key_text, U16 key_image)change_right_softkey(U16 key_text, U16 key_image)void show_softkey(WGUI_SOFTKEY_ENUM key)十二、模板类1、模板和对应界面:33 待机界面14 矩阵主菜单界面6 文本列表菜单(电话簿)165 全屏弹出提示对话框5 全屏多行文本输入框十三、其他常用函数:void set_status_icon_bar_clip(U8 status_bar_ID,//状态编号:0位于屏幕顶端,1位于屏幕右端垂直显示,2自屏幕状态栏S32 x1, S32 y1, S32 x2, S32 y2)void show_main_LCD_date_time(void)//时间显示有关功能的函数refresh_status_icon_display()//刷新整个状态栏void refresh_fixed_status_icon(S16 icon_id, S16 bar_id)//刷新状态栏图标GeneralDeviceInterface.cif (!gMMIClamState || isInCall() || g_keylock_context.gKeyPadLockFlag) mmi_pen_block();//锁键盘时触屏无响应//不同编码字符转换mmi_chset_convert(MMI_CHSET_GB2312,MMI_CHSET_UCS2,(char * )soure_string,(char *)destion_string,source_size);mmi_chset_text_to_ucs2(.... )也可进行转换,但必须将__MMI_CHSET_GB2312__打开转载地址:http://lyifb.baihongyu.com/