1

CFUserNotificationDisplayAlertおよびCFUserNotificationDisplayNoticeは、非モーダルウィンドウを作成します。これは、元のアプリケーションウィンドウを選択した場合にアプリケーションUIが非常に望ましくない状態になる可能性があるためです(メッセージボックスは非表示ですが、アプリケーションは応答しません)。

古いものSystemAlertはモーダルでしたが、これはUnicode文字列を完全にはサポートしていません。

Macでメッセージボックスをモーダルウィンドウとして表示するにはどうすればよいですか?WindowsのMessageBoxに似たものを探していますか?

4

3 に答える 3

5

で実装しましたCFUserNotificationDisplayAlertが、ユーザーがメッセージボックスを閉じるまで戻りません。

コードを確認したい場合は、MacのMessageBox関数に あります。Mac用に実装されたMessageBox関数があります。これは、MB_OKCANCEL用にのみ実装されていますが、もう少しコードを追加するだけで、MessageBoxフラグと戻り値全体をカバーできます。 、は良い出発点です。

于 2010-05-05T11:41:27.017 に答える
3

これはモーダルCreateStandardAlertであるため、これが正しい解決策のようです。


DialogRef theItem;
DialogItemIndex itemIndex;
CreateStandardAlert(kAlertNoteAlert, CFSTR("aaa"), CFSTR("bbb"), NULL, &theItem);
RunStandardAlert(theItem, NULL, &itemIndex);
于 2010-01-13T16:19:38.847 に答える
1

NSBeginAlertSheet関数またはNSAppを見てください:

- (void)beginSheet:(NSWindow *)sheet modalForWindow:(NSWindow *)docWindow
      modalDelegate:(id)modalDelegate didEndSelector:(SEL)didEndSelector contextInfo:(void *)contextInfo

それはあなたが望むものかもしれません。シートの操作についての素晴らしい記事もあります

于 2010-01-13T13:19:07.637 に答える