BREW API ?? ? IMenuCtl ????? ????? - PowerPoint PPT Presentation

1 / 33
About This Presentation
Title:

BREW API ?? ? IMenuCtl ????? ?????

Description:

BREW API IMenuCtl – PowerPoint PPT presentation

Number of Views:80
Avg rating:3.0/5.0
Slides: 34
Provided by: ackr
Category:
Tags: api | brew | imenuctl | cdma

less

Transcript and Presenter's Notes

Title: BREW API ?? ? IMenuCtl ????? ?????


1
BREW API ?? ?IMenuCtl ????? ?????
  • ?????? ???????
  • ???

2
  • API ??

3
?? API (1)
  • ?? ??? ????? ??? ?? API (Application Programming
    Interface) ??
  • IMenuCtl
  • ??, ???? ??? ? ?? ??? ?? ?? ??
  • IShell API
  • ??(alarm)
  • ?? ???? ??
  • ?? ? ?? ???? ?? ?? ??
  • ????, ??? ??, ????
  • ???

4
?? API (2)
  • IDisplay
  • ???, ???, ?? ?? ???? ?? ??? ?????
  • IGraphics
  • IDisplay ????? ??? ???? ??? ? 2D ??? ????? ??
  • IFile
  • ??? ??? ??? ???? ?? ??
  • IFileMgr
  • ?? ? ??? ????? ??, ?? ?? ?? ?? ??

5
?? API (3)
  • ISound
  • ???? ??? ??? ??
  • ISoundPlayer
  • ??? ????? ???? ??
  • INetMgr
  • CDMA, PPP ? ?? ???? ?? ?? ?? ?? ??
  • ISocket
  • TCP, UDP ?? ????? ??

6
?? API (4)
  • ITAPI
  • SMS, caller ID ? ?? ?? ??? ?? ??
  • ???? ?????
  • ICipher ??? ???? ?? ?? ??? ??? ? ???? ? ? ?? ??
    ??
  • IHash hash ??? ??(MD5 ????) ?? ??
  • IRSA RSA ???? ??? ??? ?? ??

7
  • IMenuCtl
  • ????? ?????

8
?? ??? ??
  • BREW ???? BREW ? ??? ??? ???? ???? ???? ? ?????
  • ?? ???? ???? ?? ???? ?? ???? ??? ??
  • ?,?? , ?? ? ??? ?? ?? ???? ?? ??? ?? ??? ??? ??
    ??
  • ?? ???? ?? ?? ?? ??? ??? EVT_COMMAND? ?? ??? ???
    ID ? ???? , ??? ?? ?? ?????? ?? ??? ??
  • 4 ?? ?? ??? ??

9
?? ??? ?? (1)
  • ?? ?? ???
  • ClassID AEECLSID_MENUCTL
  • ??? ? ?? ?? ??? ??? ??
  • ? ??? ?? ??? ????? ??? ???? ??
  • ??? ?? ??? ???? ??? ? ? ?? ?? ?? ???? ??? ? ??
    ??? ???
  • ?? ???
  • ClassID AEECLSID_LISTCTL
  • ?? ??? ?? ??? ??? ??
  • ?? ??? ??? ?? ????? ???? ???? ??
  • ? ? ?? ?? ?? ???? ??? ?? ???? ??

10
?? ??? ?? (2)
  • ??? ? ?? ???
  • ClassID AEECLSID_SOFTKEYCTL
  • ?? ???? ?? ? / ?? ?? ??? ??
  • ?? ? ??? ?? ?? ???? ??? ?? ??? ??
  • ??? ?? ?? ???
  • ClassID AEECLSID_ICONVIEWCTL
  • ??? ???? ???? ? ?? ??? ??
  • ?? ??? ??? ???? ??? ???? ?? ???? ??

11
?? ??? ????? ?? (1)
  • ISHELL_CreateInstance() ? ???? ?? ??? ????? ??
  • ?? ? ClassID ? ???? ?? ??? ??? ??
  • IMENUCTL_SetTitle() ? ???? ?? ??? ????
    IMENUCTL_SetRect() ? ???? ??? ?? ?? ????? ??
  • ??? ??? ? ??? ?? IMENUCTL_AddItem() ???? ??

12
?? ??? ????? ?? (2)
  • ?? ???? ??? ??? ?? ??? ???? IMENUCTL_SetActive()
    ? ??
  • ??? ???? ??? ?? ???? ?? ?????? ? ???? ?? ? ???
    ???
  • ?? ???? ????? ?? ?? ?? ????? IAPPLET_HandleEvent()
    ??? IMENUCTL_HandleEvent() ? ???? ??? ?? ? ????
    ?? ???? ???? ??

13
?? ??? ????? ?? (3)
  • ?? ???? ?? ??? ??
  • ?? ???? ?? ?? ?? ? ?? ??? ???? EVT_COMMAND ? ??
  • IAPPLET_HandleEvent() ??? EVT_COMMAND ???? ???
    wParam ?? ??? ??? ?? ID ? ???? ???? ?? ??
  • ??? ??? ?? ???? ??? ????? IMENUCTL_GetSel() ??
    IMENUCTL_GetItemData() ? ???? ?? ??? ?? ??? ??
    ??? double-word ??? ( ?? ?? ) ? ???
  • ?? ???? ? ?? ???? ??? IMENUCTL_Release() ? ????
    ?? ?? ???? ??

14
  • ?? ?? ??? ?

15
?? ?
16
MIF ??
17
???? ?? ??
  • AEEClsCreateInstance()
  • AEEApplet_New(), ??? ???? ??
  • MenuEx_InitAppData(), ??? ???
  • MenuEx_HandleEvent()
  • EVT_APP_START
  • ISHELL_CreateInstance(), ?? ??? ???? ??
  • MenuEx_Build(), ?? ??, ?? ? ?? ??, ???
  • IMENUCTL_SetTitle(), ?? ?? ??
  • IMENUCTL_AddItem(), ?? ??
  • IMENUCTL_SetActive() ???
  • ? ??? ??
  • MenuEx_HandleEvent(), EVT_KEY
  • IMENUCTL_HandleEvent(), ?? ??? ??
  • ?? ??
  • MenuEx_HandleEvent(), EVT_COMMAND
  • ?? ??? ??

18
???? ? ?? ?? ?? ??
  • MenuEx.c ??
  • ????
  • include "AEEMenu.h" // ?? ??? ?? ??
  • include "AEEStdLib.h // ?? ?? ?? ??
  • include "MenuEx.bid" // ??? ID
    AEECLSID_MENUEX
  • ?? ?? ??
  • MenuEx_HandleEvent() ??? EVT_COMMAND ???????
    wParam? ???? ??? ???? ?? ??
  • define FIRST_MENU 401
  • define SECOND_MENU 402
  • define THIRD_MENU 403
  • define FOURTH_MENU 404
  • define FIFTH_MENU 405

19
??? ??? ???
  • ?? ?? ?? AEE? ??? ?? ?? ??? ?? ? ??? ?? ??
  • AEEClsCreateInstance() ???? AEEApplet_New() ??
    ??? ???? ??
  • // MenuEx Applet Data Structure
  • typedef struct _CMenuEx
  • AEEApplet a // AEE? ??? ?? ??? ??
  • IMenuCtl m_pIMenu // ?? ????? ??
  • AEEDeviceInfo m_dInfo // ?? ??
  • CMenuEx

20
AEEApplet ???
  • struct _AEEApplet
  • // NOTE ?? 3?? ??? ??? ??? ??? ???? ??? ??.
  • DECLARE_VTBL(IApplet) // IApplet? ?? Virtual
    Table
  • AEEModObj pNext
  • AEECLSID clsID
  • uint32 m_nRefs // Applet? ?? ?? ??
  • IShell m_pIShell // IShell? ?? ???
  • IModule m_pIModule // IModule? ?? ???
  • IDisplay m_pIDisplay // IDisplay? ?? ???
  • // ??? ?? ??? ?? ???
  • AEEHANDLER pAppHandleEvent
  • // ?? ??? 0? ??? ? ??? ?? Free ?? ?? ???
  • // ? ??? ???? ?? ???? ????? ??.
  • PFNFREEAPPDATA pFreeAppData

21
?? ??
  • ???? ?? ??? ?? ??
  • // ???? ?? ??
  • static boolean MenuEx_InitAppData(IApplet pi)
  • // ?? ??? ??? ??
  • static void MenuEX_FreeAppData(IApplet pi)
  • // ?? ??? ??(???? ??)
    ??
  • static void MenuEx_Build(CMenuEx pMe)
  • // 2 3 4. ?? ??, ?? ? ?? ??, ??
  • static void DisplayMessage(IApplet pi, char
    pszStr)
  • // ?? ?? ???? ??? ??

22
AEEClsCreateInstance() ??
  • ??? ??? ???? ?? ? ?? ??? ???
  • int AEEClsCreateInstance(AEECLSID ClsId,IShell
    pIShell,IModule po,void ppObj)
  • ppObj NULL
  • if (ClsId AEECLSID_MENUEX)
  • if (AEEApplet_New(sizeof(CMenuEx), ClsId,
  • pIShell,po,(IApplet)ppObj,
  • (AEEHANDLER)MenuEx_HandleEvent,
  • (PFNFREEAPPDATA)MenuEX_FreeAppData)
    TRUE)
  • if (MenuEx_InitAppData((IApplet)ppObj)
    TRUE) return (AEE_SUCCESS)
  • return (EFAILED)

23
MenuEx_HandleEvent() ?? (1)
  • static boolean MenuEx_HandleEvent(IApplet pi,
    AEEEvent eCode, uint16 wParam, uint32 dwParam)
  • CMenuEx pMe (CMenuEx)pi
  • switch (eCode)
  • case EVT_APP_START
  • // 1. ???? ?? ??? ? ?? ??? ???? ??
  • if (ISHELL_CreateInstance(pMe-gta.m_pIShell,
    AEECLSID_MENUCTL, (void)pMe-gtm_pIMenu) !
    SUCCESS)
  • return FALSE
  • // 2 3 4. ?? ??, ?? ? ?? ??, ???
  • MenuEx_Build(pMe)
  • return(TRUE)
  • case EVT_APP_STOP
  • return TRUE

24
MenuEx_HandleEvent() ?? (2)
  • // ? ???? ?? ? IMENUCTL_HandleEvent()? ???? ?
    ????
  • ?? ???? ??
  • case EVT_KEY
  • if (pMe-gtm_pIMenu)
  • if ((IMENUCTL_IsActive(pMe-gtm_pIMenu)
    FALSE)

  • (wParam AVK_RIGHT))
  • IMENUCTL_SetActive(pMe-gtm_pIMenu,
    TRUE) IMENUCTL_Redraw(pMe-gtm_pIMenu)
  • return IMENUCTL_HandleEvent(pMe-gtm_pIMenu,
    EVT_KEY,

  • wParam, 0)
  • else
  • return FALSE

25
MenuEx_HandleEvent() ?? (3)
  • // 5. ?? ???? ?? ??? ??
  • case EVT_COMMAND
  • switch(wParam)
  • case FIRST_MENU
  • IDISPLAY_ClearScreen(pMe-gta.m_pIDisplay) Di
    splayMessage((IApplet )pMe, "??? ??!!")
  • return TRUE
  • case SECOND_MENU
  • IDISPLAY_ClearScreen(pMe-gta.m_pIDisplay)
  • DisplayMessage((IApplet )pMe, "??? ??!!")
  • return TRUE
  • case THIRD_MENU
  • IDISPLAY_ClearScreen(pMe-gta.m_pIDisplay)
  • DisplayMessage((IApplet )pMe, "??? ??!!")
  • return TRUE

26
MenuEx_HandleEvent() ?? (4)
  • case FOURTH_MENU
  • IDISPLAY_ClearScreen(pMe-gta.m_pIDisplay)
  • DisplayMessage((IApplet )pMe, "?????!!")
  • return TRUE
  • case FIFTH_MENU
  • IDISPLAY_ClearScreen(pMe-gta.m_pIDisplay)
  • DisplayMessage((IApplet )pMe, "???? ??!!")
  • return TRUE
  • default
  • return FALSE
  • default
  • break
  • return FALSE

27
MenuEx_InitAppData() ??
  • AEEClsCreateInstance() ???? ??
  • // ?? ??? ??? ??
  • static boolean MenuEx_InitAppData(IApplet pi)
  • CMenuEx pMe (CMenuEx)pi
  • pMe-gtm_pIMenu NULL // ?? ???
    ISHELL_GetDeviceInfo(pMe-gta.m_pIShell,
    pMe-gtm_dInfo)
  • // ???? ?? ????
  • return TRUE

28
MenuEX_FreeAppData() ??
  • AEEClsCreateInstance() ???? ??
  • // ?? ??? ??(???? ??) ??
  • static void MenuEX_FreeAppData(IApplet pi)
  • CMenuEx pMe (CMenuEx)pi
  • // ?? ???? ???? ???? ??
  • if (pMe-gtm_pIMenu ! NULL) IMENUCTL_Release(
    pMe-gtm_pIMenu)
  • pMe-gtm_pIMenu NULL

29
MenuEx_Build() ?? (1)
  • MenuEx_HandleEvent() ??? EVT_APP_START ????? ??
    ?? ? ??
  • // 2 3 4. ?? ??, ?? ? ?? ??, ???
  • static void MenuEx_Build(CMenuEx pMe)
  • AEERect rc
  • AECHAR szBuf50
  • AEEMenuColors mclr
  • // ??? ??? ??? ??
  • mclr.wMask (MC_BACKMC_TEXTMC_SEL_BACKMC_SE
    L_TEXTMC_FRAME) mclr.cBack RGB_WHITE
  • mclr.cText RGB_BLACK
  • mclr.cSelBack MAKE_RGB(146,109,255)
  • mclr.cSelText RGB_BLACK
  • mclr.cFrame RGB_WHITE

30
MenuEx_Build() ?? (2)
  • // 2. ?? ?? ??
  • STREXPAND((char)"?? ?", STRLEN("?? ?"),
    szBuf,

  • sizeof(szBuf))
  • IMENUCTL_SetTitle(pMe-gtm_pIMenu, NULL, 0,
    szBuf)
  • // 2. ??? ??? ???? ??
  • SETAEERECT(rc, 0, 0, pMe-gtm_dInfo.cxScreen,

  • pMe-gtm_dInfo.cyScreen)
  • IMENUCTL_SetRect(pMe-gtm_pIMenu, rc)
  • // 3. ?? ?? ??
  • STREXPAND((char)"1. ??? ??", STRLEN("1. ???
    ??"),

  • szBuf, sizeof(szBuf))
  • IMENUCTL_AddItem(pMe-gtm_pIMenu,0,0,FIRST_MENU,sz
    Buf,0)
  • STREXPAND((char)"2. ??? ??", STRLEN("2. ???
    ??"),

  • szBuf, sizeof(szBuf))
  • IMENUCTL_AddItem(pMe-gtm_pIMenu,0,0,SECOND_MENU,
    szBuf,0)

31
MenuEx_Build() ?? (3)
  • STREXPAND((char)"3. ??? ??", STRLEN("3. ???
    ??"),

  • szBuf, sizeof(szBuf))
  • IMENUCTL_AddItem(pMe-gtm_pIMenu,0,0,THIRD_MENU,s
    zBuf,0)
  • STREXPAND((char)"4. ??? ??", STRLEN("4. ???
    ??"),

  • szBuf, sizeof(szBuf))
  • IMENUCTL_AddItem(pMe-gtm_pIMenu,0,0,FOURTH_MENU,
    szBuf,0)
  • STREXPAND((char)"5. ???? ??", STRLEN("5. ????
    ??"),

  • szBuf, sizeof(szBuf))
  • IMENUCTL_AddItem(pMe-gtm_pIMenu,0,0,FIFTH_MENU,s
    zBuf,0)
  • // 4. ???
  • IMENUCTL_SetActive(pMe-gtm_pIMenu, TRUE)

32
DisplayMessage() ??
  • MenuEx_HandleEvent() ??? EVT_COMMAND ????? ?? ??
    ? ??
  • // ?? ?? ???? ??? ??
  • static void DisplayMessage(IApplet pi, char
    pszStr)
  • AECHAR szBuf200 0
  • AEEApplet pMe (AEEApplet)pi
  • STREXPAND((char)pszStr, STRLEN(pszStr),
    szBuf, sizeof(szBuf))
  • IDISPLAY_DrawText(pMe-gtm_pIDisplay,
    AEE_FONT_BOLD, szBuf,
  • -1, 0, 0, 0, IDF_ALIGN_CENTER
    IDF_ALIGN_MIDDLE)
  • IDISPLAY_UpdateEx(pMe-gtm_pIDisplay,TRUE)

33
??
  • ?? ?? ????? ???? ?? ??? ??? ???? ????? ???? ??
    ???.
  • Term project ??? ???? ??? ?
  • Term project ?? 10? 1??? upload
  • ????? ???? ?? ?? ??
Write a Comment
User Comments (0)
About PowerShow.com