asmcos 发表于 2006-11-28 16:11:50

eGUI事件

3        Event
eGUI的kernel部分和应用部分通过IOCTL系统调用完成通讯。其中一个最重要的部分就是event部分;
event的作用是:
        Kernel 给应用传递 键盘鼠标按键消息
        Kernel 给应用传递窗口移动消息
        Kernel 给应用传递被覆盖消息
        Kernel 给应用传递被暴露消息

3.1        Event数据结构
Struct _EGui_Event {
   Short x;
   Short y;
   Int type;
   Int code;
   Int pid;
   Egui_Window * window;

}
   X: 光标的x位置
   Y: 光标的y 位置
   Type: 事件内容见表
   Code: 当出现键盘输入时,记录了键盘的编码。
   Pid: 事件要传给的window的进程ID号。
   Window: 事件对应的窗口指针,主要提供给一个进程的多个窗口使用。

事件类型名称        含义
PRESS_KEY        键盘按键
CLICK_LEFT        单击鼠标左键
CLICK_RIGHT                 单击鼠标右键
CLICK_MIDDLE                 单击鼠标中键
REL_LEFT                       放开鼠标左键
REL_RIGHT                    放开鼠标右键
REL_MIDDLE                     放开鼠标中键
RELEASE_KEY                    键盘按键松开
FOCUS_CHANGED                  窗口的焦点改变
WINDOW_MOVE                  窗口移动
W_SIZE_CHANGED        窗口的尺寸改变
CURSOR_MOVE                  光标移动
HIDE_CURSOR                  隐藏光标
REDRAW_RECTANGLE           画一个矩形,用在窗口拖动时。
UPGRADE_WINDOW           窗口提升
WINDOW_PREMOVE           窗口即将移动(实际上是鼠标左键在标题栏处单击)
REMOVE_PREMOVE              窗口并未移动(实际上是鼠标左键在标题栏处单击后,并未移动窗口,而直接松开)
WINDOW_OVER_RECT              窗口叠加
页: [1]
查看完整版本: eGUI事件