Chamar uma JNI modal de diálogo desativa barra de tarefas ícone
-
08-07-2019 - |
Pergunta
Em uma aplicação Java (JRE 1.5.0_12) no Windows XP, eu chamo de um método nativo:
public native int attachImage( ... );
... que vive em um C ++ 6.0 .dll Visual. Ele exibe uma janela de aplicativo-modal. O problema é, ícone da bandeja do aplicativo não responde a cliques do mouse, enquanto esta janela tem o foco. Este é um problema porque quando esta janela é exibida, os usuários muitas vezes mudar para outro aplicativo para selecionar a imagem para anexar, em seguida, deseja restaurar esta aplicação.
Solução
pacote que GUI você está usando?
Você deve ser capaz de implementar isso sem recorrer a chamadas JNI.
Por exemplo, em SWT, você pode abrir um shell modal pedido como este:
Shell shell = new Shell(display,SWT.APPLICATION_MODAL);
Para swing, esta seria:
dialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
Outras dicas
O seu método attachImage não definir corretamente a janela pai para a janela do aplicativo java? Conseguir um hwnd para isso poderia ser complicado (GetForegroundWindow / etc?), Mas pode ser necessário?
Além disso, por que a imagem Peça necessidade de ser JNI? que nos ajude a encontrar uma solução que evite a parte JNI completamente?