2017-02-15 55 views
1

問題

我想用C++來創建一個應用程序,使用新的macbook pro觸摸欄。但是我無法找到任何真正的好資源。而且蘋果沒有任何關於使用C++編程觸摸欄的文檔。程序NSTouchBar與C++

我做了什麼

我發現C++和觸摸條this的文章,但是我找不到任何的頭文件的腳本GLFW/glfw3.hGLFW/glfw3native.h。這些對於腳本工作似乎都很重要。

更多關於這個問題

即使上述文章的腳本工作,沒有官方文檔與C++(據我所知)編程觸摸條。我認爲這是一個重要的事情,因爲很多(如果不是大多數)應用程序是用c/C++編寫的。

非常感謝您的幫助!

回答

1

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

你用什麼UI框架爲你的C++應用程序?

除非它仍在使用Carbon,否則該框架將在最低級別創建NSWindows以在UI中實際擁有窗口。您需要訪問您的框架用於託管UI的NSWindow。如果它仍在使用Carbon,我認爲你可能無法完成這項工作。

如果框架提供了一些獲取本地平臺窗口(這將是NSWindow)的機制,您可以用來自框架的正確調用替換作者的調用glfwGetCocoaWindow(window);

如果框架不提供對NSWindow的訪問,那麼您將需要使用文章底部註釋掉的代碼將觸摸板附加到應用程序的窗口中。

請注意,所有代碼都是Obj-C代碼;您需要在項目中至少有一個.m.mm文件提供Obj-C膠合代碼才能訪問觸摸條。基本上這個代碼是Cocoa API的C可調用包裝器。

另請注意,您需要展開按鈕和操作的列表,才能將所有不同的東西放入觸摸欄中。您可以添加自己的包裝API,以便從C++完成工具欄的構建,並註冊可以回調到C++應用程序中以處理事件的操作。

雖然從根本上說,touchbar並不在任何其他平臺上,所以嘗試避免編寫Obj-C來實現觸摸條沒有什麼好處,因爲該代碼只能在macOS上運行。如果您使用.mm文件爲此代碼實現Obj-C++,則仍然可以從觸摸條代碼調用您的C++對象。

+0

除此之外,你必須先學習Objective-C! -------- 嘗試避免編寫Obj-C – David

+0

@David沒有什麼好處,API基本上是Obj-C/Swift API。如果你想訪問API,你將不得不使用一些Obj-C。使用Obj-C編寫觸摸條支持可能會比編寫一個Obj-C++包裝器更容易,只需通過C++接口即可;再次,在一天結束時,這段代碼不會被移植到其他平臺上;不妨直接使用API​​ ...... –

+0

呃,是的,---因此OP的請求是一個C++包裝器。據推測,他希望有人已經把它包起來,這樣他就不必學習Obj-C!僅僅因爲某些東西不可移植並不意味着你必須用Obj-C編寫代碼。 _______ 該API基本上是一個Obj-C/Swift API – David