第十章 IMenuCtl 使用简介

一、主要内容

(1)、描述IMenuCtl控件的类型,所能提供的操作以及重要属性

(2)、启动事件代理机制

(3)、利用IMenuCtl进行程序开发

二、IMenuCtl概述

(1)、所谓菜单,就应该能让用户通过按“上”、“下”、“左”、“右”键来浏览所有可供选择的菜单选项,并将用户所选中的选项与别的选项区分开来

(2)、当用户按“选择”键时,EVT_COMMAND事件就会被发回给您的应用程序的事件处理函数

三、IMenuCtl控件类型

(1)、标准菜单(Standard menu control):ClassID为:AEECLSID_MENUCTL

(2)、List control:ClassID为: AEECLSID_LISTCTL

(3)、SoftKey menu control:ClassID为:AEECLSID_SOFTKEYCTL

(4)、Icon-view menu control:ClassID为: AEECLSID_ICONVIEWCTL

四、IMenuCtl使用手册

(1)、调用ISHELL_CreateInstance()创建一个菜单的实例,此时可根据需要输入不同的ClassID,创建不同类型的菜单;

(2)、调用IMENUCTL_SetRect()设置菜单显示的位置。如果没有设置,则默认显示区域为整个屏幕区域;

(3)、利用IMENUCTL_SetTitle()设置菜单标题;

(4)、调用IMENUCTL_AddItem()或IMENUCTL_AddItemEx()添加所需的菜单选项;

(5)、调用IMENUCTL_SetActive()将菜单设置为活动状态,以便接收用户的各种操作信息;

(6)、当不再使用菜单接口时,调用IMENUCTL_Release()对已申请的菜单资源进行释放。

五、IMenuCtl 属性

MP_WRAPSCROLL

MP_NO_ARROWS

MP_NO_REDRAW

MP_MAXSOFTKEYITEMS

MP_CALENDAR

MP_AUTOSCROLLTIME

MP_ICON_TEXT_TOP

MP_ICON_SINGLE_FRAME

MP_UNDERLINE_TITLE

注意:

每一个属性可能对1种或多种类型的菜单起作用,具体信息请参看BREW APIReference。

六、利用IMenuCtl操作的主要函数

IMENUCTL_SetTitle()

IMENUCTL_AddItem()

IMENUCTL_GetItemCount()

IMENUCTL_GetItem()

IMENUCTL_SetItem()

IMENUCTL_DeleteItem()

IMENUCTL_GetProperties()

IMENUCTL_SetProperties()

IMENUCTL_SetColors()

IMENUCTL_SetStyle()

IMENUCTL_IsActive()

IMENUCTL_SetActive()

七、启动事件代理机制

(1)、BREW Applet采用基于事件驱动的机制,每个BREW应用程序只需处理自己感兴趣的事件。

(2)、在处理事件时,某些特定的事件可以传给一些特定的接口,让其进行处理。如让光标在不同的菜单选项间切换,根据不同的输入法映射不同的输入内容等,就可通过如下的两个函数启动事件代理机制来完成:

(a)、IMENUCTL_HandleEvent()

(b)、ITEXTCTL_HandleEvent()

(3)、当“选择”键被按下的时候,事件处理权将传回给应用程序

(a)、EVT_COMMAND 就会被传回给该Applet的事件处理函数

八、事件代理机制的灵活性

九、事件代理示意图

十、利用IMenuCtl进行程序开发

综上所述,在设计菜单选项时需完善如下的几方面:

(1)、按照使用手册设计菜单选项;

(2)、利用IMENUCTL_HandleEvent()启动事件代理机制;

(3)、处理EVT_COMMAND事件,收回事件处理权;

(4)、处理EVT_APP_SUPPEND,EVT_APP_RESUME事件,以使程序能处理来电、来电结束等情况。

十一、本章关键点

(1)、菜单的种类

(2)、菜单的使用方法

(3)、事件代理机制

十二、问题回顾

(1)、BREW支持几种类型的菜单形式?他们分别是什么?

(2)、开发者如何知道用户按下了“选择”键,确定了其选择的菜单项?如何知道用户选择了哪个选项?

20110510 Brew工程师培训笔记——第十章 IDisplay使用简介相关推荐

  1. 20110510 Brew工程师培训笔记——第九章 IDisplay使用简介

    第九章 IDisplay使用简介 一.主要内容 (1).介绍IDisplay的主要功能 (2).介绍在IDisplayz中常用的一些接口 二.IDisplay概貌 (1).利用IDisplay可以完成 ...

  2. 忘却的纪念:我的摩托罗拉3G网络工程师培训笔记

    6年前我报名参加了摩托罗拉研究院主办的3G移动网络工程师培训简称MCNE,当时3G牌照尚未下发,3G这个概念更不为人所知.我可能是这个培训班上年纪最小的,年少轻狂,就在开办仪式上,培训老师让我们自我介 ...

  3. 汇编程序设计与计算机体系结构软件工程师教程笔记:处理器、寄存器简介

    <汇编程序设计与计算机体系结构: 软件工程师教程>这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译.中文版是2019年出版的.个人感觉这本书真不错,书中介绍了 ...

  4. (*长期更新)软考网络工程师学习笔记——Section 11 Linux操作系统简介

    目录 前言 一.Linux 操作系统 (一)Linux 组成部分 (二)Linux 操作系统的特点 二.Linux 文件系统 (一)文件系统的定义 (二)Linux 文件与进程 (三)绝对路径和相对路 ...

  5. 软考信息安全工程师培训精品课-更新中

    如何备考,才能更有效率的通过信息安全工程师考试? 备考要点:抓重点,学有所得. 欢迎加入最棒的信息安全工程师社群,分享信息安全工程师备考干货资料. 备考交流QQ群:39460595 扫一扫加月梦助手微 ...

  6. 软件开发、软件设计培训笔记

    一.代码质量的提高培训笔记(2013.11.29): 部分内容摘自网络: 1.      struct:注意成员排列顺序. 2.      #pragma pack(1) :指定按1字节对齐. 3.  ...

  7. 《Linux就该这么学》培训笔记_ch00_认识Linux系统和红帽认证

    <Linux就该这么学>培训笔记_ch00_认识Linux系统和红帽认证 文章最后会post上书本的笔记照片. 文章主要内容: 认识开源 Linux系统的种类及优势特性 认识红帽系统及红帽 ...

  8. Android群英传笔记——第十章:Android性能优化

    Android群英传笔记--第十章:Android性能优化 随着Android应用增多,功能越来越复杂,布局也越来越丰富了,而这些也成为了阻碍一个应用流畅运行,因此,对复杂的功能进行性能优化是创造高质 ...

  9. 系统集成项目管理工程师培训价格

    摘要:系统集成项目管理工程师培训价格现在是多少钱?从几十至几万价格分析,希望对您有所帮助. 系统集成项目管理工程师培训价格和课程形式有很大关系,一般按价格排序为:面授-->高于直播课--> ...

最新文章

  1. 005_html文档类型
  2. [crypto]-90-crypto的一些术语和思考[inProgress]
  3. java生成dex_Java反编译Dex – jadx
  4. linux7.1怎么安装vnc,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  5. ctags的如何生成tags文件
  6. 自己动手一步步安装Linux系统
  7. Mac安装Lingo
  8. 鸟哥Linux 私房菜
  9. 局域网文件传输方式分析
  10. 【程序员日记】快乐的一周嘛(第8期)(财富、快乐、技术)
  11. 科罗拉多大学波尔得分校计算机科学,科罗拉多大学波尔得分校院系设置
  12. Python爬取奇书网(用Python下载小说到本地)
  13. 如何利用Excel批量设置化学式下标
  14. 51单片机的一点感想
  15. 解决:Linux nohup命令不再默认输出日志文件
  16. syslog协议发送本机日志到其他设备/服务器(winlinux)
  17. 威力曲面sw2020_威力曲面Power Surfacing
  18. 哈希算法SHA1,SHA256,SHA384,SHA512
  19. 亲测有效,解决MAC无法联网的问题
  20. idea使用spring框架Exception in thread main java.lang.IllegalStateException错误

热门文章

  1. 无法退出Fastboot模式
  2. html用户名框架,html的基本框架和常用标签
  3. 智能客服机器人如何帮助公司更好地管理客户
  4. OpenFlow1.3交换机
  5. 软件测试培训之:白盒测试的语句覆盖法和判定覆盖法
  6. Java Math toIntExact() 使用方法及示例 long转int
  7. Embedded Qt 编译配置说明
  8. linux namp使用教程,nmap教程之nmap命令使用示例(nmap使用方法)
  9. 2021-07-13王汕7.13黄金原油伦敦金晚间价格走势分析及白银TD短线操作建议
  10. 借助开源项目,学习软件开发