JNIモーダルダイアログを呼び出すと、タスクバーアイコンが無効になります
-
08-07-2019 - |
質問
Windows XP上のJavaアプリケーション(JRE 1.5.0_12)で、ネイティブメソッドを呼び出します:
public native int attachImage( ... );
... Visual C ++ 6.0 .dllにあります。アプリケーションモーダルウィンドウが表示されます。問題は、このウィンドウにフォーカスがある間、アプリケーションのトレイアイコンがマウスクリックに応答しないことです。これは問題です。このウィンドウが表示されると、ユーザーは多くの場合、別のアプリケーションに切り替えて添付する画像を選択し、このアプリケーションを復元したいためです。
解決
どのGUIパッケージを使用していますか
JNI呼び出しに頼らずにこれを実装できるはずです。
たとえば、SWTでは、次のようなアプリケーションモーダルシェルを開くことができます。
Shell shell = new Shell(display,SWT.APPLICATION_MODAL);
スイングの場合、これは次のようになります。
dialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
他のヒント
attachImageメソッドは、親ウィンドウをJavaアプリケーションウィンドウに適切に設定していませんか?そのためのhwndを取得するのは難しいかもしれません(GetForegroundWindow / etc?)が必要かもしれませんか?
また、なぜ画像部分はJNIである必要があるのですか? JNIの部分を完全に回避するソリューションを見つけるのに役立つかもしれませんか?
所属していません StackOverflow