3 消息传递与处理

每个窗口(Form)都拥有自己的消息处理函数,该函数接收来自系统(包括窗口和控件)的消息并作相应的处理和动作。每一个窗口处理函数实际上就是一个消息循环,窗口函数通过取消息函数ASIXGetMessage()获得系统任务,并发送给该窗口的消息进行处理。ASIX(GetMes—sage()获得系统消息并进行相应的处理和消息转换(实际上是将底层操作系统所提供的硬件消息转换成ASIXWindow的消息,该函数通过调用相应窗口类所定义的消息翻译函数msg-trans()实现消息的转换),然后窗口函数对消息进行分检并作相应的处理,这部分代码是用户自己定制的,实际上是用户程序处理来自窗口和控件的消息,用来实现该应用程序的功能。窗口函数调用ASIX Win—dows的控件消息处理函数DefWindowProc(),该函数是一个消息过滤器及转换器,它接管非用户的,属于控件自己的消息(这个消息可能来自用户的操作)。它首先扫描由取消息函数获得的消息,检查其中是否有属于ASIXWindows控件的消息。如果该消息属于某个控件,则消息处理函数调用系统窗口链表中该控件所对应的窗口类所指明的消息处理函数,处理这个消息执行相应的动作并可能发出相应的消息(例如,当用户点击某按钮时,控件消息处理函数将接管该点击事件,并执行按钮被点击的动画,同时发送一条该按钮被点击的消息)。

4 图形接口

ASIX Windowr的图形接口设计引入了硬件抽象层的概念,图形函数(Graphic API)不直接操纵硬件,而是通过调用硬件抽象层提供的一组基本函数来作具体的图形绘制工作。硬件抽象层函数将按照设备相关的格式将要显示的内容首先填写到系统内存的一片缓冲区(VRAM)中,然后硬件抽象层的函数将根据传入的参数决定是否将数据复制到LCD控制器。如果所调用函数的应用任务当前拥有LCD(前台任务),则将数据送往LCD控制器,否则该函数仅仅将数据写人VRAM缓冲区(该任务是后台任务)。硬件抽象层还提供了一个叫做Refresh的函数,该函数将把当前VRAM中的内容复制到LCD控制器的数据寄存器中。系统任务在应用任务切换的时候调用Refresh函数,将切换进来的任务中所属VRAM的数据刷新到LCD中去,实现屏幕的切换,如图3所示。

基于uITRON 3.0的嵌入式GUI系统设计概述

为了避免图形函数重

人时带来的问题,以及不同应用任务拥有不同屏幕以及相应属性的问题,在新的设计中采用了图形上下文(G

raphic Context,简称GC)的结构。每个需要用到屏幕的应用任务都拥有自己的图形上下文,该结构中保存与硬件无关的显示属性,比如当前色、背景色、当前线宽、当前填充模式、光标的位置、闪烁频率、光标大小、显示缓冲区(VRAM)的头指针、物理屏幕在逻辑屏幕中的位置坐标等信息。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查