找回密码
 注册
搜索
查看: 3791|回复: 20

[讨论] MTK mmi怎样快速入手?

[复制链接]
发表于 2006-9-7 11:28:00 | 显示全部楼层 |阅读模式
各位好啊,小女子刚接触这个平台,照着其他代码添了个menu总感觉汗啊~~~好多全局变量,牵一发动全身,每次build都很长时间哦,看了些资料对添AP还是很茫然,不知道各位有何经验分享下拉,从哪个部分入手比较好啊?有好的资料也请分享一下,不胜感谢!
发表于 2006-9-7 12:23:00 | 显示全部楼层
不要把它想象的很难
点评回复

使用道具 举报

发表于 2006-9-7 16:50:00 | 显示全部楼层
既然是刚接触,那就再努力学了,功到自然成
点评回复

使用道具 举报

 楼主| 发表于 2006-9-7 19:54:00 | 显示全部楼层
谢谢鼓励哦,我在Organizer下面加了个MyGoGo的子菜单,想实现点功能但是却又没这方面的概念,追踪其他菜单的功能实现(如Alarm),发现最后程序就是把alm_context_struct结构体中的一些变量的值做了改变,谁清楚来龙去脉,请赐教啊~~~~
点评回复

使用道具 举报

发表于 2006-9-8 09:57:00 | 显示全部楼层
多做些程序自然你就会了~
点评回复

使用道具 举报

 楼主| 发表于 2006-9-8 14:22:00 | 显示全部楼层
[em08][em09]
再次感谢,我会努力的
点评回复

使用道具 举报

发表于 2006-9-8 17:26:00 | 显示全部楼层
这个啊,比如可以实现发送短信等功能
点评回复

使用道具 举报

 楼主| 发表于 2006-9-10 23:26:00 | 显示全部楼层
谢谢你的提议!!!
改个handler就把SMS的全部功能加载过来了啊~~~
我接触这个MMI平台两个礼拜了,怎么越做到上面越没成就感啊?
还没有写个简单的单片机程序看跑马灯有趣,是否是我太怀旧了还是我太浮躁了?
可是现在公司真的很闲对我们NEW MAN给的事做就更是没有,上培训课我都是强忍着瞌睡!
对不起啊各位,看我吐苦水了[em18]
我想要充实点的生活,这样的生活过个10几年我或许会很有兴趣来过
唉~~~真是身在江湖身不由己,各位前辈有什么看法啊?
点评回复

使用道具 举报

发表于 2006-9-12 12:58:00 | 显示全部楼层
哈哈,刚接触这个都觉得很复杂,其实你先在Org中增加一个menu,然后把这个menu和函数绑定起来,就会执行到你函数了。
我这里有份文档,你可以先参考下:(这个是当初学习的时候的笔记)
文中蓝色部分为加dictionary这个menu是应添加的部分:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
5)在PixtelDataTypes.h中添加base ID
#define        DICTIONARY_BASE         5990



///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
D:\J121\source\plutommi\mmi\inc\PixtelDatas.h
在MMI_features.h 添加 开关 两文件都需要加。
#define  (__MMI_DICTIONARY__)

D:\Project\J201-V4.5\plutommi\mmi\Inc
D:\Project\J201-V4.5\plutommi\Customer\CustResource\J121_MMI


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2)在D:\J121\source\plutommi\mmi\Organizer\OrganizerInc\Dictionary.h中定义String Menu ImageID:
#ifndef _MMI_DICTIONARY_H
#define _MMI_DICTIONARY_H

#include "MMI_features.h"

#include "PixtelDataTypes.h"
#if defined(__MMI_DICTIONARY__)

typedef enum
{
        SCR_ID_DICTIONARY_APP = DICTIONARY_BASE + 1,
        SCR_ID_DIC_RESULT

}SCR_ID_DIC_ENUM;

typedef enum
{
        ORGANIZER_DICTIONARY_MENU_STRINGID = DICTIONARY_BASE + 1,
     DICTIONARY_QUERY_WARNING       
}STR_ID_DIC_ENUM;
typedef enum
{
        ORGANIZER_DICTIONARY_MENU_IMAGEID = DICTIONARY_BASE + 1,
        IMG_ID_PHB_QUICK_SEARCH_FIND,
        DICTIONARY_WELCOME_IMAGEID  
}IMG_ID_DIC_ENUM;
#endif
#endif

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3)在GlobalMenuItems.h中定义MenuID:
D:\Project\J201-V4.5\plutommi\mmi\Inc

enum  GLOBALMENUITEMSID
{       
……
ORGANIZER_DICTIONARY_MENU,
…..
};

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1)在Res_organizer.c的include String ID,ImageID,MenuID:
D:\Project\J201-V4.5\plutommi\Customer\CustResource\J121_MMI\Res_MMI

#if defined(__MMI_DICTIONARY__)
#include "Dictionary.h"
#endif
在Res_organizer.c的void PopulateOrganizerRes(void)中添加:
#if defined(__MMI_DICTIONARY__)
        ADD_APPLICATION_IMAGE2(ORGANIZER_DICTIONARY_MENU_IMAGEID, CUST_IMG_PATH"\\\\MainLCD\\\\SubMenu\\\\Organizer\\\\SB_DICT.PBM","Icon for Dictionary Menu.");
        ADD_APPLICATION_IMAGE2(DICTIONARY_WELCOME_IMAGEID,CUST_IMG_PATH"\\\\MainLCD\\\\UIElement\\\\Health\\\\H_BMI.bmp","Image for Dictionary Welcome screen.");
#endif
#if defined(__MMI_DICTIONARY__)
    ADD_APPLICATION_STRING2(ORGANIZER_DICTIONARY_MENU_STRINGID,"Dictionary","To Go to Dictionary Screen.");
        ADD_APPLICATION_STRING2(DICTIONARY_QUERY_WARNING,"Can't find the word in the dictionary!","Show it to the user.");

#if defined(__MMI_DICTIONARY__)
        ADD_APPLICATION_MENUITEM((ORGANIZER_DICTIONARY_MENU,MAIN_MENU_ORGANIZER_MENUID,0,
                SHOW,MOVEABLEACROSSPARENT,DISP_LIST,
                ORGANIZER_DICTIONARY_MENU_STRINGID,ORGANIZER_DICTIONARY_MENU_IMAGEID));
        #endif       


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4)在Res_MainMenu.c中,两个地方需要添加:
D:\Project\J201-V4.5\plutommi\Customer\CustResource\J121_MMI\Res_MMI

        typedef enum
        {
      ……
      #if defined (__MMI_DICTIONARY__)
         ORG_ENUM_DICTIONARY,
    #endif

RES_ORG_ENUM_TOTAL   //使ResOrganizerMenu总数加一
} ResOrganizerMenu;

void PopulateMainMenuRes(void)
{
……
ADD_APPLICATION_MENUITEM((MAIN_MENU_ORGANIZER_MENUID,IDLE_SCREEN_MENU_ID,RES_ORG_ENUM_TOTAL,
……
                       ORGANIZER_ALARM_MENU,
                        #if defined(__MMI_DICTIONARY__)
                                ORGANIZER_DICTIONARY_MENU,  //此处可以决定Menu显示的位置
                         #endif //dictionary
……
SHOW,MOVEABLEACROSSPARENT,DISP_LIST,
                                MAIN_MENU_ORGANIZER_TEXT,MAIN_MENU_ORGANIZER_ICON));
……
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
6)在readexcel.c中添加:
#include "Dictionary.h"
因为接下来在产生Resource时readexcel.c会使用到所新增的STRINGID(ORGANIZER_DICTIONARY_MENU_STRINGID)和IMAGEID(ORGANIZER_DICTIONARY_MENU_IMAGEID),
所以也必须在readexcel.c內#include ”dictionary.h”

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
7)Call ResGenerator.bat to make host resource,选择1去卷出资源文件。
    Compile ResourceDLL project and PixtelMMI project respectively .即可。
备注:
1.        Res_organizer.c,GlobalMenuItems.h,Res_MainMenu.c有位于不同路径下的两份,在添加menu最好是两份都做相同的修改。
2.        dictionary.c中为dictionary的实现代码。
点评回复

使用道具 举报

发表于 2006-9-12 14:26:00 | 显示全部楼层
oosky真够热心的阿,呵呵
点评回复

使用道具 举报

发表于 2006-9-12 15:49:00 | 显示全部楼层
好。赞一个。
点评回复

使用道具 举报

发表于 2006-9-12 17:26:00 | 显示全部楼层
感觉MTK就是改变全局变量来编程的,每建一个窗口就是用已有的category画一下屏,注册一遍所有按键的proc函数(也是改变全局变量的过程,把全局的函数指针改掉)[em10]
点评回复

使用道具 举报

发表于 2006-9-13 11:19:00 | 显示全部楼层
这段代码怎么这么眼熟啊
点评回复

使用道具 举报

发表于 2006-9-20 22:22:00 | 显示全部楼层
oosky说的不错啊,我开始做MTK的时候也是做了一个Dictionary![em01]
点评回复

使用道具 举报

发表于 2006-9-20 23:50:00 | 显示全部楼层
mtk用全局变量据也算避免内存泄露的方法,
不过用这么多而不乱也需要本事啊,
结构比较清晰。
点评回复

使用道具 举报

发表于 2006-9-21 00:01:00 | 显示全部楼层
也可以先抛开MTK从一套mmi通常的构架上入手先做点了解(以前有个mmi solution white paper的书不错),
再从Application,CommonWindow,GuiControl,SystemService对应到实际的平台中具体研究.
点评回复

使用道具 举报

发表于 2006-9-21 10:19:00 | 显示全部楼层
very good [em05]
点评回复

使用道具 举报

发表于 2006-9-29 15:20:00 | 显示全部楼层
添加个菜单要这么麻烦,晕。就说也要用这个平台了。
点评回复

使用道具 举报

发表于 2006-9-30 15:31:00 | 显示全部楼层
通常在主菜单下的菜单上添加一个菜单及相关程序,一般涉及十几个文件,需要十多步。在MTK下添加功能是比较麻烦的。
点评回复

使用道具 举报

发表于 2006-9-30 16:16:00 | 显示全部楼层
真的假的?

汗!
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-12-23 19:46 , Processed in 0.083229 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表