用 C++ 编写 NSTouchBar
program NSTouchBar with c++
问题
我想使用 c++ 创建一个使用新的 macbook pro 触摸条的应用程序。但是我找不到任何真正好的资源。而且apple没有任何关于使用c++编程touch bar的文档。
我做了什么
我找到了 this 关于 c++ 和触摸栏的文章,但是我找不到脚本 GLFW/glfw3.h
和 GLFW/glfw3native.h
的头文件。这些似乎都对脚本工作至关重要。
有关此问题的更多信息
即使上述文章的脚本有效,也没有 官方 文档用于使用 c++ 对触摸条进行编程(据我所知)。我认为这是一件重要的事情,因为许多(如果不是大多数)应用程序都是用 c/c++ 编写的。
提前感谢您的帮助!
所以如果您不使用 GLFW,您 link 的文章基本上不需要 GLFW/glfw3.h
和 GLFW/glfw3native.h
文件。
您的 C++ 应用程序使用什么 UI 框架?
除非它仍在使用 Carbon,否则在最低级别,框架将创建 NSWindows 以在 UI 中实际拥有 windows。您需要访问您的框架用来托管它的 NSWindow UI。如果它仍在使用 Carbon,我认为您可能无法完成此任务。
如果框架提供某种机制来获取本机平台 window(这将是一个 NSWindow),您可以将作者对 glfwGetCocoaWindow(window);
的调用替换为来自您的框架的正确调用。
如果框架不提供对 NSWindow 的访问,那么您将需要使用文章底部注释掉的代码将您的触摸栏附加到应用程序中的 windows。
请注意所有代码都是Obj-C代码;您的项目中至少需要一个 .m
或 .mm
文件,以提供 Obj-C 粘合代码来访问触摸栏。基本上,该代码是 Cocoa API 的 C-calleable 包装器。
另请注意,您需要针对要放入触摸栏的所有不同内容展开按钮和操作列表。您可以添加自己的包装 API,以便从 C++ 完成工具栏的构造,并将 call-back 的操作注册到您的 C++ 应用程序中以处理事件。
但从根本上说,触摸条在任何其他平台上都不可用,因此尝试避免编写 Obj-C 来实现触摸条没有太大好处,因为该代码只会 运行 在 macOS 上反正。如果您使用 .mm
文件来实现此代码的 Obj-C++,您仍然可以从触摸栏代码调用 C++ 对象。
问题
我想使用 c++ 创建一个使用新的 macbook pro 触摸条的应用程序。但是我找不到任何真正好的资源。而且apple没有任何关于使用c++编程touch bar的文档。
我做了什么
我找到了 this 关于 c++ 和触摸栏的文章,但是我找不到脚本 GLFW/glfw3.h
和 GLFW/glfw3native.h
的头文件。这些似乎都对脚本工作至关重要。
有关此问题的更多信息
即使上述文章的脚本有效,也没有 官方 文档用于使用 c++ 对触摸条进行编程(据我所知)。我认为这是一件重要的事情,因为许多(如果不是大多数)应用程序都是用 c/c++ 编写的。
提前感谢您的帮助!
所以如果您不使用 GLFW,您 link 的文章基本上不需要 GLFW/glfw3.h
和 GLFW/glfw3native.h
文件。
您的 C++ 应用程序使用什么 UI 框架?
除非它仍在使用 Carbon,否则在最低级别,框架将创建 NSWindows 以在 UI 中实际拥有 windows。您需要访问您的框架用来托管它的 NSWindow UI。如果它仍在使用 Carbon,我认为您可能无法完成此任务。
如果框架提供某种机制来获取本机平台 window(这将是一个 NSWindow),您可以将作者对 glfwGetCocoaWindow(window);
的调用替换为来自您的框架的正确调用。
如果框架不提供对 NSWindow 的访问,那么您将需要使用文章底部注释掉的代码将您的触摸栏附加到应用程序中的 windows。
请注意所有代码都是Obj-C代码;您的项目中至少需要一个 .m
或 .mm
文件,以提供 Obj-C 粘合代码来访问触摸栏。基本上,该代码是 Cocoa API 的 C-calleable 包装器。
另请注意,您需要针对要放入触摸栏的所有不同内容展开按钮和操作列表。您可以添加自己的包装 API,以便从 C++ 完成工具栏的构造,并将 call-back 的操作注册到您的 C++ 应用程序中以处理事件。
但从根本上说,触摸条在任何其他平台上都不可用,因此尝试避免编写 Obj-C 来实现触摸条没有太大好处,因为该代码只会 运行 在 macOS 上反正。如果您使用 .mm
文件来实现此代码的 Obj-C++,您仍然可以从触摸栏代码调用 C++ 对象。