2011-07-14 76 views
1

是否有一種方法可以在使用glut(glutCreateWindow(「title」);)創建窗口時刪除MAC OSX中的菜單欄項目?Glut窗口 - MAC OSX中的菜單欄

或者是否有任何其他替代方案來創建(菜單)窗口的OSX使用C/C++和過剩的OpenGL?

+0

你在說什麼菜單欄? –

+0

MacOSX中的頂級菜單 - 文件,編輯,窗口 –

+0

你想完全移除/隱藏菜單欄嗎?或者你想有選擇地刪除一些項目? – Yuji

回答

0

Glut與菜單欄無關。你可以做的是通過glutFullscreen()將應用程序放到全屏中,然後在你的Glut窗口中定義幾個視口來模擬你自己的窗口。

3

glut在Mac OSX上創建菜單欄項甚至鍵盤快捷鍵(只需嘗試Command + S,你會感到驚訝......)。沒有訪問Cocoa,沒有簡單的方法去除這些東西。 從這裏過剩的源代碼顯示了所有的東西正在實施:

http://developer.apple.com/library/mac/#samplecode/glut/Introduction/Intro.html

爲了在GLUT擺脫菜單中,你必須做到以下幾點:

  1. #在main.cpp文件中包含「Cocoa/Cocoa.h」。
  2. 右鍵點擊你的main.cpp文件,選擇「獲取信息」,然後在「常規」選項卡中設置你的「文件類型」,以sourcecode.cpp.objcpp
  3. 包括Cocoa框架在Xcode項目
  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]; 
    } 
    

的代碼是由湯姆·德咕嚕從這裏:http://www.degrunt.net/2010/09/22/using-nsmenu-outside-the-nib/

這將使用您的應用程序名稱在菜單中設置您的應用程序,只有一個「關於...」按鈕。剛剛刪除菜單會導致崩潰,因爲GLUT需要一個菜單​​併爲此註冊回調。

我有搜索上下網絡的答案,並希望這將幫助其他人遇到同樣的問題。

+0

非常感謝!我仍然使用GLUT進行Mac App Store提交,看起來他們對菜單很挑剔。我需要刪除打印和保存菜單項,因爲我的遊戲不使用它們。我想刪除文件,編輯和Windows菜單,因爲它們什麼都不做,我該怎麼做?我想保留默認的應用程序菜單,因爲它包含GLUT首選項的鏈接,Apple需要Cmd + Q快捷方式。 – Rasterman