当可插拔的Cocoa应用程序仅公开C++;应用程序编程接口? 我正在开发一个插件,用于使用C++插件API在Mac上先进的FiMeCalk Pro 11。我想在通过XIB文件加载的屏幕上显示NSWindow,但如果不在XIB文件中将窗口的“启动时可见”属性设置为“是”,则无法显示该窗口

当可插拔的Cocoa应用程序仅公开C++;应用程序编程接口? 我正在开发一个插件,用于使用C++插件API在Mac上先进的FiMeCalk Pro 11。我想在通过XIB文件加载的屏幕上显示NSWindow,但如果不在XIB文件中将窗口的“启动时可见”属性设置为“是”,则无法显示该窗口,c++,objective-c,cocoa,macos,appkit,C++,Objective C,Cocoa,Macos,Appkit,我正在努力: [window makeKeyAndOrderFront:NSApp]; 问题是,这不会使窗口出现在屏幕上。我也尝试过: [window makeKeyAndOrderFront:windowController]; 以及: 以及: 我对Objective-C和Cocoa非常陌生,所以我还在学习在Mac上创建GUI的基本知识。但是,我不确定我的窗口控制器、我的窗口,甚至是NSApp是否“连接到”FileMaker Pro;i、 e.我不知道我的NSApp是否与FileMaker

我正在努力:

[window makeKeyAndOrderFront:NSApp];
问题是,这不会使窗口出现在屏幕上。我也尝试过:

[window makeKeyAndOrderFront:windowController];
以及:

以及:

我对Objective-C和Cocoa非常陌生,所以我还在学习在Mac上创建GUI的基本知识。但是,我不确定我的窗口控制器、我的窗口,甚至是
NSApp
是否“连接到”FileMaker Pro;i、 e.我不知道我的
NSApp
是否与FileMaker的
NSApp
相同。这是个愚蠢的问题吗


当“启动时可见”设置为“是”时,
NSWindowController
如何在屏幕上成功显示窗口?我不想继续使用该属性只是为了让我的窗口显示在屏幕上

因此,您正在尝试从Carbon应用程序显示Cocoa窗口。您是否先调用了
NSApplicationLoad
?有关更多详细信息,请参见苹果网站。

因此,您正在尝试从碳应用程序显示可可窗口。您是否先调用了
NSApplicationLoad
?有关更多详细信息,请参见苹果网站。

您的示例中的“窗口”是什么?我希望该代码可以使用

[windowController.window makeKeyAndOrderFront: nil]

(或者NSApp而不是NIL或其他什么,发送方在这里不重要,它被忽略,只有接收方相关)。NSWindowController延迟加载其窗口,因此在调用-window之前不会加载XIB。您没有直接访问实例变量_window(或self->_window),对吗?因为在你第一次呼叫窗口之前,这将是零

此外,正如Jan已经提到的,FileMaker非常非常古老,很可能还没有更新到使用Cocoa作为其用户界面。你可以将碳(FileMaker可能仍在使用)和可可混合使用,但有很多小问题和陷阱,所以我不推荐使用,尤其是当你刚接触可可时。你必须学习碳和可可来解决你正在做的很多事情

顺便说一句——不要使用NSApp。使用[NSApplication sharedApplication],这将确保您获得一个NSApplication对象。如果您在任何人调用[NSApplication sharedApplication]之前调用它,则NSApp可能为零。正如Jan提到的,对于Carbon/Cocoa集成,您可能需要调用函数NSApplicationLoad(),以便Carbon知道您现在将在其中创建几个Cocoa窗口。不过,这对菜单栏仍然没有帮助,因为菜单栏仍然是碳的


FileMaker SDK是否提供创建windows的规定?您可能不得不辞职,以编写代码来对抗其C++ SDK。另外,创建一个独立的COCOA应用程序,创建窗口并执行该工作,创建一个简单的C++插件,简单地启动该应用程序,将其交给数据(例如,将其写入文件或发送AppleEvter到应用程序,或通过使用分布式对象发送信息)。然后在某个时刻知道如何从应用程序中检索数据并将其返回给FileMaker。

在您的示例中,“窗口”是什么?我希望该代码可以使用

[windowController.window makeKeyAndOrderFront: nil]

(或者NSApp而不是NIL或其他什么,发送方在这里不重要,它被忽略,只有接收方相关)。NSWindowController延迟加载其窗口,因此在调用-window之前不会加载XIB。您没有直接访问实例变量_window(或self->_window),对吗?因为在你第一次呼叫窗口之前,这将是零

此外,正如Jan已经提到的,FileMaker非常非常古老,很可能还没有更新到使用Cocoa作为其用户界面。你可以将碳(FileMaker可能仍在使用)和可可混合使用,但有很多小问题和陷阱,所以我不推荐使用,尤其是当你刚接触可可时。你必须学习碳和可可来解决你正在做的很多事情

顺便说一句——不要使用NSApp。使用[NSApplication sharedApplication],这将确保您获得一个NSApplication对象。如果您在任何人调用[NSApplication sharedApplication]之前调用它,则NSApp可能为零。正如Jan提到的,对于Carbon/Cocoa集成,您可能需要调用函数NSApplicationLoad(),以便Carbon知道您现在将在其中创建几个Cocoa窗口。不过,这对菜单栏仍然没有帮助,因为菜单栏仍然是碳的

FileMaker SDK是否提供创建windows的规定?您可能不得不辞职,以编写代码来对抗其C++ SDK。另外,创建一个独立的COCOA应用程序,创建窗口并执行该工作,创建一个简单的C++插件,简单地启动该应用程序,将其交给数据(例如,将其写入文件或发送AppleEvter到应用程序,或通过使用分布式对象发送信息)。然后在某个时刻知道如何从应用程序中检索数据并将其交回FileMaker

[windowController.window makeKeyAndOrderFront: nil]
[self.window makeKeyAndOrderFront: nil];