Cómo mostrar un cuadro de mensaje modal en C ++ en Mac?
-
20-09-2019 - |
Pregunta
CFUserNotificationDisplayAlert y < a href = "http://developer.apple.com/mac/library/documentation/CoreFoundation/Reference/CFUserNotificationRef/Reference/reference.html" rel = "nofollow noreferrer"> CFUserNotificationDisplayNotice crea un no -modal ventana y esto es malo, ya que podría traer a su interfaz de usuario de la aplicación en un estado muy indeseable si se selecciona la ventana de la aplicación original (el cuadro de mensaje está oculto, pero el applicaton no responde).
El viejo SystemAlert
era modal pero éste no es totalmente compatible cadenas Unicode.
¿Cómo puedo mostrar un cuadro de mensaje como una ventana modal en Mac? Estoy en busca algo similar al cuadro de mensaje desde Windows?
Solución 2
Parece que CreateStandardAlert
es la solución correcta, porque éste es modal .
DialogRef theItem;
DialogItemIndex itemIndex;
CreateStandardAlert(kAlertNoteAlert, CFSTR("aaa"), CFSTR("bbb"), NULL, &theItem);
RunStandardAlert(theItem, NULL, &itemIndex);
Otros consejos
He implementado con CFUserNotificationDisplayAlert
y no vuelve hasta que el usuario cierra el cuadro de mensaje.
Si quieres echar un vistazo del Código, lo tengo en la función de mensaje en Mac allí encontrará una función de mensaje implementado para Mac, que sólo ha implementado para MB_OKCANCEL, pero con poco más de código podría cubrir la totalidad de las banderas MessageBox y valores de retorno, es un buen punto de partida.
Tener un vistazo a la función o al NSBeginAlertSheet
NSApp de:
- (void)beginSheet:(NSWindow *)sheet modalForWindow:(NSWindow *)docWindow
modalDelegate:(id)modalDelegate didEndSelector:(SEL)didEndSelector contextInfo:(void *)contextInfo
puede ser su lo que quiere. Aquí también es un buen artículo sobre el trabajo con hojas.