【问题标题】:Calling a JNI modal dialog disables taskbar icon调用 JNI 模式对话框会禁用任务栏图标
【发布时间】:2010-09-23 03:42:19
【问题描述】:

在 Windows XP 上的 Java 应用程序 (JRE 1.5.0_12) 中,我调用了本机方法:

public native int attachImage( ... );

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

【问题讨论】:

    标签: java window java-native-interface native taskbar


    【解决方案1】:

    您的 attachImage 方法是否没有正确地将父窗口设置为您的 java 应用程序窗口?获得一个 hwnd 可能很棘手(GetForegroundWindow/etc?)但它可能是必要的?

    另外,为什么图片部分需要是JNI?这可能有助于我们为您找到一个完全避免 JNI 部分的解决方案?

    【讨论】:

      【解决方案2】:

      您使用的是什么 GUI 包?

      您应该能够在不诉诸 JNI 调用的情况下实现这一点。

      例如,在 SWT 中,您可以像这样打开应用程序模式 shell:

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

      对于摇摆,这将是:

      dialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
      

      【讨论】:

      • 我同意,但这是遗留代码。由于没有完全重写本机组件,我只能坚持我所拥有的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-15
      • 1970-01-01
      • 2023-03-09
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多