我该如何在用C语言编写的GLUT程序中设置关闭操作?(例如让左上角的红色按钮起作用)

8

我正在使用GLUT和C在XCode 4.2编写一个非常简单的程序。

int main(int argc, char** argv)
{
    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(640, 480);

    glutCreateWindow("GLUT Program");

    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutIdleFunc(idle);

    glutMainLoop();
    return EXIT_SUCCESS;
}

当窗口打开后,我无法通过在左上角的红色按钮(Mac)来关闭它,因为它变成了灰色。如果我所做的任何Java编程都是一个模型,那么应该有一些函数设置关闭操作,以便红色退出按钮起作用。我似乎也找不到最新版本GLUT的文档。每当我谷歌搜索时,我似乎都会得到OpenGL文档,这让我对两者之间的关系更加困惑(我认为GLUT是与OpenGL交互的跨平台接口)。


你使用的是哪个GLUT实现? - genpfault
老实说,我不知道。据我所知,这些东西都包含在XCode和OpenGL的发行版中,因此我正在使用与XCode 4.2和Lion捆绑在一起的任何东西。 - Eric Thoma
5个回答

3
在Mac OS上,窗口无法关闭,必须退出应用程序才能关闭窗口(参考资料 在此)。

2

在OS X上使用Python的GLUT绑定时,我发现将事件处理程序传递给glutWMCloseFunc就足以执行操作(显然,这已经被弃用,建议使用glutCloseFunc,但我的版本不支持)。


1
如果你想使用Mac的窗口系统编写本地的类Mac应用程序(而且你应该这样做 - 你的用户会感谢你!),那么你应该使用NSOpenGLView而不是GLUT。这里有一些很好的示例代码在这里

1

嗯,我现在遇到了这个问题,我使用

Command + Q

退出进程,它有效。


0
添加一个关闭按钮的处理程序,它将会出现:
void winCloseFunc()
{
    glutDestroyWindow(g_windowId);
    exit(0);
}

int main( ... )
{
    ...
    glutWMCloseFunc(winCloseFunc);
    ...
}

刚试了一下,不行。它仍然创建了一个带有禁用按钮的窗口。 - Roman Kurbatov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接