Я хочу иметь возможность создать диалоговое окно с двумя текстовыми полями. Я могу создать диалог с 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 здесь не является вариантом. Мне нужно добиться этого, используя углерод.
Значение, связанное с ключом kCFUserNotificationTextFieldTitlesKey
или kCFUserNotificationTextFieldValuesKey
будет массивом строк:
CFTypeRef values[2] = { CFSTR("one"), CFSTR("two") };
CFArrayRef valArray = CFArrayCreate( NULL, values, 2, &kCFTypeArrayCallBacks );
Кстати, вы используете Core Foundation, а не Carbon. Не каждый C-based API является Carbon.