基本图形绘制示例:画房子 田田
新的编程模型 开始 老的程序:当程序的 g ra p hic s 有需要时等待用户 inM a ino 的输入 InitG ra p hic so) e reg isterXXXC a IB 事件驱动程序:当 有用户输入时就响 结束 应 消息循环 ■系统会捕获事件并 把消息发给相关应 绘图函数 用程序
老的程序: 当程序 有需要时等待用户 的输入 事件驱动程序: 当 有用户输入时就响 应 系统会捕获事件并 把消息发给相关应 用程序 开始 W inM a in() M a in() InitG ra p hic s() re g iste rXXXCa llB a c k() 消息循环 鼠标、 键盘、 定时 器回调函数 绘图函数 我的程序 g ra p hic s 调⽤用 返回 结束
回调函数 callback) 当事件发生时,调用我的函数 1.给将来会发生事件的地方注册一个回调函数 2.当事件发生时,该回调函数被调用(执行) 回调函数经常用于事件处理( event handling),譬如:当按下键盘、移动鼠柯 等事件发生时,就调用相应的回调函数去 处理这些操作 可在回调函数中实现对图形的交互
当事件发生时,调用我的函数 ▪ 1. 给将来会发生事件的地方注册一个回调函数. ▪ 2. 当事件发生时,该回调函数被调用(执行). 回调函数经常用于事件处理(event handling ),譬如:当按下键盘、移动鼠标 等事件发生时,就调用相应的回调函数去 处理这些操作. 可在回调函数中实现对图形的交互
回调函数 callback) 教学用图形库提供4类回调函数 键盘消息回调函数 字符消息回调函数 鼠标消息回调函数 定时器消息回调函数
教学用图形库提供4类回调函数 ▪ 键盘消息回调函数 ▪ 字符消息回调函数 ▪ 鼠标消息回调函数 ▪ 定时器消息回调函数
键盘消息回调函数 键盘消息回调函数的类型为: typedef void( Keyboard Event Callback)(int key, int event key表示哪个键 event表示按下或松开等事件 ypedef enum t KEY DOWN KEY UP 3ACL Keyboard Event
键盘消息回调函数的类型为: ▪ key表示哪个键 ▪ event表示按下或松开等事件 typedef enum { KEY_DOWN, KEY_UP } ACL_Keyboard_Event; typedef void (*KeyboardEventCallback) (int key, int event);