1. 创建模块文件夹(假设模块名为XXX,以下类同):
a) 在“%工程目录%\MS_MMI\source\mmi_app\app”目录下创建模块文件夹“xxx”,并在其下创建名为“c”和“h”两个子文件夹,分别用于保存模块的源代码和头文件。
b) 在“%工程目录%\MS_MMI\source\resource\mmi_res_128x64\xxx”目录下新建名为“MMI_RES_DEFAULT”的文件夹,并在其中创建“ANIM”、“DATA”、“IMAGE”三个子文件夹。(提醒:建立完毕后需加至相应的压缩包内)
2. 创建模块相关文件:
a) 在“h”文件夹下分别创建以下文件:xxx_mdu_def.h、mmixxx_export.h、mmixxx_id.def、mmixxx_id.h、mmixxx_image.h、mmixxx_text.h,各文件功能简述如下:
- xxx_mdu_def.h:模块资源定义(包含图片、字符串等)
- mmixxx_export.h:模块外部接口
- mmixxx_id.def:窗口ID定义
- mmixxx_id.h:控件ID定义
- mmixxx_image.h:图片ID定义,无须改动
- mmixxx_menutable.def:
- mmixxx_menutable.h:
- mmixxx_menu_id.def:
- mmixxx_nv.h:
- mmixxx_text.h:字符串ID定义,无须改动
b) 在“c”文件夹下分别创建以下文件:mmixxx_app.c、mmixxx_id.c、mmixxx_wintab.c,各文件功能简述如下:
- mmixxx_app.c:定义模块功能函数,供外部调用
- mmixxx_id.c:
- mmixxx_menutable.c:
- mmixxx_nv.c:
- mmixxx_wintab.c:定义WINDOWS_TABLE及其回调函数
3. 在工程文件mmi_res_prj_def.h中添加XXX模块的ID:
RES_ADD_MODULE(MMI_MODULE_XXX,”\\xxx\\xxx_mdu_def.h”) // MMI_MODULE_XXX为模块ID,”\\xxx\\xxx_mdu_def.h”为模块路径
4. 修改mk文件:
a) 在resource.mk(路径:%工程目录%\make\resource)中增加模块定义路径和文件名:
l 在相应位置添加:MS_MMI/source/mmi_app/app/xxx/h \
l 在“SOURCE +=”表达式最后增加xxx_mdu_def.h
b) 在app.mk(路径:%工程目录%\make\app)中增加模块定义路径和文件名:
l 在相应位置添加:MINCPATH += MS_MMI/source/mmi_app/app/xxx/h
l 在相应位置添加:MSRCPATH += MS_MMI/source/mmi_app/app/xxx/c
l 在“SOURCES =”表达式最后增加模块中所有c文件的文件名
特别声明:模块添加完毕后无法在mainapp.c之流中直接调用(即使是在其中包含了相应的头文件),调用模块还是得新建一级菜单后在其下(或在已有菜单下)附加模块功能。
添加模块需要修改工程中的文件罗列如下:
- 在mainmenu_win.c的HandleMainMenuWinMsg()函数(文件1985行前后)中的switch(msg_id)结构中添加新case分支:
case ID_MAINMENU_MULTIMEDIA: MMIDEMO_EnterMultimediaWin(); break; |
注意:需要包含mmidemo_export.h和mmidemo_menutable.h两个头文件
- 在mmi_menutable.c的menu_mainmenu_icon [ ]数组(文件428行前后)中添加元素:
{ID_MAINMENU_MULTIMEDIA,TIP_NULL,{STXT_OK,TXT_NULL,STXT_RETURN},TXT_USER_MAIN_MULTIMEDIA,IMAGE_MAINMENU_ICON_MULTIMEDIA_1,0,0,MENU_NULL}, |
注意:需要包含mmidemo_image.h、mmidemo_text.h和mmidemo_menutable.h 三个头文件
- 在mmimain.c的InitMMIModule()函数(文件1746行前后)中添加模块初始化函数:
MMIAPIDEMO_InitModule(); |
注意:需要包含mmidemo_export.h头文件
运行效果: