GUI设计方案的异同

来源:互联网 发布:三星一键刷机软件 编辑:程序博客网 时间:2024/04/30 10:30

今天在手机开发论坛上看到的一套手机MMI设计方案,方案如下:

采用面向对象的程序设计技术,用C语言以窗口方式和消息驱动机制来组织软件结构,可以满足对MMI软 件开发工作的各项要求。在这个技术方案中,窗口管理是整个MMI软件的核心结构。窗口管理为对话窗口、菜单、编辑及其它用户输入输出操作 提供了一个基本框架,为消息处理提供了基本手段。由于使用了面向对象的程序设计方法,MMI软件采用消息驱动机制。窗口管理收集所有的输 人信息,然后把这些输入信息以消息的形式送往合适的窗口。这些消息的执行结果又可能产生新的消息,新消息的传送仍由窗口管理负责。窗 口管理通过调用窗口函数,向窗口函数传递消息参数,把消息送到目的窗口。窗口函数是其所属窗口在窗口管理中注册的系统函数,是窗口最 重要的属性。窗口管理调用窗口函数对窗口进行操作,处理窗口接收到的所有消息。窗口函数对消息的处理方法确定了窗口的表现和行为特征 。窗口管理调用标准的窗口函数,自动处理窗口的许多特性,应用程序只要负责创建窗口、处理窗口产生的高级事件及窗口的异常情况。在这 个环境中,用户可以对GSM 消息作处理,也可以让系统对GSM消息作缺省处理。窗口管理把来自键盘和软件中其它实体的消息送到具有当前焦点 的窗口。在软件的整个运行过程中,总存在一个具有焦点的窗口,它负责处理输人消息,或者把消息沿着从子窗口到父窗口方向递送的传递链 送到一个可以处理该消息的窗口。 MMI层主要有两类输入消息:它们是来自系统其它部分的键盘事件消息和GSM协议栈消息。窗口消息按一定的 规则选择传递路径。键盘消息是由按键的按下和释放产生的,被送往具有焦点的窗口。键盘消息最多只能传到父窗口,不能再往上传送。GSM协 议栈消息可以从子窗口到父窗口按窗口层次结构一直传递,直到有一个窗口接受这条消息为止。窗口管理也提供了一种使消息直达某一窗口的 机制,使消息可以直接送往请求这个消息的窗口。这个方法在某条消息只有一个特定的窗口感兴趣的情况下非常有用。 MMI层内部产生的消息 ,一般不按窗口层次结构由于窗口向父窗口传送。如果要把该类消息从子窗口向父窗口传送,子窗口要负责这项工作。未处理的消息如何传送 ,由缺省的消息处理函数负责。系统提供了一些窗口类。如文本类,用于显示固定字符;菜单类,用于菜单的显示和处理;编辑类,用于字符 的编辑等。应用程序可以向窗口管理注册新的窗口类。 窗口类实现了许多窗口的共同特性。向窗口管理注册后的窗口类,可以生成窗口实例, 很方便地为许多窗口再用。例如,菜单窗口的工作方式相同,只有当菜单窗口的一个菜单项被选定时,才需要一段特定的程序来处理这特定的 选择。菜单类窗口的每个实例在选定特定的菜单项前的窗口管理都可以用窗口类中的同一段程序管理。这里强调一下,只有向窗口管理注册了 的窗口类,才能生成窗口实例。窗口实例继承了窗口类的特性,也可以增加自己的特性,还可以通过重载消息处理函数改变从窗口类继承来的 特性。生成窗口实例时,要把窗口类名、窗口名、窗口识别号、窗口函数名、窗口位置数据、父窗口、窗口风格、窗口状态、窗口键盘和窗口 私有数据等参数送往窗口管理。为了方便,预先定义了一些通用的对话窗口生成函数。如通知消息对话窗口,可以显示通知信息;开/关选择 对话窗口,可以用于类似“开”或“关”等开关量的选择;PIN输入对话窗口,可以用于输入PIN码等等。窗口消息在窗口函数中处理。窗口消 息送往一个窗口时,实际上是送往这个窗口的窗口函数。每个窗口类都必须有一个窗口函数。在窗口实例中不处理的消息一般用缺省消息处理 函数自动送往该窗口的窗口类的窗口函数中处理。某些在窗口类中不处理的消息,如GSM事件消息,则沿着从子窗口到父窗口方向递送的传递链 自动送往父窗口处理。对话窗口的子窗口可能会有一个子类窗口过程,这时窗口消息首先送往具有焦点的子窗口,如在待机窗口中,数字键消息首先送往电话号码编辑子窗口的窗口函数中处理。 

 

和我们所设计的GUI方案的异同:

共同之处:

1.都是用窗口管理和消息驱动机制来组织软件

2.提取了窗口的共同特性,例如菜单,编辑,文本,对话框

3.消息都分类,例如按键焦点消息和GSM协议栈消息的处理方式不同

4,整个软件运行过程中,都有一个具有焦点的窗口

不同之处:

1.方案采用面向对象的设计方法,用C语言来设计类,我们只是模拟类的设计

2.方案中窗口以树形方式存储,我们用链来存储窗口,窗口之间平级,窗口和控件之间是父子关系

3.方案中消息从子窗口向父窗口以窗口层次结构传递,我们的窗口没有父子关系,当前窗口不处理则抛弃

原创粉丝点击