1

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 忘记指定如何使用它们。

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

4

1 回答 1

1

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


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

于 2010-01-11T15:36:43.110 回答