Как создать несколько текстовых полей в Carbon?

0

Я хочу иметь возможность создать диалоговое окно с двумя текстовыми полями. Я могу создать диалог с 1 текстовым полем с кодом ниже,

const void* keys[] =
{
kCFUserNotificationAlertHeaderKey,
kCFUserNotificationAlertMessageKey,
kCFUserNotificationAlternateButtonTitleKey,
kCFUserNotificationTextFieldTitlesKey
};

const void* values[] =
{
titleStr,
messageStr,
CFSTR("Cancel"),
labelStr
};

 CFDictionaryRef elements = CFDictionaryCreate(0, keys, values, sizeof(keys)/sizeof(*keys), &kCFTypeDictionaryKeyCallBacks,&kCFTypeDictionaryValueCallBacks);
          CFShow(elements);

Когда я добавляю еще одну пару "ключ-значение", например, kCFUserNotificationTextFieldTitlesKey с некоторым CFSTR (""), я ничего не вижу в диалоговом окне.

Итак, как мы можем иметь несколько текстовых полей, например Username/password, в CFDitionaryCreate().

Я прочитал в документации, что мы можем иметь несколько titleKeys с массивом, но я не уверен, как это сделать.

Я смог добавить одно поле в диалоговом окне kCFUserNotificationProgressIndicatorValueKey но не смог снова добавить тот же ключ.

Я относительно новичок в OSX и углеродном API (который, как мне известно, устарел), я был бы признателен, если бы указал на правильный ресурс или пример, который может помочь мне в этом.

Кроме того, использование Cocoa здесь не является вариантом. Мне нужно добиться этого, используя углерод.

Теги:
xcode
macos
macos-carbon

1 ответ

1
Лучший ответ

Значение, связанное с ключом kCFUserNotificationTextFieldTitlesKey или kCFUserNotificationTextFieldValuesKey будет массивом строк:

CFTypeRef values[2] = { CFSTR("one"), CFSTR("two") };
CFArrayRef valArray = CFArrayCreate( NULL, values, 2, &kCFTypeArrayCallBacks );

Кстати, вы используете Core Foundation, а не Carbon. Не каждый C-based API является Carbon.

  • 0
    Это сработало, спасибо! Вы бы порекомендовали какой-нибудь справочник по изучению Core Foundation и Carbon, я знаю, что он устарел, я все еще хочу пойти на это.
  • 0
    @ 2:00, я не знаю книг о более новых материалах Carbon, таких как HIView. Я предполагаю, что вы используете Xcode 3.2.6, так как более поздние Xcodes не могут обрабатывать углеродные перья. В устройстве для чтения документов Xcode 3.2.6 обязательно прочитайте Руководство по программированию HIView и Руководство по программированию Carbon Event Manager.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню