2017-02-15 3 views
1

Проблема

Я хотел бы использовать C++ для создания приложения, которое использует новую панель управления macbook pro. Однако я не могу найти действительно хорошие ресурсы. И у яблока нет никаких документов по использованию C++ для программирования сенсорной панели.программа NSTouchBar с C++

То, что я сделал

Я нашел this статью на C++ и сенсорной панели, однако я не могу найти любой из заголовочных файлов для сценария GLFW/glfw3.h и GLFW/glfw3native.h. Они оба кажутся критическими для работы скрипта.

Более подробно о проблеме

Даже если сценарий Вышеупомянутая статья работает, нет никаких официальных документы для программирует сенсорную панель с C++ (То, что я знаю). Я думаю, что это важно, потому что многие, если не большинство приложений, написаны в c/C++.

Заранее благодарю за помощь!

ответ

1

Так что статья, на которую вы ссылаетесь, в основном не нуждается в файлах GLFW/glfw3.h и GLFW/glfw3native.h, если вы не используете GLFW.

Какая структура пользовательского интерфейса вы используете для своего приложения на C++?

Если до сих пор не используется Carbon, на самом низком уровне инфраструктура будет создавать NSWindows, чтобы на самом деле иметь окна в пользовательском интерфейсе. Вам нужно получить доступ к NSWindow, который использует ваша инфраструктура для размещения интерфейса пользователя. Если он все еще использует Carbon, я думаю, вы, вероятно, не сможете это сделать.

Если структура обеспечивает некоторый механизм, чтобы получить окно собственной платформы (которое будет NSWindow), вы замените вызов автора на glfwGetCocoaWindow(window); с правильным вызовом из вашего фреймворка.

Если инфраструктура не предоставляет доступ к NSWindow, вам необходимо будет использовать код, который закомментирован в нижней части статьи, чтобы прикрепить вашу панель к окнам вашего приложения.

Обратите внимание, что весь этот код является кодом Obj-C; вам нужно будет иметь хотя бы один файл .m или .mm в вашем проекте, чтобы обеспечить, чтобы код клея Obj-C получил доступ к сенсорной панели. В основном этот код является C-calleable оберткой вокруг API Cocoa.

Также обратите внимание, что вам нужно будет расширить список кнопок и действий для всех вещей, которые вы хотите поместить в панель. Вы можете добавить свой собственный API-интерфейс для переноса, чтобы конструкция панели инструментов была выполнена из C++ и регистрировала действия, которые обращаются к вашему C++-приложению для обработки событий.

В принципе, сенсорная панель недоступна на любой другой платформе, поэтому нет никакой пользы от попыток избежать написания Obj-C для реализации вашей панели управления, поскольку этот код будет работать только на MacOS. Если вы используете файлы .mm для реализации Obj-C++ для этого кода, вы все равно можете вызывать свои объекты на C++ из вашего кода на сенсорной панели.

+0

Помимо этого вам необходимо сначала изучить Objective-C! -------- нет большой пользы от попыток избежать написания Obj-C – David

+0

@David, API в основном является API Obj-C/Swift. Если вы хотите получить доступ к API, вам придется использовать некоторые Obj-C.Просто проще написать поддержку тач-панели с помощью Obj-C, чем писать обертку Obj-C++, чтобы вы могли взаимодействовать с ней через C++; опять же, в конце дня, этот код не будет переносимым на другие платформы; может также использовать API напрямую ... –

+0

Ну, да, --- следовательно запрос от OP для C++-оболочки. Предположительно, он надеялся, что кто-то уже завернул его, чтобы ему не пришлось изучать Obj-C! Просто потому, что что-то не переносится, это не значит, что вам нужно писать в Obj-C. _______ API в основном является API Obj-C/Swift – David

Смежные вопросы