过剩窗口菜单栏在MAC OSX

Glut window - menu bar in MAC OSX

本文关键字:MAC OSX 菜单栏 窗口      更新时间:2023-10-16

是否有一种方法可以删除MAC OSX中的菜单栏项,当使用glut (glutCreateWindow("title");)创建窗口时?

或者是否有其他选择使用C/c++和glut在OSX中为OpenGL创建(无菜单)窗口?

glut正在Mac OSX上创建菜单栏项甚至键盘快捷键(只需尝试Command+S,你会感到惊讶…)。没有简单的方法可以在不访问Cocoa的情况下删除这些东西。这里的GLUT源代码显示了所有这些东西是在哪里实现的:

http://developer.apple.com/library/mac/samplecode/过剩/介绍/Intro.html

为了去掉GLUT中的菜单,您必须执行以下操作:

  1. #在main.cpp文件中包含"Cocoa/Cocoa.h"
  2. 右键单击main.cpp文件,选择"获取信息",然后在"常规"选项卡中设置"文件类型"为sourccode .cpp.objcpp
  3. 在xcode项目中包含Cocoa框架
  4. 在glutInit()之后添加以下代码:

    if (NSApp){
        NSMenu      *menu;
        NSMenuItem  *menuItem;  
        [NSApp setMainMenu:[[NSMenu alloc] init]];
    menu = [[NSMenu alloc] initWithTitle:@""];
    [menu addItemWithTitle:@"About..." action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""]; 
    menuItem = [[NSMenuItem alloc] initWithTitle:@"Apple" action:nil keyEquivalent:@""];
    [menuItem setSubmenu:menu];
    [[NSApp mainMenu] addItem:menuItem];
    [NSApp setAppleMenu:menu];
    }
    

代码是由Tom de Grunt从这里:http://www.degrunt.net/2010/09/22/using-nsmenu-outside-the-nib/

这将设置你的应用程序,只有一个菜单中的"About…"按钮和你的应用程序名称。只是删除菜单将导致崩溃,因为GLUT期望一个菜单,并为此注册了一个回调。

我已经在网上搜索了这个问题的答案,希望这能帮助到其他遇到同样问题的人。

Glut与菜单栏无关。你可以做的是使用glutFullscreen()将应用程序置于全屏状态,然后在你的Glut窗口中定义几个视图来模拟你自己的窗口。