Что такое «окно» в вашем примере?Я ожидаю, что этот код будет использовать
[windowController.window makeKeyAndOrderFront: nil]
или
[self.window makeKeyAndOrderFront: nil];
(или NSApp вместо NIL или что-то еще, отправитель здесь не имеет значения, он игнорируется, толькополучатель актуален).NSWindowController лениво загружает свое окно, поэтому XIB не загружается, пока вы не вызовете -window.Вы не имеете прямого доступа к _window (или к self -> _ window), к переменной экземпляра, верно?Потому что это будет просто NIL до тех пор, пока вы в первый раз не вызовете -window.
Кроме того, как уже упоминал Ян, FileMaker очень, очень старый и, скорее всего, еще не обновлен для использования Какао в качестве пользовательского интерфейса.,Вы можете смешивать Carbon (в котором FileMaker, вероятно, все еще написан) и Cocoa, но есть много мелких проблем и ошибок, поэтому я не рекомендую это делать, особенно если вы новичок в Cocoa.Вам нужно изучить как углерод, так и какао, чтобы решить многие проблемы, которые вы делаете.
Кстати, не используйте NSApp.Используйте [NSApplication sharedApplication], чтобы убедиться, что вы получите объект NSApplication обратно.NSApp может быть NIL, если вы вызываете его раньше, чем кто-либо когда-либо вызывал [NSApplication sharedApplication].И снова, как упомянул Ян, для интеграции Carbon / Cocoa вам, возможно, придется вызвать функцию NSApplicationLoad (), чтобы Carbon знал, что теперь вы создадите несколько окон Cocoa внутри нее.Это все равно не поможет вам с панелью меню, которая по-прежнему будет Carbon.
Предлагает ли FileMaker SDK условия для создания окон?Возможно, вам придется смириться с тем, что вы будете писать свой код для своего C ++ SDK.В качестве альтернативы, создайте отдельное приложение Cocoa, которое создает ваше окно и выполняет работу, и создайте крошечный плагин C ++, который просто запускает это приложение, передает ему данные (например, записывая его в файл или отправляя AppleEvent на ваш компьютер).приложением или отправкой информации через Распределенные объекты), а затем в какой-то момент знает, как извлечь данные из вашего приложения и передать их обратно в FileMaker.