Wie ein modales Meldungsfeld in C ++ auf Mac angezeigt werden?
-
20-09-2019 - |
Frage
CFUserNotificationDisplayAlert und < a href = "http://developer.apple.com/mac/library/documentation/CoreFoundation/Reference/CFUserNotificationRef/Reference/reference.html" rel = "nofollow noreferrer"> CFUserNotificationDisplayNotice erzeugt ein nicht -modal Fenster und das ist schlecht, weil es Ihre Anwendung UI in einem sehr unerwünschten Zustand bringen können, wenn Sie das ursprüngliche Anwendungsfenster wählen (das Meldungsfeld versteckt, aber die applicaton nicht reagiert).
Der alte SystemAlert
war modal aber diese nicht vollständig Unicode-Strings unterstützen.
Wie kann ich zeigen ein Meldungsfeld als ein modales Fenster unter Mac? Ich suche nach some ähnlich wie MessageBox aus dem Windows?
Lösung 2
Es sieht aus, dass CreateStandardAlert
ist die richtige Lösung, weil dies ist modal .
DialogRef theItem;
DialogItemIndex itemIndex;
CreateStandardAlert(kAlertNoteAlert, CFSTR("aaa"), CFSTR("bbb"), NULL, &theItem);
RunStandardAlert(theItem, NULL, &itemIndex);
Andere Tipps
Ich habe es mit CFUserNotificationDisplayAlert
umgesetzt und es nicht zurück, bis der Benutzer die MessageBox geschlossen wird.
Wenn Sie einen Blick des Codes nehmen will, muss ich es in MessageBox-Funktion in Mac dort finden Sie eine MessageBox-Funktion für Mac implementiert, ist es nur implementiert für MB_OKCANCEL, aber mit wenig mehr Code finden Sie die gesamte Message-Flaggen und Rückgabewerte könnten decken, ist ein guter Ausgangspunkt.
Hier finden Sie aktuelle NSBeginAlertSheet
Funktion oder bei NSApp suchen:
- (void)beginSheet:(NSWindow *)sheet modalForWindow:(NSWindow *)docWindow
modalDelegate:(id)modalDelegate didEndSelector:(SEL)didEndSelector contextInfo:(void *)contextInfo
kann sein, das, was Sie wollen. Hier ist auch ein schöner Artikel über die Arbeit mit Blättern.