2008-11-19 33 views
1

在Java应用程序在Windows XP(JRE 1.5.0_12),我调用本地方法:调用JNI模式对话框禁用任务栏图标

public native int attachImage(...); 

...它生活在一个Visual C++ 6.0的.dll 。它显示一个应用程序模式窗口。问题是,该窗口有焦点时,应用程序的托盘图标不响应鼠标点击。这是一个问题,因为当显示此窗口时,用户通常切换到另一个应用程序以选择要附加的图像,然后想要恢复此应用程序。

回答

1

您使用的是什么GUI软件包?

你应该能够实现这一点,而不诉诸于JNI调用。

例如,在SWT,你可以打开一个应用程序模式壳这样的:

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

挥杆,这将是:

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

我同意,但这是遗留代码。在完成对本地组件的重写之后,我坚持我所拥有的。 – 2009-08-24 15:23:32

0

贵attachImage方法没有正确设置父窗口到你的Java应用程序窗口?获取hwnd可能会非常棘手(GetForegroundWindow/etc?),但它可能是必要的?

此外,为什么图像部分需要是JNI?这可能会帮助我们找到一个完全避免JNI部分的解决方案?