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 に答える