【问题标题】:How to create multiple textfields in Carbon?如何在 Carbon 中创建多个文本字段?
【发布时间】:2014-01-31 06:45:04
【问题描述】:

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

【问题讨论】:

    标签: c++ xcode macos macos-carbon


    【解决方案1】:

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

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

    顺便说一句,您使用的是 Core Foundation,而不是 Carbon。并非所有基于 C 的 API 都是 Carbon。

    【讨论】:

    • 成功了,谢谢!你会推荐任何学习Core Foundation和Carbon的参考书吗,我知道它已被弃用,我仍然想去。
    • @2am,我不知道任何关于最近的 Carbon 东西的书,比如 HIView。我假设您使用的是 Xcode 3.2.6,因为最近的 Xcode 无法处理 Carbon nib。在 Xcode 3.2.6 文档阅读器中,请务必阅读 HIView 编程指南和 Carbon Event Manager 编程指南。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多