C语言-回调函数
属于函数指针的高级应用。
首先,关于ACLlib图形库介绍
acllib函数库包含一个.c文件和一个.h文件,可以从浙江大学翁恺教授的github(电脑登录)开源资源中下载获取或者加入大学慕课下载附件。它是基于win32API开发的,其中的函数可以实现简单的图形界面操作。
以devC为例,创建windows application项目,添加acllib的头文件和源文件。然后在连接器中添加以下8个对象:
【运行时可能报错 undefined reference to TransparentBlt 解决方法:
(1)注释掉高亮行 ——
(2)或者加上以下附加编译选项 —— 】
细节参考:ACLlib库的使用-基于DevC++
或者:acllib下载使用
VS创建项目可以参考这位兄弟的:VS使用acllib图形库
回调函数
函数指针与回调函数参考内容:
https://www.runoob.com/cprogramming/c-fun-pointer-callback.html
【指针函数是返回类型是指针的函数,函数指针则是指向函数的指针变量。】
函数指针的定义: 类型说明符 (*函数名) (参数)
例如:int (*P) (int x);
利用typedef定义回调函数:typedef给函数定义别名,分析回调函数定义时,去掉typedef和函数别名就可以看出原变量类型 ——
头文件中:
源文件中:
如上图中,typedef void( * MouseEventCallback) (int x, int y, int button, int event); 回调函数类型是 void( * ) (int , int , int , int) 。总之,回调函数是C语言对函数指针的高级应用。
运用acllib库的回调函数实现图形交互消息(消息循环) ——
部分运行结果展示: