您当前的位置:首页 > 行业资讯

一种嵌入式图形用户界面系统的设计与实现

时间:2015-03-09  来源:扁平线圈电感厂家  点击:

2. 3事件系统

事件系统为SKY-GUI的其他三大部分提供消息发送、存储、获取和处理的功能。其核心为消息、消息队列和消息处理函数。rs 电感器

2. 3. 1消息定义

SKY-GUI的消息定义为:

typedef STruct __MSG {

HWND hWnd;摇/ /窗口指针

int event;摇/ /事件编号

void* wParam;摇/ /事件附加参数1

void* lParam;摇/ /事件附加参数2

} MSG;

hWnd为指向窗口的指针,表明此消息需要发给哪个窗口。event为事件编号,用不同的整数代表不同的事件。wParam和lParam为事件的附加参数,它们的含义贴片电感根据事件类型的不同而定,例如,在鼠标消息中这两个参数就代表光标在屏幕上的坐标位置。

2. 3. 2消息队列

消息队列是事件系统中的消息的暂存处,它由一个环形先入先出结构的消息数组和一个消息链表组成。消息数组的空间是固定的,一旦被写满,后来的消息只好被丢弃;而消息链表则可以动态扩充大小。在SKY-GUI中,消息数组主要用来存放底层输入设备的事件(如鼠标、键盘、时钟等等),而消息链表主要用来存放优先级更高且不可丢弃的上层事件(窗口事件和显示事件)。

2. 3. 3消息操作接口

SKY-GUI定义了三类消息操作接口:消息发送函数、消息获取函数和事件处理函数。

消息发送函数为输入抽象层和窗口系统提供消息发送接口,包括Post_Msg函数和Send_Msg函数,其作用都是向消息队列发送消息,不同之处在于Post_Msg发送的消息存入消息队列的数组之中,而Send_Msg发送的消息则存入链表之中。

消息获取函数为Get_Msg函数,它为窗口提供取得消息的接口。拥有独立线程的窗口(异2. 4会描述其结构)调用它从消息队列中取得一个消息,其中存在链表中的消息更为重要,优先取出。

事件处理函数是窗口处理消息事件的函数接口,在SKY-GUI中,拥有独立线程的窗口调用Dispatch_Msg函数来实现对插件电感自己消息处理函数的调用。

2. 3. 4消息处理函数

Dispatch_Msg只是事件处理的调用接口,窗口收到消息后所采取的具体措施是由消息处理函数决定的,其定义为:

int WndProc(HWND hwnd, int event, void *wParam,void* lParam);

每一个窗口都有一个函数指针指向自己的消息处理函数,其功能根据不同的窗口有所不同,但总体结构是一样的,如图4所示。

图4消息处理函数的结构

一体电感器其本质上是一个消息处理的分类列表。当窗口调用消息处理函数时,其根据消息类型的不同分别调用底层输入消息、控件消息或显示消息的处理函数,而后再根据具体的消息事件调用相应的处理函数,实现对各种事件的响应。

2. 4窗口系统

窗口系统为SKY-GUI系统的核心,它维护了一个完整的窗口列表,定义了窗口系统和事件系统之间的关系,并制定了窗口之间的消息传递机制。

2. 4. 1窗口的定义

SKY-GUI中,窗口既包含桌面、对话框这种狭义的窗口,也包含窗口控件(如按钮、下拉菜单、编辑框等等)这样的广义窗口,其定义为:

typedef struct __WINDOW {

STR32 caption; / /窗口的名称

RECT rect; / /窗口的大小、位置

int style; / /窗口的类型

Msg差模电感Queue* pMsgQ; / /附属于窗口的消息队列

struct __WINDOW*pFocus; / /活动窗口指针

struct __WINDOW*pParent; / /父窗口指针

struct __WINDOW*pChldHead; / /子窗口列表

struct __WINDOW*pNext; / /兄弟窗口或控件指针

struct __WINDOW*pCtrlHead; / /控件列表

WNDPROC WndProc; / /消息处理函数指针

void* data1; / /窗口私有数据

void* data2; / /窗口私有数据

void* data3; / /窗口私有数据

int msg1; / /窗口状态变化消息

} WINDOW;

caption为窗口的名称;rect为保存窗口位置和大小的矩形;style为窗口的类型;pMsgQ为窗口的消息队列的指针;pFocus指向当前窗口的活动子窗口或控件;pParent指向当前窗口的父窗口;pNext指向当前窗口的兄弟窗口;pChldHead用来保存当前窗口的子窗口列表;pCtrlHead保存当前窗口的控件列表。WndProc指向当前窗口的消息处理函数;data1、data2、data3为窗口的私有数据,msg1为窗口状态变化时需要发出的控件消息,它们的意义根据窗口的类型而定。

从窗口的定义可以看出,本文要实现的是一种树形的窗口关系,整个系统可以拥有一个或多个主窗口,每个主窗口拥有自己的控件和子窗口,而子窗口又可以拥有各自的子窗口和控件,依此类推。

大电流电感

低频变压器(120V、15VA)如何做才能符合能效6级的 请教高手,低频变压器如何才能做到符合美国能效6级要求。


变压器输入120V/60Hz,输出AC 18.75V/0.8A,按美国能效6级要求输入的空载损耗<=0.21W,效率达到>=84.13%。现在是

电源被拉低?我在某宝买个语音模块 调试时发现喇叭有杂音,接示波器看喇叭说话时5V电源有杂波,应该是不是电源的问题,是直流电源供的电。请问像这种电压被拉低的情况我该怎么滤掉?

电源研发可能遇到哪些问题?这篇文章讲透了在电源研发的过程中,我们总会遇到这样或者那样的问题,这里有大牛多年研发电源问题及解答,一起学习吧!话不多说,直接上题。问题一我们小功率用到最多的反激电源,为什么我们常常选择

注塑加工厂


上一篇基于51单片机的温度采集系统简单应用设计

下一篇温度报警系统完整软硬件设计


  
  温馨提示
网站首页 | 产品展示 | 科技前沿 | 行业资讯
本公司专业研发、设计、生产、销售贴片电感、插件电感、功率电感、大电流电感、扁平线圈电感、一体成型电感。
专业电感生产制造商,品质优异、交期快。
在线客服
热线电话