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电源有杂波,应该是不是电源的问题,是直流电源供的电。请问像这种电压被拉低的情况我该怎么滤掉? 电源研发可能遇到哪些问题?这篇文章讲透了在电源研发的过程中,我们总会遇到这样或者那样的问题,这里有大牛多年研发电源问题及解答,一起学习吧!话不多说,直接上题。问题一我们小功率用到最多的反激电源,为什么我们常常选择
2/4 首页 上一页 1 2 3 4 下一页 尾页 |