我希望能够创建一个包含2个文本字段的对话框。 我可以使用下面的代码创建一个包含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和carbon API相对较新(我知道它已被弃用) 如果我指出了可以帮助我实现这一目标的正确资源或示例,我将不胜感激。
此外,使用Cocoa不是一个选择。我需要使用碳来实现这一目标。
答案 0 :(得分:1)
与键kCFUserNotificationTextFieldTitlesKey
或kCFUserNotificationTextFieldValuesKey
关联的值将是一个字符串数组:
CFTypeRef values[2] = { CFSTR("one"), CFSTR("two") };
CFArrayRef valArray = CFArrayCreate( NULL, values, 2, &kCFTypeArrayCallBacks );
顺便说一下,你使用的是Core Foundation,而不是Carbon。并非每个基于C的API都是Carbon。