Я создал игровое приложение, которое имеет только одно окно. Приложение создано без помощи .xib-файлов, как описано здесь: Как мне создать графический интерфейс и программно реагировать на события Cocoa?
Сейчас я могу перехватывать стандартные события 'key up/down' в главном цикле приложения:
NSEvent* event = [NSApp nextEventMatchingMask:NSAnyEventMask untilDate:[NSDate distantPast] inMode:NSDefaultRunLoopMode dequeue:YES];
NSEventType eventType = [event type];
if (eventType == NSKeyDown)
{
my_uint32 keycode = [event keyCode];
input::doSomeWork(keycode);
}
Также я могу правильно выйти из приложения при нажатии красного крестика на окне с помощью следующего кода:
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
g_myEngine.stop();
return NSTerminateNow;
}
Но как мне:
a) перехватить, когда выбран пункт меню 'Quit MyApplicationName'?
b) обработать событие Cmd-Q?
обновить: Я добавил этот код:
id menubar = [[NSMenu new] autorelease];
id appMenuItem = [[NSMenuItem new] autorelease];
[menubar addItem:appMenuItem];
[NSApp setMainMenu:menubar];
id appMenu = [[NSMenu new] autorelease];
id appName = [[NSProcessInfo processInfo] processName];
id quitTitle = [@"Quit " stringByAppendingString:appName];
id quitMenuItem = [[[NSMenuItem alloc] initWithTitle:quitTitle action:@selector(terminate:) keyEquivalent:@"q"] autorelease];
[appMenu addItem:quitMenuItem];
[appMenuItem setSubmenu:appMenu];
и теперь приложение выходит из меню, но Cmd-Q по-прежнему не работает.