Llamar a un diálogo modal JNI deshabilita el icono de la barra de tareas
-
08-07-2019 - |
Pregunta
En una aplicación Java (JRE 1.5.0_12) en Windows XP, llamo a un método nativo:
public native int attachImage( ... );
... que vive en un Visual C ++ 6.0 .dll. Muestra una ventana modal de aplicación. El problema es que el icono de la bandeja de la aplicación no responde a los clics del mouse mientras esta ventana tiene el foco. Este es un problema porque cuando se muestra esta ventana, los usuarios a menudo cambian a otra aplicación para seleccionar la imagen que se adjuntará, y luego desean restaurar esta aplicación.
Solución
¿Qué paquete de GUI estás usando?
Debería poder implementar esto sin recurrir a llamadas JNI.
Por ejemplo, en SWT, puede abrir un shell modal de aplicación como este:
Shell shell = new Shell(display,SWT.APPLICATION_MODAL);
Para swing, esto sería:
dialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
Otros consejos
¿Su método attachImage no establece correctamente la ventana principal en la ventana de su aplicación java? Obtener un hwnd para eso podría ser complicado (GetForegroundWindow / etc?) Pero podría ser necesario?
Además, ¿por qué la parte de la imagen debe ser JNI? que podría ayudarnos a encontrarle una solución que evite la parte JNI por completo?