如何在Carbon中创建多个文本字段?

时间:2014-01-31 06:45:05

标签: c++ xcode macos macos-carbon

我希望能够创建一个包含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不是一个选择。我需要使用碳来实现这一目标。

1 个答案:

答案 0 :(得分:1)

与键kCFUserNotificationTextFieldTitlesKeykCFUserNotificationTextFieldValuesKey关联的值将是一个字符串数组:

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

顺便说一下,你使用的是Core Foundation,而不是Carbon。并非每个基于C的API都是Carbon。