成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MTK開發之添加資源與菜單學習筆記

移動開發
MTK開發之添加資源與菜單學習筆記是本文要介紹的內容,主要是來了解MTK開發中的一些操作,具體內容來看本文詳解。

MTK開發之添加資源與菜單學習筆記是本文要介紹的內容,主要是來了解MTK開發中的一些操作,本文是小編的網上看到的一篇文章,于此,與大家分享一下。

大家跟著我這個流程做,就能從整體上清楚的理清添加資源與菜單的流程,知道為什么要這樣做。下面是在6235平臺下進行的,其他平臺可能代碼名稱有不同,具體添加方式參考同文件中其他代碼的寫法就好了,其實MTK的代碼需要改動的很少,就是在里面添添,不知道怎么添的時候就參考內部代碼。

***步:添加程序文件:先假設自己寫的程序的名字為MyApp

需要添加有:MyAppProt.h (用來存放本程序的所有函數申明,此頭文件只被本程序的源文件所加載)

MyAppDefs.h  (用來存放本程序的一些普通的資源ID定義)

MyAppTypes.h (用來存放本程序所需的類型,結構,常量定義)

MyAppGprot.h (也是用來存放函數申明的,但是此頭文件是被別的程序所加載的,也就是說此文件所申明的都是對外接口)

當然還有源文件MyAppSrc.c  

注:以上這些頭文件一般放在plutommi/MMI/MyApp/MyAppInc下面,這樣方便代碼管理

第二步:將文件加入項目

在make/plutommi/下面的三個文件需要修改

1、plutommilis  所需編譯的源文件

2、plutommiinc  指明頭文件所在目錄

3、plutommipth  指明源文件所在目錄

第三步:程序開關:

MMI的編譯開關一般都放在plutommi/customer/custResource/PLUTO_MMI/MMI_features_switchPLUTO.h中

如下添加:#define _MMI_MYAPP_   (_ON_)

當添加了如上的代碼后,在其他文件中的#ifdef _MMI_MYAPP_

  1. .............  
  2. .............  
  3. #endif 

所包圍的代碼就會被編譯。

第四步:為資源添加ID

做完以上三步后,接下來就是添加ID了,資源有很多種,所以添加ID的方式有一些不同

(1)添加基礎ID。

在加ID之前先得為本程序添加一個基礎ID,因為所有程序的資源ID都是各自為政定義各自的,但這些ID又不能沖突,(因為每種類型的資源ID都是在一個取值空間),所以我們需要基礎ID將每個程序的ID取值隔離開來,基礎ID為某類資源定義了一個范圍,統一定義在plutommi/MMI/INC/MMIDataType.h中

具體就看兩個宏定義

  1. /*  
  2.  * Use this macro two to declare resource id range between RESOURCE_BASE_ENUM_BEGIN()  
  3.  * and RESOURCE_BASE_ENUM_END()  
  4.  */  
  5. #define RESOURCE_BASE_RANGE(ap_id, count)/  
  6. ap_id,   /  
  7. GET_RESOURCE_BASE(ap_id) = ap_id,/  
  8. GET_RESOURCE_MAX(ap_id) = ap_id + count - 1  
  9.  
  10. /*  
  11.  * Use these tow macro to get the resource base and resource end  
  12.  */  
  13. #define GET_RESOURCE_BASE(id)   RESOURCE_BASE_##id  
  14. #define GET_RESOURCE_MAX(id)RESOURCE_BASE_##id##_END 

這樣首先通過語句 RESOURCE_BASE_RANGE(ap_id, count) 就可以設定資源 ID的范圍,

  1. 同時GET_RESOURCE_BASE(ap_id)把ap_id付給RESOURCE_BASE_##id, 

***再通過類似的語句

  1. #define MYAPP_BASE     
  2. ((U16)GET_RESOURCE_BASE(MYAPP)) 

把RESOURCE_BASE_##id付給了MYAPP_BASE。

再啰嗦下,也就添加兩類代碼,一類先是確定資源ID范圍,然后一類就是把范圍地址賦值給MYAPP_BASE 這類ID。

(2)添加屏幕ID(即屏幕序號)

上面添加完基礎ID后,我們就可以利用基礎ID來添加我們的屏幕ID了,在MYAPPDefs.h中定義

  1. typedef enum{  
  2. SCR_MYAPP-MAIN=MYAPP_BASE+1,  
  3. }SCREENID_LIST_MYAPP 

(3)添加字串ID

也是利用基礎ID,在MYAPPDefs.h中定義

  1. typedef enum  
  2. {  
  3. STR_MYAPP_HELLO = MYAPP_BASE + 1,  
  4. }STRINGID_LIST_MYAPP; 

(4)添加圖片ID

同上

(5)添加菜單項ID

這個相對特殊,它在plutommi/MMI/inc/GlobalMenuItems.h中定義

第五步:資源的加載

上面四步把ID和資源都定義了,現在我們就需要把它們加載使之關聯起來。

(1)主菜單及一級菜單的加載

需要在Res_MainMenu.c修改添加,此處很容易出錯,因為多處位置容易添錯,首先需要在文件前部定義枚舉變量,然后在void PopulateMainMenuRes(void)中調用ADD_APPLICATION_MENUITEM這個函數。

(2)其他菜單項的加載,字符串加載,圖片加載

都在plutommi/customer/custresource/pluto_mmi/res_mmi/Res_MyApp.c中的populateMyAppRes函數里加載。

注:populateMyAppRes這個函數被plutommi/MMI/Resource/populateRes.c下的populateResData()調用,而populateResDate()被mtk_resgenerator.exe執行時呼叫。這就是資源裝載預編譯順序。

第六步:交互

在平臺中,每個菜單項的行為都由菜單項自己控制,系統所做的就是在高亮此項時發個通知過來。所以,每個菜單項都要在開機時通知系統由哪個函數來接收通知,SetHiliteHandler就是用來做此事的,其***個參數就是菜單項的ID,第二個參數就是接收通知的函數指針。我們通常為每個程序建立一個初始化函數,此函數只在開機時運行一次,比如mmi_myapp_init,在此函數中我們會將本程序所有菜單項都注冊一遍。mmi_myapp_init通常在MMITask.c 中被調用。

  1. 如:#ifdef _MMI_MYAPP_  
  2.  #include "MyAppGprot.h"   
  3.  #endif  
  4. void InitAllApplication()  
  5.    {  
  6. #ifdef _MMI_MYAPP_  
  7.  mmi_myapp_init();  
  8. #endif  
  9.    } 

以下在myappsrc.c中實現

  1. void mmi_myapp_init(void)  
  2. {  
  3. SetHiliteHandler(MENU_ID_MYAPP_PRINT, mmi_myapp_hilite_print);  
  4. }  
  5. void mmi_myapp_hilite_print(void)  
  6. {  
  7.  SetLeftSoftkeyFunction(mmi_myapp_print_entry,KEY_EVENT_UP);  
  8. }  
  9. void mmi_myapp_print_entry(void)  
  10. {  
  11. .................  

通過以上的6個步驟,基本上就實現了各種資源的定義和加載。如果還有不懂的可以跟我博客交流。

小結:MTK開發之添加資源與菜單學習筆記的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: CSDN博客
相關推薦

2011-08-30 16:55:31

MTK開發編譯

2011-08-31 10:01:44

MTK開發環境

2011-08-31 10:51:39

MTKAndroid 開發

2011-08-01 16:50:28

Xcode 動態 View

2011-08-01 17:01:02

Xcode WindowBase View

2011-08-30 16:02:10

MTK開發環境

2011-08-31 10:20:26

MTK驅動開發

2009-08-14 17:43:20

C#Windows應用

2010-07-29 13:18:45

Flex右鍵菜單

2011-03-08 16:30:30

Proftpd命令Proftpd配置

2011-08-31 10:37:06

MTK開發入門

2011-08-30 18:01:20

2012-05-09 10:03:08

JavaMEJava

2011-09-13 15:26:25

MTK環境搭建

2011-08-03 09:44:18

IOS開發 UITextFiel UITableVie

2011-08-31 10:12:26

MTK手機平臺

2011-03-08 16:30:24

Proftpd

2011-03-08 16:30:40

Proftpd

2011-08-15 10:06:22

iPhone開發nib 文件

2011-08-09 17:29:29

iPhone文件屏幕
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久亚洲精品 | 婷婷去俺也去 | 精品一区二区三区四区在线 | 日韩欧美国产精品 | 久久久五月天 | 日韩免费中文字幕 | 不卡一区二区三区四区 | 亚洲一区二区中文字幕 | 美女一区 | 狠狠插狠狠操 | 久久亚洲精品久久国产一区二区 | 久久亚洲精品国产精品紫薇 | 亚洲精品福利视频 | 精产国产伦理一二三区 | 久久久精品综合 | 午夜精品久久久久久久星辰影院 | 91九色视频 | 久久精品久久久 | 一区二区三区四区毛片 | 国产日韩欧美中文字幕 | www.887色视频免费 | 一区二区在线免费观看 | 91不卡 | 日本理论片好看理论片 | 久久国内精品 | 久久国产美女视频 | 亚洲福利片 | 日本亚洲一区二区 | 超碰av人人| 美女久久| 精品少妇v888av | 成年人黄色一级毛片 | 亚洲欧美国产视频 | 999久久久 | 一本色道精品久久一区二区三区 | 国产精品日韩欧美一区二区三区 | 亚洲一二三区精品 | 神马九九 | 一区影院 | 免费看片在线播放 | 亚洲天堂日韩精品 |