Окно Glut - строка меню в MAC OSX - PullRequest
1 голос
/ 14 июля 2011

есть ли способ удалить пункты меню в MAC OSX, когда окно было создано с помощью glut (glutCreateWindow ("title");)?

или есть какие-либо другие альтернативы для создания (без меню) окно для OpenGL в OSX с использованием C / C ++ и перенасыщением?

Ответы [ 2 ]

3 голосов
/ 11 декабря 2011

перенасыщенность создает пункты меню и даже сочетания клавиш в Mac OSX (просто попробуйте Command + S, и вы удивитесь ...). Нет простого способа удалить эти вещи без доступа к Какао. Исходный код GLUT отсюда показывает, где все это реализовано:

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

Чтобы избавиться от меню в GLUT, вы должны сделать следующее:

  1. # включает «Cocoa / Cocoa.h» в ваш файл main.cpp.
  2. щелкните правой кнопкой мыши по файлу main.cpp, выберите «Get Info», затем на вкладке «General» задайте свой «Тип файла» для sourcecode.cpp.objcpp
  3. включает инфраструктуру Какао в ваш проект 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 голосов
/ 17 июля 2011

Glut не имеет никакого отношения к строке меню. Что вы можете сделать, это перевести приложение в полноэкранный режим с помощью glutFullscreen (), а затем определить несколько окон просмотра в окне Glut для имитации ваших собственных окон.

...