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

Я хочу иметь возможность создать диалоговое окно с двумя текстовыми полями в нем.
Я могу создать диалог с 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 («»), я не вижу ничего обновляющегося в диалоговом окне.

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

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

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

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

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

0

Решение

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

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]