2008-11-19 11 views
1

Dans une application Java (JRE 1.5.0_12) sous Windows XP, j'appelle une méthode native:Appeler une boîte de dialogue modale JNI désactive l'icône de la barre des tâches

public native int attachImage(...); 

... qui vit dans un Visual C++ 6.0 .dll . Il affiche une fenêtre d'application-modale. Le problème est que l'icône de la barre des tâches de l'application ne répond pas aux mouseclicks tant que cette fenêtre est active. Ceci est un problème car lorsque cette fenêtre est affichée, les utilisateurs basculent souvent vers une autre application pour sélectionner l'image à attacher, puis veulent restaurer cette application.

Répondre

1

Quel package d'interface graphique utilisez-vous?

Vous devriez pouvoir implémenter ceci sans recourir aux appels JNI.

Par exemple, SWT, vous pouvez ouvrir un shell modal d'application comme ceci:

Shell shell = new Shell(display,SWT.APPLICATION_MODAL); 

Pour swing, ce serait:

dialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL); 
+0

Je suis d'accord, mais il s'agit d'un code existant. À moins d'une réécriture complète des composants natifs, je suis coincé avec ce que j'ai. –

0

Est-ce que votre méthode de attachImage pas correctement réglé le parent fenêtre à votre fenêtre d'application java? Obtenir un hwnd pour cela pourrait être difficile (GetForegroundWindow/etc?) Mais cela pourrait être nécessaire?

En outre, pourquoi la partie d'image doit-elle être JNI? cela pourrait nous aider à trouver une solution qui évite complètement la partie JNI?

Questions connexes