3

问题

我想使用 c++ 创建一个使用新的 macbook pro 触摸栏的应用程序。但是我找不到任何真正好的资源。而且苹果没有任何关于使用 c++ 对触摸栏进行编程的文档。

我做了什么

我在 c++ 和触摸栏上找到了这篇文章,但是我找不到脚本的头文件GLFW/glfw3.hGLFW/glfw3native.h. 这些对于脚本的工作似乎都至关重要。

更多关于这个问题

即使上述文章的脚本有效,也没有使用 c++ 编程触摸栏的官方文档(据我所知)。我认为这是一件重要的事情,因为许多(如果不是大多数)应用程序都是用 c/c++ 编写的。

预先感谢您的帮助!

4

1 回答 1

2

因此,如果您不使用 GLFW ,您链接到的文章基本上不需要GLFW/glfw3.h和文件。GLFW/glfw3native.h

你的 C++ 应用程序使用什么 UI 框架?

除非它仍在使用 Carbon,否则在最低级别,该框架将创建 NSWindows 以在 UI 中实际拥有窗口。您需要访问框架用来承载 UI 的 NSWindow。如果它仍在使用 Carbon,我认为您可能无法做到这一点。

如果框架提供了某种机制来获取本机平台窗口(这将是一个 NSWindow),那么您可以将作者的调用替换为glfwGetCocoaWindow(window);来自您的框架的正确调用。

如果框架不提供对 NSWindow 的访问,那么您将需要使用文章底部注释掉的代码将您的触摸栏附加到应用程序中的窗口。

请注意,所有这些代码都是 Obj-C 代码;你需要在你的项目中至少有一个.mor.mm文件来提供 Obj-C 胶水代码来访问触摸栏。基本上,该代码是围绕 Cocoa API 的 C 可调用包装器。

另请注意,您需要为要放入触摸栏中的所有不同内容扩展按钮和操作列表。您可以添加自己的包装 API,以便从 C++ 完成工具栏的构建,并注册回调到您的 C++ 应用程序以处理事件的操作。

但从根本上说,触摸条在任何其他平台上都不可用,因此尝试避免编写 Obj-C 来实现触摸条并没有太大的好处,因为该代码无论如何都只能在 macOS 上运行。如果您使用.mm文件为此代码实现 Obj-C++,您仍然可以从触摸条代码调用您的 C++ 对象。

于 2017-02-15T06:36:45.510 回答