我在 C++ 上使用 GLUT 有简单的代码:
#include <GLUT/glut.h>
void myDisplayFunc() {}
void myCloseFunc() {}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(640, 480);
glutCreateWindow("GLUT Program");
glutWMCloseFunc(myCloseFunc);
glutDisplayFunc(myDisplayFunc);
glutMainLoop();
return 0;
}
当我在 MacOs 10.14 上构建它时,所有窗口按钮(关闭、最大化、最小化)都处于活动状态,但是当我在 MacOs 11.7 上构建相同的代码时,关闭按钮(“X”)处于非活动状态(灰色)。我该如何修复它?
我寻找了其他函数而不是 glWMCloseFunc,但没有运气。此函数被标记为已弃用,但所有其他函数也是如此。
为了解决这个问题,我在 Objective-C 中编译了一个静态库,并在 XCode 中使用了 C 接口。我将以下代码添加到该库中:
NSWindow *window = [[NSApplication sharedApplication] keyWindow];
window.styleMask |= NSWindowStyleMaskClosable;
[[window standardWindowButton:NSWindowCloseButton] setHidden:NO];
[[window standardWindowButton:NSWindowCloseButton] setEnabled:YES];
我在 glutSetWindowTitle 函数之后调用了这个函数。