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