使用C++编写NSTouchBar程序

3

问题

我想使用C++创建一个应用程序,使用新的MacBook Pro触控栏。然而,我无法找到任何真正好的资源。苹果也没有关于使用C++编程触控栏的文档。

我已经做了什么

我在这篇文章中找到了有关C++和触控栏的信息。但是我找不到脚本GLFW/glfw3.hGLFW/glfw3native.h的任何一个头文件。这两个文件似乎对脚本的工作至关重要。

更多问题

即使上述文章的脚本可以工作,也没有关于使用C++编程触控栏的官方文档(据我所知)。我认为这是一个很重要的事情,因为许多应用程序都是用C/C++编写的。

提前感谢您的帮助!

1个回答

2
所以,如果您不使用GLFW,那么您链接的文章基本上不需要GLFW/glfw3.hGLFW/glfw3native.h文件。
你在使用什么C++应用程序UI框架?
除非它仍然使用Carbon,否则在最低级别上,该框架将创建NSWindows来实际拥有UI中的窗口。您需要获取框架使用的NSWindow以托管UI。如果它仍在使用Carbon,我认为您可能无法实现这一点。
如果该框架提供了一些机制来获取本地平台窗口(将是一个NSWindow),您将使用来自您的框架的正确调用替换作者对glfwGetCocoaWindow(window);的调用。
如果该框架没有访问NSWindow,则需要使用底部注释掉的代码将您的Touch Bar附加到应用程序中的窗口。
请注意,所有这些代码都是Obj-C代码;您需要至少有一个.m.mm文件在项目中,以提供那个Obj-C粘合代码来访问Touch Bar。基本上,该代码是C可调用的包装器,围绕Cocoa API。
还要注意,您需要扩展按钮和操作列表,以适应您想要放置在Touch Bar中的所有不同事物。您可以添加自己的包装API,以便从C++完成工具栏的构建,并注册调用回到您的C++应用程序以处理事件的操作。
但基本上,Touch Bar在任何其他平台上都不可用,因此没有什么好处尝试避免编写Obj-C来实现您的Touch Bar,因为该代码只能在macOS上运行。如果您使用.mm文件为此代码实施Obj-C++,您仍然可以从Touch Bar代码调用您的C++对象。

除此之外,你必须先学习Objective-C!避免编写Obj-C并没有太大的好处。 - David
@David,API基本上是一个Obj-C/Swift API。如果你想要访问API,你必须使用一些Obj-C。使用Obj-C编写触摸栏支持可能会更容易,而不是编写一个Obj-C++包装器来通过C++接口进行交互;再说了,最终这段代码不会在其他平台上可移植;还不如直接使用API... - B.J.
嗯,是的,这就是为什么OP请求一个C++包装器。他可能希望有人已经封装好了它,这样他就不必学习Obj-C!仅仅因为某些东西不可移植,并不意味着你必须要用Obj-C来编写。
该API基本上是一个Obj-C/Swift API。
- David
有人知道怎么做。他没有要求一个包装器;他问如何从C++实现。无论如何,除非有人编写并发布一个包装器,否则答案是:你必须使用Obj-C。 - B.J.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接