2010-07-16 3 views
0

Я переношу плагин из 32-разрядной версии в 64-разрядную, что на самом деле находится на C++. Так как Carbon больше не поддерживается в 64-битном режиме, мне необходимо передать некоторый код в Cocoa. Единственная помощь Cocoa, в которой я нуждаюсь, - это создать простое модальное окно (а не лист), в котором есть две кнопки: «ОК» и «Отмена», и дает мне строковый ввод от пользователя. Я создал Cocoa nib, но не знаю, как Objective-C. Я мог бы начать изучение Objective-C прямо сейчас, но это требует времени, и это единственный фрагмент кода, который мне нужен прямо сейчас.Простой диалог модального окна какао в Mac OS X

Каким будет фрагмент кода?

+3

Если вы переносите приложение в Mac OS X, обучение Obj-C более или менее необходимо. Да, есть другие способы разработки приложения для Mac OS, но Cocoa с Obj-C - основной путь. Кроме того, почему вы думаете, что вам нужен модальный диалог вместо листа? Руководства по человеческому интерфейсу обычно предлагают отказаться от использования модальных диалогов. Я думаю, что вы ищете быстрый взлом, но лучше послушать, как использовать базовую систему. –

+0

Согласовано. Таким образом, безумие. –

+0

Здравствуйте, Я переношу плагин, который отображает графику внутри видео приложения. Это приложение не поддерживает листы поддержки. Я не ищу быстрого взлома, но это больше похоже на то, что я не хочу изучать новый язык только для одного вызова системного уровня. По крайней мере, недели, если не месяцы, требуют изучения Obj-C с нуля, которые пройдут через крайний срок. – rwb

ответ

2

Если это все, что вам нужно, вы можете избежать какао, используя вместо этого API CFUserNotification.

+0

Вау, я вообще не знал этого API. Он существует с 10.0! Существует так много API ... – Yuji

+0

Эй! Отлично. Он отлично работает для моей цели. Просто введите строку ввода! Большое спасибо за это! – rwb

2

Вам нужно будет изучить некоторые Objective-C и Cocoa независимо от того, что еще вы хотите сделать, потому что не существует «одного вызова системного уровня» для представления модальной панели.

Как минимум, вам нужно будет создать подкласс NSWindowController для вашей панели, который будет действовать как владелец файла своего файла nib и управлять взаимодействием между его элементами управления и любыми данными, которые он манипулирует. Затем вам нужно передать это значение -[NSApplication runModalForWindow:] и обработать результат, или до -[NSApplication beginModalSessionForWindow:], и обработать запуск и/или остановить сеанс модального сеанса самостоятельно.

Это означает написание кодирования против каркасов Cocoa в Objective-C.

К счастью, поскольку вы только начинаете с сообщения, текстового поля и нескольких кнопок, это будет довольно легко. Но это не просто гипотетическая функция NSGetTextInput(). Какао избегает таких вещей в пользу абстракций, которые могут быть собраны вместе прямо и расширяемо.

Например, если вы решите, что вам нужен не только ввод текста, но и флажок, вам придется заменить ваш гипотетический NSGetTextInput() чем-то подобным выше. Но, сделав это в первую очередь, добавив, что флажок становится несколько секунд дополнительной работы. Или добавьте интересную проверку на ввод текста. Или предварительно заполняйте свой текстовый ввод данными от объекта. Или реализовать тайм-аут (включая представление таймера обратного отсчета) в вашем модальном диалоговом окне. (Модальность в настоящее время сильно не нравится ...) Или любой другой ряд изменений.

+0

Спасибо за подробный ответ. Я действительно с нетерпением жду возможности изучить Какао, и это дает мне хорошее введение. – rwb