请问什么叫做回调函数
展开全部
回调函数就是callback函数。是系统给用户的开放接口程序。
当某事件发生时,系统需要处理这一事件,例如键盘输入事件发生,例如屏幕图像更新事件发生,如果你给了“回调函数”,系统则用你给的程序去处理,如果没给,系统就用默认方法处理。
OpenGL 的 GLUT 程序就是这样。例如函数:
glutDisplayFunc(display); 这里的display就是你写的如何“画”屏幕的函数名。
glutKeyboardFunc(press_s); 这里的press_s就是你写的如何处理键盘输入事件的函数名。
函数的参数,系统也许有约定,也许允许你写一大串。
具体的display函数和press_s用户要提供。例如:
void display()
{
float v[3],n[3]; float text_color[3]={1.,0.,0.};
int i,j;
Point p1,p2,p3,p4;
glMatrixMode(GL_MODELVIEW);
glClearColor(1.0,1.0,1.0,1.0);
glClear(GL_COLOR_BUFFER_BIT);
glDrawBuffer(GL_BACK);
glMaterialfv(GL_FRONT, GL_AMBIENT, mat1_ambient);
glPushMatrix();
glBegin(GL_TRIANGLES);
。。。。
}
void press_s(unsigned char key, int x, int y)
{
FILE * fout;
int bmp_w,bmp_v, win_buff_size;
...
switch (key)
{ case 'q' : exit (1); break;
case 'x': glTranslatef(10.,0.,0.); glutPostRedisplay();
...
}
当某事件发生时,系统需要处理这一事件,例如键盘输入事件发生,例如屏幕图像更新事件发生,如果你给了“回调函数”,系统则用你给的程序去处理,如果没给,系统就用默认方法处理。
OpenGL 的 GLUT 程序就是这样。例如函数:
glutDisplayFunc(display); 这里的display就是你写的如何“画”屏幕的函数名。
glutKeyboardFunc(press_s); 这里的press_s就是你写的如何处理键盘输入事件的函数名。
函数的参数,系统也许有约定,也许允许你写一大串。
具体的display函数和press_s用户要提供。例如:
void display()
{
float v[3],n[3]; float text_color[3]={1.,0.,0.};
int i,j;
Point p1,p2,p3,p4;
glMatrixMode(GL_MODELVIEW);
glClearColor(1.0,1.0,1.0,1.0);
glClear(GL_COLOR_BUFFER_BIT);
glDrawBuffer(GL_BACK);
glMaterialfv(GL_FRONT, GL_AMBIENT, mat1_ambient);
glPushMatrix();
glBegin(GL_TRIANGLES);
。。。。
}
void press_s(unsigned char key, int x, int y)
{
FILE * fout;
int bmp_w,bmp_v, win_buff_size;
...
switch (key)
{ case 'q' : exit (1); break;
case 'x': glTranslatef(10.,0.,0.); glutPostRedisplay();
...
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询