Вызов модального диалогового окна JNI отключает значок панели задач

В приложении Java (JRE 1.5.0_12) в Windows XP я вызываю собственный метод:

public native int attachImage( ... );

... который живет в Visual C++ 6.0 .dll. Он отображает модальное окно приложения. Проблема в том, что значок приложения в области уведомлений не реагирует на щелчки мышью, пока это окно находится в фокусе. Это проблема, поскольку при отображении этого окна пользователи часто переключаются на другое приложение, чтобы выбрать изображение для прикрепления, а затем хотят восстановить это приложение.


person Bob Kaufman    schedule 19.11.2008    source источник


Ответы (2)


Какой графический интерфейс вы используете?

Вы должны иметь возможность реализовать это, не прибегая к вызовам JNI.

Например, в SWT вы можете открыть модальную оболочку приложения следующим образом:

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

Для свинга это будет:

dialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
person James Van Huis    schedule 19.11.2008
comment
Я согласен, однако это устаревший код. Если не считать полного переписывания нативных компонентов, я застрял на том, что у меня есть. - person Bob Kaufman; 24.08.2009

Ваш метод attachImage неправильно устанавливает родительское окно в окно вашего Java-приложения? Получить hwnd для этого может быть сложно (GetForegroundWindow/etc?), но может быть это необходимо?

Кроме того, почему часть изображения должна быть JNI? это могло бы помочь нам найти вам решение, которое полностью избегает части JNI?

person John Gardner    schedule 19.11.2008