如何在Mac上用C ++显示模态消息框?

时间:2010-01-13 13:08:20

标签: c++ macos modal-dialog messagebox

CFUserNotificationDisplayAlertCFUserNotificationDisplayNotice会创建非模态窗口,这很糟糕,因为如果您选择原始应用程序窗口,它可能会使您的应用程序UI处于非常不受欢迎的状态(消息框已隐藏但应用程序未响应)。

SystemAlert是模态的,但这个不完全支持Unicode字符串。

如何在Mac下将消息框显示为模式窗口?我正在寻找类似于Windows的MessageBox的东西吗?

3 个答案:

答案 0 :(得分:5)

我已使用CFUserNotificationDisplayAlert实现它,并且在用户关闭MessageBox之前不会返回。

如果您想查看代码,我会在MessageBox function in Mac中看到它 在那里你会发现为mac实现的MessageBox函数,它只为MB_OKCANCEL实现,但只需要更多的代码就可以覆盖整个MessageBox标志和返回值,这是一个很好的起点。

答案 1 :(得分:4)

看起来CreateStandardAlert是正确的解决方案,因为这个模态


DialogRef theItem;
DialogItemIndex itemIndex;
CreateStandardAlert(kAlertNoteAlert, CFSTR("aaa"), CFSTR("bbb"), NULL, &theItem);
RunStandardAlert(theItem, NULL, &itemIndex);

答案 2 :(得分:1)

查看NSBeginAlertSheet函数或NSApp:

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

可能是你想要的。 Here也是一篇关于使用工作表的好文章。