对象事件机制

事件类型

PainterEngine,每个对象都可以为其注册触发事件,当使用PX_ObjectPostEvent函数对一个对象进行事件投递后,该对象及其子对象都会收到该事件信息,如果这个对象有注册这个事件的处理函数,将会回调该处理函数.

 

注意,如果对象树结构中有一个焦点对象,那么该焦点对象将会独占所有的消息事件处理的优先权并决定事件是销毁还是继续投递

 

事件定义

事件响应

PX_OBJECT_EVENT_ANY   

任意事件

PX_OBJECT_EVENT_CURSORMOVE

收到指针移动事件,例如鼠标移动触发

PX_OBJECT_EVENT_CURSORUP

收到指针抬起事件, 例如鼠标左键点击抬起,或者触摸屏触摸抬起

PX_OBJECT_EVENT_CURSORRDOWN         

收到指针按下事件, 例如鼠标右键点击按下

PX_OBJECT_EVENT_CURSORDOWN

收到指针按下事件, 例如鼠标左键点击按下,或者触摸按下

PX_OBJECT_EVENT_CURSORRUP

收到指针右键抬起事件, 例如鼠标右键抬起

PX_OBJECT_EVENT_CURSOROVER

指针移进时触发一次

PX_OBJECT_EVENT_CURSOROUT

指针移出时触发一次

PX_OBJECT_EVENT_CURSORWHEEL

指针滚动,例如鼠标中键滚动或者触摸屏滑动

PX_OBJECT_EVENT_CURSORCLICK    

指针单机,例如鼠标单击或触摸屏单击, 这需要按下抬起都在同一个位置

PX_OBJECT_EVENT_CURSORDRAG

指针拖拽,例如鼠标按下拖动或者触摸屏滑动

PX_OBJECT_EVENT_STRING

输入法输入了一个字符串

PX_OBJECT_EVENT_EXECUTE

对象被触发,例如按钮被点击触发(按钮触发有别于Click,click指按下抬起都在同一个位置)

PX_OBJECT_EVENT_VALUECHANGED

对象值改变,例如sliderbar或者list选择改变

PX_OBJECT_EVENT_DRAGFILE

外部拖入了一个文件进来

PX_OBJECT_EVENT_KEYDOWN

键盘某个按键被按下

PX_OBJECT_EVENT_IMPACT     

两个对象两两碰撞(这个事件尽在PainterEngine World中生效)

PX_OBJECT_EVENT_ONFOCUSCHANGED

焦点改变

PX_OBJECT_EVENT_SCALE

缩放事件

PX_OBJECT_EVENT_WINDOWRESIZE

窗口的大小发生了变化

PX_OBJECT_EVENT_ONFOCUS

取得焦点

PX_OBJECT_EVENT_LOSTFOCUS

失去焦点

PX_OBJECT_EVENT_CANCEL

对象被取消(例如explorer控件点击取消)

PX_OBJECT_EVENT_CLOSE

对象被关闭(例如widget被关闭)

 

 

响应处理函数

响应处理函数是对象接收到对应事件调用的回调函数

其定义为

px_void (*ProcessFunc)(PX_Object *,PX_Object_Event e,px_void *ptr);

函数名

ProcessFunc

功能

事件回调函数

参数Object

响应对象指针

参数Event

响应的事件类型

参数ptr

用户传入的指针

 

注册对象事件

px_int PX_ObjectRegisterEvent(PX_Object *Object,px_uint Event,px_void (*ProcessFunc)(PX_Object *,PX_Object_Event e),px_void *ptr);

函数名

PX_ObjectRegisterEvent

功能

为一个对象注册响应事件

参数Object

需要绘制的对象指针

参数Event

响应的事件类型

ProcessFunc

响应处理函数

ptr

用户指针

 

派分事件

px_void PX_ObjectPostEvent(PX_Object *pPost,PX_Object_Event Event);

函数名

ObjectPostEvent

功能

派分事件,该事件将会被派分到该对象及其子对象当中,如果该对象注册了该事件,将会执行该事件的回调函数,如果派分的对象树中有焦点对象,焦点会独占所有的事件处理

参数Object

派分的对象指针

参数Event

响应的事件

 

 

构造事件

函数原型

PX_Object_Event PX_OBJECT_BUILD_EVENT(px_uint Event);

功能

构造一个事件

参数Event

事件类型

返回值

构造的事件

 

构造字符串事件

函数原型

PX_Object_Event PX_OBJECT_BUILD_EVENT_STRING(px_uint Event,const px_char *content);

功能

构造一个字符串事件

参数Event

事件类型

参数 content

需要传入的字符串

返回值

构造的事件

 

指针事件偏移

函数原型

PX_Object_Event PX_Object_Event_CursorOffset(PX_Object_Event e,px_point offset);

功能

将一个指针类型的坐标偏移一个位置

参数e

传入事件

参数 offset

偏移量

返回值

构造的事件

 

取得指针事件的X坐标

函数原型

px_float PX_Object_Event_GetCursorX(PX_Object_Event e);

功能

取得指针事件的X坐标

参数e

传入事件

返回值

X坐标

 

取得指针事件的Y坐标

函数原型

px_float PX_Object_Event_GetCursorY(PX_Object_Event e);

功能

取得指针事件的Y坐标

参数e

传入事件

返回值

Y坐标

 

 

取得指针事件的Z坐标

函数原型

px_float PX_Object_Event_GetCursorZ(PX_Object_Event e);

功能

取得指针事件的Z坐标

参数e

传入事件

返回值

Z坐标

 

设置指针事件的X坐标

函数原型

px_void PX_Object_Event_SetCursorX(PX_Object_Event *e,px_float x);

功能

设置指针事件的X坐标

参数e

需要修改的传入事件

参数x

需要设置的值

返回值

 

 

设置指针事件的Y坐标

函数原型

px_void PX_Object_Event_SetCursorY(PX_Object_Event *e,px_float y);

功能

设置指针事件的Y坐标

参数e

需要修改的传入事件

参数y

需要设置的值

返回值

 

 

 

设置指针事件的Z坐标

函数原型

px_void PX_Object_Event_SetCursorX(PX_Object_Event *e,px_float z);

功能

设置指针事件的Z坐标

参数e

需要修改的传入事件

参数z

需要设置的值

返回值

 

 

 

取得键盘事件的输入码

函数原型

px_uint PX_Object_Event_GetKeyDown(PX_Object_Event e);

功能

取得键盘事件的输入码

参数e

传入事件

返回值

键盘输入码

 

 

取得输入法事件的输入字符串

函数原型

px_char* PX_Object_Event_GetStringPtr(PX_Object_Event e);

功能

取得输入法事件的输入字符串

参数e

传入事件

返回值

输入字符串指针