本人在做jna调用c++做的dll时,调用其中一个函数,里面的参数是 HWND 窗口类型的,请问在jna中该如何对hwnd参数进行声明,最后要怎样传一个值给该函数。

解决方案 »

  1.   

            private HWND getHWnd(Component w) {
                HWND hwnd = new HWND();
                hwnd.setPointer(Native.getComponentPointer(w));
                return hwnd;
            }
    你可以去看一下, 
    \jna\src-full\src\com\sun\jna\examples\WindowUtils.java
      public static void setWindowAlpha(Window w, float alpha) {
            getInstance().setWindowAlpha(w, Math.max(0f, Math.min(alpha, 1f)));
        }窗体透明, 你跟一下代码, 就知道怎么获取HWND的
      

  2.   

    [align=right]
      

  3.   

    参数用string类型,然后给null或""
    参数用int好像也行吧,直接传个0进去
    至于为什么我也不知道。
      

  4.   

    public static class HWND extends HANDLE {        public HWND() {
                // <editor-fold defaultstate="collapsed" desc="Compiled Code">
                /* 0: aload_0
                 * 1: invokespecial #1                  // Method com/sun/jna/examples/win32/W32API$HANDLE."<init>":()V
                 * 4: return
                 *  */
                // </editor-fold>
            }        public HWND(Pointer p) {
                // <editor-fold defaultstate="collapsed" desc="Compiled Code">
                /* 0: aload_0
                 * 1: aload_1
                 * 2: invokespecial #2                  // Method com/sun/jna/examples/win32/W32API$HANDLE."<init>":(Lcom/sun/jna/Pointer;)V
                 * 5: return
                 *  */
                // </editor-fold>
            }
        }位于:package com.sun.jna.examples.win32下