【问题标题】:How to replace old ParamText/StandartAlert with newer CFString replacements?如何用更新的 CFString 替换旧的 ParamText/StandartAlert?
【发布时间】:2010-01-11 14:52:38
【问题描述】:

ParamText() 是一种在基于 Pascal 字符串的字符串中替换参数的非常古老的方法。 StandardAlert 还没有完全准备好 Unicode。

新的消息框(不是那么新)替换是CFUserNotificationDisplayNotice,但这个需要CFString,我发现如果我要切换到使用 CFString,我就不能再使用 ParamText 参数替换了.


Str255 alertString; // PascalString, yuck!
ParamText(NULL, NULL, minString, maxString);
localize( "A value between ^2 and ^3 is required.", &alertString );
StandardAlert( kAlertNoteAlert, (const unsigned char *)&alertString, nil, nil, &itemHit );

我发现ParamText 不再适用于新对话框,而且 Apple 忘记指定如何使用它们。

是否有任何替代品不需要我更改字符串中的原始参数格式?

【问题讨论】:

    标签: macos unicode cfstring


    【解决方案1】:

    我找到了自己的解决方案,但我对此不太满意。

    
    CMutableStringRef alertString2;
    ...
    alertString2 = CFStringCreateMutableCopy(NULL, CFStringGetLength(alertString), alertString);
    CFStringFindAndReplace( alertString2, 
            CFSTR("^2"), 
            minRange,  // another CFString
            CFRangeMake(0, CFStringGetLength(alertString2)),
            0);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-20
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 2013-02-19
      • 1970-01-01
      相关资源
      最近更新 更多