在OSX上,如何在创建窗口时确保命令行应用程序在应用程序切换器中显示?

时间:2014-08-25 00:06:52

标签: macos

我正在开发一个跨平台的命令行应用程序(在C ++上 在OSX上的Win / Linux和ObjC ++)有时创建一个OpenGL 上下文。显然,OpenGL上下文和窗口创建代码 不同的平台有所不同,但在OSX上完成了它 NSOpenGLViewNSWindow。没有笔尖,它没有构建 Xcode(它使用跨平台构建脚本)。

在OSX上,窗口创建并且工作正常,但是OpenGL窗口 没有出现在应用程序切换器(Cmd-Tab)中。这意味着 如果你在其他方面失去它,那么找到窗户是很棘手的 窗户,往往只能通过前往Mission 控制/曝光。

我的问题是:是否有一种编程方式(即要发送给的消息) NSWindow对象或NSApplication)以确保(unix-style) 命令行应用程序将显示在Cmd-Tab列表中 窗口是否已创建?

1 个答案:

答案 0 :(得分:0)

您需要将流程从附件转换为常规应用。致电[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular]

但是,一旦你这样做,该应用程序在活动时也会有一个菜单栏。这很好,因为它是用户期望的。但是,您可能需要在该菜单栏的菜单中添加适当的项目,以获得不错的用户体验。

您的应用程序将显示在Dock以及Command-Tab应用程序切换器中。默认情况下,非捆绑式可执行文件将获得一个看起来像CRT显示的图标,显示单词" exec"。您可以使用[NSApp setApplicationIconImage:someImage]设置更好的图标,但Dock会在进程退出时恢复显示通用可执行图标。