La chiamata a una finestra di dialogo modale JNI disattiva l'icona della barra delle applicazioni
-
08-07-2019 - |
Domanda
In un'applicazione Java (JRE 1.5.0_12) su Windows XP, chiamo un metodo nativo:
public native int attachImage( ... );
... che vive in una DLL di Visual C ++ 6.0. Visualizza una finestra modale dell'applicazione. Il problema è che l'icona nella barra delle applicazioni non risponde ai clic del mouse mentre questa finestra è attiva. Questo è un problema perché quando viene visualizzata questa finestra, gli utenti passano spesso a un'altra applicazione per selezionare l'immagine da allegare, quindi vogliono ripristinare questa applicazione.
Soluzione
Quale pacchetto di GUI stai usando?
Dovresti essere in grado di implementarlo senza ricorrere alle chiamate JNI.
Ad esempio, in SWT, è possibile aprire una shell modale dell'applicazione come questa:
Shell shell = new Shell(display,SWT.APPLICATION_MODAL);
Per lo swing, questo sarebbe:
dialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
Altri suggerimenti
Il metodo attachImage non imposta correttamente la finestra principale sulla finestra dell'applicazione Java? Ottenere un hwnd per questo potrebbe essere complicato (GetForegroundWindow / etc?) Ma potrebbe essere necessario?
Inoltre, perché la parte dell'immagine deve essere JNI? ciò potrebbe aiutarci a trovare una soluzione che eviti del tutto la parte JNI?