一:模块添加
创建目录和文件
创建以下目录:
\plutommi\mmi\FirstApp\FirstAppInc 模块头文件目录
在此目录中创建4个头文件:FirstAppDefs.h
FirstAppProt.h
FirstAppTypes.h
FirstAppGprot.h
\plutommi\mmi\FirstApp\FirstAppSrc 模块源文件目录
在此目录中创建1个源文件:FirstAppSrc.c
将添加的模块加入项目
在目录make\pluommi\mmi_app中添加
①:mmi_app.inc:用来指明源文件所需要的头文件的目录
添加: \plutommi\mmi\FirstApp\FirstAppInc 到文件的末尾
②:mmi_app.lis:用来指明MMI所要编译的具体的源文件
添加: \plutommi\mmi\FirstApp\FirstAppSrc\FirstAppSrc.c 到文件末尾
③:mmi_app.pth:用来指明要编译的源文件目录
添加: \plutommi\mmi\FirstApp\FirstAppSrc 到文件的末尾
若在编译过程中报错:找不到头文件,则在文件\MoDIS\mmi_app.ini中添加
/I"..\..\plutommi\mmi\FirstApp\FirstAppInc"
给自己的模块添加宏开关
在文件make\Option.mak或make\Tyd_custom_option.mak中添加
COM_DEFS += __MMI_FIRSTAPP__
完成后执行:makeV25_09A gprs update 命令
注释:运行模拟器,若出现找不到某些函数实现的错误时,在VC的MMI目录树中新建文件夹“FirstAppSrc”,并将我们新增的文件FirstAppSrc.c文件导入文件夹即可。
二:资源
添加资源文件
在\plutommi\Customer\CustResource\PLUTO_MMI\Res_MMI目录下创建文件Res_FirstApp.c并添加内容
#include"MMI_features.h"
#include"StdC.h"
#include"CustomCfg.h"
#ifdefFIRST_PASS
#include"BuildCfg.h"
#endif
#include"ComposeRingToneDefs.h"
#include"FirstAppDefs.h"
#include"PopulateRes.h"
voidPopulateFirstAppRes(void)
{
}
2.修改makefile文件
在文件\plutommi\Customer\ResGenerator\makefile文件中添加我们定义的FirstAppInc目录的路径
如下代码中的红色部分
includecustom_option.txt
includecustom_include.txt
PLUTO_INC=\
-I"../customerinc"\
-I"../../MMI/FirstApp/FirstAppInc"\
-I"../../tyd/SP/YLVM/inc"\
-I"../../MMI/PoC/PoCInc"\
3.修改PopulateRes.c文件
在文件PopulateRes.c中
查找PopulateCCARes(void)
添加如下代码中的红体部分
#ifdef__CCA_SUPPORT__
externvoidPopulateCCARes(void);
#endif
#ifdef__MMI_FIRSTAPP__
externvoidPopulateFirstAppRes(void);
#endif
查找函数PopulateResData()添加
#ifdef__MMI_FIRSTAPP__
RES_PRINT_INFO("PopulatingFirstAppResources\n");
PopulateFirstAppRes();
#endif
.4。对资源ID进行包装
在文件MMIDataType.h中
RESOURCE_BASE_ENUM_END()前添加
#ifdef__MMI_FIRSTAPP__
RESOURCE_BASE_RANGE(FIRSTAPP,50),
#endif
在RESOURCE_BASE_TABLE_END()前添加
/
FirstApp
/#defineFIRSTAPP_BASE ((U16)GET_RESOURCE_BASE(FIRSTAPP))
#defineFIRSTAPP_BASE_MAX ((U16)GET_RESOURCE_BASE(FIRSTAPP))
RESOURCE_BASE_TABLE_ITEM(FIRSTAPP)
5.在文件FirstAppDefs.h文件中添加新的屏幕ID
在文件中添加
typedefenum
{
SCR_FIRSTAPP_MAIN=FIRSTAPP_BASE+1
}SCREENID_LIST_FIRSTAPP;
三:字符串资源
1.在文件\plutommi\Customer\CustResource\PLUTO_MMI\ref_list.txt中添加
STR_FIRSTAPP undefined 20 FirstApp FirstApp 第一个程序 第一个程序
STR_FIRSTAPP_HELLOMTK undefined 20 HelloMTK HelloMTK 你好,
MTK! 你好,MTK!
在文件FirstAppDefs.h中添加字符串ID
typedefenum
{
STR_FIRSTAPP=FIRSTAPP_BASE+1,
STR_FIRSTAPP_HELLOMTK,
STR_FIRSTAPP_TOTAL
}STR_ID_FIRSTAPP_ENUM;
在文件Res_FirstApp.c中的函数PopulateFirstAppRes中添加
ADD_APPLICATION_STRING2(STR_FIRSTAPP,"FirstApp","NameofFirstApp");
ADD_APPLICATION_STRING2(STR_FIRSTAPP_HELLOMTK,"HelloMTK", "Asimplestring");
完成后执行makeV25_09A gprs update 命令
四:图片资源
1.定义图片ID
在文件
FirstAppDefs.h
中添加
typedefenum
{
IMG_FIRSTAPP=FIRSTAPP_BASE+1,
IMG_FIRSTAPP_1,
IMG_FIRSTAPP_2,
。。。
}
2.添加资源存放文件
在目录plutommi/customer/Image/PLUTO240x320/MainLCD中创建文件夹FirstApp
将图片ICON.bmp放入FirstApp文件夹下,将MainLCD打包成image.zip压缩文件
3.在文件
Res_FirstApp.c文件中添加图片加载代码
ADD_APPLICATION_IMAGE2(IMG_FIRSTAPP,CUST_IMG_PATH"\\\\MainLCD\\\\FirstApp\\\\ICON.BMP","FirstAppICON");
五:菜单资源添加
加载前确定添加内容的文件Res_FirstApp.c(资源加载文件)(文件可变)
(以organizer-工具箱为例添加)
I.确定菜单ID
在
GlobalMenuItems.h
文件中,在枚举中添加菜单ID
#ifdef__MMI_FIRSTAPP__
ORGANIZER_FIRSTAPP_MENU,
#endif
注意ID必须放在
MAX_MENU_ITEMS_VALUE
之前
2.将新的ID整合在organizer(模块)的菜单中
在MainMenu.c文件中,找到OrganizerMenu添加程序的菜单枚举值,
#ifdef__MMI_FIRSTAPP__
ORG_ENUM_FIRSTAPP,
#endif
还要在
#ifdefined(__MMI_BI_DEGREE_MAIN_MENU_STYLE__)下的宏
PopulateMainMenuRes(void)
或在
#ifdefined(__MMI_VERSION_2__)下的
PopulateMainMenuRes(void)
中的
ADD_APPLICATION_MENUITEM
中添加
#ifdefined(__MMI_FIRSTAPP__)
ORGANIZER_FIRSTAPP_MENU,
#endif
3.加载菜单本身
在资源加载函数(根据实际确定)
Res_FirstApp.c
中的函数
PopulateFirstAppRes(void)
中添加
ADD_APPLICATION_MENUITEM((
ORGANIZER_FIRSTAPP_MENU,//菜单ID
MAIN_MENU_ORGANIZER_MENUID,//父菜单ID
0,//子菜单ID,可为多个
SHOW,//隐藏属性,一般设为SHOW
SHORTCUTABLE,//菜单项的转移属性
DISP_LIST,//列表显示
STR_FIRSTAPP,//菜单显示的字符串ID
IMG_FIRSTAPP//菜单项的小图标ID,在图片资源中添加
));
完成后update下
4.菜单项接受高亮通知和将入口函数与左软键绑定
在
FirstAppSrc.c
文件中添加
voidmmi_firstapp_hilite(void)//(放在organizer的入口函数中被调用)
{
SetLeftSoftkeyFunction(EntryFirstAppScreen,KEY_EVENT_UP);//设定做菜单的响应函数
}
voidmmi_firstapp_init(void)//(放在初始化函数中)
{
SetHiliteHandler(ORGANIZER_FIRSTAPP_MENU,mmi_firstapp_hilite);//高亮接受通知(菜单ID,接受通知的函数指针)
}
5.在文件
organizer.c
中的
OrgInit(void)
中添加
#ifdef__MMI_FIRSTAPP__
mmi_firstapp_init();
#endif
在EntryOrganizer(void)中添加
#ifdef__MMI_FIRSTAPP__
mmi_firstapp_hilite();//FirstApp入口函数
#endif
|
|