*** keyword substitution change ***
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/com.c b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/com.c
index 2f4c679..ee27ccc 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/com.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/com.c
@@ -1,3286 +1,3286 @@
-/*******************************************************************************

- * Copyright (c) 2000, 2003 IBM Corporation and others.

- * All rights reserved. This program and the accompanying materials 

- * are made available under the terms of the Common Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/cpl-v10.html

- * 

- * Contributors:

- *     IBM Corporation - initial API and implementation

- *******************************************************************************/

-

-#include "swt.h"

-#include "com_structs.h"

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    CLSIDFromProgID

- * Signature: ([CLorg/eclipse/swt/internal/ole/win32/GUID;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CLSIDFromProgID

-  (JNIEnv *env, jclass that, jcharArray lpszProgID, jobject pclsid)

-{

-    LPCOLESTR lpszProgID1=NULL;

-    GUID guid, *pclsid1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "CLSIDFromProgID\n");

-#endif

-

-    if (pclsid) {

-        pclsid1=&guid;

-        getGUIDFields(env, pclsid, pclsid1);

-    }

-

-    if (lpszProgID)

-        lpszProgID1 = (LPCOLESTR)(*env)->GetCharArrayElements(env, lpszProgID, NULL);

-

-    rc = (jint) CLSIDFromProgID(lpszProgID1, pclsid1);

-

-    if (lpszProgID)

-        (*env)->ReleaseCharArrayElements(env, lpszProgID, (jchar *)lpszProgID1, 0);

-    

-    if (pclsid) {

-        setGUIDFields(env, pclsid, pclsid1);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    CLSIDFromString

- * Signature: ([CLorg/eclipse/swt/internal/ole/win32/GUID;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CLSIDFromString

-  (JNIEnv *env, jclass that, jcharArray lpsz, jobject pclsid)

-{

-    LPOLESTR lpsz1=NULL;

-    GUID guid, *pclsid1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "CLSIDFromString\n");

-#endif

-    if (pclsid) {

-        pclsid1=&guid;

-        getGUIDFields(env, pclsid, pclsid1);

-    }

-    

-    if (lpsz)

-        lpsz1 = (LPOLESTR)(*env)->GetCharArrayElements(env, lpsz, NULL);

-

-    rc = CLSIDFromString(lpsz1, pclsid1);

-

-    if (lpsz)

-        (*env)->ReleaseCharArrayElements(env, lpsz, lpsz1, 0);

-

-    if (pclsid) {

-        setGUIDFields(env, pclsid, pclsid1);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    CoCreateInstance

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;IILorg/eclipse/swt/internal/ole/win32/GUID;[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CoCreateInstance

-  (JNIEnv *env, jclass that, jobject rclsid, jint pUnkOuter, jint dwClsContext, jobject riid, jintArray ppv)

-{

-    LPVOID *ppv1=NULL;

-    GUID guid1, guid2, *riid1=NULL, *rclsid1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "CoCreateInstance\n");

-#endif

-

-    if (rclsid) {

-        rclsid1=&guid2;

-        getGUIDFields(env, rclsid, rclsid1);

-    }

-    if (riid) {

-        riid1=&guid1;

-        getGUIDFields(env, riid, riid1);

-    }

-    

-    if (ppv)

-        ppv1 = (LPVOID *)(*env)->GetIntArrayElements(env, ppv, NULL);

-

-    rc = (jint) CoCreateInstance(rclsid1, (LPUNKNOWN)pUnkOuter, dwClsContext, riid1, ppv1);

-

-    if (ppv)

-        (*env)->ReleaseIntArrayElements(env, ppv, (jint *)ppv1, 0);

-

-    if (rclsid) {

-        setGUIDFields(env, rclsid, rclsid1);

-    }

-    if (riid) {

-        setGUIDFields(env, riid, riid1);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    CoFreeUnusedLibraries

- * Signature: ()V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CoFreeUnusedLibraries

-  (JNIEnv *env, jclass that)

-{

-    CoFreeUnusedLibraries();

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    CoGetClassObject

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;IILorg/eclipse/swt/internal/ole/win32/GUID;[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CoGetClassObject

-  (JNIEnv *env, jclass that, jobject rclsid, jint dwClsContext, jint pServerInfo, 

-                    jobject riid, jintArray ppv)

-{

-    LPVOID *ppv1=NULL;

-    GUID guid1, *rclsid1=NULL;

-    GUID guid2, *riid1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "CoGetClassObject\n");

-#endif

-

-    if (rclsid) {

-        rclsid1=&guid1;

-        getGUIDFields(env, rclsid, rclsid1);

-    }

-    if (riid) {

-        riid1=&guid2;

-        getGUIDFields(env, riid, riid1);

-    }

-    if (ppv)

-        ppv1 = (LPVOID *)(*env)->GetIntArrayElements(env, ppv, NULL);

-

-    rc = (jint) CoGetClassObject(rclsid1, dwClsContext, (COSERVERINFO *)pServerInfo, riid1, ppv1);

-    if (ppv)

-        (*env)->ReleaseIntArrayElements(env, ppv, (jint *)ppv1, 0);

-

-    if (rclsid) {

-        setGUIDFields(env, rclsid, rclsid1);

-    }

-    if (riid) {

-        setGUIDFields(env, riid, riid1);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    CoLockObjectExternal

- * Signature: (IZZ)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CoLockObjectExternal

-  (JNIEnv *env, jclass that, jint pUnk, jboolean fLock, jboolean fLastUnlockReleases)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "CoLockObjectExternal\n");

-#endif

-	return (jint) CoLockObjectExternal((IUnknown *)pUnk, (BOOL)fLock, (BOOL)fLastUnlockReleases);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    CoTaskMemAlloc

- * Signature: (I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CoTaskMemAlloc

-  (JNIEnv *env, jclass that, jint cb)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "CoTaskMemAlloc\n");

-#endif

-    return (jint) CoTaskMemAlloc((ULONG)cb);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    CoTaskMemFree

- * Signature: (I)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CoTaskMemFree

-  (JNIEnv *env, jclass that, jint pv)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "CoTaskMemFree\n");

-#endif

-    CoTaskMemFree((LPVOID)pv);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    DoDragDrop

- * Signature: (III[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_DoDragDrop

-  (JNIEnv *env, jclass that, jint pDataObject, jint pDropSource, jint dwOKEffect, jintArray pdwEffect)

-{

-    jint *pdwEffect1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "DoDragDrop\n");

-#endif

-

-    if (pdwEffect)

-        pdwEffect1 = (*env)->GetIntArrayElements(env, pdwEffect, NULL);

-

-    rc = DoDragDrop((IDataObject *)pDataObject, (IDropSource *)pDropSource, dwOKEffect, pdwEffect1);

-

-    if (pdwEffect)

-        (*env)->ReleaseIntArrayElements(env, pdwEffect, pdwEffect1, 0);

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    GetClassFile

- * Signature: ([CLorg/eclipse/swt/internal/ole/win32/GUID;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_GetClassFile

-  (JNIEnv *env, jclass that, jcharArray szFileName, jobject clsid)

-{

-    LPCWSTR szFileName1=NULL;

-    GUID guid, *clsid1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "GetClassFile\n");

-#endif

-    if (clsid) {

-        clsid1=&guid;

-        getGUIDFields(env, clsid, clsid1);

-    }

-    

-    if (szFileName)

-        szFileName1 = (LPCWSTR)(*env)->GetCharArrayElements(env, szFileName, NULL);

-

-    rc = GetClassFile(szFileName1, clsid1);

-

-    if (szFileName)

-        (*env)->ReleaseCharArrayElements(env, szFileName, (jchar *)szFileName1, 0);

-

-    if (clsid) {

-        setGUIDFields(env, clsid, clsid1);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    IIDFromString

- * Signature: ([CLorg/eclipse/swt/internal/ole/win32/GUID;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_IIDFromString

-  (JNIEnv *env, jclass that, jcharArray lpsz, jobject lpiid)

-{

-    LPOLESTR lpsz1=NULL;

-    GUID guid, *lpiid1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "IIDFromString\n");

-#endif

-

-    if (lpsz)

-        lpsz1 = (LPOLESTR)(*env)->GetCharArrayElements(env, lpsz, NULL);

-        

-    if (lpiid) {

-        lpiid1=&guid;

-        getGUIDFields(env, lpiid, lpiid1);

-    }

-

-    rc = (jint) IIDFromString(lpsz1, lpiid1);

-

-    if (lpiid) {

-        setGUIDFields(env, lpiid, lpiid1);

-    }

-

-    if (lpsz)

-        (*env)->ReleaseCharArrayElements(env, lpsz, (jchar *)lpsz1, 0);

-

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    IsEqualGUID

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;Lorg/eclipse/swt/internal/ole/win32/GUID;)Z

- */

-JNIEXPORT jboolean JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_IsEqualGUID

-  (JNIEnv *env, jclass that, jobject rguid1, jobject rguid2)

-{

-    GUID guid1, *rguid11=NULL;

-    GUID guid2, *rguid21=NULL;

-    jboolean rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "IsEqualGUID\n");

-#endif

-

-    if (rguid1) {

-        rguid11=&guid1;

-        getGUIDFields(env, rguid1, rguid11);

-    }

-

-    if (rguid2) {

-        rguid21=&guid2;

-        getGUIDFields(env, rguid2, rguid21);

-    }

-

-    rc = (jboolean) IsEqualGUID(rguid11, rguid21);

-

-    if (rguid1) {

-        setGUIDFields(env, rguid1, rguid11);

-    }

-    if (rguid2) {

-        setGUIDFields(env, rguid2, rguid21);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (ILorg/eclipse/swt/internal/ole/win32/FORMATETC;I)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_FORMATETC_2I

-  (JNIEnv *env, jclass that, jint Destination, jobject Source, jint Length)

-{

-    FORMATETC formatetc, *Source1=NULL;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_FORMATETC_2I\n");

-#endif

-

-    if (Source) {

-        Source1=&formatetc;

-        getFORMATETCFields(env, Source, Source1);

-    }

-    MoveMemory((PVOID)Destination, Source1, Length);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (ILorg/eclipse/swt/internal/ole/win32/GUID;I)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_GUID_2I

-  (JNIEnv *env, jclass that, jint DestinationPtr, jobject Source, jint Length)

-{

-    GUID guid, *Source1=NULL;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "MoveMemory__ILorg_eclipse_swt_internal_ole_win32_GUID_2I\n");

-#endif

-

-    if (Source) {

-        Source1=&guid;

-        getGUIDFields(env, Source, Source1);

-    }

-    MoveMemory((PVOID)DestinationPtr, Source1, Length);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (ILorg/eclipse/swt/internal/ole/win32/OLEINPLACEFRAMEINFO;I)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_OLEINPLACEFRAMEINFO_2I

-  (JNIEnv *env, jclass that, jint DestinationPtr, jobject Source, jint Length)

-{

-    OLEINPLACEFRAMEINFO oleinplaceframeinfo, *Source1=&oleinplaceframeinfo;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_OLEINPLACEFRAMEINFO_2I\n");

-#endif

-

-    if (Source) {

-        getOLEINPLACEFRAMEINFOFields(env, Source, Source1);

-    }

-

-    MoveMemory((PVOID)DestinationPtr, Source1, Length);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (ILorg/eclipse/swt/internal/ole/win32/STATSTG;I)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_STATSTG_2I

-  (JNIEnv *env, jclass that, jint Destination, jobject Source, jint Length)

-{

-    STATSTG statstg, *Source1=NULL;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_STATSTG_2I\n");

-#endif

-

-    if (Source) {

-        Source1=&statstg;

-        getSTATSTGFields(env, Source, Source1);

-    }

-    MoveMemory((PVOID)Destination, Source1, Length);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (ILorg/eclipse/swt/internal/ole/win32/STGMEDIUM;I)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_STGMEDIUM_2I

-  (JNIEnv *env, jclass that, jint Destination, jobject Source, jint Length)

-{

-    STGMEDIUM stgmedium, *Source1=NULL;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_STGMEDIUM_2I\n");

-#endif

-

-    if (Source) {

-        Source1=&stgmedium;

-        getSTGMEDIUMFields(env, Source, Source1);

-    }

-    MoveMemory((PVOID)Destination, Source1, Length);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/STGMEDIUM;II)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_STGMEDIUM_2II

-  (JNIEnv *env, jclass that, jobject Destination, jint SourcePtr, jint Length)

-{

-    STGMEDIUM stgmedium, *Destination1=&stgmedium;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_STGMEDIUM_2II\n");

-#endif

-

-	MoveMemory((PVOID)Destination1, (CONST VOID *)SourcePtr, Length);

-

-    if (Destination) {

-        setSTGMEDIUMFields(env, Destination, Destination1);

-    }

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/DISPPARAMS;II)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_DISPPARAMS_2II

-  (JNIEnv *env, jclass that, jobject Destination, jint SourcePtr, jint Length)

-{

-    DISPPARAMS dispparams, *Destination1=&dispparams;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_DISPPARAMS_2II\n");

-#endif

-

-    MoveMemory((PVOID)Destination1, (CONST VOID *)SourcePtr, Length);

-

-    if (Destination) {

-        setDISPPARAMSFields(env, Destination, Destination1);

-    }

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/FORMATETC;II)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_FORMATETC_2II

-  (JNIEnv *env, jclass that, jobject Destination, jint Source, jint Length)

-{

-    FORMATETC formatetc, *Destination1=&formatetc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_FORMATETC_2II\n");

-#endif

-

-    MoveMemory((PVOID)Destination1, (CONST VOID *)Source, Length);

-

-    if (Destination) {

-        setFORMATETCFields(env, Destination, Destination1);

-    }

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;II)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_GUID_2II

-  (JNIEnv *env, jclass that, jobject Destination, jint SourcePtr, jint Length)

-{

-    GUID guid, *Destination1=&guid;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_GUID_2II\n");

-#endif

-

-    MoveMemory((PVOID)Destination1, (CONST VOID *)SourcePtr, Length);

-

-    if (Destination) {

-        setGUIDFields(env, Destination, Destination1);

-    }

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/STATSTG;II)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_STATSTG_2II

-  (JNIEnv *env, jclass that, jobject Destination, jint Source, jint Length)

-{

-    STATSTG statstg, *Destination1=&statstg;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_STATSTG_2II\n");

-#endif

-

-    MoveMemory((PVOID)Destination1, (CONST VOID *)Source, Length);

-

-    if (Destination) {

-        setSTATSTGFields(env, Destination, Destination1);

-    }

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/TYPEATTR;II)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_TYPEATTR_2II

-  (JNIEnv *env, jclass that, jobject Destination, jint SourcePtr, jint Length)

-{

-    TYPEATTR typeattr, *Destination1=&typeattr;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_TYPEATTR_2II\n");

-#endif

-    MoveMemory((PVOID)Destination1, (CONST VOID *)SourcePtr, Length);

-    if (Destination) {

-        setTYPEATTRFields(env, Destination, Destination1);

-    }

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (Lorg/eclipse/swt/internal/win32/RECT;II)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_win32_RECT_2II

-  (JNIEnv *env, jclass that, jobject Destination, jint Source, jint Length)

-{

-    RECT rect, *lpDestination1=NULL;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__Lorg_eclipse_swt_internal_win32_RECT_2II\n");

-#endif

-

-       MoveMemory((PVOID)&rect, (CONST VOID *)Source, Length);

-

-    if (Destination) {

-        lpDestination1 = ▭

-        setRECTFields(env, Destination, lpDestination1);

-    }

-}

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/FUNCDESC1;II)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_FUNCDESC1_2II

-  (JNIEnv *env, jclass that, jobject Destination, jint Source, jint Length)

-{

-    FUNCDESC funcdesc, *lpDestination1=NULL;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_FUNCDESC1_2II\n");

-#endif

-

-    MoveMemory((PVOID)&funcdesc, (CONST VOID *)Source, Length);

-

-    if (Destination) {

-        lpDestination1 = &funcdesc;

-        setFUNCDESC1Fields(env, Destination, lpDestination1);

-    }

-}

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/FUNCDESC2;II)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_FUNCDESC2_2II

-  (JNIEnv *env, jclass that, jobject Destination, jint Source, jint Length)

-{

-    FUNCDESC funcdesc, *lpDestination1=NULL;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_FUNCDESC2_2II\n");

-#endif

-

-    MoveMemory((PVOID)&funcdesc, (CONST VOID *)Source, Length);

-

-    if (Destination) {

-        lpDestination1 = &funcdesc;

-        setFUNCDESC2Fields(env, Destination, lpDestination1);

-    }

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/VARDESC1;II)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_VARDESC1_2II

-  (JNIEnv *env, jclass that, jobject Destination, jint Source, jint Length)

-{

-    VARDESC vardesc, *lpDestination1=NULL;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_VARDESC1_2II\n");

-#endif

-

-       MoveMemory((PVOID)&vardesc, (CONST VOID *)Source, Length);

-

-    if (Destination) {

-        lpDestination1 = &vardesc;

-        setVARDESC1Fields(env, Destination, lpDestination1);

-    }

-}

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/VARDESC2;II)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_VARDESC2_2II

-  (JNIEnv *env, jclass that, jobject Destination, jint Source, jint Length)

-{

-    VARDESC vardesc, *lpDestination1=NULL;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_VARDESC2_2II\n");

-#endif

-

-       MoveMemory((PVOID)&vardesc, (CONST VOID *)Source, Length);

-

-    if (Destination) {

-        lpDestination1 = &vardesc;

-        setVARDESC2Fields(env, Destination, lpDestination1);

-    }

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    OleCreate

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;Lorg/eclipse/swt/internal/ole/win32/GUID;ILorg/eclipse/swt/internal/ole/win32/FORMATETC;II[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleCreate

-  (JNIEnv *env, jclass that, jobject rclsid, jobject riid, jint renderopt, 

-                             jobject pFormatEtc, jint pClientSite, jint pStg, jintArray ppvObject)

-{

-    LPVOID *ppvObject1=NULL;

-    GUID guid1, *rclsid1=NULL;

-    GUID guid2, *riid1=NULL;

-    FORMATETC formatec, *pFormatEtc1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "OleCreate\n");

-#endif

-

-    if (rclsid) {

-        rclsid1=&guid1;

-        getGUIDFields(env, rclsid, rclsid1);

-    }

-    if (riid) {

-        riid1=&guid2;

-        getGUIDFields(env, riid, riid1);

-    }

-    if (pFormatEtc) {

-        pFormatEtc1 = &formatec;

-        getFORMATETCFields(env, pFormatEtc, pFormatEtc1);

-    }

-

-    if (ppvObject)

-        ppvObject1 = (LPVOID *)(*env)->GetIntArrayElements(env, ppvObject, NULL);

-

-    rc = (jint) OleCreate(rclsid1, riid1, renderopt, pFormatEtc1, (IOleClientSite * )pClientSite, (IStorage * )pStg, ppvObject1);

-

-    if (ppvObject)

-        (*env)->ReleaseIntArrayElements(env, ppvObject, (jint *)ppvObject1, 0);

-    

-/*  all of these objects are inputs so we don't not need to set the

-    fields back

-*/

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    OleCreateFromFile

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;[CLorg/eclipse/swt/internal/ole/win32/GUID;ILorg/eclipse/swt/internal/ole/win32/FORMATETC;II[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleCreateFromFile

-  (JNIEnv *env, jclass that, jobject rclsid, jcharArray lpszFileName, jobject riid, jint renderopt, 

-			jobject pFormatEtc, jint pClientSite, jint pStg, jintArray ppvObj)

-{

-    LPVOID *ppvObj1=NULL;

-    LPCOLESTR lpszFileName1=NULL;

-    GUID guid1, *rclsid1=NULL;

-    GUID guid2, *riid1=NULL;

-    FORMATETC formatec, *pFormatEtc1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "OleCreateFromFile\n");

-#endif

-    

-    if (rclsid) {

-        rclsid1=&guid1;

-        getGUIDFields(env, rclsid, rclsid1);

-    }

-

-    if (riid) {

-        riid1=&guid2;

-        getGUIDFields(env, riid, riid1);

-    }

-    if (pFormatEtc) {

-        pFormatEtc1 = &formatec;

-        getFORMATETCFields(env, pFormatEtc, pFormatEtc1);

-    }

-

-    if (lpszFileName)

-        lpszFileName1 = (LPCOLESTR)(*env)->GetCharArrayElements(env, lpszFileName, NULL);

-

-    if (ppvObj)

-        ppvObj1 = (LPVOID *)(*env)->GetIntArrayElements(env, ppvObj, NULL);

-

-    rc = (jint) OleCreateFromFile(rclsid1, lpszFileName1, riid1, renderopt, pFormatEtc1, (LPOLECLIENTSITE)pClientSite, (LPSTORAGE)pStg, ppvObj1);

-

-    if (ppvObj)

-        (*env)->ReleaseIntArrayElements(env, ppvObj, (jint *)ppvObj1, 0);

-    

-    if (lpszFileName)

-        (*env)->ReleaseCharArrayElements(env, lpszFileName, (jchar *)lpszFileName1, 0);

-

-/*  all of these objects are inputs so we don't not need to set the

-    fields back

-*/

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    OleCreatePropertyFrame

- * Signature: (III[CI[IIIIII)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleCreatePropertyFrame

-  (JNIEnv *env, jclass that, jint hwndOwner, jint x, jint y, jcharArray lpszCaption, jint cObjects, jintArray lplpUnk, jint cPages, jint lpPageClsID, jint lcid, jint dwReserved, jint lpvReserved)

-{

-    LPCOLESTR lpszCaption1=NULL;

-    jint *lplpUnk1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "OleCreatePropertyFrame\n");

-#endif

-

-    if (lpszCaption)

-        lpszCaption1 = (LPCOLESTR)(*env)->GetCharArrayElements(env, lpszCaption, NULL);

-

-    if (lplpUnk)

-        lplpUnk1 = (*env)->GetIntArrayElements(env, lplpUnk, NULL);

-

-    rc = (jint) OleCreatePropertyFrame((HWND)hwndOwner, x, y, lpszCaption1, cObjects, (LPUNKNOWN FAR*)lplpUnk1, cPages, (LPCLSID)lpPageClsID, (LCID)lcid, dwReserved, (LPVOID)lpvReserved);

-

-    if (lplpUnk)

-        (*env)->ReleaseIntArrayElements(env, lplpUnk, (jint *)lplpUnk1, 0);

-

-    if (lpszCaption)

-        (*env)->ReleaseCharArrayElements(env, lpszCaption, (jchar *)lpszCaption1, 0);

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    OleIsRunning

- * Signature: (I)Z

- */

-JNIEXPORT jboolean JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleIsRunning

-  (JNIEnv *env, jclass that, jint pObject)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "OleIsRunning\n");

-#endif

-    return (jboolean) OleIsRunning((LPOLEOBJECT)pObject);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    OleLoad

- * Signature: (ILorg/eclipse/swt/internal/ole/win32/GUID;I[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleLoad

-  (JNIEnv *env, jclass that, jint pStg, jobject riid, jint pClientSite, jintArray ppvObj)

-{

-    LPVOID *ppvObj1=NULL;

-    GUID guid, *riid1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "OleLoad\n");

-#endif

-    if (riid) {

-        riid1=&guid;

-        getGUIDFields(env, riid, riid1);

-    }

-    

-    if (ppvObj)

-        ppvObj1 = (LPVOID *)(*env)->GetIntArrayElements(env, ppvObj, NULL);

-

-    rc = (jint) OleLoad((IStorage *)pStg, riid1, (IOleClientSite *)pClientSite, ppvObj1); /* cast it to an OLE function returning int */

-

-    if (ppvObj)

-        (*env)->ReleaseIntArrayElements(env, ppvObj, (jint *)ppvObj1, 0);

-

-    if (riid) {

-        setGUIDFields(env, riid, riid1);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    OleRun

- * Signature: (I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleRun

-  (JNIEnv *env, jclass that, jint pUnknown)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "OleRun\n");

-#endif

-    return (jint) OleRun((LPUNKNOWN)pUnknown);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    OleSave

- * Signature: (IIZ)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleSave

-  (JNIEnv *env, jclass that, jint pPS, jint pStg, jboolean fSameAsLoad)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "OleSave\n");

-#endif

-    return (jint) OleSave((IPersistStorage *)pPS, (IStorage *)pStg, fSameAsLoad);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    OleSetContainedObject

- * Signature: (IZ)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleSetContainedObject

-  (JNIEnv *env, jclass that, jint pUnk, jboolean fContained)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "OleSetContainedObject\n");

-#endif

-    return (jint) OleSetContainedObject((LPUNKNOWN)pUnk, fContained);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    OleSetMenuDescriptor

- * Signature: (IIIII)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleSetMenuDescriptor

-  (JNIEnv *env, jclass that, jint holemenu, jint hwndFrame, jint hwndActiveObject, jint lpFrame, jint lpActiveObj)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "OleSetMenuDescriptor\n");

-#endif

-    return (jint) OleSetMenuDescriptor((HOLEMENU)holemenu, (HWND)hwndFrame, (HWND)hwndActiveObject, (LPOLEINPLACEFRAME)lpFrame, (LPOLEINPLACEACTIVEOBJECT)lpActiveObj);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    OleTranslateColor

- * Signature: (II[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleTranslateColor

-  (JNIEnv *env, jclass that, jint clr, jint hpal, jintArray pcolorref)

-{

-    jint *pcolorref1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "OleTranslateColor\n");

-#endif

-

-    if (pcolorref)

-        pcolorref1 = (*env)->GetIntArrayElements(env, pcolorref, NULL);

-

-    rc = (jint) OleTranslateColor((OLE_COLOR)clr, (HPALETTE)hpal, (COLORREF *)pcolorref1);

-

-    if (pcolorref)

-        (*env)->ReleaseIntArrayElements(env, pcolorref, pcolorref1, 0);

-

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    RegisterDragDrop

- * Signature: (II)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_RegisterDragDrop

-  (JNIEnv *env, jclass that, jint hwnd, jint pDropTarget)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "RegisterDragDrop\n");

-#endif

-    return (jint) RegisterDragDrop((HWND)hwnd, (IDropTarget *)pDropTarget);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    RevokeDragDrop

- * Signature: (I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_RevokeDragDrop

-  (JNIEnv *env, jclass that, jint hwnd)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "RevokeDragDrop\n");

-#endif

-    return (jint) RevokeDragDrop((HWND)hwnd);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    StgCreateDocfile

- * Signature: ([CII[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_StgCreateDocfile

-  (JNIEnv *env, jclass that, jcharArray pwcsName, jint grfMode, jint reserved, jintArray ppstgOpen)

-{

-    jchar *pwcsName1=NULL;

-    IStorage **ppstgOpen1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "StgCreateDocfile\n");

-#endif

-

-    if (pwcsName)

-        pwcsName1 = (*env)->GetCharArrayElements(env, pwcsName, NULL);

-

-    if (ppstgOpen)

-        ppstgOpen1 = (IStorage **)(*env)->GetIntArrayElements(env, ppstgOpen, NULL);

-

-    rc = (jint) StgCreateDocfile(pwcsName1, grfMode, reserved, ppstgOpen1);

-

-    if (ppstgOpen)

-        (*env)->ReleaseIntArrayElements(env, ppstgOpen, (jint *)ppstgOpen1, 0);

-

-    if (pwcsName)

-        (*env)->ReleaseCharArrayElements(env, pwcsName, pwcsName1, 0);

-

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    StgIsStorageFile

- * Signature: ([C)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_StgIsStorageFile

-  (JNIEnv *env, jclass that, jcharArray pwcsName)

-{

-    const WCHAR *pwcsName1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "StgIsStorageFile\n");

-#endif

-

-    if (pwcsName)

-        pwcsName1 = (const WCHAR *)(*env)->GetCharArrayElements(env, pwcsName, NULL);

-

-    rc = (jint)StgIsStorageFile(pwcsName1);

-

-    if (pwcsName)

-        (*env)->ReleaseCharArrayElements(env, pwcsName, (jchar *)pwcsName1, 0);

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    StgOpenStorage

- * Signature: ([CIIII[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_StgOpenStorage

-  (JNIEnv *env, jclass that, jcharArray pwcsName, jint pstgPriority, jint grfMode, jint snbExclude, jint reserved, jintArray ppstgOpen)

-{

-    const WCHAR *pwcsName1=NULL;

-    IStorage **ppstgOpen1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "StgOpenStorage\n");

-#endif

-

-    if (pwcsName)

-        pwcsName1 = (const WCHAR *)(*env)->GetCharArrayElements(env, pwcsName, NULL);

-

-    if (ppstgOpen)

-        ppstgOpen1 = (IStorage **)(*env)->GetIntArrayElements(env, ppstgOpen, NULL);

-

-    rc = (jint) StgOpenStorage(pwcsName1, (IStorage *)pstgPriority, grfMode, (SNB)snbExclude, reserved, ppstgOpen1);

-

-    if (ppstgOpen)

-        (*env)->ReleaseIntArrayElements(env, ppstgOpen, (jint *)ppstgOpen1, 0);

-

-    if (pwcsName)

-        (*env)->ReleaseCharArrayElements(env, pwcsName, (jchar *)pwcsName1, 0);

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    StringFromCLSID

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_StringFromCLSID

-  (JNIEnv *env, jclass that, jobject rclsid, jintArray ppsz)

-{

-    LPOLESTR *ppsz1=NULL;

-    GUID guid, *rclsid1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_StringFromCLSID\n");

-#endif

-

-    if (rclsid) {

-        rclsid1=&guid;

-        getGUIDFields(env, rclsid, rclsid1);

-    }

-

-    if (ppsz)

-        ppsz1 = (LPOLESTR *)(*env)->GetIntArrayElements(env, ppsz, NULL);

-

-    rc = (jint) StringFromCLSID(rclsid1, ppsz1);

-

-    if (ppsz)

-        (*env)->ReleaseIntArrayElements(env, ppsz, (jint *)ppsz1, 0);

-    

-    if (rclsid) {

-        setGUIDFields(env, rclsid, rclsid1);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    SysAllocString

- * Signature: ([C)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_SysAllocString

-   (JNIEnv *env, jclass that, jcharArray sz0)

-{

-	jchar *sz01=NULL;

-	jint rc;

-	

-#ifdef DEBUG_CALL_PRINTS

-	fprintf(stderr, "SysAllocString\n");

-#endif

-	if (sz0)

-		sz01 = (*env)->GetCharArrayElements(env, sz0, NULL);

-	rc = (jint) SysAllocString( (OLECHAR *) sz01);

-	if (sz0)

-		(*env)->ReleaseCharArrayElements(env, sz0, sz01, 0);

-	return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    SysFreeString

- * Signature: (I)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_SysFreeString

-   (JNIEnv *env, jclass that, jint bstr)

-{

-#ifdef DEBUG_CALL_PRINTS

-	fprintf(stderr, "SysFreeString\n");

-#endif

-	SysFreeString((BSTR)bstr);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    SysStringByteLen

- * Signature: (I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_SysStringByteLen

-  (JNIEnv *env, jclass that, jint bstr)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "SysStringByteLen\n");

-#endif

-    return (jint) SysStringByteLen((BSTR)bstr);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VariantChangeType

- * Signature: (IISS)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VariantChangeType

-  (JNIEnv *env, jclass that, jint pvargDest, jint pvarSrc, jshort wFlags, jshort vt)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "VariantChangeType\n");

-#endif

-    return (jint) VariantChangeType((VARIANTARG FAR* )pvargDest, (VARIANTARG FAR* )pvarSrc, wFlags, (VARTYPE) vt);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VariantClear

- * Signature: (I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VariantClear

-  (JNIEnv *env, jclass that, jint pvarg)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "VariantClear\n");

-#endif

-    return (jint) VariantClear((VARIANTARG FAR* ) pvarg);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VariantInit

- * Signature: (I)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VariantInit

-  (JNIEnv *env, jclass that, jint pvarg)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "VariantInit\n");

-#endif

-    VariantInit((VARIANTARG FAR*)pvarg);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (II)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__II

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl)

-{

-    P_OLE_FN_1 fn; /* this is a function that returns int */

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__II\n");

-#endif

-    fn = (P_OLE_FN_1)(*(int **)ppVtbl)[fnNumber];

-    return fn(ppVtbl); /* cast it to an OLE function returning int */

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (II[C)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__II_3C

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jcharArray arg0)

-{

-    P_OLE_FN_2 fn;

-	jchar *arg01=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__II_3C\n");

-#endif

-

-    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];

-

-	if (arg0)

-		arg01 = (*env)->GetCharArrayElements(env, arg0, NULL);

-

-	rc = fn(ppVtbl, (jint)arg01);

-

-	if (arg0)

-		(*env)->ReleaseCharArrayElements(env, arg0, arg01, 0);

-

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (II[C[C)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__II_3C_3C

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jcharArray arg0, jcharArray arg1)

-{

-    P_OLE_FN_3 fn; /* this is a function that returns int */

-    jchar *arg01=NULL, *arg11=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__II_3C_3C\n");

-#endif

-

-    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];

-

-    if (arg0)

-        arg01 = (*env)->GetCharArrayElements(env, arg0, NULL);

-

-    if (arg1)

-        arg11 = (*env)->GetCharArrayElements(env, arg1, NULL);

-

-    rc = fn(ppVtbl, (jint)arg01, (jint)arg11); /* cast it to an OLE function returning int */

-

-    if (arg1)

-        (*env)->ReleaseCharArrayElements(env, arg1, arg11, 0);

-

-    if (arg0)

-        (*env)->ReleaseCharArrayElements(env, arg0, arg01, 0);

-

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (II[CI)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__II_3CI

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jcharArray arg0, jint arg1)

-{

-    P_OLE_FN_3 fn; /* this is a function that returns int */

-    jchar *arg01=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__II_3CI\n");

-#endif

-

-    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];

-

-    if (arg0)

-        arg01 = (*env)->GetCharArrayElements(env, arg0, NULL);

-    

-    rc = fn(ppVtbl, (jint)arg01, arg1);

-

-    if (arg0)

-        (*env)->ReleaseCharArrayElements(env, arg0, arg01, 0);

-

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (II[CIII[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__II_3CIII_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jcharArray arg0, jint arg1, jint arg2, jint arg3, jintArray arg4)

-{

-    P_OLE_FN_6 fn; /* this is a function that returns int */

-    jchar *arg01=NULL;

-    jint *arg41=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__II_3CIII_3I\n");

-#endif

-

-    fn = (P_OLE_FN_6)(*(int **)ppVtbl)[fnNumber];

-

-    if (arg0)

-        arg01 = (*env)->GetCharArrayElements(env, arg0, NULL);

-    if (arg4)

-        arg41 = (*env)->GetIntArrayElements(env, arg4, NULL);

-

-    rc = fn(ppVtbl, (jint)arg01, arg1, arg2, arg3, (jint)arg41); /* cast it to an OLE function returning int */

-

-    if (arg4)

-        (*env)->ReleaseIntArrayElements(env, arg4, arg41, 0);

-    if (arg0)

-        (*env)->ReleaseCharArrayElements(env, arg0, arg01, 0);

-

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (II[CIIII[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__II_3CIIII_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jcharArray arg0, jint arg1, jint arg2, jint arg3, jint arg4, jintArray arg5)

-{

-    P_OLE_FN_7 fn; /* this is a function that returns int */    jchar *arg01=NULL;

-    jint *arg51=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__II_3CIIII_3I\n");

-#endif

-

-    fn = (P_OLE_FN_7)(*(int **)ppVtbl)[fnNumber];

-

-    if (arg0)

-        arg01 = (*env)->GetCharArrayElements(env, arg0, NULL);

-    if (arg5)

-        arg51 = (*env)->GetIntArrayElements(env, arg5, NULL);

-

-    rc = fn(ppVtbl, (jint)arg01, arg1, arg2, arg3, arg4, (jint)arg51); /* cast it to an OLE function returning int */

-

-    if (arg5)

-        (*env)->ReleaseIntArrayElements(env, arg5, arg51, 0);

-    if (arg0)

-        (*env)->ReleaseCharArrayElements(env, arg0, arg01, 0);

-

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (II[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__II_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jintArray arg0)

-{

-    P_OLE_FN_2 fn; /* this is a function that returns int */

-    jint *arg01=NULL;

-    jint rc;

-    

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__II_3I\n");

-#endif

-

-    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];

-

-    if (arg0)

-        arg01 = (*env)->GetIntArrayElements(env, arg0, NULL);

-

-    rc = fn(ppVtbl, (jint)arg01); /* cast it to an OLE function returning int */

-

-    if (arg0)

-        (*env)->ReleaseIntArrayElements(env, arg0, arg01, 0);

-

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (III)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__III

-   (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0)

-{

-	P_OLE_FN_2 fn; /* this is a function that returns int */

-	jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-	fprintf(stderr, "COM_VtblCall__III\n");

-#endif

-

-	fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];

-

-	rc = fn(ppVtbl, arg0); /* cast it to an OLE function returning int */

-	return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIII)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIII

-   (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1)

-{

-	P_OLE_FN_3 fn; /* this is a function that returns int */

-	jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-	fprintf(stderr, "COM_VtblCall__IIII\n");

-#endif

-

-	fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];

-

-	rc = fn(ppVtbl, arg0, arg1); /* cast it to an OLE function returning int */

-	return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (III[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__III_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jintArray arg1)

-{

-    P_OLE_FN_3 fn;    

-

-    jint *arg11=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__III_3I\n");

-#endif

-

-    fn = (P_OLE_FN_3)(*((jint **)ppVtbl))[fnNumber];

-

-    if (arg1)

-        arg11 = (*env)->GetIntArrayElements(env, arg1, NULL);

-

-    rc = fn(ppVtbl, arg0, (jint)arg11); 

-

-    if (arg1)

-        (*env)->ReleaseIntArrayElements(env, arg1, arg11, 0);

-

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIII[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIII_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jintArray arg2)

-{

-    P_OLE_FN_4 fn; /* this is a function that returns int */

-    jint *arg21=NULL;

-    jint rc;

-    

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIII_3I\n");

-#endif

-

-    fn = (P_OLE_FN_4)(*(int **)ppVtbl)[fnNumber];

-

-    if (arg2)

-        arg21 = (*env)->GetIntArrayElements(env, arg2, NULL);

-

-    rc = fn(ppVtbl, arg0, arg1, (jint)arg21); /* cast it to an OLE function returning int */

-

-    if (arg2)

-        (*env)->ReleaseIntArrayElements(env, arg2, arg21, 0);

-

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIIII)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIII

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jint arg2)

-{

-    P_OLE_FN_4 fn; /* this is a function that returns int */

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIIII\n");

-#endif

-

-    fn = (P_OLE_FN_4)(*(int **)ppVtbl)[fnNumber];

-    return fn(ppVtbl, arg0, arg1, arg2);;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIIII[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIII_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jint arg2, jintArray arg3)

-{

-    P_OLE_FN_5 fn; /* this is a function that returns int */

-    jint *arg31=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "VtblCall__IIIII_3I\n");

-#endif

-

-    fn = (P_OLE_FN_5)(*(int **)ppVtbl)[fnNumber];

-

-    if (arg3)

-        arg31 = (*env)->GetIntArrayElements(env, arg3, NULL);

-    

-    rc = fn(ppVtbl, arg0, arg1, arg2, (jint)arg31);

-

-    if (arg3)

-        (*env)->ReleaseIntArrayElements(env, arg3, arg31, 0);

-

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIIIII[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIIII_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jint arg2, jint arg3, jintArray arg4)

-{

-    P_OLE_FN_6 fn;

-    jint *arg41=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__II_3CIIII_3I\n");

-#endif

-

-    fn = (P_OLE_FN_6)(*(int **)ppVtbl)[fnNumber];

-    if (arg4)

-        arg41 = (*env)->GetIntArrayElements(env, arg4, NULL);

-    

-    rc = fn(ppVtbl, arg0, arg1, arg2, arg3, (jint)arg41); 

-

-    if (arg4)

-        (*env)->ReleaseIntArrayElements(env, arg4, arg41, 0);

-

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIIIIII[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIIIII_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jintArray arg5)

-{

-    P_OLE_FN_7 fn;    

-

-    jint *arg51=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIIIIII_3I\n");

-#endif

-

-    fn = (P_OLE_FN_7)(*((jint **)ppVtbl))[fnNumber];

-

-    if (arg5)

-        arg51 = (*env)->GetIntArrayElements(env, arg5, NULL);

-

-    rc = fn(ppVtbl, arg0, arg1, arg2, arg3, arg4, (jint)arg51); 

-

-    if (arg5)

-        (*env)->ReleaseIntArrayElements(env, arg5, arg51, 0);

-

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIIILorg/eclipse/swt/internal/ole/win32/DVTARGETDEVICE;Lorg/eclipse/swt/internal/win32/SIZE;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIILorg_eclipse_swt_internal_ole_win32_DVTARGETDEVICE_2Lorg_eclipse_swt_internal_win32_SIZE_2

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jobject arg2, jobject arg3)

-{

-    DVTARGETDEVICE dvtargetdevice, *arg21=NULL;

-    SIZE size, *arg31=NULL;

-    P_OLE_FN_5 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIIILorg_eclipse_swt_internal_ole_win32_DVTARGETDEVICE_2Lorg_eclipse_swt_internal_win32_SIZE_2\n");

-#endif

-

-    fn = (P_OLE_FN_5)(*(int **)ppVtbl)[fnNumber];

-    if (arg2) {

-        arg21=&dvtargetdevice;

-        getDVTARGETDEVICEFields(env, arg2, arg21);

-    }

-    if (arg3) {

-        arg31=&size;

-        getSIZEFields(env, arg3, arg31);

-    }

-    

-    rc = fn(ppVtbl, arg0, arg1, (jint)arg21, (jint)arg31); /* cast it to an OLE function returning int */

-

-    if (arg2) {

-        setDVTARGETDEVICEFields(env, arg2, arg21);

-    }

-    if (arg3) {

-        setSIZEFields(env, arg3, arg31);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIIILorg/eclipse/swt/internal/ole/win32/GUID;I[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIILorg_eclipse_swt_internal_ole_win32_GUID_2I_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jobject arg2, jint arg3, jintArray arg4)

-{

-    jint *arg41=NULL;

-    GUID guid, *arg21=NULL;

-    P_OLE_FN_6 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIIILorg_eclipse_swt_internal_ole_win32_GUID_2I_3I\n");

-#endif

-    fn = (P_OLE_FN_6)(*(int **)ppVtbl)[fnNumber];

-    if (arg2) {

-        arg21=&guid;

-        getGUIDFields(env, arg2, arg21);

-    }

-    

-    if (arg4)

-        arg41 = (*env)->GetIntArrayElements(env, arg4, NULL);

-

-    rc = fn(ppVtbl, arg0, arg1, (jint)arg21, arg3, (jint)arg41); /* cast it to an OLE function returning int */

-

-    if (arg4)

-        (*env)->ReleaseIntArrayElements(env, arg4, arg41, 0);

-

-    if (arg2) {

-        setGUIDFields(env, arg2, arg21);

-    }

-    return rc;

-}

-

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIILorg/eclipse/swt/internal/ole/win32/FORMATETC;[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_FORMATETC_2_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jobject arg1, jintArray arg2)

-{

-    P_OLE_FN_4 fn;

-    FORMATETC formatetc, *arg11=NULL;

-    jint *arg21=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_FORMATETC_2_3I\n");

-#endif

-

-    fn = (P_OLE_FN_4)(*(int **)ppVtbl)[fnNumber];

-

-    if (arg1) {

-        arg11 = &formatetc;

-        getFORMATETCFields(env, arg1, arg11);

-    }

-    if (arg2)

-        arg21 = (*env)->GetIntArrayElements(env, arg2, NULL);

-

-    rc = fn(ppVtbl, arg0, (jint)arg11, (jint)arg21);

-

-    if (arg2)

-        (*env)->ReleaseIntArrayElements(env, arg2, arg21, 0);

-

-    if (arg1) {

-        setFORMATETCFields(env, arg1, arg11);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIILorg/eclipse/swt/internal/ole/win32/GUID;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_GUID_2

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jobject arg1)

-{

-    GUID guid, *arg11=NULL;

-    P_OLE_FN_3 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIIILorg_eclipse_swt_internal_ole_win32_GUID_2n");

-#endif

-    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];

-    if (arg1) {

-        arg11=&guid;

-        getGUIDFields(env, arg1, arg11);

-    }

-

-    rc = fn(ppVtbl, arg0, (jint)arg11); /* cast it to an COM function returning int */

-

-    if (arg1) {

-		setGUIDFields(env, arg1, arg11);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIILorg/eclipse/swt/internal/ole/win32/GUID;II)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_GUID_2II

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jobject arg1, jint arg2, jint arg3)

-{

-    GUID guid, *arg11=NULL;

-    P_OLE_FN_5 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "VtblCall__IIILorg_eclipse_swt_internal_ole_win32_GUID_2II\n");

-#endif

-    fn = (P_OLE_FN_5)(*(int **)ppVtbl)[fnNumber];

-    if (arg1) {

-        arg11=&guid;

-        getGUIDFields(env, arg1, arg11);

-    }

-    

-    rc = fn(ppVtbl, arg0, (jint)arg11, arg2, arg3); /* cast it to an OLE function returning int */

-

-    if (arg1) {

-        setGUIDFields(env, arg1, arg11);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIILorg/eclipse/swt/internal/ole/win32/GUID;IILorg/eclipse/swt/internal/ole/win32/DISPPARAMS;ILorg/eclipse/swt/internal/ole/win32/EXCEPINFO;[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_GUID_2IILorg_eclipse_swt_internal_ole_win32_DISPPARAMS_2ILorg_eclipse_swt_internal_ole_win32_EXCEPINFO_2_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jobject arg1, jint arg2, jint arg3, jobject arg4, jint arg5, jobject arg6, jintArray arg7)

-{

-    jint *arg71=NULL;

-    GUID guid, *arg11=NULL;

-    EXCEPINFO excepinfo, *arg61=NULL;

-    DISPPARAMS dispparams, *arg41=NULL;

-    P_OLE_FN_9 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_GUID_2IILorg_eclipse_swt_internal_ole_win32_DISPPARAMS_2ILorg_eclipse_swt_internal_ole_win32_EXCEPINFO_2_3I\n");

-#endif

-

-    fn = (P_OLE_FN_9)(*(int **)ppVtbl)[fnNumber];

-    if (arg1) {

-        arg11=&guid;

-        getGUIDFields(env, arg1, arg11);

-    }

-    if (arg4) {

-        arg41=&dispparams;

-        getDISPPARAMSFields(env, arg4, arg41);

-    }

-

-    if (arg6) {

-        arg61=&excepinfo;

-        getEXCEPINFOFields(env, arg6, arg61);

-    }

-

-    if (arg7)

-        arg71 = (*env)->GetIntArrayElements(env, arg7, NULL);

-

-    rc = fn(ppVtbl, arg0, (jint)arg11, arg2, arg3, (jint)arg41, arg5, (jint)arg61, (jint)arg71); /* cast it to an OLE function returning int */

-

-    if (arg7)

-        (*env)->ReleaseIntArrayElements(env, arg7, arg71, 0);

-

-    if (arg6) {

-        setEXCEPINFOFields(env, arg6, arg61);

-    }

-

-    if (arg4) {

-        setDISPPARAMSFields(env, arg4, arg41);

-    }

-

-    if (arg1) {

-        setGUIDFields(env, arg1, arg11);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIILorg/eclipse/swt/internal/ole/win32/STATSTG;[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_STATSTG_2_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jobject arg1, jintArray arg2)

-{

-    jint *arg21=NULL;

-    STATSTG statstg, *arg11=NULL;

-    P_OLE_FN_4 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "VtblCall__IIILorg_eclipse_swt_internal_ole_win32_STATSTG_2_3I\n");

-#endif

-    fn = (P_OLE_FN_4)(*(int **)ppVtbl)[fnNumber];

-    if (arg1) {

-        arg11=&statstg;

-        getSTATSTGFields(env, arg1, arg11);

-    }

-    

-    if (arg2)

-        arg21 = (*env)->GetIntArrayElements(env, arg2, NULL);

-

-    rc = fn(ppVtbl, arg0, (jint)arg11, (jint)arg21); /* cast it to an OLE function returning int */

-

-    if (arg2)

-        (*env)->ReleaseIntArrayElements(env, arg2, arg21, 0);

-

-    if (arg1) {

-        setSTATSTGFields(env, arg1, arg11);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIILorg/eclipse/swt/internal/win32/MSG;IIILorg/eclipse/swt/internal/win32/RECT;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIILorg_eclipse_swt_internal_win32_MSG_2IIILorg_eclipse_swt_internal_win32_RECT_2

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jobject arg1, jint arg2, jint arg3, jint arg4, jobject arg5)

-{

-    MSG msg, *arg11=NULL;

-    RECT rect, *arg51=NULL;

-    P_OLE_FN_7 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIILorg_eclipse_swt_internal_win32_MSG_2IIILorg_eclipse_swt_internal_win32_RECT_2\n");

-#endif

-

-    fn = (P_OLE_FN_7)(*(int **)ppVtbl)[fnNumber];

-    if (arg1) {

-        arg11=&msg;

-        getMSGFields(env, arg1, arg11);

-    }

-    if (arg5) {

-        arg51=▭

-        getRECTFields(env, arg5, arg51);

-    }

-    

-    rc = fn(ppVtbl, arg0, (jint)arg11, arg2, arg3, arg4, (jint)arg51); /* cast it to an OLE function returning int */

-

-    if (arg1) {

-        setMSGFields(env, arg1, arg11);

-    }

-    if (arg5) {

-        setRECTFields(env, arg5, arg51);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/win32/MSG;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_win32_MSG_2

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)

-{

-    MSG msg, *arg01=NULL;

-    P_OLE_FN_2 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_win32_MSG_2\n");

-#endif

-

-    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];

-    if (arg0) {

-        arg01=&msg;

-        getMSGFields(env, arg0, arg01);

-    }

-    

-    rc = fn(ppVtbl,  (jint)arg01); /* cast it to an OLE function returning int */

-

-    if (arg0) {

-        setMSGFields(env, arg0, arg01);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIILorg/eclipse/swt/internal/win32/SIZE;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIILorg_eclipse_swt_internal_win32_SIZE_2

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jobject arg1)

-{

-    SIZE size, *arg11=NULL;

-    P_OLE_FN_3 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIILorg_eclipse_swt_internal_win32_SIZE_2\n");

-#endif

-

-    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];

-    if (arg1) {

-        arg11=&size;

-        getSIZEFields(env, arg1, arg11);

-    }

-    

-    rc = fn(ppVtbl, arg0, (jint)arg11); /* cast it to an COM function returning int */

-

-    if (arg1) {

-        setSIZEFields(env, arg1, arg11);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIIZ)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIZ

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jboolean arg1)

-{

-    P_OLE_FN_3 fn; /* this is a function that returns int */

-    jint rc;

-    

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIIZ\n");

-#endif

-    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];

-

-    rc = fn(ppVtbl, arg0, arg1); /* cast it to an OLE function returning int */

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/ole/win32/CAUUID;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_CAUUID_2

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)

-{

-    P_OLE_FN_2 fn; /* this is a function that returns int */

-    CAUUID cauuid, *arg01=&cauuid;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__II_3C\n");

-#endif

-

-    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];

-

-    if (arg0) {

-        getCAUUIDFields(env, arg0, arg01);

-    }

-    

-    rc = fn(ppVtbl, (jint)arg01); /* cast it to an OLE function returning int */

-

-    if (arg0) {

-        setCAUUIDFields(env, arg0, arg01);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/ole/win32/CONTROLINFO;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_CONTROLINFO_2

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)

-{

-    CONTROLINFO controlinfo, *arg01=NULL;

-    P_OLE_FN_2 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_CONTROLINFO_2\n");

-#endif

-    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];

-    if (arg0) {

-        arg01=&controlinfo;

-        getCONTROLINFOFields(env, arg0, arg01);

-    }

-    

-    rc = fn(ppVtbl, (jint)arg01); /* cast it to an OLE function returning int */

-

-    if (arg0) {

-        setCONTROLINFOFields(env, arg0, arg01);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/ole/win32/FORMATETC;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_FORMATETC_2

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)

-{

-    P_OLE_FN_2 fn;

-    FORMATETC formatetc, *arg01=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_FORMATETC_2\n");

-#endif

-

-    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];

-

-    if (arg0) {

-        arg01 = &formatetc;

-        getFORMATETCFields(env, arg0, arg01);

-    }

-    rc = fn(ppVtbl, (jint)arg01);

-

-    if (arg0) {

-        setFORMATETCFields(env, arg0, arg01);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/ole/win32/FORMATETC;Lorg/eclipse/swt/internal/ole/win32/STGMEDIUM;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_FORMATETC_2Lorg_eclipse_swt_internal_ole_win32_STGMEDIUM_2

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0, jobject arg1)

-{

-    P_OLE_FN_3 fn;

-    FORMATETC formatetc, *arg01=NULL;

-    STGMEDIUM stgmedium, *arg11=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_FORMATETC_2Lorg_eclipse_swt_internal_ole_win32_STGMEDIUM_2\n");

-#endif

-

-    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];

-

-    if (arg0) {

-        arg01 = &formatetc;

-        getFORMATETCFields(env, arg0, arg01);

-    }

-    if (arg1) {

-        arg11 = &stgmedium;

-        getSTGMEDIUMFields(env, arg1, arg11);

-    }

-    rc = fn(ppVtbl, (jint)arg01, (jint)arg11);

-

-    if (arg0) {

-        setFORMATETCFields(env, arg0, arg01);

-    }

-    if (arg1) {

-        setSTGMEDIUMFields(env, arg1, arg11);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/ole/win32/FORMATETC;Lorg/eclipse/swt/internal/ole/win32/STGMEDIUM;Z)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_FORMATETC_2Lorg_eclipse_swt_internal_ole_win32_STGMEDIUM_2Z

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0, jobject arg1, jboolean arg2)

-{

-    P_OLE_FN_4 fn;

-    FORMATETC formatetc, *arg01=NULL;

-    STGMEDIUM stgmedium, *arg11=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_FORMATETC_2Lorg_eclipse_swt_internal_ole_win32_STGMEDIUM_2Z\n");

-#endif

-

-    fn = (P_OLE_FN_4)(*(int **)ppVtbl)[fnNumber];

-

-    if (arg0) {

-        arg01 = &formatetc;

-        getFORMATETCFields(env, arg0, arg01);

-    }

-    if (arg1) {

-        arg11 = &stgmedium;

-        getSTGMEDIUMFields(env, arg1, arg11);

-    }

-    rc = fn(ppVtbl, (jint)arg01, (jint)arg11, (jint)arg2);

-

-    if (arg0) {

-        setFORMATETCFields(env, arg0, arg01);

-    }

-    if (arg1) {

-        setSTGMEDIUMFields(env, arg1, arg11);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/ole/win32/GUID;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)

-{

-    GUID guid, *arg01=NULL;

-    P_OLE_FN_2 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2\n");

-#endif

-    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];

-    if (arg0) {

-        arg01=&guid;

-        getGUIDFields(env, arg0, arg01);

-    }

-

-    rc = fn(ppVtbl, (jint)arg01); /* cast it to an OLE function returning int */

-

-    if (arg0) {

-        setGUIDFields(env, arg0, arg01);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/ole/win32/GUID;[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0, jintArray arg1)

-{

-    jint *arg11=NULL;

-    GUID guid, *arg01=NULL;

-    P_OLE_FN_3 fn; /* this is a function that returns int */

-    jint rc;

-    

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2_3I\n");

-#endif

-    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];

-

-    if (arg0) {

-        arg01=&guid;

-        getGUIDFields(env, arg0, arg01);

-    }

-    

-    if (arg1)

-        arg11 = (*env)->GetIntArrayElements(env, arg1, NULL);

-

-    rc = fn(ppVtbl, (jint)arg01, (jint)arg11); /* cast it to an OLE function returning int */

-

-    if (arg1)

-        (*env)->ReleaseIntArrayElements(env, arg1, arg11, 0);

-

-    if (arg0) {

-        setGUIDFields(env, arg0, arg01);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/ole/win32/GUID;III[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2III_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0, jint arg1, jint arg2, jint arg3, jintArray arg4)

-{

-    jint *arg41=NULL;

-    GUID guid, *arg01=NULL;

-    P_OLE_FN_6 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2III_3I\n");

-#endif

-    fn = (P_OLE_FN_6)(*(int **)ppVtbl)[fnNumber];

-    if (arg0) {

-        arg01=&guid;

-        getGUIDFields(env, arg0, arg01);

-    }

-    

-    if (arg4)

-        arg41 = (*env)->GetIntArrayElements(env, arg4, NULL);

-

-    rc = fn(ppVtbl, (jint)arg01, arg1, arg2, arg3, (jint)arg41); /* cast it to an OLE function returning int */

-

-    if (arg4)

-        (*env)->ReleaseIntArrayElements(env, arg4, arg41, 0);

-

-    if (arg0) {

-        setGUIDFields(env, arg0, arg01);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/ole/win32/GUID;IIII)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2IIII

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0, jint arg1, jint arg2, jint arg3, jint arg4)

-{

-    GUID guid, *arg01=NULL;

-    P_OLE_FN_6 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2IIII\n");

-#endif

-    fn = (P_OLE_FN_6)(*(int **)ppVtbl)[fnNumber];

-    if (arg0) {

-        arg01=&guid;

-        getGUIDFields(env, arg0, arg01);

-    }

-    

-    rc = fn(ppVtbl, (jint)arg01, arg1, arg2, arg3, arg4);

-

-    if (arg0) {

-        setGUIDFields(env, arg0, arg01);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/ole/win32/GUID;ILorg/eclipse/swt/internal/ole/win32/OLECMD;Lorg/eclipse/swt/internal/ole/win32/OLECMDTEXT;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2ILorg_eclipse_swt_internal_ole_win32_OLECMD_2Lorg_eclipse_swt_internal_ole_win32_OLECMDTEXT_2

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0, jint arg1, jobject arg2, jobject arg3)

-{

-    GUID guid, *arg01=NULL;

-    OLECMD olecmd, *arg21=NULL;

-    OLECMDTEXT olecmdtext, *arg31=NULL;

-

-    P_OLE_FN_5 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2ILorg_eclipse_swt_internal_ole_win32_OLECMD_2Lorg_eclipse_swt_internal_ole_win32_OLECMDTEXT_2\n");

-#endif

-    fn = (P_OLE_FN_5)(*(int **)ppVtbl)[fnNumber];

-    if (arg0) {

-        arg01=&guid;

-        getGUIDFields(env, arg0, arg01);

-    }

-    if (arg2) {

-        arg21=&olecmd;

-        getOLECMDFields(env, arg2, arg21);

-    }

-    if (arg3) {

-        arg31=&olecmdtext;

-        getOLECMDTEXTFields(env, arg3, arg31);

-    }

-    

-    rc = fn(ppVtbl, (jint)arg01, arg1, (jint)arg21, (jint)arg31);

-

-    if (arg0) {

-        setGUIDFields(env, arg0, arg01);

-    }

-    if (arg2) {

-        setOLECMDFields(env, arg2, arg21);

-    }

-    if (arg3) {

-        setOLECMDTEXTFields(env, arg3, arg31);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/ole/win32/LICINFO;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_LICINFO_2

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)

-{

-    LICINFO licinfo, *arg01=NULL;

-    P_OLE_FN_2 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_LICINFO_2\n");

-#endif

-    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];

-    if (arg0) {

-        arg01=&licinfo;

-        getLICINFOFields(env, arg0, arg01);

-    }

-

-    rc = fn(ppVtbl, (jint)arg01); /* cast it to an OLE function returning int */

-

-    if (arg0) {

-        setLICINFOFields(env, arg0, arg01);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/win32/RECT;IZ)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_win32_RECT_2IZ

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0, jint arg1, jboolean arg2)

-{

-    RECT rect, *arg01=NULL;

-    P_OLE_FN_4 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_win32_RECT_2IZ\n");

-#endif

-

-    fn = (P_OLE_FN_4)(*(int **)ppVtbl)[fnNumber];

-    if (arg0) {

-        arg01=▭

-        getRECTFields(env, arg0, arg01);

-    }

-    

-    rc = fn(ppVtbl, (jint)arg01, arg1, arg2); /* cast it to an OLE function returning int */

-

-    if (arg0) {

-        setRECTFields(env, arg0, arg01);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/win32/RECT;Lorg/eclipse/swt/internal/win32/RECT;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_win32_RECT_2Lorg_eclipse_swt_internal_win32_RECT_2

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0, jobject arg1)

-{

-    RECT rect0, *arg01=NULL;

-    RECT rect1, *arg11=NULL;

-    P_OLE_FN_3 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_win32_RECT_2Lorg_eclipse_swt_internal_win32_RECT_2\n");

-#endif

-

-    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];

-    if (arg0) {

-        arg01=&rect0;

-        getRECTFields(env, arg0, arg01);

-    }

-    if (arg1) {

-        arg11=&rect1;

-        getRECTFields(env, arg1, arg11);

-    }

-    rc = fn(ppVtbl, (jint)arg01, (jint)arg11); /* cast it to an OLE function returning int */

-

-    if (arg1) {

-        setRECTFields(env, arg1, arg11);

-    }

-    if (arg0) {

-        setRECTFields(env, arg0, arg01);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/win32/RECT;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_win32_RECT_2

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)

-{

-    RECT rect0, *arg01=NULL;

-    P_OLE_FN_2 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_win32_RECT_2\n");

-#endif

-

-    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];

-    if (arg0) {

-        arg01=&rect0;

-        getRECTFields(env, arg0, arg01);

-    }

-    

-    rc = fn(ppVtbl, (jint)arg01); /* cast it to an OLE function returning int */

-

-    if (arg0) {

-        setRECTFields(env, arg0, arg01);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (III[I[I[I[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__III_3I_3I_3I_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jintArray arg1, jintArray arg2, jintArray arg3, jintArray arg4)

-{

-    jint *arg11=NULL;

-    jint *arg21=NULL;

-    jint *arg31=NULL;

-    jint *arg41=NULL;

-    P_OLE_FN_6 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__III_3I_3I_3I_31\n");

-#endif

-    fn = (P_OLE_FN_6)(*(int **)ppVtbl)[fnNumber];

-    if (arg1)

-        arg11 = (*env)->GetIntArrayElements(env, arg1, NULL);

-        

-    if (arg2)

-        arg21 = (*env)->GetIntArrayElements(env, arg2, NULL);

-        

-    if (arg3)

-        arg31 = (*env)->GetIntArrayElements(env, arg3, NULL);

-        

-    if (arg4)

-        arg41 = (*env)->GetIntArrayElements(env, arg4, NULL);

-

-    rc = fn(ppVtbl, arg0, (jint)arg11, (jint)arg21, (jint)arg31, (jint)arg41); /* cast it to an OLE function returning int */

-

-    if (arg1)

-        (*env)->ReleaseIntArrayElements(env, arg1, arg11, 0);

-    

-    if (arg2)

-        (*env)->ReleaseIntArrayElements(env, arg2, arg21, 0);

-        

-    if (arg3)

-        (*env)->ReleaseIntArrayElements(env, arg3, arg31, 0);

-    

-    if (arg4)

-        (*env)->ReleaseIntArrayElements(env, arg4, arg41, 0);

-

-

-    return rc;

-}

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (III[II[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__III_3II_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jintArray arg1, jint arg2, jintArray arg3)

-{

-    jint *arg11=NULL;

-    jint *arg31=NULL;

-    P_OLE_FN_5 fn; /* this is a function that returns int */

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__III_3II_3I\n");

-#endif

-    fn = (P_OLE_FN_5)(*(int **)ppVtbl)[fnNumber];

-    if (arg1)

-        arg11 = (*env)->GetIntArrayElements(env, arg1, NULL);

-        

-    if (arg3)

-        arg31 = (*env)->GetIntArrayElements(env, arg3, NULL);

-        

-    rc = fn(ppVtbl, arg0, (jint)arg11, arg2, (jint)arg31); /* cast it to an OLE function returning int */

-

-    if (arg1)

-        (*env)->ReleaseIntArrayElements(env, arg1, arg11, 0);

-            

-    if (arg3)

-        (*env)->ReleaseIntArrayElements(env, arg3, arg31, 0);

-    

-    return rc;

-}      

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    WriteClassStg

- * Signature: (ILorg/eclipse/swt/internal/ole/win32/GUID;)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_WriteClassStg

-  (JNIEnv *env, jclass that, jint pStg, jobject rclsid)

-{

-    GUID guid, *rclsid1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "WriteClassStg\n");

-#endif

-    if (rclsid) {

-        rclsid1=&guid;

-        getGUIDFields(env, rclsid, rclsid1);

-    }

-    rc = (jint) WriteClassStg((IStorage *)pStg, rclsid1);

-

-    if (rclsid) {

-        setGUIDFields(env, rclsid, rclsid1);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    OleGetClipboard

- * Signature: ([I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleGetClipboard

-  (JNIEnv *env, jclass that, jintArray ppDataObj)

-{

-    IDataObject **ppDataObj1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "OleGetClipboard\n");

-#endif

-    if (ppDataObj)

-        ppDataObj1 = (IDataObject **)(*env)->GetIntArrayElements(env, ppDataObj, NULL);

-

-    rc = (jint) OleGetClipboard(ppDataObj1);

-

-    if (ppDataObj)

-        (*env)->ReleaseIntArrayElements(env, ppDataObj, (jint *)ppDataObj1, 0);

-

-    return rc;

-}

-

-     /*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    OleIsCurrentClipboard

- * Signature: (I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleIsCurrentClipboard

-  (JNIEnv *env, jclass that, jint pDataObj)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "OleIsCurrentClipboard\n");

-#endif

-    return (jint) OleIsCurrentClipboard((IDataObject *)pDataObj);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    OleSetClipboard

- * Signature: (I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleSetClipboard

-  (JNIEnv *env, jclass that, jint pDataObj)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "OleSetClipboard\n");

-#endif

-    return (jint) OleSetClipboard((IDataObject *)pDataObj);

-}

-    

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    OleFlushClipboard

- * Signature: ()I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleFlushClipboard

-  (JNIEnv *env, jclass that)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "OleFlushClipboard\n");

-#endif

-    return (jint) OleFlushClipboard();

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    OleDraw

- * Signature: (IIII)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleDraw

-  (JNIEnv *env, jclass that, jint pUnk, jint dwAspect, jint hdcDraw, jint lprcBounds)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "OleDraw\n");

-#endif

-    return (jint) OleDraw((LPUNKNOWN)pUnk, (DWORD)dwAspect, (HDC)hdcDraw, (LPRECT)lprcBounds);

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    ReleaseStgMedium

- * Signature: (I)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_ReleaseStgMedium

-  (JNIEnv *env, jclass that, jint pmedium)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "ReleaseStgMedium\n");

-#endif

-    ReleaseStgMedium((STGMEDIUM *)pmedium);

-}

-

-/* ------------- obsolete OLE calls ------------- */

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    DispGetParam

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/DISPPARAMS;III[I)I

- */

-/*JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_DispGetParam

-  (JNIEnv *env, jclass that, jobject pdispparams, jint position, jint vtTarg, jint pvarResult, jintArray puArgErr)

-{

-    unsigned int FAR *puArgErr1=NULL;

-    DISPPARAMS dispparams, *pdispparams1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "DispGetParam\n");

-#endif

-

-    if (pdispparams) {

-        pdispparams1=&dispparams;

-        cacheDispparamsFids(env, pdispparams, &DispparamsFc);

-        getDISPPARAMSFields(env, pdispparams, pdispparams1, &DispparamsFc);

-    }

-    if (puArgErr)

-        puArgErr1 = (*env)->GetIntArrayElements(env, puArgErr, NULL);

-

-    rc = (jint) DispGetParam(pdispparams1, position, (VARTYPE)vtTarg, (VARIANT FAR *)pvarResult, puArgErr1);

-

-    if (puArgErr)

-        (*env)->ReleaseIntArrayElements(env, puArgErr, puArgErr1, 0);

-

-    if (pdispparams) {

-        setDISPPARAMSFields(env, pdispparams, pdispparams1, &DispparamsFc);

-    }

-    return rc;

-}

-*/

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (ILorg/eclipse/swt/internal/win32/SIZE;I)V

- */

-/*JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__ILorg_eclipse_swt_internal_win32_SIZE_2I

-  (JNIEnv *env, jclass that, jint DestinationPtr, jobject Source, jint Length)

-{

-    SIZE size, *Source1=&size;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_win32_SIZE_2I\n");

-#endif

-

-    if (Source) {

-        getSIZEFields(env, Source, Source1);

-    }

-

-    MoveMemory((PVOID)DestinationPtr, Source1, Length);

-}

-*/

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (II[CI[CI)I

- */

-/*JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__II_3CI_3CI

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jcharArray arg0, jint arg1, jcharArray arg2, jint arg3)

-{

-    P_OLE_FN_5 fn;

-    jchar *arg01=NULL, *arg21=NULL;

-    jint rc;

-    

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__II_3CI_3CI\n");

-#endif

-

-    fn = (P_OLE_FN_5)(*(int **)ppVtbl)[fnNumber];

-

-    if (arg0)

-        arg01 = (*env)->GetCharArrayElements(env, arg0, NULL);

-

-    if (arg2)

-        arg21 = (*env)->GetCharArrayElements(env, arg2, NULL);

-

-    rc = fn(ppVtbl, (jint)arg01, arg1, (jint)arg21, arg3);

-

-    if (arg2)

-        (*env)->ReleaseCharArrayElements(env, arg2, arg21, 0);

-

-    if (arg0)

-        (*env)->ReleaseCharArrayElements(env, arg0, arg01, 0);

-

-    return rc;

-}

-*/

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIILorg/eclipse/swt/internal/ole/win32/GUID;[I)I

- */

-/*JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_GUID_2_3I

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jobject arg1, jintArray arg2)

-{

-    jint *arg21=NULL;

-    GUID guid, *arg11=NULL;

-    P_OLE_FN_4 fn;

-    jint rc;

-    

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_GUID_2I_3I\n");

-#endif

-    

-    fn = (P_OLE_FN_4)(*(int **)ppVtbl)[fnNumber];

-    if (arg1) {

-        arg11=&guid;

-        getGUIDFields(env, arg1, arg11);

-    }

-    

-    if (arg2)

-        arg21 = (*env)->GetIntArrayElements(env, arg2, NULL);

-

-    rc = fn(ppVtbl, arg0, (jint)arg11, (jint)arg21);

-

-    if (arg2)

-        (*env)->ReleaseIntArrayElements(env, arg2, arg21, 0);

-

-    if (arg1) {

-        setGUIDFields(env, arg1, arg11);

-    }

-    return rc;

-}

-*/

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIII)I

- */

-/*JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIII

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1)

-{

-    P_OLE_FN_3 fn;

-    jint rc;

-    

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIII\n");

-#endif

-

-    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];

-    rc = fn(ppVtbl, arg0, arg1);

-    return rc;

-}

-*/

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/win32/MSG;)I

- */

-/*

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_win32_MSG_2

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)

-{

-    MSG msg, *arg01=NULL;

-    P_OLE_FN_2 fn;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_MSG_2\n");

-#endif

-    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];

-    if (arg0) {

-        arg01=&msg;

-        getMSGFields(env, arg0, arg01);

-    }

-

-    rc = fn(ppVtbl, (jint)arg01);

-

-    if (arg0) {

-        setMSGFields(env, arg0, arg01);

-    }

-    return rc;

-}

-*/

-/* ------------- end obsolote OLE calls ------------- */

-

-/* ------------- deleted OLE calls ------------- */

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IILorg/eclipse/swt/internal/ole/win32/TYPEATTR;)I

- */

-/*

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_TYPEATTR_2

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)

-{

-    TYPEATTR typeattr, *arg01=NULL;

-    P_OLE_FN_2 fn;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_TYPEATTR_2\n");

-#endif

-    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];

-    if (arg0) {

-        arg01=&typeattr;

-        cacheTypeattrFids(env, arg0, &TypeattrFc);

-        getTypeattrFields(env, arg0, arg01, &TypeattrFc);

-    }

-

-    rc = fn(ppVtbl, (jint)arg01);

-    if (arg0) {

-        setTYPEATTRFields(env, arg0, arg01, &TypeattrFc);

-    }

-    return rc;

-}

-*/

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    MoveMemory

- * Signature: (ILorg/eclipse/swt/internal/ole/win32/EXCEPINFO;I)V

- */

-/* JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_EXCEPINFO_2I

-  (JNIEnv *env, jclass that, jint Destination, jobject SourcePtr, jint Length)

-{

-    EXCEPINFO excepinfo, *SourcePtr1=&excepinfo;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_EXCEPINFO_2I\n");

-#endif

-

-    if (SourcePtr) {

-        getEXCEPINFOFields(env, SourcePtr, SourcePtr1);

-    }

-

-    MoveMemory((PVOID)Destination, SourcePtr1, Length);

-}

-*/

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    ProgIDFromCLSID

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;[C)I

- */

-/* JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_ProgIDFromCLSID__Lorg_eclipse_swt_internal_ole_win32_GUID_2_3C

-  (JNIEnv *env, jclass that, jobject pclsid, jcharArray lplpszProgID)

-{

-    LPOLESTR *lplpszProgID1=NULL;

-    GUID guid, *pclsid1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_ProgIDFromCLSID__Lorg_eclipse_swt_internal_ole_win32_GUID_2_3C\n");

-#endif

-

-    if (pclsid) {

-        pclsid1=&guid;

-        getGUIDFields(env, pclsid, pclsid1);

-    }

-

-    if (lplpszProgID)

-        lplpszProgID1 = (LPOLESTR *)(*env)->GetCharArrayElements(env, lplpszProgID, NULL);

-

-    rc = (jint) ProgIDFromCLSID(pclsid1, lplpszProgID1);

-

-    if (lplpszProgID)

-        (*env)->ReleaseCharArrayElements(env, lplpszProgID, (jchar *)lplpszProgID1, 0);

-    

-    if (pclsid) {

-        setGUIDFields(env, pclsid, pclsid1);

-    }

-    return rc;

-}

-*/

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    ProgIDFromCLSID

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;[I)I

- */

- JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_ProgIDFromCLSID__Lorg_eclipse_swt_internal_ole_win32_GUID_2_3I

-  (JNIEnv *env, jclass that, jobject pclsid, jintArray lplpszProgID)

-{

-    LPOLESTR *lplpszProgID1=NULL;

-    GUID guid, *pclsid1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_ProgIDFromCLSID__Lorg_eclipse_swt_internal_ole_win32_GUID_2_3I\n");

-#endif

-

-    if (pclsid) {

-        pclsid1=&guid;

-        getGUIDFields(env, pclsid, pclsid1);

-    }

-

-    if (lplpszProgID)

-        lplpszProgID1 = (LPOLESTR *)(*env)->GetIntArrayElements(env, lplpszProgID, NULL);

-

-    rc = (jint) ProgIDFromCLSID(pclsid1, lplpszProgID1);

-

-    if (lplpszProgID)

-        (*env)->ReleaseIntArrayElements(env, lplpszProgID, (jint *)lplpszProgID1, 0);

-    

-    if (pclsid) {

-        setGUIDFields(env, pclsid, pclsid1);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VariantCopyInd

- * Signature: (II)I

- */

-/* JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VariantCopyInd

-  (JNIEnv *env, jclass that, jint pvarDest, jint pvarSrc)

-{

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "VariantCopyInd\n");

-#endif

-    return (jint) VariantCopyInd((VARIANT FAR*)pvarDest, (VARIANTARG FAR*)pvarSrc);

-}

-*/

-

-

-/* MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II removed after OS version 0.80 */

-/* 

- * Class:     org_eclipse_swt_internal_win32_OS

- * Method:    MoveMemory

- * Signature: (Lorg/eclipse/swt/internal/win32/NMHEADER;II)V

- */

-/* JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_win32_OS_MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II

-  (JNIEnv *env, jclass that, jobject Destination, jint Source, jint Length)

-{

-    NMHEADER nmheader, *lpDestination1=NULL;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II\n");

-#endif

-

-       MoveMemory((PVOID)&nmheader, (CONST VOID *)Source, Length);

-

-    if (Destination) {

-        lpDestination1 = &nmheader;

-        setNmheaderFields(env, Destination, lpDestination1);

-    }

-}

-*/

-

-/* SendMessage__IIILorg_eclipse_swt_internal_win32_HDITEM_2 removed after OS version 0.80 */

-/*

- * Class:     org_eclipse_swt_internal_win32_OS

- * Method:    SendMessage

- * Signature: (IIILorg/eclipse/swt/internal/win32/HDITEM;)I

- */

-/* JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_win32_OS_SendMessage__IIILorg_eclipse_swt_internal_win32_HDITEM_2

-  (JNIEnv *env, jclass that, jint hWnd, jint Msg, jint wParam, jobject lParam)

-{

-    HDITEM hditem, *lpParam1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "SendMessage__IIILorg_eclipse_swt_internal_win32_HDITEM_2\n");

-#endif

-

-    if (lParam) {

-        lpParam1 = &hditem;

-        getHditemFields(env, lParam, lpParam1);

-    }

-    rc = (jint) SendMessage((HWND)hWnd, Msg, wParam, (LPARAM)lpParam1);

-    if (lParam) {

-        setHditemFields(env, lParam, lpParam1);

-    }

-    return rc;

-}

-*/

-

-/* SendMessage__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2 removed after OS version 0.80 */

-/*

- * Class:     org_eclipse_swt_internal_win32_OS

- * Method:    SendMessage

- * Signature: (IIILorg/eclipse/swt/internal/win32/HDLAYOUT;)I

- */

-/* JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_win32_OS_SendMessage__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2

-  (JNIEnv *env, jclass that, jint hWnd, jint Msg, jint wParam, jobject lParam)

-{

-    HDLAYOUT hdlayout, *lpParam1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "SendMessage__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2\n");

-#endif

-

-    if (lParam) {

-        lpParam1 = &hdlayout;

-        getHdlayoutFields(env, lParam, lpParam1);

-    }

-    rc = (jint) SendMessage((HWND)hWnd, Msg, wParam, (LPARAM)lpParam1);

-    if (lParam) {

-        setHdlayoutFields(env, lParam, lpParam1);

-    }

-    return rc;

-}

-*/

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    CoGetInstanceFromIStorage

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/COSERVERINFO;Lorg/eclipse/swt/internal/ole/win32/GUID;IIIILorg/eclipse/swt/internal/ole/win32/MULTI_QI;)I

- */

-/*

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CoGetInstanceFromIStorage

-  (JNIEnv *env, jclass that, jobject pServerInfo, jobject pclsid, jint punkOuter, jint dwClsCtx,

-				 jint pstg, jint cmq, jobject rgmqResults)

-{

-    GUID guid, *pclsid1=NULL;

-    COSERVERINFO coserverinfo, *pServerInfo1=NULL;

-    MULTI_QI multi_qi, *rgmqResults1=NULL;

-    jint rc;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "CoGetInstanceFromIStorage\n");

-#endif

-

-    if (pclsid) {

-        pclsid1=&guid;

-        getGUIDFields(env, pclsid, pclsid1);

-    }

-    if (pServerInfo) {

-        pServerInfo1=&coserverinfo;

-        getCoserverinfoFields(env, pServerInfo, pServerInfo1);

-    }

-    if (rgmqResults) {

-        rgmqResults1=&multi_qi;

-        getMulti_qiFields(env, rgmqResults, rgmqResults1);

-    }

-

-    rc = CoGetInstanceFromIStorage(pServerInfo1, pclsid1, (IUnknown *)punkOuter, dwClsCtx, (IStorage *)pstg, cmq, rgmqResults1);

-

-    if (pclsid) {

-        setGUIDFields(env, pclsid, pclsid1);

-    }

-    if (pServerInfo) {

-        setCoserverinfoFields(env, pServerInfo, pServerInfo1);

-    }

-    if (rgmqResults) {

-        setMulti_qiFields(env, rgmqResults, rgmqResults1);

-    }

-    return rc;

-}

-*/

-

-/****************** ACCESSIBILITY ****************/

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    CreateStdAccessibleObject

- * Signature: (IILorg/eclipse/swt/internal/ole/win32/GUID;[I)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CreateStdAccessibleObject

-  (JNIEnv *env, jclass that, jint hwnd, jint idObject, jobject riidInterface, jintArray ppvObject)

-{

-    LPVOID *ppvObject1=NULL;

-	GUID guid, *riidInterface1=NULL;

-	jint rc = E_NOTIMPL;

-    HMODULE hm;

-    FARPROC fp;

-	

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "CreateStdAccessibleObject\n");

-#endif

-    

-    if (riidInterface) {

-        riidInterface1=&guid;

-        getGUIDFields(env, riidInterface, riidInterface1);

-    }

-

-	if (ppvObject)

-        ppvObject1 = (LPVOID *)(*env)->GetIntArrayElements(env, ppvObject, NULL);

-

-    /*

-    *  CreateStdAccessibleObject is an oleacc specific call.

-    *  If you link it into swt.dll, a system modal entry point not found dialog will

-    *  appear as soon as swt.dll is loaded. Here we check for the entry point and

-    *  only do the call if it exists.

-    */

-    if (!(hm = GetModuleHandle("oleacc.dll"))) hm = LoadLibrary("oleacc.dll");

-    if (hm && (fp = GetProcAddress(hm, "CreateStdAccessibleObject"))) {

-		rc = (jint)fp((HWND)hwnd, idObject, riidInterface1, ppvObject1);

-	}

-    

-    if (riidInterface) {

-        setGUIDFields(env, riidInterface, riidInterface1);

-    }

-    

-    if (ppvObject)

-        (*env)->ReleaseIntArrayElements(env, ppvObject, (jint *)ppvObject1, 0);

-        

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    LresultFromObject

- * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;II)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_LresultFromObject

-  (JNIEnv *env, jclass that, jobject riid, jint wParam, jint pAcc)

-{

-    GUID guid, *riid1=NULL;

-    jint rc = E_NOTIMPL;

-    HMODULE hm;

-    FARPROC fp;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "LresultFromObject\n");

-#endif

-

-    if (riid) {

-        riid1=&guid;

-        getGUIDFields(env, riid, riid1);

-    }

-    /*

-    *  LresultFromObject is an oleacc specific call.

-    *  If you link it into swt.dll, a system modal entry point not found dialog will

-    *  appear as soon as swt.dll is loaded. Here we check for the entry point and

-    *  only do the call if it exists.

-    */

-    if (!(hm = GetModuleHandle("oleacc.dll"))) hm = LoadLibrary("oleacc.dll");

-    if (hm && (fp = GetProcAddress(hm, "LresultFromObject"))) {

-		rc = (jint)fp(riid1, wParam, (LPUNKNOWN)pAcc);

-	}

-    if (riid) {

-        setGUIDFields(env, riid, riid1);

-    }

-    return rc;

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    NotifyWinEvent

- * Signature: (IIII)V

- */

-JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_NotifyWinEvent

-  (JNIEnv *env, jclass that, jint event, jint hwnd, jint idObject, jint idChild)

-{

-    HMODULE hm;

-    FARPROC fp;

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "NotifyWinEvent\n");

-#endif

-

-    /*

-    *  NotifyWinEvent is a Win2000 and Win98 specific call

-    *  If you link it into swt.dll a system modal entry point not found dialog will

-    *  appear as soon as swt.dll is loaded. Here we check for the entry point and

-    *  only do the call if it exists.

-    */

-    if ((hm=GetModuleHandle("user32.dll")) && (fp=GetProcAddress(hm, "NotifyWinEvent"))) {

-        (fp)((DWORD)event, (HWND)hwnd, idObject, idChild);

-//		NotifyWinEvent((DWORD)event, (HWND)hwnd, idObject, idChild);

-	}

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIIIII)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIIII

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-    P_OLE_FN_5 fn; /* this is a function that returns int */

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIIIII\n");

-#endif

-    fn = (P_OLE_FN_5)(*(int **)ppVtbl)[fnNumber];

-    return fn(ppVtbl, arg0, arg1, arg2, arg3); /* cast it to an OLE function returning int */

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIIIIII)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIIIII

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)

-{

-    P_OLE_FN_6 fn; /* this is a function that returns int */

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIIIIII\n");

-#endif

-    fn = (P_OLE_FN_6)(*(int **)ppVtbl)[fnNumber];

-    return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4); /* cast it to an OLE function returning int */

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIIIIIII)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIIIIII

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5)

-{

-    P_OLE_FN_7 fn; /* this is a function that returns int */

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIIIIIII\n");

-#endif

-    fn = (P_OLE_FN_7)(*(int **)ppVtbl)[fnNumber];

-    return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5); /* cast it to an OLE function returning int */

-}

-

-/*

- * Class:     org_eclipse_swt_internal_ole_win32_COM

- * Method:    VtblCall

- * Signature: (IIIIIIIIII)I

- */

-JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIIIIIIII

-  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7)

-{

-    P_OLE_FN_9 fn; /* this is a function that returns int */

-

-#ifdef DEBUG_CALL_PRINTS

-    fprintf(stderr, "COM_VtblCall__IIIIIIIIII\n");

-#endif

-    fn = (P_OLE_FN_9)(*(int **)ppVtbl)[fnNumber];

-    return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); /* cast it to an OLE function returning int */

-}

+/*******************************************************************************
+ * Copyright (c) 2000, 2003 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+#include "swt.h"
+#include "com_structs.h"
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    CLSIDFromProgID
+ * Signature: ([CLorg/eclipse/swt/internal/ole/win32/GUID;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CLSIDFromProgID
+  (JNIEnv *env, jclass that, jcharArray lpszProgID, jobject pclsid)
+{
+    LPCOLESTR lpszProgID1=NULL;
+    GUID guid, *pclsid1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "CLSIDFromProgID\n");
+#endif
+
+    if (pclsid) {
+        pclsid1=&guid;
+        getGUIDFields(env, pclsid, pclsid1);
+    }
+
+    if (lpszProgID)
+        lpszProgID1 = (LPCOLESTR)(*env)->GetCharArrayElements(env, lpszProgID, NULL);
+
+    rc = (jint) CLSIDFromProgID(lpszProgID1, pclsid1);
+
+    if (lpszProgID)
+        (*env)->ReleaseCharArrayElements(env, lpszProgID, (jchar *)lpszProgID1, 0);
+    
+    if (pclsid) {
+        setGUIDFields(env, pclsid, pclsid1);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    CLSIDFromString
+ * Signature: ([CLorg/eclipse/swt/internal/ole/win32/GUID;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CLSIDFromString
+  (JNIEnv *env, jclass that, jcharArray lpsz, jobject pclsid)
+{
+    LPOLESTR lpsz1=NULL;
+    GUID guid, *pclsid1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "CLSIDFromString\n");
+#endif
+    if (pclsid) {
+        pclsid1=&guid;
+        getGUIDFields(env, pclsid, pclsid1);
+    }
+    
+    if (lpsz)
+        lpsz1 = (LPOLESTR)(*env)->GetCharArrayElements(env, lpsz, NULL);
+
+    rc = CLSIDFromString(lpsz1, pclsid1);
+
+    if (lpsz)
+        (*env)->ReleaseCharArrayElements(env, lpsz, lpsz1, 0);
+
+    if (pclsid) {
+        setGUIDFields(env, pclsid, pclsid1);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    CoCreateInstance
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;IILorg/eclipse/swt/internal/ole/win32/GUID;[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CoCreateInstance
+  (JNIEnv *env, jclass that, jobject rclsid, jint pUnkOuter, jint dwClsContext, jobject riid, jintArray ppv)
+{
+    LPVOID *ppv1=NULL;
+    GUID guid1, guid2, *riid1=NULL, *rclsid1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "CoCreateInstance\n");
+#endif
+
+    if (rclsid) {
+        rclsid1=&guid2;
+        getGUIDFields(env, rclsid, rclsid1);
+    }
+    if (riid) {
+        riid1=&guid1;
+        getGUIDFields(env, riid, riid1);
+    }
+    
+    if (ppv)
+        ppv1 = (LPVOID *)(*env)->GetIntArrayElements(env, ppv, NULL);
+
+    rc = (jint) CoCreateInstance(rclsid1, (LPUNKNOWN)pUnkOuter, dwClsContext, riid1, ppv1);
+
+    if (ppv)
+        (*env)->ReleaseIntArrayElements(env, ppv, (jint *)ppv1, 0);
+
+    if (rclsid) {
+        setGUIDFields(env, rclsid, rclsid1);
+    }
+    if (riid) {
+        setGUIDFields(env, riid, riid1);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    CoFreeUnusedLibraries
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CoFreeUnusedLibraries
+  (JNIEnv *env, jclass that)
+{
+    CoFreeUnusedLibraries();
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    CoGetClassObject
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;IILorg/eclipse/swt/internal/ole/win32/GUID;[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CoGetClassObject
+  (JNIEnv *env, jclass that, jobject rclsid, jint dwClsContext, jint pServerInfo, 
+                    jobject riid, jintArray ppv)
+{
+    LPVOID *ppv1=NULL;
+    GUID guid1, *rclsid1=NULL;
+    GUID guid2, *riid1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "CoGetClassObject\n");
+#endif
+
+    if (rclsid) {
+        rclsid1=&guid1;
+        getGUIDFields(env, rclsid, rclsid1);
+    }
+    if (riid) {
+        riid1=&guid2;
+        getGUIDFields(env, riid, riid1);
+    }
+    if (ppv)
+        ppv1 = (LPVOID *)(*env)->GetIntArrayElements(env, ppv, NULL);
+
+    rc = (jint) CoGetClassObject(rclsid1, dwClsContext, (COSERVERINFO *)pServerInfo, riid1, ppv1);
+    if (ppv)
+        (*env)->ReleaseIntArrayElements(env, ppv, (jint *)ppv1, 0);
+
+    if (rclsid) {
+        setGUIDFields(env, rclsid, rclsid1);
+    }
+    if (riid) {
+        setGUIDFields(env, riid, riid1);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    CoLockObjectExternal
+ * Signature: (IZZ)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CoLockObjectExternal
+  (JNIEnv *env, jclass that, jint pUnk, jboolean fLock, jboolean fLastUnlockReleases)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "CoLockObjectExternal\n");
+#endif
+	return (jint) CoLockObjectExternal((IUnknown *)pUnk, (BOOL)fLock, (BOOL)fLastUnlockReleases);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    CoTaskMemAlloc
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CoTaskMemAlloc
+  (JNIEnv *env, jclass that, jint cb)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "CoTaskMemAlloc\n");
+#endif
+    return (jint) CoTaskMemAlloc((ULONG)cb);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    CoTaskMemFree
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CoTaskMemFree
+  (JNIEnv *env, jclass that, jint pv)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "CoTaskMemFree\n");
+#endif
+    CoTaskMemFree((LPVOID)pv);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    DoDragDrop
+ * Signature: (III[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_DoDragDrop
+  (JNIEnv *env, jclass that, jint pDataObject, jint pDropSource, jint dwOKEffect, jintArray pdwEffect)
+{
+    jint *pdwEffect1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "DoDragDrop\n");
+#endif
+
+    if (pdwEffect)
+        pdwEffect1 = (*env)->GetIntArrayElements(env, pdwEffect, NULL);
+
+    rc = DoDragDrop((IDataObject *)pDataObject, (IDropSource *)pDropSource, dwOKEffect, pdwEffect1);
+
+    if (pdwEffect)
+        (*env)->ReleaseIntArrayElements(env, pdwEffect, pdwEffect1, 0);
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    GetClassFile
+ * Signature: ([CLorg/eclipse/swt/internal/ole/win32/GUID;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_GetClassFile
+  (JNIEnv *env, jclass that, jcharArray szFileName, jobject clsid)
+{
+    LPCWSTR szFileName1=NULL;
+    GUID guid, *clsid1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "GetClassFile\n");
+#endif
+    if (clsid) {
+        clsid1=&guid;
+        getGUIDFields(env, clsid, clsid1);
+    }
+    
+    if (szFileName)
+        szFileName1 = (LPCWSTR)(*env)->GetCharArrayElements(env, szFileName, NULL);
+
+    rc = GetClassFile(szFileName1, clsid1);
+
+    if (szFileName)
+        (*env)->ReleaseCharArrayElements(env, szFileName, (jchar *)szFileName1, 0);
+
+    if (clsid) {
+        setGUIDFields(env, clsid, clsid1);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    IIDFromString
+ * Signature: ([CLorg/eclipse/swt/internal/ole/win32/GUID;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_IIDFromString
+  (JNIEnv *env, jclass that, jcharArray lpsz, jobject lpiid)
+{
+    LPOLESTR lpsz1=NULL;
+    GUID guid, *lpiid1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "IIDFromString\n");
+#endif
+
+    if (lpsz)
+        lpsz1 = (LPOLESTR)(*env)->GetCharArrayElements(env, lpsz, NULL);
+        
+    if (lpiid) {
+        lpiid1=&guid;
+        getGUIDFields(env, lpiid, lpiid1);
+    }
+
+    rc = (jint) IIDFromString(lpsz1, lpiid1);
+
+    if (lpiid) {
+        setGUIDFields(env, lpiid, lpiid1);
+    }
+
+    if (lpsz)
+        (*env)->ReleaseCharArrayElements(env, lpsz, (jchar *)lpsz1, 0);
+
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    IsEqualGUID
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;Lorg/eclipse/swt/internal/ole/win32/GUID;)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_IsEqualGUID
+  (JNIEnv *env, jclass that, jobject rguid1, jobject rguid2)
+{
+    GUID guid1, *rguid11=NULL;
+    GUID guid2, *rguid21=NULL;
+    jboolean rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "IsEqualGUID\n");
+#endif
+
+    if (rguid1) {
+        rguid11=&guid1;
+        getGUIDFields(env, rguid1, rguid11);
+    }
+
+    if (rguid2) {
+        rguid21=&guid2;
+        getGUIDFields(env, rguid2, rguid21);
+    }
+
+    rc = (jboolean) IsEqualGUID(rguid11, rguid21);
+
+    if (rguid1) {
+        setGUIDFields(env, rguid1, rguid11);
+    }
+    if (rguid2) {
+        setGUIDFields(env, rguid2, rguid21);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (ILorg/eclipse/swt/internal/ole/win32/FORMATETC;I)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_FORMATETC_2I
+  (JNIEnv *env, jclass that, jint Destination, jobject Source, jint Length)
+{
+    FORMATETC formatetc, *Source1=NULL;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_FORMATETC_2I\n");
+#endif
+
+    if (Source) {
+        Source1=&formatetc;
+        getFORMATETCFields(env, Source, Source1);
+    }
+    MoveMemory((PVOID)Destination, Source1, Length);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (ILorg/eclipse/swt/internal/ole/win32/GUID;I)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_GUID_2I
+  (JNIEnv *env, jclass that, jint DestinationPtr, jobject Source, jint Length)
+{
+    GUID guid, *Source1=NULL;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "MoveMemory__ILorg_eclipse_swt_internal_ole_win32_GUID_2I\n");
+#endif
+
+    if (Source) {
+        Source1=&guid;
+        getGUIDFields(env, Source, Source1);
+    }
+    MoveMemory((PVOID)DestinationPtr, Source1, Length);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (ILorg/eclipse/swt/internal/ole/win32/OLEINPLACEFRAMEINFO;I)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_OLEINPLACEFRAMEINFO_2I
+  (JNIEnv *env, jclass that, jint DestinationPtr, jobject Source, jint Length)
+{
+    OLEINPLACEFRAMEINFO oleinplaceframeinfo, *Source1=&oleinplaceframeinfo;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_OLEINPLACEFRAMEINFO_2I\n");
+#endif
+
+    if (Source) {
+        getOLEINPLACEFRAMEINFOFields(env, Source, Source1);
+    }
+
+    MoveMemory((PVOID)DestinationPtr, Source1, Length);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (ILorg/eclipse/swt/internal/ole/win32/STATSTG;I)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_STATSTG_2I
+  (JNIEnv *env, jclass that, jint Destination, jobject Source, jint Length)
+{
+    STATSTG statstg, *Source1=NULL;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_STATSTG_2I\n");
+#endif
+
+    if (Source) {
+        Source1=&statstg;
+        getSTATSTGFields(env, Source, Source1);
+    }
+    MoveMemory((PVOID)Destination, Source1, Length);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (ILorg/eclipse/swt/internal/ole/win32/STGMEDIUM;I)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_STGMEDIUM_2I
+  (JNIEnv *env, jclass that, jint Destination, jobject Source, jint Length)
+{
+    STGMEDIUM stgmedium, *Source1=NULL;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_STGMEDIUM_2I\n");
+#endif
+
+    if (Source) {
+        Source1=&stgmedium;
+        getSTGMEDIUMFields(env, Source, Source1);
+    }
+    MoveMemory((PVOID)Destination, Source1, Length);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/STGMEDIUM;II)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_STGMEDIUM_2II
+  (JNIEnv *env, jclass that, jobject Destination, jint SourcePtr, jint Length)
+{
+    STGMEDIUM stgmedium, *Destination1=&stgmedium;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_STGMEDIUM_2II\n");
+#endif
+
+	MoveMemory((PVOID)Destination1, (CONST VOID *)SourcePtr, Length);
+
+    if (Destination) {
+        setSTGMEDIUMFields(env, Destination, Destination1);
+    }
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/DISPPARAMS;II)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_DISPPARAMS_2II
+  (JNIEnv *env, jclass that, jobject Destination, jint SourcePtr, jint Length)
+{
+    DISPPARAMS dispparams, *Destination1=&dispparams;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_DISPPARAMS_2II\n");
+#endif
+
+    MoveMemory((PVOID)Destination1, (CONST VOID *)SourcePtr, Length);
+
+    if (Destination) {
+        setDISPPARAMSFields(env, Destination, Destination1);
+    }
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/FORMATETC;II)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_FORMATETC_2II
+  (JNIEnv *env, jclass that, jobject Destination, jint Source, jint Length)
+{
+    FORMATETC formatetc, *Destination1=&formatetc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_FORMATETC_2II\n");
+#endif
+
+    MoveMemory((PVOID)Destination1, (CONST VOID *)Source, Length);
+
+    if (Destination) {
+        setFORMATETCFields(env, Destination, Destination1);
+    }
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;II)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_GUID_2II
+  (JNIEnv *env, jclass that, jobject Destination, jint SourcePtr, jint Length)
+{
+    GUID guid, *Destination1=&guid;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_GUID_2II\n");
+#endif
+
+    MoveMemory((PVOID)Destination1, (CONST VOID *)SourcePtr, Length);
+
+    if (Destination) {
+        setGUIDFields(env, Destination, Destination1);
+    }
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/STATSTG;II)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_STATSTG_2II
+  (JNIEnv *env, jclass that, jobject Destination, jint Source, jint Length)
+{
+    STATSTG statstg, *Destination1=&statstg;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_STATSTG_2II\n");
+#endif
+
+    MoveMemory((PVOID)Destination1, (CONST VOID *)Source, Length);
+
+    if (Destination) {
+        setSTATSTGFields(env, Destination, Destination1);
+    }
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/TYPEATTR;II)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_TYPEATTR_2II
+  (JNIEnv *env, jclass that, jobject Destination, jint SourcePtr, jint Length)
+{
+    TYPEATTR typeattr, *Destination1=&typeattr;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_TYPEATTR_2II\n");
+#endif
+    MoveMemory((PVOID)Destination1, (CONST VOID *)SourcePtr, Length);
+    if (Destination) {
+        setTYPEATTRFields(env, Destination, Destination1);
+    }
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (Lorg/eclipse/swt/internal/win32/RECT;II)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_win32_RECT_2II
+  (JNIEnv *env, jclass that, jobject Destination, jint Source, jint Length)
+{
+    RECT rect, *lpDestination1=NULL;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__Lorg_eclipse_swt_internal_win32_RECT_2II\n");
+#endif
+
+       MoveMemory((PVOID)&rect, (CONST VOID *)Source, Length);
+
+    if (Destination) {
+        lpDestination1 = ▭
+        setRECTFields(env, Destination, lpDestination1);
+    }
+}
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/FUNCDESC1;II)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_FUNCDESC1_2II
+  (JNIEnv *env, jclass that, jobject Destination, jint Source, jint Length)
+{
+    FUNCDESC funcdesc, *lpDestination1=NULL;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_FUNCDESC1_2II\n");
+#endif
+
+    MoveMemory((PVOID)&funcdesc, (CONST VOID *)Source, Length);
+
+    if (Destination) {
+        lpDestination1 = &funcdesc;
+        setFUNCDESC1Fields(env, Destination, lpDestination1);
+    }
+}
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/FUNCDESC2;II)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_FUNCDESC2_2II
+  (JNIEnv *env, jclass that, jobject Destination, jint Source, jint Length)
+{
+    FUNCDESC funcdesc, *lpDestination1=NULL;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_FUNCDESC2_2II\n");
+#endif
+
+    MoveMemory((PVOID)&funcdesc, (CONST VOID *)Source, Length);
+
+    if (Destination) {
+        lpDestination1 = &funcdesc;
+        setFUNCDESC2Fields(env, Destination, lpDestination1);
+    }
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/VARDESC1;II)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_VARDESC1_2II
+  (JNIEnv *env, jclass that, jobject Destination, jint Source, jint Length)
+{
+    VARDESC vardesc, *lpDestination1=NULL;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_VARDESC1_2II\n");
+#endif
+
+       MoveMemory((PVOID)&vardesc, (CONST VOID *)Source, Length);
+
+    if (Destination) {
+        lpDestination1 = &vardesc;
+        setVARDESC1Fields(env, Destination, lpDestination1);
+    }
+}
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/VARDESC2;II)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_VARDESC2_2II
+  (JNIEnv *env, jclass that, jobject Destination, jint Source, jint Length)
+{
+    VARDESC vardesc, *lpDestination1=NULL;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__Lorg_eclipse_swt_internal_ole_win32_VARDESC2_2II\n");
+#endif
+
+       MoveMemory((PVOID)&vardesc, (CONST VOID *)Source, Length);
+
+    if (Destination) {
+        lpDestination1 = &vardesc;
+        setVARDESC2Fields(env, Destination, lpDestination1);
+    }
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    OleCreate
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;Lorg/eclipse/swt/internal/ole/win32/GUID;ILorg/eclipse/swt/internal/ole/win32/FORMATETC;II[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleCreate
+  (JNIEnv *env, jclass that, jobject rclsid, jobject riid, jint renderopt, 
+                             jobject pFormatEtc, jint pClientSite, jint pStg, jintArray ppvObject)
+{
+    LPVOID *ppvObject1=NULL;
+    GUID guid1, *rclsid1=NULL;
+    GUID guid2, *riid1=NULL;
+    FORMATETC formatec, *pFormatEtc1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "OleCreate\n");
+#endif
+
+    if (rclsid) {
+        rclsid1=&guid1;
+        getGUIDFields(env, rclsid, rclsid1);
+    }
+    if (riid) {
+        riid1=&guid2;
+        getGUIDFields(env, riid, riid1);
+    }
+    if (pFormatEtc) {
+        pFormatEtc1 = &formatec;
+        getFORMATETCFields(env, pFormatEtc, pFormatEtc1);
+    }
+
+    if (ppvObject)
+        ppvObject1 = (LPVOID *)(*env)->GetIntArrayElements(env, ppvObject, NULL);
+
+    rc = (jint) OleCreate(rclsid1, riid1, renderopt, pFormatEtc1, (IOleClientSite * )pClientSite, (IStorage * )pStg, ppvObject1);
+
+    if (ppvObject)
+        (*env)->ReleaseIntArrayElements(env, ppvObject, (jint *)ppvObject1, 0);
+    
+/*  all of these objects are inputs so we don't not need to set the
+    fields back
+*/
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    OleCreateFromFile
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;[CLorg/eclipse/swt/internal/ole/win32/GUID;ILorg/eclipse/swt/internal/ole/win32/FORMATETC;II[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleCreateFromFile
+  (JNIEnv *env, jclass that, jobject rclsid, jcharArray lpszFileName, jobject riid, jint renderopt, 
+			jobject pFormatEtc, jint pClientSite, jint pStg, jintArray ppvObj)
+{
+    LPVOID *ppvObj1=NULL;
+    LPCOLESTR lpszFileName1=NULL;
+    GUID guid1, *rclsid1=NULL;
+    GUID guid2, *riid1=NULL;
+    FORMATETC formatec, *pFormatEtc1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "OleCreateFromFile\n");
+#endif
+    
+    if (rclsid) {
+        rclsid1=&guid1;
+        getGUIDFields(env, rclsid, rclsid1);
+    }
+
+    if (riid) {
+        riid1=&guid2;
+        getGUIDFields(env, riid, riid1);
+    }
+    if (pFormatEtc) {
+        pFormatEtc1 = &formatec;
+        getFORMATETCFields(env, pFormatEtc, pFormatEtc1);
+    }
+
+    if (lpszFileName)
+        lpszFileName1 = (LPCOLESTR)(*env)->GetCharArrayElements(env, lpszFileName, NULL);
+
+    if (ppvObj)
+        ppvObj1 = (LPVOID *)(*env)->GetIntArrayElements(env, ppvObj, NULL);
+
+    rc = (jint) OleCreateFromFile(rclsid1, lpszFileName1, riid1, renderopt, pFormatEtc1, (LPOLECLIENTSITE)pClientSite, (LPSTORAGE)pStg, ppvObj1);
+
+    if (ppvObj)
+        (*env)->ReleaseIntArrayElements(env, ppvObj, (jint *)ppvObj1, 0);
+    
+    if (lpszFileName)
+        (*env)->ReleaseCharArrayElements(env, lpszFileName, (jchar *)lpszFileName1, 0);
+
+/*  all of these objects are inputs so we don't not need to set the
+    fields back
+*/
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    OleCreatePropertyFrame
+ * Signature: (III[CI[IIIIII)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleCreatePropertyFrame
+  (JNIEnv *env, jclass that, jint hwndOwner, jint x, jint y, jcharArray lpszCaption, jint cObjects, jintArray lplpUnk, jint cPages, jint lpPageClsID, jint lcid, jint dwReserved, jint lpvReserved)
+{
+    LPCOLESTR lpszCaption1=NULL;
+    jint *lplpUnk1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "OleCreatePropertyFrame\n");
+#endif
+
+    if (lpszCaption)
+        lpszCaption1 = (LPCOLESTR)(*env)->GetCharArrayElements(env, lpszCaption, NULL);
+
+    if (lplpUnk)
+        lplpUnk1 = (*env)->GetIntArrayElements(env, lplpUnk, NULL);
+
+    rc = (jint) OleCreatePropertyFrame((HWND)hwndOwner, x, y, lpszCaption1, cObjects, (LPUNKNOWN FAR*)lplpUnk1, cPages, (LPCLSID)lpPageClsID, (LCID)lcid, dwReserved, (LPVOID)lpvReserved);
+
+    if (lplpUnk)
+        (*env)->ReleaseIntArrayElements(env, lplpUnk, (jint *)lplpUnk1, 0);
+
+    if (lpszCaption)
+        (*env)->ReleaseCharArrayElements(env, lpszCaption, (jchar *)lpszCaption1, 0);
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    OleIsRunning
+ * Signature: (I)Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleIsRunning
+  (JNIEnv *env, jclass that, jint pObject)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "OleIsRunning\n");
+#endif
+    return (jboolean) OleIsRunning((LPOLEOBJECT)pObject);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    OleLoad
+ * Signature: (ILorg/eclipse/swt/internal/ole/win32/GUID;I[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleLoad
+  (JNIEnv *env, jclass that, jint pStg, jobject riid, jint pClientSite, jintArray ppvObj)
+{
+    LPVOID *ppvObj1=NULL;
+    GUID guid, *riid1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "OleLoad\n");
+#endif
+    if (riid) {
+        riid1=&guid;
+        getGUIDFields(env, riid, riid1);
+    }
+    
+    if (ppvObj)
+        ppvObj1 = (LPVOID *)(*env)->GetIntArrayElements(env, ppvObj, NULL);
+
+    rc = (jint) OleLoad((IStorage *)pStg, riid1, (IOleClientSite *)pClientSite, ppvObj1); /* cast it to an OLE function returning int */
+
+    if (ppvObj)
+        (*env)->ReleaseIntArrayElements(env, ppvObj, (jint *)ppvObj1, 0);
+
+    if (riid) {
+        setGUIDFields(env, riid, riid1);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    OleRun
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleRun
+  (JNIEnv *env, jclass that, jint pUnknown)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "OleRun\n");
+#endif
+    return (jint) OleRun((LPUNKNOWN)pUnknown);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    OleSave
+ * Signature: (IIZ)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleSave
+  (JNIEnv *env, jclass that, jint pPS, jint pStg, jboolean fSameAsLoad)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "OleSave\n");
+#endif
+    return (jint) OleSave((IPersistStorage *)pPS, (IStorage *)pStg, fSameAsLoad);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    OleSetContainedObject
+ * Signature: (IZ)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleSetContainedObject
+  (JNIEnv *env, jclass that, jint pUnk, jboolean fContained)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "OleSetContainedObject\n");
+#endif
+    return (jint) OleSetContainedObject((LPUNKNOWN)pUnk, fContained);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    OleSetMenuDescriptor
+ * Signature: (IIIII)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleSetMenuDescriptor
+  (JNIEnv *env, jclass that, jint holemenu, jint hwndFrame, jint hwndActiveObject, jint lpFrame, jint lpActiveObj)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "OleSetMenuDescriptor\n");
+#endif
+    return (jint) OleSetMenuDescriptor((HOLEMENU)holemenu, (HWND)hwndFrame, (HWND)hwndActiveObject, (LPOLEINPLACEFRAME)lpFrame, (LPOLEINPLACEACTIVEOBJECT)lpActiveObj);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    OleTranslateColor
+ * Signature: (II[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleTranslateColor
+  (JNIEnv *env, jclass that, jint clr, jint hpal, jintArray pcolorref)
+{
+    jint *pcolorref1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "OleTranslateColor\n");
+#endif
+
+    if (pcolorref)
+        pcolorref1 = (*env)->GetIntArrayElements(env, pcolorref, NULL);
+
+    rc = (jint) OleTranslateColor((OLE_COLOR)clr, (HPALETTE)hpal, (COLORREF *)pcolorref1);
+
+    if (pcolorref)
+        (*env)->ReleaseIntArrayElements(env, pcolorref, pcolorref1, 0);
+
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    RegisterDragDrop
+ * Signature: (II)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_RegisterDragDrop
+  (JNIEnv *env, jclass that, jint hwnd, jint pDropTarget)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "RegisterDragDrop\n");
+#endif
+    return (jint) RegisterDragDrop((HWND)hwnd, (IDropTarget *)pDropTarget);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    RevokeDragDrop
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_RevokeDragDrop
+  (JNIEnv *env, jclass that, jint hwnd)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "RevokeDragDrop\n");
+#endif
+    return (jint) RevokeDragDrop((HWND)hwnd);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    StgCreateDocfile
+ * Signature: ([CII[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_StgCreateDocfile
+  (JNIEnv *env, jclass that, jcharArray pwcsName, jint grfMode, jint reserved, jintArray ppstgOpen)
+{
+    jchar *pwcsName1=NULL;
+    IStorage **ppstgOpen1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "StgCreateDocfile\n");
+#endif
+
+    if (pwcsName)
+        pwcsName1 = (*env)->GetCharArrayElements(env, pwcsName, NULL);
+
+    if (ppstgOpen)
+        ppstgOpen1 = (IStorage **)(*env)->GetIntArrayElements(env, ppstgOpen, NULL);
+
+    rc = (jint) StgCreateDocfile(pwcsName1, grfMode, reserved, ppstgOpen1);
+
+    if (ppstgOpen)
+        (*env)->ReleaseIntArrayElements(env, ppstgOpen, (jint *)ppstgOpen1, 0);
+
+    if (pwcsName)
+        (*env)->ReleaseCharArrayElements(env, pwcsName, pwcsName1, 0);
+
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    StgIsStorageFile
+ * Signature: ([C)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_StgIsStorageFile
+  (JNIEnv *env, jclass that, jcharArray pwcsName)
+{
+    const WCHAR *pwcsName1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "StgIsStorageFile\n");
+#endif
+
+    if (pwcsName)
+        pwcsName1 = (const WCHAR *)(*env)->GetCharArrayElements(env, pwcsName, NULL);
+
+    rc = (jint)StgIsStorageFile(pwcsName1);
+
+    if (pwcsName)
+        (*env)->ReleaseCharArrayElements(env, pwcsName, (jchar *)pwcsName1, 0);
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    StgOpenStorage
+ * Signature: ([CIIII[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_StgOpenStorage
+  (JNIEnv *env, jclass that, jcharArray pwcsName, jint pstgPriority, jint grfMode, jint snbExclude, jint reserved, jintArray ppstgOpen)
+{
+    const WCHAR *pwcsName1=NULL;
+    IStorage **ppstgOpen1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "StgOpenStorage\n");
+#endif
+
+    if (pwcsName)
+        pwcsName1 = (const WCHAR *)(*env)->GetCharArrayElements(env, pwcsName, NULL);
+
+    if (ppstgOpen)
+        ppstgOpen1 = (IStorage **)(*env)->GetIntArrayElements(env, ppstgOpen, NULL);
+
+    rc = (jint) StgOpenStorage(pwcsName1, (IStorage *)pstgPriority, grfMode, (SNB)snbExclude, reserved, ppstgOpen1);
+
+    if (ppstgOpen)
+        (*env)->ReleaseIntArrayElements(env, ppstgOpen, (jint *)ppstgOpen1, 0);
+
+    if (pwcsName)
+        (*env)->ReleaseCharArrayElements(env, pwcsName, (jchar *)pwcsName1, 0);
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    StringFromCLSID
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_StringFromCLSID
+  (JNIEnv *env, jclass that, jobject rclsid, jintArray ppsz)
+{
+    LPOLESTR *ppsz1=NULL;
+    GUID guid, *rclsid1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_StringFromCLSID\n");
+#endif
+
+    if (rclsid) {
+        rclsid1=&guid;
+        getGUIDFields(env, rclsid, rclsid1);
+    }
+
+    if (ppsz)
+        ppsz1 = (LPOLESTR *)(*env)->GetIntArrayElements(env, ppsz, NULL);
+
+    rc = (jint) StringFromCLSID(rclsid1, ppsz1);
+
+    if (ppsz)
+        (*env)->ReleaseIntArrayElements(env, ppsz, (jint *)ppsz1, 0);
+    
+    if (rclsid) {
+        setGUIDFields(env, rclsid, rclsid1);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    SysAllocString
+ * Signature: ([C)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_SysAllocString
+   (JNIEnv *env, jclass that, jcharArray sz0)
+{
+	jchar *sz01=NULL;
+	jint rc;
+	
+#ifdef DEBUG_CALL_PRINTS
+	fprintf(stderr, "SysAllocString\n");
+#endif
+	if (sz0)
+		sz01 = (*env)->GetCharArrayElements(env, sz0, NULL);
+	rc = (jint) SysAllocString( (OLECHAR *) sz01);
+	if (sz0)
+		(*env)->ReleaseCharArrayElements(env, sz0, sz01, 0);
+	return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    SysFreeString
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_SysFreeString
+   (JNIEnv *env, jclass that, jint bstr)
+{
+#ifdef DEBUG_CALL_PRINTS
+	fprintf(stderr, "SysFreeString\n");
+#endif
+	SysFreeString((BSTR)bstr);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    SysStringByteLen
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_SysStringByteLen
+  (JNIEnv *env, jclass that, jint bstr)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "SysStringByteLen\n");
+#endif
+    return (jint) SysStringByteLen((BSTR)bstr);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VariantChangeType
+ * Signature: (IISS)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VariantChangeType
+  (JNIEnv *env, jclass that, jint pvargDest, jint pvarSrc, jshort wFlags, jshort vt)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "VariantChangeType\n");
+#endif
+    return (jint) VariantChangeType((VARIANTARG FAR* )pvargDest, (VARIANTARG FAR* )pvarSrc, wFlags, (VARTYPE) vt);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VariantClear
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VariantClear
+  (JNIEnv *env, jclass that, jint pvarg)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "VariantClear\n");
+#endif
+    return (jint) VariantClear((VARIANTARG FAR* ) pvarg);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VariantInit
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VariantInit
+  (JNIEnv *env, jclass that, jint pvarg)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "VariantInit\n");
+#endif
+    VariantInit((VARIANTARG FAR*)pvarg);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (II)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__II
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl)
+{
+    P_OLE_FN_1 fn; /* this is a function that returns int */
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__II\n");
+#endif
+    fn = (P_OLE_FN_1)(*(int **)ppVtbl)[fnNumber];
+    return fn(ppVtbl); /* cast it to an OLE function returning int */
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (II[C)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__II_3C
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jcharArray arg0)
+{
+    P_OLE_FN_2 fn;
+	jchar *arg01=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__II_3C\n");
+#endif
+
+    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];
+
+	if (arg0)
+		arg01 = (*env)->GetCharArrayElements(env, arg0, NULL);
+
+	rc = fn(ppVtbl, (jint)arg01);
+
+	if (arg0)
+		(*env)->ReleaseCharArrayElements(env, arg0, arg01, 0);
+
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (II[C[C)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__II_3C_3C
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jcharArray arg0, jcharArray arg1)
+{
+    P_OLE_FN_3 fn; /* this is a function that returns int */
+    jchar *arg01=NULL, *arg11=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__II_3C_3C\n");
+#endif
+
+    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];
+
+    if (arg0)
+        arg01 = (*env)->GetCharArrayElements(env, arg0, NULL);
+
+    if (arg1)
+        arg11 = (*env)->GetCharArrayElements(env, arg1, NULL);
+
+    rc = fn(ppVtbl, (jint)arg01, (jint)arg11); /* cast it to an OLE function returning int */
+
+    if (arg1)
+        (*env)->ReleaseCharArrayElements(env, arg1, arg11, 0);
+
+    if (arg0)
+        (*env)->ReleaseCharArrayElements(env, arg0, arg01, 0);
+
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (II[CI)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__II_3CI
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jcharArray arg0, jint arg1)
+{
+    P_OLE_FN_3 fn; /* this is a function that returns int */
+    jchar *arg01=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__II_3CI\n");
+#endif
+
+    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];
+
+    if (arg0)
+        arg01 = (*env)->GetCharArrayElements(env, arg0, NULL);
+    
+    rc = fn(ppVtbl, (jint)arg01, arg1);
+
+    if (arg0)
+        (*env)->ReleaseCharArrayElements(env, arg0, arg01, 0);
+
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (II[CIII[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__II_3CIII_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jcharArray arg0, jint arg1, jint arg2, jint arg3, jintArray arg4)
+{
+    P_OLE_FN_6 fn; /* this is a function that returns int */
+    jchar *arg01=NULL;
+    jint *arg41=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__II_3CIII_3I\n");
+#endif
+
+    fn = (P_OLE_FN_6)(*(int **)ppVtbl)[fnNumber];
+
+    if (arg0)
+        arg01 = (*env)->GetCharArrayElements(env, arg0, NULL);
+    if (arg4)
+        arg41 = (*env)->GetIntArrayElements(env, arg4, NULL);
+
+    rc = fn(ppVtbl, (jint)arg01, arg1, arg2, arg3, (jint)arg41); /* cast it to an OLE function returning int */
+
+    if (arg4)
+        (*env)->ReleaseIntArrayElements(env, arg4, arg41, 0);
+    if (arg0)
+        (*env)->ReleaseCharArrayElements(env, arg0, arg01, 0);
+
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (II[CIIII[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__II_3CIIII_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jcharArray arg0, jint arg1, jint arg2, jint arg3, jint arg4, jintArray arg5)
+{
+    P_OLE_FN_7 fn; /* this is a function that returns int */    jchar *arg01=NULL;
+    jint *arg51=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__II_3CIIII_3I\n");
+#endif
+
+    fn = (P_OLE_FN_7)(*(int **)ppVtbl)[fnNumber];
+
+    if (arg0)
+        arg01 = (*env)->GetCharArrayElements(env, arg0, NULL);
+    if (arg5)
+        arg51 = (*env)->GetIntArrayElements(env, arg5, NULL);
+
+    rc = fn(ppVtbl, (jint)arg01, arg1, arg2, arg3, arg4, (jint)arg51); /* cast it to an OLE function returning int */
+
+    if (arg5)
+        (*env)->ReleaseIntArrayElements(env, arg5, arg51, 0);
+    if (arg0)
+        (*env)->ReleaseCharArrayElements(env, arg0, arg01, 0);
+
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (II[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__II_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jintArray arg0)
+{
+    P_OLE_FN_2 fn; /* this is a function that returns int */
+    jint *arg01=NULL;
+    jint rc;
+    
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__II_3I\n");
+#endif
+
+    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];
+
+    if (arg0)
+        arg01 = (*env)->GetIntArrayElements(env, arg0, NULL);
+
+    rc = fn(ppVtbl, (jint)arg01); /* cast it to an OLE function returning int */
+
+    if (arg0)
+        (*env)->ReleaseIntArrayElements(env, arg0, arg01, 0);
+
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (III)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__III
+   (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0)
+{
+	P_OLE_FN_2 fn; /* this is a function that returns int */
+	jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+	fprintf(stderr, "COM_VtblCall__III\n");
+#endif
+
+	fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];
+
+	rc = fn(ppVtbl, arg0); /* cast it to an OLE function returning int */
+	return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIII)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIII
+   (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1)
+{
+	P_OLE_FN_3 fn; /* this is a function that returns int */
+	jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+	fprintf(stderr, "COM_VtblCall__IIII\n");
+#endif
+
+	fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];
+
+	rc = fn(ppVtbl, arg0, arg1); /* cast it to an OLE function returning int */
+	return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (III[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__III_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jintArray arg1)
+{
+    P_OLE_FN_3 fn;    
+
+    jint *arg11=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__III_3I\n");
+#endif
+
+    fn = (P_OLE_FN_3)(*((jint **)ppVtbl))[fnNumber];
+
+    if (arg1)
+        arg11 = (*env)->GetIntArrayElements(env, arg1, NULL);
+
+    rc = fn(ppVtbl, arg0, (jint)arg11); 
+
+    if (arg1)
+        (*env)->ReleaseIntArrayElements(env, arg1, arg11, 0);
+
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIII[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIII_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jintArray arg2)
+{
+    P_OLE_FN_4 fn; /* this is a function that returns int */
+    jint *arg21=NULL;
+    jint rc;
+    
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIII_3I\n");
+#endif
+
+    fn = (P_OLE_FN_4)(*(int **)ppVtbl)[fnNumber];
+
+    if (arg2)
+        arg21 = (*env)->GetIntArrayElements(env, arg2, NULL);
+
+    rc = fn(ppVtbl, arg0, arg1, (jint)arg21); /* cast it to an OLE function returning int */
+
+    if (arg2)
+        (*env)->ReleaseIntArrayElements(env, arg2, arg21, 0);
+
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIIII)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIII
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jint arg2)
+{
+    P_OLE_FN_4 fn; /* this is a function that returns int */
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIIII\n");
+#endif
+
+    fn = (P_OLE_FN_4)(*(int **)ppVtbl)[fnNumber];
+    return fn(ppVtbl, arg0, arg1, arg2);;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIIII[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIII_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jint arg2, jintArray arg3)
+{
+    P_OLE_FN_5 fn; /* this is a function that returns int */
+    jint *arg31=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "VtblCall__IIIII_3I\n");
+#endif
+
+    fn = (P_OLE_FN_5)(*(int **)ppVtbl)[fnNumber];
+
+    if (arg3)
+        arg31 = (*env)->GetIntArrayElements(env, arg3, NULL);
+    
+    rc = fn(ppVtbl, arg0, arg1, arg2, (jint)arg31);
+
+    if (arg3)
+        (*env)->ReleaseIntArrayElements(env, arg3, arg31, 0);
+
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIIIII[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIIII_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jint arg2, jint arg3, jintArray arg4)
+{
+    P_OLE_FN_6 fn;
+    jint *arg41=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__II_3CIIII_3I\n");
+#endif
+
+    fn = (P_OLE_FN_6)(*(int **)ppVtbl)[fnNumber];
+    if (arg4)
+        arg41 = (*env)->GetIntArrayElements(env, arg4, NULL);
+    
+    rc = fn(ppVtbl, arg0, arg1, arg2, arg3, (jint)arg41); 
+
+    if (arg4)
+        (*env)->ReleaseIntArrayElements(env, arg4, arg41, 0);
+
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIIIIII[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIIIII_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jintArray arg5)
+{
+    P_OLE_FN_7 fn;    
+
+    jint *arg51=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIIIIII_3I\n");
+#endif
+
+    fn = (P_OLE_FN_7)(*((jint **)ppVtbl))[fnNumber];
+
+    if (arg5)
+        arg51 = (*env)->GetIntArrayElements(env, arg5, NULL);
+
+    rc = fn(ppVtbl, arg0, arg1, arg2, arg3, arg4, (jint)arg51); 
+
+    if (arg5)
+        (*env)->ReleaseIntArrayElements(env, arg5, arg51, 0);
+
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIIILorg/eclipse/swt/internal/ole/win32/DVTARGETDEVICE;Lorg/eclipse/swt/internal/win32/SIZE;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIILorg_eclipse_swt_internal_ole_win32_DVTARGETDEVICE_2Lorg_eclipse_swt_internal_win32_SIZE_2
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jobject arg2, jobject arg3)
+{
+    DVTARGETDEVICE dvtargetdevice, *arg21=NULL;
+    SIZE size, *arg31=NULL;
+    P_OLE_FN_5 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIIILorg_eclipse_swt_internal_ole_win32_DVTARGETDEVICE_2Lorg_eclipse_swt_internal_win32_SIZE_2\n");
+#endif
+
+    fn = (P_OLE_FN_5)(*(int **)ppVtbl)[fnNumber];
+    if (arg2) {
+        arg21=&dvtargetdevice;
+        getDVTARGETDEVICEFields(env, arg2, arg21);
+    }
+    if (arg3) {
+        arg31=&size;
+        getSIZEFields(env, arg3, arg31);
+    }
+    
+    rc = fn(ppVtbl, arg0, arg1, (jint)arg21, (jint)arg31); /* cast it to an OLE function returning int */
+
+    if (arg2) {
+        setDVTARGETDEVICEFields(env, arg2, arg21);
+    }
+    if (arg3) {
+        setSIZEFields(env, arg3, arg31);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIIILorg/eclipse/swt/internal/ole/win32/GUID;I[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIILorg_eclipse_swt_internal_ole_win32_GUID_2I_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jobject arg2, jint arg3, jintArray arg4)
+{
+    jint *arg41=NULL;
+    GUID guid, *arg21=NULL;
+    P_OLE_FN_6 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIIILorg_eclipse_swt_internal_ole_win32_GUID_2I_3I\n");
+#endif
+    fn = (P_OLE_FN_6)(*(int **)ppVtbl)[fnNumber];
+    if (arg2) {
+        arg21=&guid;
+        getGUIDFields(env, arg2, arg21);
+    }
+    
+    if (arg4)
+        arg41 = (*env)->GetIntArrayElements(env, arg4, NULL);
+
+    rc = fn(ppVtbl, arg0, arg1, (jint)arg21, arg3, (jint)arg41); /* cast it to an OLE function returning int */
+
+    if (arg4)
+        (*env)->ReleaseIntArrayElements(env, arg4, arg41, 0);
+
+    if (arg2) {
+        setGUIDFields(env, arg2, arg21);
+    }
+    return rc;
+}
+
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIILorg/eclipse/swt/internal/ole/win32/FORMATETC;[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_FORMATETC_2_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jobject arg1, jintArray arg2)
+{
+    P_OLE_FN_4 fn;
+    FORMATETC formatetc, *arg11=NULL;
+    jint *arg21=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_FORMATETC_2_3I\n");
+#endif
+
+    fn = (P_OLE_FN_4)(*(int **)ppVtbl)[fnNumber];
+
+    if (arg1) {
+        arg11 = &formatetc;
+        getFORMATETCFields(env, arg1, arg11);
+    }
+    if (arg2)
+        arg21 = (*env)->GetIntArrayElements(env, arg2, NULL);
+
+    rc = fn(ppVtbl, arg0, (jint)arg11, (jint)arg21);
+
+    if (arg2)
+        (*env)->ReleaseIntArrayElements(env, arg2, arg21, 0);
+
+    if (arg1) {
+        setFORMATETCFields(env, arg1, arg11);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIILorg/eclipse/swt/internal/ole/win32/GUID;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_GUID_2
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jobject arg1)
+{
+    GUID guid, *arg11=NULL;
+    P_OLE_FN_3 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIIILorg_eclipse_swt_internal_ole_win32_GUID_2n");
+#endif
+    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];
+    if (arg1) {
+        arg11=&guid;
+        getGUIDFields(env, arg1, arg11);
+    }
+
+    rc = fn(ppVtbl, arg0, (jint)arg11); /* cast it to an COM function returning int */
+
+    if (arg1) {
+		setGUIDFields(env, arg1, arg11);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIILorg/eclipse/swt/internal/ole/win32/GUID;II)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_GUID_2II
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jobject arg1, jint arg2, jint arg3)
+{
+    GUID guid, *arg11=NULL;
+    P_OLE_FN_5 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "VtblCall__IIILorg_eclipse_swt_internal_ole_win32_GUID_2II\n");
+#endif
+    fn = (P_OLE_FN_5)(*(int **)ppVtbl)[fnNumber];
+    if (arg1) {
+        arg11=&guid;
+        getGUIDFields(env, arg1, arg11);
+    }
+    
+    rc = fn(ppVtbl, arg0, (jint)arg11, arg2, arg3); /* cast it to an OLE function returning int */
+
+    if (arg1) {
+        setGUIDFields(env, arg1, arg11);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIILorg/eclipse/swt/internal/ole/win32/GUID;IILorg/eclipse/swt/internal/ole/win32/DISPPARAMS;ILorg/eclipse/swt/internal/ole/win32/EXCEPINFO;[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_GUID_2IILorg_eclipse_swt_internal_ole_win32_DISPPARAMS_2ILorg_eclipse_swt_internal_ole_win32_EXCEPINFO_2_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jobject arg1, jint arg2, jint arg3, jobject arg4, jint arg5, jobject arg6, jintArray arg7)
+{
+    jint *arg71=NULL;
+    GUID guid, *arg11=NULL;
+    EXCEPINFO excepinfo, *arg61=NULL;
+    DISPPARAMS dispparams, *arg41=NULL;
+    P_OLE_FN_9 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_GUID_2IILorg_eclipse_swt_internal_ole_win32_DISPPARAMS_2ILorg_eclipse_swt_internal_ole_win32_EXCEPINFO_2_3I\n");
+#endif
+
+    fn = (P_OLE_FN_9)(*(int **)ppVtbl)[fnNumber];
+    if (arg1) {
+        arg11=&guid;
+        getGUIDFields(env, arg1, arg11);
+    }
+    if (arg4) {
+        arg41=&dispparams;
+        getDISPPARAMSFields(env, arg4, arg41);
+    }
+
+    if (arg6) {
+        arg61=&excepinfo;
+        getEXCEPINFOFields(env, arg6, arg61);
+    }
+
+    if (arg7)
+        arg71 = (*env)->GetIntArrayElements(env, arg7, NULL);
+
+    rc = fn(ppVtbl, arg0, (jint)arg11, arg2, arg3, (jint)arg41, arg5, (jint)arg61, (jint)arg71); /* cast it to an OLE function returning int */
+
+    if (arg7)
+        (*env)->ReleaseIntArrayElements(env, arg7, arg71, 0);
+
+    if (arg6) {
+        setEXCEPINFOFields(env, arg6, arg61);
+    }
+
+    if (arg4) {
+        setDISPPARAMSFields(env, arg4, arg41);
+    }
+
+    if (arg1) {
+        setGUIDFields(env, arg1, arg11);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIILorg/eclipse/swt/internal/ole/win32/STATSTG;[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_STATSTG_2_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jobject arg1, jintArray arg2)
+{
+    jint *arg21=NULL;
+    STATSTG statstg, *arg11=NULL;
+    P_OLE_FN_4 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "VtblCall__IIILorg_eclipse_swt_internal_ole_win32_STATSTG_2_3I\n");
+#endif
+    fn = (P_OLE_FN_4)(*(int **)ppVtbl)[fnNumber];
+    if (arg1) {
+        arg11=&statstg;
+        getSTATSTGFields(env, arg1, arg11);
+    }
+    
+    if (arg2)
+        arg21 = (*env)->GetIntArrayElements(env, arg2, NULL);
+
+    rc = fn(ppVtbl, arg0, (jint)arg11, (jint)arg21); /* cast it to an OLE function returning int */
+
+    if (arg2)
+        (*env)->ReleaseIntArrayElements(env, arg2, arg21, 0);
+
+    if (arg1) {
+        setSTATSTGFields(env, arg1, arg11);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIILorg/eclipse/swt/internal/win32/MSG;IIILorg/eclipse/swt/internal/win32/RECT;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIILorg_eclipse_swt_internal_win32_MSG_2IIILorg_eclipse_swt_internal_win32_RECT_2
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jobject arg1, jint arg2, jint arg3, jint arg4, jobject arg5)
+{
+    MSG msg, *arg11=NULL;
+    RECT rect, *arg51=NULL;
+    P_OLE_FN_7 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIILorg_eclipse_swt_internal_win32_MSG_2IIILorg_eclipse_swt_internal_win32_RECT_2\n");
+#endif
+
+    fn = (P_OLE_FN_7)(*(int **)ppVtbl)[fnNumber];
+    if (arg1) {
+        arg11=&msg;
+        getMSGFields(env, arg1, arg11);
+    }
+    if (arg5) {
+        arg51=▭
+        getRECTFields(env, arg5, arg51);
+    }
+    
+    rc = fn(ppVtbl, arg0, (jint)arg11, arg2, arg3, arg4, (jint)arg51); /* cast it to an OLE function returning int */
+
+    if (arg1) {
+        setMSGFields(env, arg1, arg11);
+    }
+    if (arg5) {
+        setRECTFields(env, arg5, arg51);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/win32/MSG;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_win32_MSG_2
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)
+{
+    MSG msg, *arg01=NULL;
+    P_OLE_FN_2 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_win32_MSG_2\n");
+#endif
+
+    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];
+    if (arg0) {
+        arg01=&msg;
+        getMSGFields(env, arg0, arg01);
+    }
+    
+    rc = fn(ppVtbl,  (jint)arg01); /* cast it to an OLE function returning int */
+
+    if (arg0) {
+        setMSGFields(env, arg0, arg01);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIILorg/eclipse/swt/internal/win32/SIZE;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIILorg_eclipse_swt_internal_win32_SIZE_2
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jobject arg1)
+{
+    SIZE size, *arg11=NULL;
+    P_OLE_FN_3 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIILorg_eclipse_swt_internal_win32_SIZE_2\n");
+#endif
+
+    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];
+    if (arg1) {
+        arg11=&size;
+        getSIZEFields(env, arg1, arg11);
+    }
+    
+    rc = fn(ppVtbl, arg0, (jint)arg11); /* cast it to an COM function returning int */
+
+    if (arg1) {
+        setSIZEFields(env, arg1, arg11);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIIZ)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIZ
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jboolean arg1)
+{
+    P_OLE_FN_3 fn; /* this is a function that returns int */
+    jint rc;
+    
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIIZ\n");
+#endif
+    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];
+
+    rc = fn(ppVtbl, arg0, arg1); /* cast it to an OLE function returning int */
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/ole/win32/CAUUID;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_CAUUID_2
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)
+{
+    P_OLE_FN_2 fn; /* this is a function that returns int */
+    CAUUID cauuid, *arg01=&cauuid;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__II_3C\n");
+#endif
+
+    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];
+
+    if (arg0) {
+        getCAUUIDFields(env, arg0, arg01);
+    }
+    
+    rc = fn(ppVtbl, (jint)arg01); /* cast it to an OLE function returning int */
+
+    if (arg0) {
+        setCAUUIDFields(env, arg0, arg01);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/ole/win32/CONTROLINFO;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_CONTROLINFO_2
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)
+{
+    CONTROLINFO controlinfo, *arg01=NULL;
+    P_OLE_FN_2 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_CONTROLINFO_2\n");
+#endif
+    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];
+    if (arg0) {
+        arg01=&controlinfo;
+        getCONTROLINFOFields(env, arg0, arg01);
+    }
+    
+    rc = fn(ppVtbl, (jint)arg01); /* cast it to an OLE function returning int */
+
+    if (arg0) {
+        setCONTROLINFOFields(env, arg0, arg01);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/ole/win32/FORMATETC;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_FORMATETC_2
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)
+{
+    P_OLE_FN_2 fn;
+    FORMATETC formatetc, *arg01=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_FORMATETC_2\n");
+#endif
+
+    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];
+
+    if (arg0) {
+        arg01 = &formatetc;
+        getFORMATETCFields(env, arg0, arg01);
+    }
+    rc = fn(ppVtbl, (jint)arg01);
+
+    if (arg0) {
+        setFORMATETCFields(env, arg0, arg01);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/ole/win32/FORMATETC;Lorg/eclipse/swt/internal/ole/win32/STGMEDIUM;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_FORMATETC_2Lorg_eclipse_swt_internal_ole_win32_STGMEDIUM_2
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0, jobject arg1)
+{
+    P_OLE_FN_3 fn;
+    FORMATETC formatetc, *arg01=NULL;
+    STGMEDIUM stgmedium, *arg11=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_FORMATETC_2Lorg_eclipse_swt_internal_ole_win32_STGMEDIUM_2\n");
+#endif
+
+    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];
+
+    if (arg0) {
+        arg01 = &formatetc;
+        getFORMATETCFields(env, arg0, arg01);
+    }
+    if (arg1) {
+        arg11 = &stgmedium;
+        getSTGMEDIUMFields(env, arg1, arg11);
+    }
+    rc = fn(ppVtbl, (jint)arg01, (jint)arg11);
+
+    if (arg0) {
+        setFORMATETCFields(env, arg0, arg01);
+    }
+    if (arg1) {
+        setSTGMEDIUMFields(env, arg1, arg11);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/ole/win32/FORMATETC;Lorg/eclipse/swt/internal/ole/win32/STGMEDIUM;Z)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_FORMATETC_2Lorg_eclipse_swt_internal_ole_win32_STGMEDIUM_2Z
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0, jobject arg1, jboolean arg2)
+{
+    P_OLE_FN_4 fn;
+    FORMATETC formatetc, *arg01=NULL;
+    STGMEDIUM stgmedium, *arg11=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_FORMATETC_2Lorg_eclipse_swt_internal_ole_win32_STGMEDIUM_2Z\n");
+#endif
+
+    fn = (P_OLE_FN_4)(*(int **)ppVtbl)[fnNumber];
+
+    if (arg0) {
+        arg01 = &formatetc;
+        getFORMATETCFields(env, arg0, arg01);
+    }
+    if (arg1) {
+        arg11 = &stgmedium;
+        getSTGMEDIUMFields(env, arg1, arg11);
+    }
+    rc = fn(ppVtbl, (jint)arg01, (jint)arg11, (jint)arg2);
+
+    if (arg0) {
+        setFORMATETCFields(env, arg0, arg01);
+    }
+    if (arg1) {
+        setSTGMEDIUMFields(env, arg1, arg11);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/ole/win32/GUID;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)
+{
+    GUID guid, *arg01=NULL;
+    P_OLE_FN_2 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2\n");
+#endif
+    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];
+    if (arg0) {
+        arg01=&guid;
+        getGUIDFields(env, arg0, arg01);
+    }
+
+    rc = fn(ppVtbl, (jint)arg01); /* cast it to an OLE function returning int */
+
+    if (arg0) {
+        setGUIDFields(env, arg0, arg01);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/ole/win32/GUID;[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0, jintArray arg1)
+{
+    jint *arg11=NULL;
+    GUID guid, *arg01=NULL;
+    P_OLE_FN_3 fn; /* this is a function that returns int */
+    jint rc;
+    
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2_3I\n");
+#endif
+    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];
+
+    if (arg0) {
+        arg01=&guid;
+        getGUIDFields(env, arg0, arg01);
+    }
+    
+    if (arg1)
+        arg11 = (*env)->GetIntArrayElements(env, arg1, NULL);
+
+    rc = fn(ppVtbl, (jint)arg01, (jint)arg11); /* cast it to an OLE function returning int */
+
+    if (arg1)
+        (*env)->ReleaseIntArrayElements(env, arg1, arg11, 0);
+
+    if (arg0) {
+        setGUIDFields(env, arg0, arg01);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/ole/win32/GUID;III[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2III_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0, jint arg1, jint arg2, jint arg3, jintArray arg4)
+{
+    jint *arg41=NULL;
+    GUID guid, *arg01=NULL;
+    P_OLE_FN_6 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2III_3I\n");
+#endif
+    fn = (P_OLE_FN_6)(*(int **)ppVtbl)[fnNumber];
+    if (arg0) {
+        arg01=&guid;
+        getGUIDFields(env, arg0, arg01);
+    }
+    
+    if (arg4)
+        arg41 = (*env)->GetIntArrayElements(env, arg4, NULL);
+
+    rc = fn(ppVtbl, (jint)arg01, arg1, arg2, arg3, (jint)arg41); /* cast it to an OLE function returning int */
+
+    if (arg4)
+        (*env)->ReleaseIntArrayElements(env, arg4, arg41, 0);
+
+    if (arg0) {
+        setGUIDFields(env, arg0, arg01);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/ole/win32/GUID;IIII)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2IIII
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0, jint arg1, jint arg2, jint arg3, jint arg4)
+{
+    GUID guid, *arg01=NULL;
+    P_OLE_FN_6 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2IIII\n");
+#endif
+    fn = (P_OLE_FN_6)(*(int **)ppVtbl)[fnNumber];
+    if (arg0) {
+        arg01=&guid;
+        getGUIDFields(env, arg0, arg01);
+    }
+    
+    rc = fn(ppVtbl, (jint)arg01, arg1, arg2, arg3, arg4);
+
+    if (arg0) {
+        setGUIDFields(env, arg0, arg01);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/ole/win32/GUID;ILorg/eclipse/swt/internal/ole/win32/OLECMD;Lorg/eclipse/swt/internal/ole/win32/OLECMDTEXT;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2ILorg_eclipse_swt_internal_ole_win32_OLECMD_2Lorg_eclipse_swt_internal_ole_win32_OLECMDTEXT_2
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0, jint arg1, jobject arg2, jobject arg3)
+{
+    GUID guid, *arg01=NULL;
+    OLECMD olecmd, *arg21=NULL;
+    OLECMDTEXT olecmdtext, *arg31=NULL;
+
+    P_OLE_FN_5 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "VtblCall__IILorg_eclipse_swt_internal_ole_win32_GUID_2ILorg_eclipse_swt_internal_ole_win32_OLECMD_2Lorg_eclipse_swt_internal_ole_win32_OLECMDTEXT_2\n");
+#endif
+    fn = (P_OLE_FN_5)(*(int **)ppVtbl)[fnNumber];
+    if (arg0) {
+        arg01=&guid;
+        getGUIDFields(env, arg0, arg01);
+    }
+    if (arg2) {
+        arg21=&olecmd;
+        getOLECMDFields(env, arg2, arg21);
+    }
+    if (arg3) {
+        arg31=&olecmdtext;
+        getOLECMDTEXTFields(env, arg3, arg31);
+    }
+    
+    rc = fn(ppVtbl, (jint)arg01, arg1, (jint)arg21, (jint)arg31);
+
+    if (arg0) {
+        setGUIDFields(env, arg0, arg01);
+    }
+    if (arg2) {
+        setOLECMDFields(env, arg2, arg21);
+    }
+    if (arg3) {
+        setOLECMDTEXTFields(env, arg3, arg31);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/ole/win32/LICINFO;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_LICINFO_2
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)
+{
+    LICINFO licinfo, *arg01=NULL;
+    P_OLE_FN_2 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_LICINFO_2\n");
+#endif
+    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];
+    if (arg0) {
+        arg01=&licinfo;
+        getLICINFOFields(env, arg0, arg01);
+    }
+
+    rc = fn(ppVtbl, (jint)arg01); /* cast it to an OLE function returning int */
+
+    if (arg0) {
+        setLICINFOFields(env, arg0, arg01);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/win32/RECT;IZ)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_win32_RECT_2IZ
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0, jint arg1, jboolean arg2)
+{
+    RECT rect, *arg01=NULL;
+    P_OLE_FN_4 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_win32_RECT_2IZ\n");
+#endif
+
+    fn = (P_OLE_FN_4)(*(int **)ppVtbl)[fnNumber];
+    if (arg0) {
+        arg01=▭
+        getRECTFields(env, arg0, arg01);
+    }
+    
+    rc = fn(ppVtbl, (jint)arg01, arg1, arg2); /* cast it to an OLE function returning int */
+
+    if (arg0) {
+        setRECTFields(env, arg0, arg01);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/win32/RECT;Lorg/eclipse/swt/internal/win32/RECT;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_win32_RECT_2Lorg_eclipse_swt_internal_win32_RECT_2
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0, jobject arg1)
+{
+    RECT rect0, *arg01=NULL;
+    RECT rect1, *arg11=NULL;
+    P_OLE_FN_3 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_win32_RECT_2Lorg_eclipse_swt_internal_win32_RECT_2\n");
+#endif
+
+    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];
+    if (arg0) {
+        arg01=&rect0;
+        getRECTFields(env, arg0, arg01);
+    }
+    if (arg1) {
+        arg11=&rect1;
+        getRECTFields(env, arg1, arg11);
+    }
+    rc = fn(ppVtbl, (jint)arg01, (jint)arg11); /* cast it to an OLE function returning int */
+
+    if (arg1) {
+        setRECTFields(env, arg1, arg11);
+    }
+    if (arg0) {
+        setRECTFields(env, arg0, arg01);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/win32/RECT;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_win32_RECT_2
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)
+{
+    RECT rect0, *arg01=NULL;
+    P_OLE_FN_2 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_win32_RECT_2\n");
+#endif
+
+    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];
+    if (arg0) {
+        arg01=&rect0;
+        getRECTFields(env, arg0, arg01);
+    }
+    
+    rc = fn(ppVtbl, (jint)arg01); /* cast it to an OLE function returning int */
+
+    if (arg0) {
+        setRECTFields(env, arg0, arg01);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (III[I[I[I[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__III_3I_3I_3I_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jintArray arg1, jintArray arg2, jintArray arg3, jintArray arg4)
+{
+    jint *arg11=NULL;
+    jint *arg21=NULL;
+    jint *arg31=NULL;
+    jint *arg41=NULL;
+    P_OLE_FN_6 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__III_3I_3I_3I_31\n");
+#endif
+    fn = (P_OLE_FN_6)(*(int **)ppVtbl)[fnNumber];
+    if (arg1)
+        arg11 = (*env)->GetIntArrayElements(env, arg1, NULL);
+        
+    if (arg2)
+        arg21 = (*env)->GetIntArrayElements(env, arg2, NULL);
+        
+    if (arg3)
+        arg31 = (*env)->GetIntArrayElements(env, arg3, NULL);
+        
+    if (arg4)
+        arg41 = (*env)->GetIntArrayElements(env, arg4, NULL);
+
+    rc = fn(ppVtbl, arg0, (jint)arg11, (jint)arg21, (jint)arg31, (jint)arg41); /* cast it to an OLE function returning int */
+
+    if (arg1)
+        (*env)->ReleaseIntArrayElements(env, arg1, arg11, 0);
+    
+    if (arg2)
+        (*env)->ReleaseIntArrayElements(env, arg2, arg21, 0);
+        
+    if (arg3)
+        (*env)->ReleaseIntArrayElements(env, arg3, arg31, 0);
+    
+    if (arg4)
+        (*env)->ReleaseIntArrayElements(env, arg4, arg41, 0);
+
+
+    return rc;
+}
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (III[II[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__III_3II_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jintArray arg1, jint arg2, jintArray arg3)
+{
+    jint *arg11=NULL;
+    jint *arg31=NULL;
+    P_OLE_FN_5 fn; /* this is a function that returns int */
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__III_3II_3I\n");
+#endif
+    fn = (P_OLE_FN_5)(*(int **)ppVtbl)[fnNumber];
+    if (arg1)
+        arg11 = (*env)->GetIntArrayElements(env, arg1, NULL);
+        
+    if (arg3)
+        arg31 = (*env)->GetIntArrayElements(env, arg3, NULL);
+        
+    rc = fn(ppVtbl, arg0, (jint)arg11, arg2, (jint)arg31); /* cast it to an OLE function returning int */
+
+    if (arg1)
+        (*env)->ReleaseIntArrayElements(env, arg1, arg11, 0);
+            
+    if (arg3)
+        (*env)->ReleaseIntArrayElements(env, arg3, arg31, 0);
+    
+    return rc;
+}      
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    WriteClassStg
+ * Signature: (ILorg/eclipse/swt/internal/ole/win32/GUID;)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_WriteClassStg
+  (JNIEnv *env, jclass that, jint pStg, jobject rclsid)
+{
+    GUID guid, *rclsid1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "WriteClassStg\n");
+#endif
+    if (rclsid) {
+        rclsid1=&guid;
+        getGUIDFields(env, rclsid, rclsid1);
+    }
+    rc = (jint) WriteClassStg((IStorage *)pStg, rclsid1);
+
+    if (rclsid) {
+        setGUIDFields(env, rclsid, rclsid1);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    OleGetClipboard
+ * Signature: ([I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleGetClipboard
+  (JNIEnv *env, jclass that, jintArray ppDataObj)
+{
+    IDataObject **ppDataObj1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "OleGetClipboard\n");
+#endif
+    if (ppDataObj)
+        ppDataObj1 = (IDataObject **)(*env)->GetIntArrayElements(env, ppDataObj, NULL);
+
+    rc = (jint) OleGetClipboard(ppDataObj1);
+
+    if (ppDataObj)
+        (*env)->ReleaseIntArrayElements(env, ppDataObj, (jint *)ppDataObj1, 0);
+
+    return rc;
+}
+
+     /*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    OleIsCurrentClipboard
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleIsCurrentClipboard
+  (JNIEnv *env, jclass that, jint pDataObj)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "OleIsCurrentClipboard\n");
+#endif
+    return (jint) OleIsCurrentClipboard((IDataObject *)pDataObj);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    OleSetClipboard
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleSetClipboard
+  (JNIEnv *env, jclass that, jint pDataObj)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "OleSetClipboard\n");
+#endif
+    return (jint) OleSetClipboard((IDataObject *)pDataObj);
+}
+    
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    OleFlushClipboard
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleFlushClipboard
+  (JNIEnv *env, jclass that)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "OleFlushClipboard\n");
+#endif
+    return (jint) OleFlushClipboard();
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    OleDraw
+ * Signature: (IIII)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_OleDraw
+  (JNIEnv *env, jclass that, jint pUnk, jint dwAspect, jint hdcDraw, jint lprcBounds)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "OleDraw\n");
+#endif
+    return (jint) OleDraw((LPUNKNOWN)pUnk, (DWORD)dwAspect, (HDC)hdcDraw, (LPRECT)lprcBounds);
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    ReleaseStgMedium
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_ReleaseStgMedium
+  (JNIEnv *env, jclass that, jint pmedium)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "ReleaseStgMedium\n");
+#endif
+    ReleaseStgMedium((STGMEDIUM *)pmedium);
+}
+
+/* ------------- obsolete OLE calls ------------- */
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    DispGetParam
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/DISPPARAMS;III[I)I
+ */
+/*JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_DispGetParam
+  (JNIEnv *env, jclass that, jobject pdispparams, jint position, jint vtTarg, jint pvarResult, jintArray puArgErr)
+{
+    unsigned int FAR *puArgErr1=NULL;
+    DISPPARAMS dispparams, *pdispparams1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "DispGetParam\n");
+#endif
+
+    if (pdispparams) {
+        pdispparams1=&dispparams;
+        cacheDispparamsFids(env, pdispparams, &DispparamsFc);
+        getDISPPARAMSFields(env, pdispparams, pdispparams1, &DispparamsFc);
+    }
+    if (puArgErr)
+        puArgErr1 = (*env)->GetIntArrayElements(env, puArgErr, NULL);
+
+    rc = (jint) DispGetParam(pdispparams1, position, (VARTYPE)vtTarg, (VARIANT FAR *)pvarResult, puArgErr1);
+
+    if (puArgErr)
+        (*env)->ReleaseIntArrayElements(env, puArgErr, puArgErr1, 0);
+
+    if (pdispparams) {
+        setDISPPARAMSFields(env, pdispparams, pdispparams1, &DispparamsFc);
+    }
+    return rc;
+}
+*/
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (ILorg/eclipse/swt/internal/win32/SIZE;I)V
+ */
+/*JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__ILorg_eclipse_swt_internal_win32_SIZE_2I
+  (JNIEnv *env, jclass that, jint DestinationPtr, jobject Source, jint Length)
+{
+    SIZE size, *Source1=&size;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_win32_SIZE_2I\n");
+#endif
+
+    if (Source) {
+        getSIZEFields(env, Source, Source1);
+    }
+
+    MoveMemory((PVOID)DestinationPtr, Source1, Length);
+}
+*/
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (II[CI[CI)I
+ */
+/*JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__II_3CI_3CI
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jcharArray arg0, jint arg1, jcharArray arg2, jint arg3)
+{
+    P_OLE_FN_5 fn;
+    jchar *arg01=NULL, *arg21=NULL;
+    jint rc;
+    
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__II_3CI_3CI\n");
+#endif
+
+    fn = (P_OLE_FN_5)(*(int **)ppVtbl)[fnNumber];
+
+    if (arg0)
+        arg01 = (*env)->GetCharArrayElements(env, arg0, NULL);
+
+    if (arg2)
+        arg21 = (*env)->GetCharArrayElements(env, arg2, NULL);
+
+    rc = fn(ppVtbl, (jint)arg01, arg1, (jint)arg21, arg3);
+
+    if (arg2)
+        (*env)->ReleaseCharArrayElements(env, arg2, arg21, 0);
+
+    if (arg0)
+        (*env)->ReleaseCharArrayElements(env, arg0, arg01, 0);
+
+    return rc;
+}
+*/
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIILorg/eclipse/swt/internal/ole/win32/GUID;[I)I
+ */
+/*JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_GUID_2_3I
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jobject arg1, jintArray arg2)
+{
+    jint *arg21=NULL;
+    GUID guid, *arg11=NULL;
+    P_OLE_FN_4 fn;
+    jint rc;
+    
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIILorg_eclipse_swt_internal_ole_win32_GUID_2I_3I\n");
+#endif
+    
+    fn = (P_OLE_FN_4)(*(int **)ppVtbl)[fnNumber];
+    if (arg1) {
+        arg11=&guid;
+        getGUIDFields(env, arg1, arg11);
+    }
+    
+    if (arg2)
+        arg21 = (*env)->GetIntArrayElements(env, arg2, NULL);
+
+    rc = fn(ppVtbl, arg0, (jint)arg11, (jint)arg21);
+
+    if (arg2)
+        (*env)->ReleaseIntArrayElements(env, arg2, arg21, 0);
+
+    if (arg1) {
+        setGUIDFields(env, arg1, arg11);
+    }
+    return rc;
+}
+*/
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIII)I
+ */
+/*JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIII
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1)
+{
+    P_OLE_FN_3 fn;
+    jint rc;
+    
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIII\n");
+#endif
+
+    fn = (P_OLE_FN_3)(*(int **)ppVtbl)[fnNumber];
+    rc = fn(ppVtbl, arg0, arg1);
+    return rc;
+}
+*/
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/win32/MSG;)I
+ */
+/*
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_win32_MSG_2
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)
+{
+    MSG msg, *arg01=NULL;
+    P_OLE_FN_2 fn;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_MSG_2\n");
+#endif
+    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];
+    if (arg0) {
+        arg01=&msg;
+        getMSGFields(env, arg0, arg01);
+    }
+
+    rc = fn(ppVtbl, (jint)arg01);
+
+    if (arg0) {
+        setMSGFields(env, arg0, arg01);
+    }
+    return rc;
+}
+*/
+/* ------------- end obsolote OLE calls ------------- */
+
+/* ------------- deleted OLE calls ------------- */
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IILorg/eclipse/swt/internal/ole/win32/TYPEATTR;)I
+ */
+/*
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_TYPEATTR_2
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jobject arg0)
+{
+    TYPEATTR typeattr, *arg01=NULL;
+    P_OLE_FN_2 fn;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IILorg_eclipse_swt_internal_ole_win32_TYPEATTR_2\n");
+#endif
+    fn = (P_OLE_FN_2)(*(int **)ppVtbl)[fnNumber];
+    if (arg0) {
+        arg01=&typeattr;
+        cacheTypeattrFids(env, arg0, &TypeattrFc);
+        getTypeattrFields(env, arg0, arg01, &TypeattrFc);
+    }
+
+    rc = fn(ppVtbl, (jint)arg01);
+    if (arg0) {
+        setTYPEATTRFields(env, arg0, arg01, &TypeattrFc);
+    }
+    return rc;
+}
+*/
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    MoveMemory
+ * Signature: (ILorg/eclipse/swt/internal/ole/win32/EXCEPINFO;I)V
+ */
+/* JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_EXCEPINFO_2I
+  (JNIEnv *env, jclass that, jint Destination, jobject SourcePtr, jint Length)
+{
+    EXCEPINFO excepinfo, *SourcePtr1=&excepinfo;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_MoveMemory__ILorg_eclipse_swt_internal_ole_win32_EXCEPINFO_2I\n");
+#endif
+
+    if (SourcePtr) {
+        getEXCEPINFOFields(env, SourcePtr, SourcePtr1);
+    }
+
+    MoveMemory((PVOID)Destination, SourcePtr1, Length);
+}
+*/
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    ProgIDFromCLSID
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;[C)I
+ */
+/* JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_ProgIDFromCLSID__Lorg_eclipse_swt_internal_ole_win32_GUID_2_3C
+  (JNIEnv *env, jclass that, jobject pclsid, jcharArray lplpszProgID)
+{
+    LPOLESTR *lplpszProgID1=NULL;
+    GUID guid, *pclsid1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_ProgIDFromCLSID__Lorg_eclipse_swt_internal_ole_win32_GUID_2_3C\n");
+#endif
+
+    if (pclsid) {
+        pclsid1=&guid;
+        getGUIDFields(env, pclsid, pclsid1);
+    }
+
+    if (lplpszProgID)
+        lplpszProgID1 = (LPOLESTR *)(*env)->GetCharArrayElements(env, lplpszProgID, NULL);
+
+    rc = (jint) ProgIDFromCLSID(pclsid1, lplpszProgID1);
+
+    if (lplpszProgID)
+        (*env)->ReleaseCharArrayElements(env, lplpszProgID, (jchar *)lplpszProgID1, 0);
+    
+    if (pclsid) {
+        setGUIDFields(env, pclsid, pclsid1);
+    }
+    return rc;
+}
+*/
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    ProgIDFromCLSID
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;[I)I
+ */
+ JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_ProgIDFromCLSID__Lorg_eclipse_swt_internal_ole_win32_GUID_2_3I
+  (JNIEnv *env, jclass that, jobject pclsid, jintArray lplpszProgID)
+{
+    LPOLESTR *lplpszProgID1=NULL;
+    GUID guid, *pclsid1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_ProgIDFromCLSID__Lorg_eclipse_swt_internal_ole_win32_GUID_2_3I\n");
+#endif
+
+    if (pclsid) {
+        pclsid1=&guid;
+        getGUIDFields(env, pclsid, pclsid1);
+    }
+
+    if (lplpszProgID)
+        lplpszProgID1 = (LPOLESTR *)(*env)->GetIntArrayElements(env, lplpszProgID, NULL);
+
+    rc = (jint) ProgIDFromCLSID(pclsid1, lplpszProgID1);
+
+    if (lplpszProgID)
+        (*env)->ReleaseIntArrayElements(env, lplpszProgID, (jint *)lplpszProgID1, 0);
+    
+    if (pclsid) {
+        setGUIDFields(env, pclsid, pclsid1);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VariantCopyInd
+ * Signature: (II)I
+ */
+/* JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VariantCopyInd
+  (JNIEnv *env, jclass that, jint pvarDest, jint pvarSrc)
+{
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "VariantCopyInd\n");
+#endif
+    return (jint) VariantCopyInd((VARIANT FAR*)pvarDest, (VARIANTARG FAR*)pvarSrc);
+}
+*/
+
+
+/* MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II removed after OS version 0.80 */
+/* 
+ * Class:     org_eclipse_swt_internal_win32_OS
+ * Method:    MoveMemory
+ * Signature: (Lorg/eclipse/swt/internal/win32/NMHEADER;II)V
+ */
+/* JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_win32_OS_MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II
+  (JNIEnv *env, jclass that, jobject Destination, jint Source, jint Length)
+{
+    NMHEADER nmheader, *lpDestination1=NULL;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II\n");
+#endif
+
+       MoveMemory((PVOID)&nmheader, (CONST VOID *)Source, Length);
+
+    if (Destination) {
+        lpDestination1 = &nmheader;
+        setNmheaderFields(env, Destination, lpDestination1);
+    }
+}
+*/
+
+/* SendMessage__IIILorg_eclipse_swt_internal_win32_HDITEM_2 removed after OS version 0.80 */
+/*
+ * Class:     org_eclipse_swt_internal_win32_OS
+ * Method:    SendMessage
+ * Signature: (IIILorg/eclipse/swt/internal/win32/HDITEM;)I
+ */
+/* JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_win32_OS_SendMessage__IIILorg_eclipse_swt_internal_win32_HDITEM_2
+  (JNIEnv *env, jclass that, jint hWnd, jint Msg, jint wParam, jobject lParam)
+{
+    HDITEM hditem, *lpParam1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "SendMessage__IIILorg_eclipse_swt_internal_win32_HDITEM_2\n");
+#endif
+
+    if (lParam) {
+        lpParam1 = &hditem;
+        getHditemFields(env, lParam, lpParam1);
+    }
+    rc = (jint) SendMessage((HWND)hWnd, Msg, wParam, (LPARAM)lpParam1);
+    if (lParam) {
+        setHditemFields(env, lParam, lpParam1);
+    }
+    return rc;
+}
+*/
+
+/* SendMessage__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2 removed after OS version 0.80 */
+/*
+ * Class:     org_eclipse_swt_internal_win32_OS
+ * Method:    SendMessage
+ * Signature: (IIILorg/eclipse/swt/internal/win32/HDLAYOUT;)I
+ */
+/* JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_win32_OS_SendMessage__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2
+  (JNIEnv *env, jclass that, jint hWnd, jint Msg, jint wParam, jobject lParam)
+{
+    HDLAYOUT hdlayout, *lpParam1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "SendMessage__IIILorg_eclipse_swt_internal_win32_HDLAYOUT_2\n");
+#endif
+
+    if (lParam) {
+        lpParam1 = &hdlayout;
+        getHdlayoutFields(env, lParam, lpParam1);
+    }
+    rc = (jint) SendMessage((HWND)hWnd, Msg, wParam, (LPARAM)lpParam1);
+    if (lParam) {
+        setHdlayoutFields(env, lParam, lpParam1);
+    }
+    return rc;
+}
+*/
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    CoGetInstanceFromIStorage
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/COSERVERINFO;Lorg/eclipse/swt/internal/ole/win32/GUID;IIIILorg/eclipse/swt/internal/ole/win32/MULTI_QI;)I
+ */
+/*
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CoGetInstanceFromIStorage
+  (JNIEnv *env, jclass that, jobject pServerInfo, jobject pclsid, jint punkOuter, jint dwClsCtx,
+				 jint pstg, jint cmq, jobject rgmqResults)
+{
+    GUID guid, *pclsid1=NULL;
+    COSERVERINFO coserverinfo, *pServerInfo1=NULL;
+    MULTI_QI multi_qi, *rgmqResults1=NULL;
+    jint rc;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "CoGetInstanceFromIStorage\n");
+#endif
+
+    if (pclsid) {
+        pclsid1=&guid;
+        getGUIDFields(env, pclsid, pclsid1);
+    }
+    if (pServerInfo) {
+        pServerInfo1=&coserverinfo;
+        getCoserverinfoFields(env, pServerInfo, pServerInfo1);
+    }
+    if (rgmqResults) {
+        rgmqResults1=&multi_qi;
+        getMulti_qiFields(env, rgmqResults, rgmqResults1);
+    }
+
+    rc = CoGetInstanceFromIStorage(pServerInfo1, pclsid1, (IUnknown *)punkOuter, dwClsCtx, (IStorage *)pstg, cmq, rgmqResults1);
+
+    if (pclsid) {
+        setGUIDFields(env, pclsid, pclsid1);
+    }
+    if (pServerInfo) {
+        setCoserverinfoFields(env, pServerInfo, pServerInfo1);
+    }
+    if (rgmqResults) {
+        setMulti_qiFields(env, rgmqResults, rgmqResults1);
+    }
+    return rc;
+}
+*/
+
+/****************** ACCESSIBILITY ****************/
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    CreateStdAccessibleObject
+ * Signature: (IILorg/eclipse/swt/internal/ole/win32/GUID;[I)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_CreateStdAccessibleObject
+  (JNIEnv *env, jclass that, jint hwnd, jint idObject, jobject riidInterface, jintArray ppvObject)
+{
+    LPVOID *ppvObject1=NULL;
+	GUID guid, *riidInterface1=NULL;
+	jint rc = E_NOTIMPL;
+    HMODULE hm;
+    FARPROC fp;
+	
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "CreateStdAccessibleObject\n");
+#endif
+    
+    if (riidInterface) {
+        riidInterface1=&guid;
+        getGUIDFields(env, riidInterface, riidInterface1);
+    }
+
+	if (ppvObject)
+        ppvObject1 = (LPVOID *)(*env)->GetIntArrayElements(env, ppvObject, NULL);
+
+    /*
+    *  CreateStdAccessibleObject is an oleacc specific call.
+    *  If you link it into swt.dll, a system modal entry point not found dialog will
+    *  appear as soon as swt.dll is loaded. Here we check for the entry point and
+    *  only do the call if it exists.
+    */
+    if (!(hm = GetModuleHandle("oleacc.dll"))) hm = LoadLibrary("oleacc.dll");
+    if (hm && (fp = GetProcAddress(hm, "CreateStdAccessibleObject"))) {
+		rc = (jint)fp((HWND)hwnd, idObject, riidInterface1, ppvObject1);
+	}
+    
+    if (riidInterface) {
+        setGUIDFields(env, riidInterface, riidInterface1);
+    }
+    
+    if (ppvObject)
+        (*env)->ReleaseIntArrayElements(env, ppvObject, (jint *)ppvObject1, 0);
+        
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    LresultFromObject
+ * Signature: (Lorg/eclipse/swt/internal/ole/win32/GUID;II)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_LresultFromObject
+  (JNIEnv *env, jclass that, jobject riid, jint wParam, jint pAcc)
+{
+    GUID guid, *riid1=NULL;
+    jint rc = E_NOTIMPL;
+    HMODULE hm;
+    FARPROC fp;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "LresultFromObject\n");
+#endif
+
+    if (riid) {
+        riid1=&guid;
+        getGUIDFields(env, riid, riid1);
+    }
+    /*
+    *  LresultFromObject is an oleacc specific call.
+    *  If you link it into swt.dll, a system modal entry point not found dialog will
+    *  appear as soon as swt.dll is loaded. Here we check for the entry point and
+    *  only do the call if it exists.
+    */
+    if (!(hm = GetModuleHandle("oleacc.dll"))) hm = LoadLibrary("oleacc.dll");
+    if (hm && (fp = GetProcAddress(hm, "LresultFromObject"))) {
+		rc = (jint)fp(riid1, wParam, (LPUNKNOWN)pAcc);
+	}
+    if (riid) {
+        setGUIDFields(env, riid, riid1);
+    }
+    return rc;
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    NotifyWinEvent
+ * Signature: (IIII)V
+ */
+JNIEXPORT void JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_NotifyWinEvent
+  (JNIEnv *env, jclass that, jint event, jint hwnd, jint idObject, jint idChild)
+{
+    HMODULE hm;
+    FARPROC fp;
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "NotifyWinEvent\n");
+#endif
+
+    /*
+    *  NotifyWinEvent is a Win2000 and Win98 specific call
+    *  If you link it into swt.dll a system modal entry point not found dialog will
+    *  appear as soon as swt.dll is loaded. Here we check for the entry point and
+    *  only do the call if it exists.
+    */
+    if ((hm=GetModuleHandle("user32.dll")) && (fp=GetProcAddress(hm, "NotifyWinEvent"))) {
+        (fp)((DWORD)event, (HWND)hwnd, idObject, idChild);
+//		NotifyWinEvent((DWORD)event, (HWND)hwnd, idObject, idChild);
+	}
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIIIII)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIIII
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+    P_OLE_FN_5 fn; /* this is a function that returns int */
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIIIII\n");
+#endif
+    fn = (P_OLE_FN_5)(*(int **)ppVtbl)[fnNumber];
+    return fn(ppVtbl, arg0, arg1, arg2, arg3); /* cast it to an OLE function returning int */
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIIIIII)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIIIII
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)
+{
+    P_OLE_FN_6 fn; /* this is a function that returns int */
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIIIIII\n");
+#endif
+    fn = (P_OLE_FN_6)(*(int **)ppVtbl)[fnNumber];
+    return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4); /* cast it to an OLE function returning int */
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIIIIIII)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIIIIII
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5)
+{
+    P_OLE_FN_7 fn; /* this is a function that returns int */
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIIIIIII\n");
+#endif
+    fn = (P_OLE_FN_7)(*(int **)ppVtbl)[fnNumber];
+    return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5); /* cast it to an OLE function returning int */
+}
+
+/*
+ * Class:     org_eclipse_swt_internal_ole_win32_COM
+ * Method:    VtblCall
+ * Signature: (IIIIIIIIII)I
+ */
+JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_ole_win32_COM_VtblCall__IIIIIIIIII
+  (JNIEnv *env, jclass that, jint fnNumber, jint ppVtbl, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7)
+{
+    P_OLE_FN_9 fn; /* this is a function that returns int */
+
+#ifdef DEBUG_CALL_PRINTS
+    fprintf(stderr, "COM_VtblCall__IIIIIIIIII\n");
+#endif
+    fn = (P_OLE_FN_9)(*(int **)ppVtbl)[fnNumber];
+    return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); /* cast it to an OLE function returning int */
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/com_structs.c b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/com_structs.c
index d5b60fa..d939d62 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/com_structs.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/com_structs.c
@@ -1,1038 +1,1038 @@
-/*******************************************************************************

-* Copyright (c) 2000, 2003 IBM Corporation and others.

-* All rights reserved. This program and the accompanying materials

-* are made available under the terms of the Common Public License v1.0

-* which accompanies this distribution, and is available at

-* http://www.eclipse.org/legal/cpl-v10.html

-* 

-* Contributors:

-*     IBM Corporation - initial API and implementation

-*******************************************************************************/

-

-#include "swt.h"

-#include "com_structs.h"

-

-#ifndef NO_CAUUID

-typedef struct CAUUID_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cElems, pElems;

-} CAUUID_FID_CACHE;

-

-CAUUID_FID_CACHE CAUUIDFc;

-

-void cacheCAUUIDFids(JNIEnv *env, jobject lpObject)

-{

-	if (CAUUIDFc.cached) return;

-	CAUUIDFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	CAUUIDFc.cElems = (*env)->GetFieldID(env, CAUUIDFc.clazz, "cElems", "I");

-	CAUUIDFc.pElems = (*env)->GetFieldID(env, CAUUIDFc.clazz, "pElems", "I");

-	CAUUIDFc.cached = 1;

-}

-

-CAUUID *getCAUUIDFields(JNIEnv *env, jobject lpObject, CAUUID *lpStruct)

-{

-	if (!CAUUIDFc.cached) cacheCAUUIDFids(env, lpObject);

-	lpStruct->cElems = (*env)->GetIntField(env, lpObject, CAUUIDFc.cElems);

-	lpStruct->pElems = (GUID FAR *)(*env)->GetIntField(env, lpObject, CAUUIDFc.pElems);

-	return lpStruct;

-}

-

-void setCAUUIDFields(JNIEnv *env, jobject lpObject, CAUUID *lpStruct)

-{

-	if (!CAUUIDFc.cached) cacheCAUUIDFids(env, lpObject);

-	(*env)->SetIntField(env, lpObject, CAUUIDFc.cElems, (jint)lpStruct->cElems);

-	(*env)->SetIntField(env, lpObject, CAUUIDFc.pElems, (jint)lpStruct->pElems);

-}

-#endif /* NO_CAUUID */

-

-#ifndef NO_CONTROLINFO

-typedef struct CONTROLINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cb, hAccel, cAccel, dwFlags;

-} CONTROLINFO_FID_CACHE;

-

-CONTROLINFO_FID_CACHE CONTROLINFOFc;

-

-void cacheCONTROLINFOFids(JNIEnv *env, jobject lpObject)

-{

-	if (CONTROLINFOFc.cached) return;

-	CONTROLINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	CONTROLINFOFc.cb = (*env)->GetFieldID(env, CONTROLINFOFc.clazz, "cb", "I");

-	CONTROLINFOFc.hAccel = (*env)->GetFieldID(env, CONTROLINFOFc.clazz, "hAccel", "I");

-	CONTROLINFOFc.cAccel = (*env)->GetFieldID(env, CONTROLINFOFc.clazz, "cAccel", "S");

-	CONTROLINFOFc.dwFlags = (*env)->GetFieldID(env, CONTROLINFOFc.clazz, "dwFlags", "I");

-	CONTROLINFOFc.cached = 1;

-}

-

-CONTROLINFO *getCONTROLINFOFields(JNIEnv *env, jobject lpObject, CONTROLINFO *lpStruct)

-{

-	if (!CONTROLINFOFc.cached) cacheCONTROLINFOFids(env, lpObject);

-	lpStruct->cb = (*env)->GetIntField(env, lpObject, CONTROLINFOFc.cb);

-	lpStruct->hAccel = (HACCEL)(*env)->GetIntField(env, lpObject, CONTROLINFOFc.hAccel);

-	lpStruct->cAccel = (*env)->GetShortField(env, lpObject, CONTROLINFOFc.cAccel);

-	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, CONTROLINFOFc.dwFlags);

-	return lpStruct;

-}

-

-void setCONTROLINFOFields(JNIEnv *env, jobject lpObject, CONTROLINFO *lpStruct)

-{

-	if (!CONTROLINFOFc.cached) cacheCONTROLINFOFids(env, lpObject);

-	(*env)->SetIntField(env, lpObject, CONTROLINFOFc.cb, (jint)lpStruct->cb);

-	(*env)->SetIntField(env, lpObject, CONTROLINFOFc.hAccel, (jint)lpStruct->hAccel);

-	(*env)->SetShortField(env, lpObject, CONTROLINFOFc.cAccel, (jshort)lpStruct->cAccel);

-	(*env)->SetIntField(env, lpObject, CONTROLINFOFc.dwFlags, (jint)lpStruct->dwFlags);

-}

-#endif /* NO_CONTROLINFO */

-

-#ifndef NO_COSERVERINFO

-typedef struct COSERVERINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID dwReserved1, pwszName, pAuthInfo, dwReserved2;

-} COSERVERINFO_FID_CACHE;

-

-COSERVERINFO_FID_CACHE COSERVERINFOFc;

-

-void cacheCOSERVERINFOFids(JNIEnv *env, jobject lpObject)

-{

-	if (COSERVERINFOFc.cached) return;

-	COSERVERINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	COSERVERINFOFc.dwReserved1 = (*env)->GetFieldID(env, COSERVERINFOFc.clazz, "dwReserved1", "I");

-	COSERVERINFOFc.pwszName = (*env)->GetFieldID(env, COSERVERINFOFc.clazz, "pwszName", "I");

-	COSERVERINFOFc.pAuthInfo = (*env)->GetFieldID(env, COSERVERINFOFc.clazz, "pAuthInfo", "I");

-	COSERVERINFOFc.dwReserved2 = (*env)->GetFieldID(env, COSERVERINFOFc.clazz, "dwReserved2", "I");

-	COSERVERINFOFc.cached = 1;

-}

-

-COSERVERINFO *getCOSERVERINFOFields(JNIEnv *env, jobject lpObject, COSERVERINFO *lpStruct)

-{

-	if (!COSERVERINFOFc.cached) cacheCOSERVERINFOFids(env, lpObject);

-	lpStruct->dwReserved1 = (*env)->GetIntField(env, lpObject, COSERVERINFOFc.dwReserved1);

-	lpStruct->pwszName = (LPWSTR)(*env)->GetIntField(env, lpObject, COSERVERINFOFc.pwszName);

-	lpStruct->pAuthInfo = (COAUTHINFO *)(*env)->GetIntField(env, lpObject, COSERVERINFOFc.pAuthInfo);

-	lpStruct->dwReserved2 = (*env)->GetIntField(env, lpObject, COSERVERINFOFc.dwReserved2);

-	return lpStruct;

-}

-

-void setCOSERVERINFOFields(JNIEnv *env, jobject lpObject, COSERVERINFO *lpStruct)

-{

-	if (!COSERVERINFOFc.cached) cacheCOSERVERINFOFids(env, lpObject);

-	(*env)->SetIntField(env, lpObject, COSERVERINFOFc.dwReserved1, (jint)lpStruct->dwReserved1);

-	(*env)->SetIntField(env, lpObject, COSERVERINFOFc.pwszName, (jint)lpStruct->pwszName);

-	(*env)->SetIntField(env, lpObject, COSERVERINFOFc.pAuthInfo, (jint)lpStruct->pAuthInfo);

-	(*env)->SetIntField(env, lpObject, COSERVERINFOFc.dwReserved2, (jint)lpStruct->dwReserved2);

-}

-#endif /* NO_COSERVERINFO */

-

-#ifndef NO_DISPPARAMS

-typedef struct DISPPARAMS_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID rgvarg, rgdispidNamedArgs, cArgs, cNamedArgs;

-} DISPPARAMS_FID_CACHE;

-

-DISPPARAMS_FID_CACHE DISPPARAMSFc;

-

-void cacheDISPPARAMSFids(JNIEnv *env, jobject lpObject)

-{

-	if (DISPPARAMSFc.cached) return;

-	DISPPARAMSFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	DISPPARAMSFc.rgvarg = (*env)->GetFieldID(env, DISPPARAMSFc.clazz, "rgvarg", "I");

-	DISPPARAMSFc.rgdispidNamedArgs = (*env)->GetFieldID(env, DISPPARAMSFc.clazz, "rgdispidNamedArgs", "I");

-	DISPPARAMSFc.cArgs = (*env)->GetFieldID(env, DISPPARAMSFc.clazz, "cArgs", "I");

-	DISPPARAMSFc.cNamedArgs = (*env)->GetFieldID(env, DISPPARAMSFc.clazz, "cNamedArgs", "I");

-	DISPPARAMSFc.cached = 1;

-}

-

-DISPPARAMS *getDISPPARAMSFields(JNIEnv *env, jobject lpObject, DISPPARAMS *lpStruct)

-{

-	if (!DISPPARAMSFc.cached) cacheDISPPARAMSFids(env, lpObject);

-	lpStruct->rgvarg = (VARIANTARG FAR *)(*env)->GetIntField(env, lpObject, DISPPARAMSFc.rgvarg);

-	lpStruct->rgdispidNamedArgs = (DISPID FAR *)(*env)->GetIntField(env, lpObject, DISPPARAMSFc.rgdispidNamedArgs);

-	lpStruct->cArgs = (*env)->GetIntField(env, lpObject, DISPPARAMSFc.cArgs);

-	lpStruct->cNamedArgs = (*env)->GetIntField(env, lpObject, DISPPARAMSFc.cNamedArgs);

-	return lpStruct;

-}

-

-void setDISPPARAMSFields(JNIEnv *env, jobject lpObject, DISPPARAMS *lpStruct)

-{

-	if (!DISPPARAMSFc.cached) cacheDISPPARAMSFids(env, lpObject);

-	(*env)->SetIntField(env, lpObject, DISPPARAMSFc.rgvarg, (jint)lpStruct->rgvarg);

-	(*env)->SetIntField(env, lpObject, DISPPARAMSFc.rgdispidNamedArgs, (jint)lpStruct->rgdispidNamedArgs);

-	(*env)->SetIntField(env, lpObject, DISPPARAMSFc.cArgs, (jint)lpStruct->cArgs);

-	(*env)->SetIntField(env, lpObject, DISPPARAMSFc.cNamedArgs, (jint)lpStruct->cNamedArgs);

-}

-#endif /* NO_DISPPARAMS */

-

-#ifndef NO_DVTARGETDEVICE

-typedef struct DVTARGETDEVICE_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID tdSize, tdDriverNameOffset, tdDeviceNameOffset, tdPortNameOffset, tdExtDevmodeOffset, tdData;

-} DVTARGETDEVICE_FID_CACHE;

-

-DVTARGETDEVICE_FID_CACHE DVTARGETDEVICEFc;

-

-void cacheDVTARGETDEVICEFids(JNIEnv *env, jobject lpObject)

-{

-	if (DVTARGETDEVICEFc.cached) return;

-	DVTARGETDEVICEFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	DVTARGETDEVICEFc.tdSize = (*env)->GetFieldID(env, DVTARGETDEVICEFc.clazz, "tdSize", "I");

-	DVTARGETDEVICEFc.tdDriverNameOffset = (*env)->GetFieldID(env, DVTARGETDEVICEFc.clazz, "tdDriverNameOffset", "S");

-	DVTARGETDEVICEFc.tdDeviceNameOffset = (*env)->GetFieldID(env, DVTARGETDEVICEFc.clazz, "tdDeviceNameOffset", "S");

-	DVTARGETDEVICEFc.tdPortNameOffset = (*env)->GetFieldID(env, DVTARGETDEVICEFc.clazz, "tdPortNameOffset", "S");

-	DVTARGETDEVICEFc.tdExtDevmodeOffset = (*env)->GetFieldID(env, DVTARGETDEVICEFc.clazz, "tdExtDevmodeOffset", "S");

-	DVTARGETDEVICEFc.tdData = (*env)->GetFieldID(env, DVTARGETDEVICEFc.clazz, "tdData", "B");

-	DVTARGETDEVICEFc.cached = 1;

-}

-

-DVTARGETDEVICE *getDVTARGETDEVICEFields(JNIEnv *env, jobject lpObject, DVTARGETDEVICE *lpStruct)

-{

-	if (!DVTARGETDEVICEFc.cached) cacheDVTARGETDEVICEFids(env, lpObject);

-	lpStruct->tdSize = (*env)->GetIntField(env, lpObject, DVTARGETDEVICEFc.tdSize);

-	lpStruct->tdDriverNameOffset = (*env)->GetShortField(env, lpObject, DVTARGETDEVICEFc.tdDriverNameOffset);

-	lpStruct->tdDeviceNameOffset = (*env)->GetShortField(env, lpObject, DVTARGETDEVICEFc.tdDeviceNameOffset);

-	lpStruct->tdPortNameOffset = (*env)->GetShortField(env, lpObject, DVTARGETDEVICEFc.tdPortNameOffset);

-	lpStruct->tdExtDevmodeOffset = (*env)->GetShortField(env, lpObject, DVTARGETDEVICEFc.tdExtDevmodeOffset);

-	*lpStruct->tdData = (*env)->GetByteField(env, lpObject, DVTARGETDEVICEFc.tdData);

-	return lpStruct;

-}

-

-void setDVTARGETDEVICEFields(JNIEnv *env, jobject lpObject, DVTARGETDEVICE *lpStruct)

-{

-	if (!DVTARGETDEVICEFc.cached) cacheDVTARGETDEVICEFids(env, lpObject);

-	(*env)->SetIntField(env, lpObject, DVTARGETDEVICEFc.tdSize, (jint)lpStruct->tdSize);

-	(*env)->SetShortField(env, lpObject, DVTARGETDEVICEFc.tdDriverNameOffset, (jshort)lpStruct->tdDriverNameOffset);

-	(*env)->SetShortField(env, lpObject, DVTARGETDEVICEFc.tdDeviceNameOffset, (jshort)lpStruct->tdDeviceNameOffset);

-	(*env)->SetShortField(env, lpObject, DVTARGETDEVICEFc.tdPortNameOffset, (jshort)lpStruct->tdPortNameOffset);

-	(*env)->SetShortField(env, lpObject, DVTARGETDEVICEFc.tdExtDevmodeOffset, (jshort)lpStruct->tdExtDevmodeOffset);

-	(*env)->SetByteField(env, lpObject, DVTARGETDEVICEFc.tdData, (jbyte)*lpStruct->tdData);

-}

-#endif /* NO_DVTARGETDEVICE */

-

-#ifndef NO_EXCEPINFO

-typedef struct EXCEPINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID wCode, wReserved, bstrSource, bstrDescription, bstrHelpFile, dwHelpContext, pvReserved, pfnDeferredFillIn, scode;

-} EXCEPINFO_FID_CACHE;

-

-EXCEPINFO_FID_CACHE EXCEPINFOFc;

-

-void cacheEXCEPINFOFids(JNIEnv *env, jobject lpObject)

-{

-	if (EXCEPINFOFc.cached) return;

-	EXCEPINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	EXCEPINFOFc.wCode = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "wCode", "S");

-	EXCEPINFOFc.wReserved = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "wReserved", "S");

-	EXCEPINFOFc.bstrSource = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "bstrSource", "I");

-	EXCEPINFOFc.bstrDescription = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "bstrDescription", "I");

-	EXCEPINFOFc.bstrHelpFile = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "bstrHelpFile", "I");

-	EXCEPINFOFc.dwHelpContext = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "dwHelpContext", "I");

-	EXCEPINFOFc.pvReserved = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "pvReserved", "I");

-	EXCEPINFOFc.pfnDeferredFillIn = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "pfnDeferredFillIn", "I");

-	EXCEPINFOFc.scode = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "scode", "I");

-	EXCEPINFOFc.cached = 1;

-}

-

-EXCEPINFO *getEXCEPINFOFields(JNIEnv *env, jobject lpObject, EXCEPINFO *lpStruct)

-{

-	if (!EXCEPINFOFc.cached) cacheEXCEPINFOFids(env, lpObject);

-	lpStruct->wCode = (*env)->GetShortField(env, lpObject, EXCEPINFOFc.wCode);

-	lpStruct->wReserved = (*env)->GetShortField(env, lpObject, EXCEPINFOFc.wReserved);

-	lpStruct->bstrSource = (BSTR)(*env)->GetIntField(env, lpObject, EXCEPINFOFc.bstrSource);

-	lpStruct->bstrDescription = (BSTR)(*env)->GetIntField(env, lpObject, EXCEPINFOFc.bstrDescription);

-	lpStruct->bstrHelpFile = (BSTR)(*env)->GetIntField(env, lpObject, EXCEPINFOFc.bstrHelpFile);

-	lpStruct->dwHelpContext = (*env)->GetIntField(env, lpObject, EXCEPINFOFc.dwHelpContext);

-	lpStruct->pvReserved = (void FAR *)(*env)->GetIntField(env, lpObject, EXCEPINFOFc.pvReserved);

-	lpStruct->pfnDeferredFillIn = (HRESULT (STDAPICALLTYPE FAR* )(struct tagEXCEPINFO FAR*))(*env)->GetIntField(env, lpObject, EXCEPINFOFc.pfnDeferredFillIn);

-	lpStruct->scode = (*env)->GetIntField(env, lpObject, EXCEPINFOFc.scode);

-	return lpStruct;

-}

-

-void setEXCEPINFOFields(JNIEnv *env, jobject lpObject, EXCEPINFO *lpStruct)

-{

-	if (!EXCEPINFOFc.cached) cacheEXCEPINFOFids(env, lpObject);

-	(*env)->SetShortField(env, lpObject, EXCEPINFOFc.wCode, (jshort)lpStruct->wCode);

-	(*env)->SetShortField(env, lpObject, EXCEPINFOFc.wReserved, (jshort)lpStruct->wReserved);

-	(*env)->SetIntField(env, lpObject, EXCEPINFOFc.bstrSource, (jint)lpStruct->bstrSource);

-	(*env)->SetIntField(env, lpObject, EXCEPINFOFc.bstrDescription, (jint)lpStruct->bstrDescription);

-	(*env)->SetIntField(env, lpObject, EXCEPINFOFc.bstrHelpFile, (jint)lpStruct->bstrHelpFile);

-	(*env)->SetIntField(env, lpObject, EXCEPINFOFc.dwHelpContext, (jint)lpStruct->dwHelpContext);

-	(*env)->SetIntField(env, lpObject, EXCEPINFOFc.pvReserved, (jint)lpStruct->pvReserved);

-	(*env)->SetIntField(env, lpObject, EXCEPINFOFc.pfnDeferredFillIn, (jint)lpStruct->pfnDeferredFillIn);

-	(*env)->SetIntField(env, lpObject, EXCEPINFOFc.scode, (jint)lpStruct->scode);

-}

-#endif /* NO_EXCEPINFO */

-

-#ifndef NO_FORMATETC

-typedef struct FORMATETC_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cfFormat, ptd, dwAspect, lindex, tymed;

-} FORMATETC_FID_CACHE;

-

-FORMATETC_FID_CACHE FORMATETCFc;

-

-void cacheFORMATETCFids(JNIEnv *env, jobject lpObject)

-{

-	if (FORMATETCFc.cached) return;

-	FORMATETCFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	FORMATETCFc.cfFormat = (*env)->GetFieldID(env, FORMATETCFc.clazz, "cfFormat", "I");

-	FORMATETCFc.ptd = (*env)->GetFieldID(env, FORMATETCFc.clazz, "ptd", "I");

-	FORMATETCFc.dwAspect = (*env)->GetFieldID(env, FORMATETCFc.clazz, "dwAspect", "I");

-	FORMATETCFc.lindex = (*env)->GetFieldID(env, FORMATETCFc.clazz, "lindex", "I");

-	FORMATETCFc.tymed = (*env)->GetFieldID(env, FORMATETCFc.clazz, "tymed", "I");

-	FORMATETCFc.cached = 1;

-}

-

-FORMATETC *getFORMATETCFields(JNIEnv *env, jobject lpObject, FORMATETC *lpStruct)

-{

-	if (!FORMATETCFc.cached) cacheFORMATETCFids(env, lpObject);

-	lpStruct->cfFormat = (CLIPFORMAT)(*env)->GetIntField(env, lpObject, FORMATETCFc.cfFormat);

-	lpStruct->ptd = (DVTARGETDEVICE *)(*env)->GetIntField(env, lpObject, FORMATETCFc.ptd);

-	lpStruct->dwAspect = (*env)->GetIntField(env, lpObject, FORMATETCFc.dwAspect);

-	lpStruct->lindex = (*env)->GetIntField(env, lpObject, FORMATETCFc.lindex);

-	lpStruct->tymed = (*env)->GetIntField(env, lpObject, FORMATETCFc.tymed);

-	return lpStruct;

-}

-

-void setFORMATETCFields(JNIEnv *env, jobject lpObject, FORMATETC *lpStruct)

-{

-	if (!FORMATETCFc.cached) cacheFORMATETCFids(env, lpObject);

-	(*env)->SetIntField(env, lpObject, FORMATETCFc.cfFormat, (jint)lpStruct->cfFormat);

-	(*env)->SetIntField(env, lpObject, FORMATETCFc.ptd, (jint)lpStruct->ptd);

-	(*env)->SetIntField(env, lpObject, FORMATETCFc.dwAspect, (jint)lpStruct->dwAspect);

-	(*env)->SetIntField(env, lpObject, FORMATETCFc.lindex, (jint)lpStruct->lindex);

-	(*env)->SetIntField(env, lpObject, FORMATETCFc.tymed, (jint)lpStruct->tymed);

-}

-#endif /* NO_FORMATETC */

-

-#ifndef NO_FUNCDESC1

-typedef struct FUNCDESC1_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID memid, lprgscode, lprgelemdescParam, funckind, invkind, callconv, cParams, cParamsOpt, oVft, cScodes, elemdescFunc_tdesc_union, elemdescFunc_tdesc_vt, elemdescFunc_paramdesc_pparamdescex, elemdescFunc_paramdesc_wParamFlags, wFuncFlags;

-} FUNCDESC1_FID_CACHE;

-

-FUNCDESC1_FID_CACHE FUNCDESC1Fc;

-

-void cacheFUNCDESC1Fids(JNIEnv *env, jobject lpObject)

-{

-	if (FUNCDESC1Fc.cached) return;

-	FUNCDESC1Fc.clazz = (*env)->GetObjectClass(env, lpObject);

-	FUNCDESC1Fc.memid = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "memid", "I");

-	FUNCDESC1Fc.lprgscode = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "lprgscode", "I");

-	FUNCDESC1Fc.lprgelemdescParam = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "lprgelemdescParam", "I");

-	FUNCDESC1Fc.funckind = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "funckind", "I");

-	FUNCDESC1Fc.invkind = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "invkind", "I");

-	FUNCDESC1Fc.callconv = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "callconv", "I");

-	FUNCDESC1Fc.cParams = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "cParams", "S");

-	FUNCDESC1Fc.cParamsOpt = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "cParamsOpt", "S");

-	FUNCDESC1Fc.oVft = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "oVft", "S");

-	FUNCDESC1Fc.cScodes = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "cScodes", "S");

-	FUNCDESC1Fc.elemdescFunc_tdesc_union = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "elemdescFunc_tdesc_union", "I");

-	FUNCDESC1Fc.elemdescFunc_tdesc_vt = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "elemdescFunc_tdesc_vt", "S");

-	FUNCDESC1Fc.elemdescFunc_paramdesc_pparamdescex = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "elemdescFunc_paramdesc_pparamdescex", "I");

-	FUNCDESC1Fc.elemdescFunc_paramdesc_wParamFlags = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "elemdescFunc_paramdesc_wParamFlags", "S");

-	FUNCDESC1Fc.wFuncFlags = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "wFuncFlags", "S");

-	FUNCDESC1Fc.cached = 1;

-}

-

-FUNCDESC *getFUNCDESC1Fields(JNIEnv *env, jobject lpObject, FUNCDESC *lpStruct)

-{

-	if (!FUNCDESC1Fc.cached) cacheFUNCDESC1Fids(env, lpObject);

-	lpStruct->memid = (*env)->GetIntField(env, lpObject, FUNCDESC1Fc.memid);

-	lpStruct->lprgscode = (SCODE FAR *)(*env)->GetIntField(env, lpObject, FUNCDESC1Fc.lprgscode);

-	lpStruct->lprgelemdescParam = (ELEMDESC FAR *)(*env)->GetIntField(env, lpObject, FUNCDESC1Fc.lprgelemdescParam);

-	lpStruct->funckind = (*env)->GetIntField(env, lpObject, FUNCDESC1Fc.funckind);

-	lpStruct->invkind = (*env)->GetIntField(env, lpObject, FUNCDESC1Fc.invkind);

-	lpStruct->callconv = (*env)->GetIntField(env, lpObject, FUNCDESC1Fc.callconv);

-	lpStruct->cParams = (*env)->GetShortField(env, lpObject, FUNCDESC1Fc.cParams);

-	lpStruct->cParamsOpt = (*env)->GetShortField(env, lpObject, FUNCDESC1Fc.cParamsOpt);

-	lpStruct->oVft = (*env)->GetShortField(env, lpObject, FUNCDESC1Fc.oVft);

-	lpStruct->cScodes = (*env)->GetShortField(env, lpObject, FUNCDESC1Fc.cScodes);

-	lpStruct->elemdescFunc.tdesc.lptdesc = (struct FARSTRUCT tagTYPEDESC FAR* )(*env)->GetIntField(env, lpObject, FUNCDESC1Fc.elemdescFunc_tdesc_union);

-	lpStruct->elemdescFunc.tdesc.vt = (*env)->GetShortField(env, lpObject, FUNCDESC1Fc.elemdescFunc_tdesc_vt);

-	lpStruct->elemdescFunc.paramdesc.pparamdescex = (LPPARAMDESCEX)(*env)->GetIntField(env, lpObject, FUNCDESC1Fc.elemdescFunc_paramdesc_pparamdescex);

-	lpStruct->elemdescFunc.paramdesc.wParamFlags = (*env)->GetShortField(env, lpObject, FUNCDESC1Fc.elemdescFunc_paramdesc_wParamFlags);

-	lpStruct->wFuncFlags = (*env)->GetShortField(env, lpObject, FUNCDESC1Fc.wFuncFlags);

-	return lpStruct;

-}

-

-void setFUNCDESC1Fields(JNIEnv *env, jobject lpObject, FUNCDESC *lpStruct)

-{

-	if (!FUNCDESC1Fc.cached) cacheFUNCDESC1Fids(env, lpObject);

-	(*env)->SetIntField(env, lpObject, FUNCDESC1Fc.memid, (jint)lpStruct->memid);

-	(*env)->SetIntField(env, lpObject, FUNCDESC1Fc.lprgscode, (jint)lpStruct->lprgscode);

-	(*env)->SetIntField(env, lpObject, FUNCDESC1Fc.lprgelemdescParam, (jint)lpStruct->lprgelemdescParam);

-	(*env)->SetIntField(env, lpObject, FUNCDESC1Fc.funckind, (jint)lpStruct->funckind);

-	(*env)->SetIntField(env, lpObject, FUNCDESC1Fc.invkind, (jint)lpStruct->invkind);

-	(*env)->SetIntField(env, lpObject, FUNCDESC1Fc.callconv, (jint)lpStruct->callconv);

-	(*env)->SetShortField(env, lpObject, FUNCDESC1Fc.cParams, (jshort)lpStruct->cParams);

-	(*env)->SetShortField(env, lpObject, FUNCDESC1Fc.cParamsOpt, (jshort)lpStruct->cParamsOpt);

-	(*env)->SetShortField(env, lpObject, FUNCDESC1Fc.oVft, (jshort)lpStruct->oVft);

-	(*env)->SetShortField(env, lpObject, FUNCDESC1Fc.cScodes, (jshort)lpStruct->cScodes);

-	(*env)->SetIntField(env, lpObject, FUNCDESC1Fc.elemdescFunc_tdesc_union, (jint)lpStruct->elemdescFunc.tdesc.lptdesc);

-	(*env)->SetShortField(env, lpObject, FUNCDESC1Fc.elemdescFunc_tdesc_vt, (jshort)lpStruct->elemdescFunc.tdesc.vt);

-	(*env)->SetIntField(env, lpObject, FUNCDESC1Fc.elemdescFunc_paramdesc_pparamdescex, (jint)lpStruct->elemdescFunc.paramdesc.pparamdescex);

-	(*env)->SetShortField(env, lpObject, FUNCDESC1Fc.elemdescFunc_paramdesc_wParamFlags, (jshort)lpStruct->elemdescFunc.paramdesc.wParamFlags);

-	(*env)->SetShortField(env, lpObject, FUNCDESC1Fc.wFuncFlags, (jshort)lpStruct->wFuncFlags);

-}

-#endif /* NO_FUNCDESC1 */

-

-#ifndef NO_FUNCDESC2

-typedef struct FUNCDESC2_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID memid, lprgscode, lprgelemdescParam, funckind, invkind, callconv, cParams, cParamsOpt, oVft, cScodes, elemdescFunc_tdesc_union, elemdescFunc_tdesc_vt, elemdescFunc_idldesc_dwReserved, elemdescFunc_idldesc_wIDLFlags, wFuncFlags;

-} FUNCDESC2_FID_CACHE;

-

-FUNCDESC2_FID_CACHE FUNCDESC2Fc;

-

-void cacheFUNCDESC2Fids(JNIEnv *env, jobject lpObject)

-{

-	if (FUNCDESC2Fc.cached) return;

-	FUNCDESC2Fc.clazz = (*env)->GetObjectClass(env, lpObject);

-	FUNCDESC2Fc.memid = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "memid", "I");

-	FUNCDESC2Fc.lprgscode = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "lprgscode", "I");

-	FUNCDESC2Fc.lprgelemdescParam = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "lprgelemdescParam", "I");

-	FUNCDESC2Fc.funckind = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "funckind", "I");

-	FUNCDESC2Fc.invkind = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "invkind", "I");

-	FUNCDESC2Fc.callconv = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "callconv", "I");

-	FUNCDESC2Fc.cParams = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "cParams", "S");

-	FUNCDESC2Fc.cParamsOpt = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "cParamsOpt", "S");

-	FUNCDESC2Fc.oVft = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "oVft", "S");

-	FUNCDESC2Fc.cScodes = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "cScodes", "S");

-	FUNCDESC2Fc.elemdescFunc_tdesc_union = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "elemdescFunc_tdesc_union", "I");

-	FUNCDESC2Fc.elemdescFunc_tdesc_vt = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "elemdescFunc_tdesc_vt", "S");

-	FUNCDESC2Fc.elemdescFunc_idldesc_dwReserved = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "elemdescFunc_idldesc_dwReserved", "I");

-	FUNCDESC2Fc.elemdescFunc_idldesc_wIDLFlags = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "elemdescFunc_idldesc_wIDLFlags", "S");

-	FUNCDESC2Fc.wFuncFlags = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "wFuncFlags", "S");

-	FUNCDESC2Fc.cached = 1;

-}

-

-FUNCDESC *getFUNCDESC2Fields(JNIEnv *env, jobject lpObject, FUNCDESC *lpStruct)

-{

-	if (!FUNCDESC2Fc.cached) cacheFUNCDESC2Fids(env, lpObject);

-	lpStruct->memid = (*env)->GetIntField(env, lpObject, FUNCDESC2Fc.memid);

-	lpStruct->lprgscode = (SCODE FAR *)(*env)->GetIntField(env, lpObject, FUNCDESC2Fc.lprgscode);

-	lpStruct->lprgelemdescParam = (ELEMDESC FAR *)(*env)->GetIntField(env, lpObject, FUNCDESC2Fc.lprgelemdescParam);

-	lpStruct->funckind = (*env)->GetIntField(env, lpObject, FUNCDESC2Fc.funckind);

-	lpStruct->invkind = (*env)->GetIntField(env, lpObject, FUNCDESC2Fc.invkind);

-	lpStruct->callconv = (*env)->GetIntField(env, lpObject, FUNCDESC2Fc.callconv);

-	lpStruct->cParams = (*env)->GetShortField(env, lpObject, FUNCDESC2Fc.cParams);

-	lpStruct->cParamsOpt = (*env)->GetShortField(env, lpObject, FUNCDESC2Fc.cParamsOpt);

-	lpStruct->oVft = (*env)->GetShortField(env, lpObject, FUNCDESC2Fc.oVft);

-	lpStruct->cScodes = (*env)->GetShortField(env, lpObject, FUNCDESC2Fc.cScodes);

-	lpStruct->elemdescFunc.tdesc.lptdesc = (struct FARSTRUCT tagTYPEDESC FAR* )(*env)->GetIntField(env, lpObject, FUNCDESC2Fc.elemdescFunc_tdesc_union);

-	lpStruct->elemdescFunc.tdesc.vt = (*env)->GetShortField(env, lpObject, FUNCDESC2Fc.elemdescFunc_tdesc_vt);

-	lpStruct->elemdescFunc.idldesc.dwReserved = (*env)->GetIntField(env, lpObject, FUNCDESC2Fc.elemdescFunc_idldesc_dwReserved);

-	lpStruct->elemdescFunc.idldesc.wIDLFlags = (*env)->GetShortField(env, lpObject, FUNCDESC2Fc.elemdescFunc_idldesc_wIDLFlags);

-	lpStruct->wFuncFlags = (*env)->GetShortField(env, lpObject, FUNCDESC2Fc.wFuncFlags);

-	return lpStruct;

-}

-

-void setFUNCDESC2Fields(JNIEnv *env, jobject lpObject, FUNCDESC *lpStruct)

-{

-	if (!FUNCDESC2Fc.cached) cacheFUNCDESC2Fids(env, lpObject);

-	(*env)->SetIntField(env, lpObject, FUNCDESC2Fc.memid, (jint)lpStruct->memid);

-	(*env)->SetIntField(env, lpObject, FUNCDESC2Fc.lprgscode, (jint)lpStruct->lprgscode);

-	(*env)->SetIntField(env, lpObject, FUNCDESC2Fc.lprgelemdescParam, (jint)lpStruct->lprgelemdescParam);

-	(*env)->SetIntField(env, lpObject, FUNCDESC2Fc.funckind, (jint)lpStruct->funckind);

-	(*env)->SetIntField(env, lpObject, FUNCDESC2Fc.invkind, (jint)lpStruct->invkind);

-	(*env)->SetIntField(env, lpObject, FUNCDESC2Fc.callconv, (jint)lpStruct->callconv);

-	(*env)->SetShortField(env, lpObject, FUNCDESC2Fc.cParams, (jshort)lpStruct->cParams);

-	(*env)->SetShortField(env, lpObject, FUNCDESC2Fc.cParamsOpt, (jshort)lpStruct->cParamsOpt);

-	(*env)->SetShortField(env, lpObject, FUNCDESC2Fc.oVft, (jshort)lpStruct->oVft);

-	(*env)->SetShortField(env, lpObject, FUNCDESC2Fc.cScodes, (jshort)lpStruct->cScodes);

-	(*env)->SetIntField(env, lpObject, FUNCDESC2Fc.elemdescFunc_tdesc_union, (jint)lpStruct->elemdescFunc.tdesc.lptdesc);

-	(*env)->SetShortField(env, lpObject, FUNCDESC2Fc.elemdescFunc_tdesc_vt, (jshort)lpStruct->elemdescFunc.tdesc.vt);

-	(*env)->SetIntField(env, lpObject, FUNCDESC2Fc.elemdescFunc_idldesc_dwReserved, (jint)lpStruct->elemdescFunc.idldesc.dwReserved);

-	(*env)->SetShortField(env, lpObject, FUNCDESC2Fc.elemdescFunc_idldesc_wIDLFlags, (jshort)lpStruct->elemdescFunc.idldesc.wIDLFlags);

-	(*env)->SetShortField(env, lpObject, FUNCDESC2Fc.wFuncFlags, (jshort)lpStruct->wFuncFlags);

-}

-#endif /* NO_FUNCDESC2 */

-

-#ifndef NO_GUID

-typedef struct GUID_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID data1, data2, data3, b0, b1, b2, b3, b4, b5, b6, b7;

-} GUID_FID_CACHE;

-

-GUID_FID_CACHE GUIDFc;

-

-void cacheGUIDFids(JNIEnv *env, jobject lpObject)

-{

-	if (GUIDFc.cached) return;

-	GUIDFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	GUIDFc.data1 = (*env)->GetFieldID(env, GUIDFc.clazz, "data1", "I");

-	GUIDFc.data2 = (*env)->GetFieldID(env, GUIDFc.clazz, "data2", "S");

-	GUIDFc.data3 = (*env)->GetFieldID(env, GUIDFc.clazz, "data3", "S");

-	GUIDFc.b0 = (*env)->GetFieldID(env, GUIDFc.clazz, "b0", "B");

-	GUIDFc.b1 = (*env)->GetFieldID(env, GUIDFc.clazz, "b1", "B");

-	GUIDFc.b2 = (*env)->GetFieldID(env, GUIDFc.clazz, "b2", "B");

-	GUIDFc.b3 = (*env)->GetFieldID(env, GUIDFc.clazz, "b3", "B");

-	GUIDFc.b4 = (*env)->GetFieldID(env, GUIDFc.clazz, "b4", "B");

-	GUIDFc.b5 = (*env)->GetFieldID(env, GUIDFc.clazz, "b5", "B");

-	GUIDFc.b6 = (*env)->GetFieldID(env, GUIDFc.clazz, "b6", "B");

-	GUIDFc.b7 = (*env)->GetFieldID(env, GUIDFc.clazz, "b7", "B");

-	GUIDFc.cached = 1;

-}

-

-GUID *getGUIDFields(JNIEnv *env, jobject lpObject, GUID *lpStruct)

-{

-	if (!GUIDFc.cached) cacheGUIDFids(env, lpObject);

-	lpStruct->Data4[7] = (*env)->GetByteField(env, lpObject, GUIDFc.b7);

-	lpStruct->Data4[6] = (*env)->GetByteField(env, lpObject, GUIDFc.b6);

-	lpStruct->Data4[5] = (*env)->GetByteField(env, lpObject, GUIDFc.b5);

-	lpStruct->Data4[4] = (*env)->GetByteField(env, lpObject, GUIDFc.b4);

-	lpStruct->Data4[3] = (*env)->GetByteField(env, lpObject, GUIDFc.b3);

-	lpStruct->Data4[2] = (*env)->GetByteField(env, lpObject, GUIDFc.b2);

-	lpStruct->Data4[1] = (*env)->GetByteField(env, lpObject, GUIDFc.b1);

-	lpStruct->Data4[0] = (*env)->GetByteField(env, lpObject, GUIDFc.b0);

-	lpStruct->Data3 = (*env)->GetShortField(env, lpObject, GUIDFc.data3);

-	lpStruct->Data2 = (*env)->GetShortField(env, lpObject, GUIDFc.data2);

-	lpStruct->Data1 = (*env)->GetIntField(env, lpObject, GUIDFc.data1);

-	return lpStruct;

-}

-

-void setGUIDFields(JNIEnv *env, jobject lpObject, GUID *lpStruct)

-{

-	if (!GUIDFc.cached) cacheGUIDFids(env, lpObject);

-	(*env)->SetByteField(env, lpObject, GUIDFc.b7, lpStruct->Data4[7]);

-	(*env)->SetByteField(env, lpObject, GUIDFc.b6, lpStruct->Data4[6]);

-	(*env)->SetByteField(env, lpObject, GUIDFc.b5, lpStruct->Data4[5]);

-	(*env)->SetByteField(env, lpObject, GUIDFc.b4, lpStruct->Data4[4]);

-	(*env)->SetByteField(env, lpObject, GUIDFc.b3, lpStruct->Data4[3]);

-	(*env)->SetByteField(env, lpObject, GUIDFc.b2, lpStruct->Data4[2]);

-	(*env)->SetByteField(env, lpObject, GUIDFc.b1, lpStruct->Data4[1]);

-	(*env)->SetByteField(env, lpObject, GUIDFc.b0, lpStruct->Data4[0]);

-	(*env)->SetShortField(env, lpObject, GUIDFc.data3, lpStruct->Data3);

-	(*env)->SetShortField(env, lpObject, GUIDFc.data2, lpStruct->Data2);

-	(*env)->SetIntField(env, lpObject, GUIDFc.data1, lpStruct->Data1);

-}

-

-#endif /* NO_GUID */

-

-#ifndef NO_LICINFO

-typedef struct LICINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbLicInfo, fRuntimeKeyAvail, fLicVerified;

-} LICINFO_FID_CACHE;

-

-LICINFO_FID_CACHE LICINFOFc;

-

-void cacheLICINFOFids(JNIEnv *env, jobject lpObject)

-{

-	if (LICINFOFc.cached) return;

-	LICINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	LICINFOFc.cbLicInfo = (*env)->GetFieldID(env, LICINFOFc.clazz, "cbLicInfo", "I");

-	LICINFOFc.fRuntimeKeyAvail = (*env)->GetFieldID(env, LICINFOFc.clazz, "fRuntimeKeyAvail", "I");

-	LICINFOFc.fLicVerified = (*env)->GetFieldID(env, LICINFOFc.clazz, "fLicVerified", "I");

-	LICINFOFc.cached = 1;

-}

-

-LICINFO *getLICINFOFields(JNIEnv *env, jobject lpObject, LICINFO *lpStruct)

-{

-	if (!LICINFOFc.cached) cacheLICINFOFids(env, lpObject);

-	lpStruct->cbLicInfo = (*env)->GetIntField(env, lpObject, LICINFOFc.cbLicInfo);

-	lpStruct->fRuntimeKeyAvail = (*env)->GetIntField(env, lpObject, LICINFOFc.fRuntimeKeyAvail);

-	lpStruct->fLicVerified = (*env)->GetIntField(env, lpObject, LICINFOFc.fLicVerified);

-	return lpStruct;

-}

-

-void setLICINFOFields(JNIEnv *env, jobject lpObject, LICINFO *lpStruct)

-{

-	if (!LICINFOFc.cached) cacheLICINFOFids(env, lpObject);

-	(*env)->SetIntField(env, lpObject, LICINFOFc.cbLicInfo, (jint)lpStruct->cbLicInfo);

-	(*env)->SetIntField(env, lpObject, LICINFOFc.fRuntimeKeyAvail, (jint)lpStruct->fRuntimeKeyAvail);

-	(*env)->SetIntField(env, lpObject, LICINFOFc.fLicVerified, (jint)lpStruct->fLicVerified);

-}

-#endif /* NO_LICINFO */

-

-#ifndef NO_OLECMD

-typedef struct OLECMD_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cmdID, cmdf;

-} OLECMD_FID_CACHE;

-

-OLECMD_FID_CACHE OLECMDFc;

-

-void cacheOLECMDFids(JNIEnv *env, jobject lpObject)

-{

-	if (OLECMDFc.cached) return;

-	OLECMDFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	OLECMDFc.cmdID = (*env)->GetFieldID(env, OLECMDFc.clazz, "cmdID", "I");

-	OLECMDFc.cmdf = (*env)->GetFieldID(env, OLECMDFc.clazz, "cmdf", "I");

-	OLECMDFc.cached = 1;

-}

-

-OLECMD *getOLECMDFields(JNIEnv *env, jobject lpObject, OLECMD *lpStruct)

-{

-	if (!OLECMDFc.cached) cacheOLECMDFids(env, lpObject);

-	lpStruct->cmdID = (*env)->GetIntField(env, lpObject, OLECMDFc.cmdID);

-	lpStruct->cmdf = (*env)->GetIntField(env, lpObject, OLECMDFc.cmdf);

-	return lpStruct;

-}

-

-void setOLECMDFields(JNIEnv *env, jobject lpObject, OLECMD *lpStruct)

-{

-	if (!OLECMDFc.cached) cacheOLECMDFids(env, lpObject);

-	(*env)->SetIntField(env, lpObject, OLECMDFc.cmdID, (jint)lpStruct->cmdID);

-	(*env)->SetIntField(env, lpObject, OLECMDFc.cmdf, (jint)lpStruct->cmdf);

-}

-#endif /* NO_OLECMD */

-

-#ifndef NO_OLECMDTEXT

-typedef struct OLECMDTEXT_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cmdtextf, cwActual, cwBuf, rgwz;

-} OLECMDTEXT_FID_CACHE;

-

-OLECMDTEXT_FID_CACHE OLECMDTEXTFc;

-

-void cacheOLECMDTEXTFids(JNIEnv *env, jobject lpObject)

-{

-	if (OLECMDTEXTFc.cached) return;

-	OLECMDTEXTFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	OLECMDTEXTFc.cmdtextf = (*env)->GetFieldID(env, OLECMDTEXTFc.clazz, "cmdtextf", "I");

-	OLECMDTEXTFc.cwActual = (*env)->GetFieldID(env, OLECMDTEXTFc.clazz, "cwActual", "I");

-	OLECMDTEXTFc.cwBuf = (*env)->GetFieldID(env, OLECMDTEXTFc.clazz, "cwBuf", "I");

-	OLECMDTEXTFc.rgwz = (*env)->GetFieldID(env, OLECMDTEXTFc.clazz, "rgwz", "S");

-	OLECMDTEXTFc.cached = 1;

-}

-

-OLECMDTEXT *getOLECMDTEXTFields(JNIEnv *env, jobject lpObject, OLECMDTEXT *lpStruct)

-{

-	if (!OLECMDTEXTFc.cached) cacheOLECMDTEXTFids(env, lpObject);

-	lpStruct->cmdtextf = (*env)->GetIntField(env, lpObject, OLECMDTEXTFc.cmdtextf);

-	lpStruct->cwActual = (*env)->GetIntField(env, lpObject, OLECMDTEXTFc.cwActual);

-	lpStruct->cwBuf = (*env)->GetIntField(env, lpObject, OLECMDTEXTFc.cwBuf);

-	lpStruct->rgwz[0] = (*env)->GetShortField(env, lpObject, OLECMDTEXTFc.rgwz); /* SPECIAL */

-	return lpStruct;

-}

-

-void setOLECMDTEXTFields(JNIEnv *env, jobject lpObject, OLECMDTEXT *lpStruct)

-{

-	if (!OLECMDTEXTFc.cached) cacheOLECMDTEXTFids(env, lpObject);

-	(*env)->SetIntField(env, lpObject, OLECMDTEXTFc.cmdtextf, (jint)lpStruct->cmdtextf);

-	(*env)->SetIntField(env, lpObject, OLECMDTEXTFc.cwActual, (jint)lpStruct->cwActual);

-	(*env)->SetIntField(env, lpObject, OLECMDTEXTFc.cwBuf, (jint)lpStruct->cwBuf);

-	(*env)->SetShortField(env, lpObject, OLECMDTEXTFc.rgwz, (jshort)lpStruct->rgwz[0]); /* SPECIAL */

-}

-#endif /* NO_OLECMDTEXT */

-

-#ifndef NO_OLEINPLACEFRAMEINFO

-typedef struct OLEINPLACEFRAMEINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cb, fMDIApp, hwndFrame, haccel, cAccelEntries;

-} OLEINPLACEFRAMEINFO_FID_CACHE;

-

-OLEINPLACEFRAMEINFO_FID_CACHE OLEINPLACEFRAMEINFOFc;

-

-void cacheOLEINPLACEFRAMEINFOFids(JNIEnv *env, jobject lpObject)

-{

-	if (OLEINPLACEFRAMEINFOFc.cached) return;

-	OLEINPLACEFRAMEINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	OLEINPLACEFRAMEINFOFc.cb = (*env)->GetFieldID(env, OLEINPLACEFRAMEINFOFc.clazz, "cb", "I");

-	OLEINPLACEFRAMEINFOFc.fMDIApp = (*env)->GetFieldID(env, OLEINPLACEFRAMEINFOFc.clazz, "fMDIApp", "I");

-	OLEINPLACEFRAMEINFOFc.hwndFrame = (*env)->GetFieldID(env, OLEINPLACEFRAMEINFOFc.clazz, "hwndFrame", "I");

-	OLEINPLACEFRAMEINFOFc.haccel = (*env)->GetFieldID(env, OLEINPLACEFRAMEINFOFc.clazz, "haccel", "I");

-	OLEINPLACEFRAMEINFOFc.cAccelEntries = (*env)->GetFieldID(env, OLEINPLACEFRAMEINFOFc.clazz, "cAccelEntries", "I");

-	OLEINPLACEFRAMEINFOFc.cached = 1;

-}

-

-OLEINPLACEFRAMEINFO *getOLEINPLACEFRAMEINFOFields(JNIEnv *env, jobject lpObject, OLEINPLACEFRAMEINFO *lpStruct)

-{

-	if (!OLEINPLACEFRAMEINFOFc.cached) cacheOLEINPLACEFRAMEINFOFids(env, lpObject);

-	lpStruct->cb = (*env)->GetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.cb);

-	lpStruct->fMDIApp = (*env)->GetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.fMDIApp);

-	lpStruct->hwndFrame = (HWND)(*env)->GetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.hwndFrame);

-	lpStruct->haccel = (HACCEL)(*env)->GetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.haccel);

-	lpStruct->cAccelEntries = (*env)->GetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.cAccelEntries);

-	return lpStruct;

-}

-

-void setOLEINPLACEFRAMEINFOFields(JNIEnv *env, jobject lpObject, OLEINPLACEFRAMEINFO *lpStruct)

-{

-	if (!OLEINPLACEFRAMEINFOFc.cached) cacheOLEINPLACEFRAMEINFOFids(env, lpObject);

-	(*env)->SetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.cb, (jint)lpStruct->cb);

-	(*env)->SetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.fMDIApp, (jint)lpStruct->fMDIApp);

-	(*env)->SetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.hwndFrame, (jint)lpStruct->hwndFrame);

-	(*env)->SetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.haccel, (jint)lpStruct->haccel);

-	(*env)->SetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.cAccelEntries, (jint)lpStruct->cAccelEntries);

-}

-#endif /* NO_OLEINPLACEFRAMEINFO */

-

-#ifndef NO_STATSTG

-typedef struct STATSTG_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID pwcsName, type, cbSize, mtime_dwLowDateTime, mtime_dwHighDateTime, ctime_dwLowDateTime, ctime_dwHighDateTime, atime_dwLowDateTime, atime_dwHighDateTime, grfMode, grfLocksSupported, clsid_data1, clsid_data2, clsid_data3, clsid_b0, clsid_b1, clsid_b2, clsid_b3, clsid_b4, clsid_b5, clsid_b6, clsid_b7, grfStateBits, reserved;

-} STATSTG_FID_CACHE;

-

-STATSTG_FID_CACHE STATSTGFc;

-

-void cacheSTATSTGFids(JNIEnv *env, jobject lpObject)

-{

-	if (STATSTGFc.cached) return;

-	STATSTGFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	STATSTGFc.pwcsName = (*env)->GetFieldID(env, STATSTGFc.clazz, "pwcsName", "I");

-	STATSTGFc.type = (*env)->GetFieldID(env, STATSTGFc.clazz, "type", "I");

-	STATSTGFc.cbSize = (*env)->GetFieldID(env, STATSTGFc.clazz, "cbSize", "J");

-	STATSTGFc.mtime_dwLowDateTime = (*env)->GetFieldID(env, STATSTGFc.clazz, "mtime_dwLowDateTime", "I");

-	STATSTGFc.mtime_dwHighDateTime = (*env)->GetFieldID(env, STATSTGFc.clazz, "mtime_dwHighDateTime", "I");

-	STATSTGFc.ctime_dwLowDateTime = (*env)->GetFieldID(env, STATSTGFc.clazz, "ctime_dwLowDateTime", "I");

-	STATSTGFc.ctime_dwHighDateTime = (*env)->GetFieldID(env, STATSTGFc.clazz, "ctime_dwHighDateTime", "I");

-	STATSTGFc.atime_dwLowDateTime = (*env)->GetFieldID(env, STATSTGFc.clazz, "atime_dwLowDateTime", "I");

-	STATSTGFc.atime_dwHighDateTime = (*env)->GetFieldID(env, STATSTGFc.clazz, "atime_dwHighDateTime", "I");

-	STATSTGFc.grfMode = (*env)->GetFieldID(env, STATSTGFc.clazz, "grfMode", "I");

-	STATSTGFc.grfLocksSupported = (*env)->GetFieldID(env, STATSTGFc.clazz, "grfLocksSupported", "I");

-	STATSTGFc.clsid_data1 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_data1", "I");

-	STATSTGFc.clsid_data2 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_data2", "S");

-	STATSTGFc.clsid_data3 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_data3", "S");

-	STATSTGFc.clsid_b0 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_b0", "B");

-	STATSTGFc.clsid_b1 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_b1", "B");

-	STATSTGFc.clsid_b2 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_b2", "B");

-	STATSTGFc.clsid_b3 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_b3", "B");

-	STATSTGFc.clsid_b4 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_b4", "B");

-	STATSTGFc.clsid_b5 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_b5", "B");

-	STATSTGFc.clsid_b6 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_b6", "B");

-	STATSTGFc.clsid_b7 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_b7", "B");

-	STATSTGFc.grfStateBits = (*env)->GetFieldID(env, STATSTGFc.clazz, "grfStateBits", "I");

-	STATSTGFc.reserved = (*env)->GetFieldID(env, STATSTGFc.clazz, "reserved", "I");

-	STATSTGFc.cached = 1;

-}

-

-STATSTG *getSTATSTGFields(JNIEnv *env, jobject lpObject, STATSTG *lpStruct)

-{

-	if (!STATSTGFc.cached) cacheSTATSTGFids(env, lpObject);

-	lpStruct->pwcsName = (LPWSTR)(*env)->GetIntField(env, lpObject, STATSTGFc.pwcsName);

-	lpStruct->type = (*env)->GetIntField(env, lpObject, STATSTGFc.type);

-	lpStruct->cbSize.QuadPart = (*env)->GetLongField(env, lpObject, STATSTGFc.cbSize);

-	lpStruct->mtime.dwLowDateTime = (*env)->GetIntField(env, lpObject, STATSTGFc.mtime_dwLowDateTime);

-	lpStruct->mtime.dwHighDateTime = (*env)->GetIntField(env, lpObject, STATSTGFc.mtime_dwHighDateTime);

-	lpStruct->ctime.dwLowDateTime = (*env)->GetIntField(env, lpObject, STATSTGFc.ctime_dwLowDateTime);

-	lpStruct->ctime.dwHighDateTime = (*env)->GetIntField(env, lpObject, STATSTGFc.ctime_dwHighDateTime);

-	lpStruct->atime.dwLowDateTime = (*env)->GetIntField(env, lpObject, STATSTGFc.atime_dwLowDateTime);

-	lpStruct->atime.dwHighDateTime = (*env)->GetIntField(env, lpObject, STATSTGFc.atime_dwHighDateTime);

-	lpStruct->grfMode = (*env)->GetIntField(env, lpObject, STATSTGFc.grfMode);

-	lpStruct->grfLocksSupported = (*env)->GetIntField(env, lpObject, STATSTGFc.grfLocksSupported);

-	lpStruct->clsid.Data4[7] = (*env)->GetByteField(env, lpObject, STATSTGFc.clsid_b7);

-	lpStruct->clsid.Data4[6] = (*env)->GetByteField(env, lpObject, STATSTGFc.clsid_b6);

-	lpStruct->clsid.Data4[5] = (*env)->GetByteField(env, lpObject, STATSTGFc.clsid_b5);

-	lpStruct->clsid.Data4[4] = (*env)->GetByteField(env, lpObject, STATSTGFc.clsid_b4);

-	lpStruct->clsid.Data4[3] = (*env)->GetByteField(env, lpObject, STATSTGFc.clsid_b3);

-	lpStruct->clsid.Data4[2] = (*env)->GetByteField(env, lpObject, STATSTGFc.clsid_b2);

-	lpStruct->clsid.Data4[1] = (*env)->GetByteField(env, lpObject, STATSTGFc.clsid_b1);

-	lpStruct->clsid.Data4[0] = (*env)->GetByteField(env, lpObject, STATSTGFc.clsid_b0);

-	lpStruct->clsid.Data3 = (*env)->GetShortField(env, lpObject, STATSTGFc.clsid_data3);

-	lpStruct->clsid.Data2 = (*env)->GetShortField(env, lpObject, STATSTGFc.clsid_data2);

-	lpStruct->clsid.Data1 = (*env)->GetIntField(env, lpObject, STATSTGFc.clsid_data1);

-	lpStruct->grfStateBits = (*env)->GetIntField(env, lpObject, STATSTGFc.grfStateBits);

-	lpStruct->reserved = (*env)->GetIntField(env, lpObject, STATSTGFc.reserved);

-	return lpStruct;

-}

-

-void setSTATSTGFields(JNIEnv *env, jobject lpObject, STATSTG *lpStruct)

-{

-	if (!STATSTGFc.cached) cacheSTATSTGFids(env, lpObject);

-	(*env)->SetIntField(env, lpObject, STATSTGFc.pwcsName, (jint)lpStruct->pwcsName);

-	(*env)->SetIntField(env, lpObject, STATSTGFc.type, (jint)lpStruct->type);

-	(*env)->SetLongField(env, lpObject, STATSTGFc.cbSize, (jlong)lpStruct->cbSize.QuadPart);

-	(*env)->SetIntField(env, lpObject, STATSTGFc.mtime_dwLowDateTime, (jint)lpStruct->mtime.dwLowDateTime);

-	(*env)->SetIntField(env, lpObject, STATSTGFc.mtime_dwHighDateTime, (jint)lpStruct->mtime.dwHighDateTime);

-	(*env)->SetIntField(env, lpObject, STATSTGFc.ctime_dwLowDateTime, (jint)lpStruct->ctime.dwLowDateTime);

-	(*env)->SetIntField(env, lpObject, STATSTGFc.ctime_dwHighDateTime, (jint)lpStruct->ctime.dwHighDateTime);

-	(*env)->SetIntField(env, lpObject, STATSTGFc.atime_dwLowDateTime, (jint)lpStruct->atime.dwLowDateTime);

-	(*env)->SetIntField(env, lpObject, STATSTGFc.atime_dwHighDateTime, (jint)lpStruct->atime.dwHighDateTime);

-	(*env)->SetIntField(env, lpObject, STATSTGFc.grfMode, (jint)lpStruct->grfMode);

-	(*env)->SetIntField(env, lpObject, STATSTGFc.grfLocksSupported, (jint)lpStruct->grfLocksSupported);

-	(*env)->SetByteField(env, lpObject, STATSTGFc.clsid_b7, lpStruct->clsid.Data4[7]);

-	(*env)->SetByteField(env, lpObject, STATSTGFc.clsid_b6, lpStruct->clsid.Data4[6]);

-	(*env)->SetByteField(env, lpObject, STATSTGFc.clsid_b5, lpStruct->clsid.Data4[5]);

-	(*env)->SetByteField(env, lpObject, STATSTGFc.clsid_b4, lpStruct->clsid.Data4[4]);

-	(*env)->SetByteField(env, lpObject, STATSTGFc.clsid_b3, lpStruct->clsid.Data4[3]);

-	(*env)->SetByteField(env, lpObject, STATSTGFc.clsid_b2, lpStruct->clsid.Data4[2]);

-	(*env)->SetByteField(env, lpObject, STATSTGFc.clsid_b1, lpStruct->clsid.Data4[1]);

-	(*env)->SetByteField(env, lpObject, STATSTGFc.clsid_b0, lpStruct->clsid.Data4[0]);

-	(*env)->SetShortField(env, lpObject, STATSTGFc.clsid_data3, lpStruct->clsid.Data3);

-	(*env)->SetShortField(env, lpObject, STATSTGFc.clsid_data2, lpStruct->clsid.Data2);

-	(*env)->SetIntField(env, lpObject, STATSTGFc.clsid_data1, lpStruct->clsid.Data1);

-	(*env)->SetIntField(env, lpObject, STATSTGFc.grfStateBits, (jint)lpStruct->grfStateBits);

-	(*env)->SetIntField(env, lpObject, STATSTGFc.reserved, (jint)lpStruct->reserved);

-}

-#endif /* NO_STATSTG */

-

-#ifndef NO_STGMEDIUM

-typedef struct STGMEDIUM_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID tymed, unionField, pUnkForRelease;

-} STGMEDIUM_FID_CACHE;

-

-STGMEDIUM_FID_CACHE STGMEDIUMFc;

-

-void cacheSTGMEDIUMFids(JNIEnv *env, jobject lpObject)

-{

-	if (STGMEDIUMFc.cached) return;

-	STGMEDIUMFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	STGMEDIUMFc.tymed = (*env)->GetFieldID(env, STGMEDIUMFc.clazz, "tymed", "I");

-	STGMEDIUMFc.unionField = (*env)->GetFieldID(env, STGMEDIUMFc.clazz, "unionField", "I");

-	STGMEDIUMFc.pUnkForRelease = (*env)->GetFieldID(env, STGMEDIUMFc.clazz, "pUnkForRelease", "I");

-	STGMEDIUMFc.cached = 1;

-}

-

-STGMEDIUM *getSTGMEDIUMFields(JNIEnv *env, jobject lpObject, STGMEDIUM *lpStruct)

-{

-	if (!STGMEDIUMFc.cached) cacheSTGMEDIUMFids(env, lpObject);

-	lpStruct->tymed = (*env)->GetIntField(env, lpObject, STGMEDIUMFc.tymed);

-	lpStruct->hGlobal = (HGLOBAL)(*env)->GetIntField(env, lpObject, STGMEDIUMFc.unionField);

-	lpStruct->pUnkForRelease = (IUnknown *)(*env)->GetIntField(env, lpObject, STGMEDIUMFc.pUnkForRelease);

-	return lpStruct;

-}

-

-void setSTGMEDIUMFields(JNIEnv *env, jobject lpObject, STGMEDIUM *lpStruct)

-{

-	if (!STGMEDIUMFc.cached) cacheSTGMEDIUMFids(env, lpObject);

-	(*env)->SetIntField(env, lpObject, STGMEDIUMFc.tymed, (jint)lpStruct->tymed);

-	(*env)->SetIntField(env, lpObject, STGMEDIUMFc.unionField, (jint)lpStruct->hGlobal);

-	(*env)->SetIntField(env, lpObject, STGMEDIUMFc.pUnkForRelease, (jint)lpStruct->pUnkForRelease);

-}

-#endif /* NO_STGMEDIUM */

-

-#ifndef NO_TYPEATTR

-typedef struct TYPEATTR_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID guid_data1, guid_data2, guid_data3, guid_b0, guid_b1, guid_b2, guid_b3, guid_b4, guid_b5, guid_b6, guid_b7, lcid, dwReserved, memidConstructor, memidDestructor, lpstrSchema, cbSizeInstance, typekind, cFuncs, cVars, cImplTypes, cbSizeVft, cbAlignment, wTypeFlags, wMajorVerNum, wMinorVerNum, tdescAlias_unionField, tdescAlias_vt, idldescType_dwReserved, idldescType_wIDLFlags;

-} TYPEATTR_FID_CACHE;

-

-TYPEATTR_FID_CACHE TYPEATTRFc;

-

-void cacheTYPEATTRFids(JNIEnv *env, jobject lpObject)

-{

-	if (TYPEATTRFc.cached) return;

-	TYPEATTRFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	TYPEATTRFc.guid_data1 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_data1", "I");

-	TYPEATTRFc.guid_data2 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_data2", "S");

-	TYPEATTRFc.guid_data3 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_data3", "S");

-	TYPEATTRFc.guid_b0 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_b0", "B");

-	TYPEATTRFc.guid_b1 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_b1", "B");

-	TYPEATTRFc.guid_b2 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_b2", "B");

-	TYPEATTRFc.guid_b3 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_b3", "B");

-	TYPEATTRFc.guid_b4 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_b4", "B");

-	TYPEATTRFc.guid_b5 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_b5", "B");

-	TYPEATTRFc.guid_b6 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_b6", "B");

-	TYPEATTRFc.guid_b7 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_b7", "B");

-	TYPEATTRFc.lcid = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "lcid", "I");

-	TYPEATTRFc.dwReserved = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "dwReserved", "I");

-	TYPEATTRFc.memidConstructor = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "memidConstructor", "I");

-	TYPEATTRFc.memidDestructor = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "memidDestructor", "I");

-	TYPEATTRFc.lpstrSchema = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "lpstrSchema", "I");

-	TYPEATTRFc.cbSizeInstance = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "cbSizeInstance", "I");

-	TYPEATTRFc.typekind = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "typekind", "I");

-	TYPEATTRFc.cFuncs = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "cFuncs", "S");

-	TYPEATTRFc.cVars = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "cVars", "S");

-	TYPEATTRFc.cImplTypes = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "cImplTypes", "S");

-	TYPEATTRFc.cbSizeVft = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "cbSizeVft", "S");

-	TYPEATTRFc.cbAlignment = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "cbAlignment", "S");

-	TYPEATTRFc.wTypeFlags = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "wTypeFlags", "S");

-	TYPEATTRFc.wMajorVerNum = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "wMajorVerNum", "S");

-	TYPEATTRFc.wMinorVerNum = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "wMinorVerNum", "S");

-	TYPEATTRFc.tdescAlias_unionField = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "tdescAlias_unionField", "I");

-	TYPEATTRFc.tdescAlias_vt = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "tdescAlias_vt", "S");

-	TYPEATTRFc.idldescType_dwReserved = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "idldescType_dwReserved", "I");

-	TYPEATTRFc.idldescType_wIDLFlags = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "idldescType_wIDLFlags", "S");

-	TYPEATTRFc.cached = 1;

-}

-

-TYPEATTR *getTYPEATTRFields(JNIEnv *env, jobject lpObject, TYPEATTR *lpStruct)

-{

-	if (!TYPEATTRFc.cached) cacheTYPEATTRFids(env, lpObject);

-	lpStruct->idldescType.wIDLFlags = (*env)->GetShortField(env, lpObject, TYPEATTRFc.idldescType_wIDLFlags);

-	lpStruct->idldescType.dwReserved = (*env)->GetIntField(env, lpObject, TYPEATTRFc.idldescType_dwReserved);

-	lpStruct->tdescAlias.vt = (*env)->GetShortField(env, lpObject, TYPEATTRFc.tdescAlias_vt);

-	lpStruct->tdescAlias.lptdesc = (struct FARSTRUCT tagTYPEDESC FAR *)(*env)->GetIntField(env, lpObject, TYPEATTRFc.tdescAlias_unionField);

-	lpStruct->wMinorVerNum = (*env)->GetShortField(env, lpObject, TYPEATTRFc.wMinorVerNum);

-	lpStruct->wMajorVerNum = (*env)->GetShortField(env, lpObject, TYPEATTRFc.wMajorVerNum);

-	lpStruct->wTypeFlags = (*env)->GetShortField(env, lpObject, TYPEATTRFc.wTypeFlags);

-	lpStruct->cbAlignment = (*env)->GetShortField(env, lpObject, TYPEATTRFc.cbAlignment);

-	lpStruct->cbSizeVft = (*env)->GetShortField(env, lpObject, TYPEATTRFc.cbSizeVft);

-	lpStruct->cImplTypes = (*env)->GetShortField(env, lpObject, TYPEATTRFc.cImplTypes);

-	lpStruct->cVars = (*env)->GetShortField(env, lpObject, TYPEATTRFc.cVars);

-	lpStruct->cFuncs = (*env)->GetShortField(env, lpObject, TYPEATTRFc.cFuncs);

-	lpStruct->typekind = (*env)->GetIntField(env, lpObject, TYPEATTRFc.typekind);

-	lpStruct->cbSizeInstance = (*env)->GetIntField(env, lpObject, TYPEATTRFc.cbSizeInstance);

-	lpStruct->lpstrSchema = (OLECHAR FAR *)(*env)->GetIntField(env, lpObject, TYPEATTRFc.lpstrSchema);

-	lpStruct->memidDestructor = (*env)->GetIntField(env, lpObject, TYPEATTRFc.memidDestructor);

-	lpStruct->memidConstructor = (*env)->GetIntField(env, lpObject, TYPEATTRFc.memidConstructor);

-	lpStruct->dwReserved = (*env)->GetIntField(env, lpObject, TYPEATTRFc.dwReserved);

-	lpStruct->lcid = (*env)->GetIntField(env, lpObject, TYPEATTRFc.lcid);

-	lpStruct->guid.Data4[7] = (*env)->GetByteField(env, lpObject, TYPEATTRFc.guid_b7);

-	lpStruct->guid.Data4[6] = (*env)->GetByteField(env, lpObject, TYPEATTRFc.guid_b6);

-	lpStruct->guid.Data4[5] = (*env)->GetByteField(env, lpObject, TYPEATTRFc.guid_b5);

-	lpStruct->guid.Data4[4] = (*env)->GetByteField(env, lpObject, TYPEATTRFc.guid_b4);

-	lpStruct->guid.Data4[3] = (*env)->GetByteField(env, lpObject, TYPEATTRFc.guid_b3);

-	lpStruct->guid.Data4[2] = (*env)->GetByteField(env, lpObject, TYPEATTRFc.guid_b2);

-	lpStruct->guid.Data4[1] = (*env)->GetByteField(env, lpObject, TYPEATTRFc.guid_b1);

-	lpStruct->guid.Data4[0] = (*env)->GetByteField(env, lpObject, TYPEATTRFc.guid_b0);

-	lpStruct->guid.Data3 = (*env)->GetShortField(env, lpObject, TYPEATTRFc.guid_data3);

-	lpStruct->guid.Data2 = (*env)->GetShortField(env, lpObject, TYPEATTRFc.guid_data2);

-	lpStruct->guid.Data1 = (*env)->GetIntField(env, lpObject, TYPEATTRFc.guid_data1);

-	return lpStruct;

-}

-

-void setTYPEATTRFields(JNIEnv *env, jobject lpObject, TYPEATTR *lpStruct)

-{

-	if (!TYPEATTRFc.cached) cacheTYPEATTRFids(env, lpObject);

-	(*env)->SetShortField(env, lpObject, TYPEATTRFc.idldescType_wIDLFlags, lpStruct->idldescType.wIDLFlags);

-	(*env)->SetIntField(env, lpObject, TYPEATTRFc.idldescType_dwReserved, lpStruct->idldescType.dwReserved);

-	(*env)->SetShortField(env, lpObject, TYPEATTRFc.tdescAlias_vt, lpStruct->tdescAlias.vt);

-	(*env)->SetIntField(env, lpObject, TYPEATTRFc.tdescAlias_unionField, (jint)lpStruct->tdescAlias.lptdesc);

-	(*env)->SetShortField(env, lpObject, TYPEATTRFc.wMinorVerNum, lpStruct->wMinorVerNum);

-	(*env)->SetShortField(env, lpObject, TYPEATTRFc.wMajorVerNum, lpStruct->wMajorVerNum);

-	(*env)->SetShortField(env, lpObject, TYPEATTRFc.wTypeFlags, lpStruct->wTypeFlags);

-	(*env)->SetShortField(env, lpObject, TYPEATTRFc.cbAlignment, lpStruct->cbAlignment);

-	(*env)->SetShortField(env, lpObject, TYPEATTRFc.cbSizeVft, lpStruct->cbSizeVft);

-	(*env)->SetShortField(env, lpObject, TYPEATTRFc.cImplTypes, lpStruct->cImplTypes);

-	(*env)->SetShortField(env, lpObject, TYPEATTRFc.cVars, lpStruct->cVars);

-	(*env)->SetShortField(env, lpObject, TYPEATTRFc.cFuncs, lpStruct->cFuncs);

-	(*env)->SetIntField(env, lpObject, TYPEATTRFc.typekind, lpStruct->typekind);

-	(*env)->SetIntField(env, lpObject, TYPEATTRFc.cbSizeInstance, lpStruct->cbSizeInstance);

-	(*env)->SetIntField(env, lpObject, TYPEATTRFc.lpstrSchema, (jint)lpStruct->lpstrSchema);

-	(*env)->SetIntField(env, lpObject, TYPEATTRFc.memidDestructor, lpStruct->memidDestructor);

-	(*env)->SetIntField(env, lpObject, TYPEATTRFc.memidConstructor, lpStruct->memidConstructor);

-	(*env)->SetIntField(env, lpObject, TYPEATTRFc.dwReserved, lpStruct->dwReserved);

-	(*env)->SetIntField(env, lpObject, TYPEATTRFc.lcid, lpStruct->lcid);

-	(*env)->SetByteField(env, lpObject, TYPEATTRFc.guid_b7, lpStruct->guid.Data4[7]);

-	(*env)->SetByteField(env, lpObject, TYPEATTRFc.guid_b6, lpStruct->guid.Data4[6]);

-	(*env)->SetByteField(env, lpObject, TYPEATTRFc.guid_b5, lpStruct->guid.Data4[5]);

-	(*env)->SetByteField(env, lpObject, TYPEATTRFc.guid_b4, lpStruct->guid.Data4[4]);

-	(*env)->SetByteField(env, lpObject, TYPEATTRFc.guid_b3, lpStruct->guid.Data4[3]);

-	(*env)->SetByteField(env, lpObject, TYPEATTRFc.guid_b2, lpStruct->guid.Data4[2]);

-	(*env)->SetByteField(env, lpObject, TYPEATTRFc.guid_b1, lpStruct->guid.Data4[1]);

-	(*env)->SetByteField(env, lpObject, TYPEATTRFc.guid_b0, lpStruct->guid.Data4[0]);

-	(*env)->SetShortField(env, lpObject, TYPEATTRFc.guid_data3, lpStruct->guid.Data3);

-	(*env)->SetShortField(env, lpObject, TYPEATTRFc.guid_data2, lpStruct->guid.Data2);

-	(*env)->SetIntField(env, lpObject, TYPEATTRFc.guid_data1, lpStruct->guid.Data1);

-}

-#endif /* NO_TYPEATTR */

-

-#ifndef NO_VARDESC1

-typedef struct VARDESC1_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID memid, lpstrSchema, unionField, elemdescVar_tdesc_union, elemdescVar_tdesc_vt, elemdescVar_paramdesc_pparamdescex, elemdescVar_paramdesc_wParamFlags, wVarFlags, varkind;

-} VARDESC1_FID_CACHE;

-

-VARDESC1_FID_CACHE VARDESC1Fc;

-

-void cacheVARDESC1Fids(JNIEnv *env, jobject lpObject)

-{

-	if (VARDESC1Fc.cached) return;

-	VARDESC1Fc.clazz = (*env)->GetObjectClass(env, lpObject);

-	VARDESC1Fc.memid = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "memid", "I");

-	VARDESC1Fc.lpstrSchema = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "lpstrSchema", "I");

-	VARDESC1Fc.unionField = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "unionField", "I");

-	VARDESC1Fc.elemdescVar_tdesc_union = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "elemdescVar_tdesc_union", "I");

-	VARDESC1Fc.elemdescVar_tdesc_vt = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "elemdescVar_tdesc_vt", "S");

-	VARDESC1Fc.elemdescVar_paramdesc_pparamdescex = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "elemdescVar_paramdesc_pparamdescex", "I");

-	VARDESC1Fc.elemdescVar_paramdesc_wParamFlags = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "elemdescVar_paramdesc_wParamFlags", "S");

-	VARDESC1Fc.wVarFlags = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "wVarFlags", "S");

-	VARDESC1Fc.varkind = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "varkind", "I");

-	VARDESC1Fc.cached = 1;

-}

-

-VARDESC *getVARDESC1Fields(JNIEnv *env, jobject lpObject, VARDESC *lpStruct)

-{

-	if (!VARDESC1Fc.cached) cacheVARDESC1Fids(env, lpObject);

-	lpStruct->varkind = (*env)->GetIntField(env, lpObject, VARDESC1Fc.varkind);

-	lpStruct->wVarFlags = (*env)->GetShortField(env, lpObject, VARDESC1Fc.wVarFlags);

-	lpStruct->elemdescVar.paramdesc.wParamFlags = (*env)->GetShortField(env, lpObject, VARDESC1Fc.elemdescVar_paramdesc_wParamFlags);

-	lpStruct->elemdescVar.paramdesc.pparamdescex = (LPPARAMDESCEX)(*env)->GetIntField(env, lpObject, VARDESC1Fc.elemdescVar_paramdesc_pparamdescex);

-	lpStruct->elemdescVar.tdesc.vt = (*env)->GetShortField(env, lpObject, VARDESC1Fc.elemdescVar_tdesc_vt);

-	lpStruct->elemdescVar.tdesc.lptdesc = (struct FARSTRUCT tagTYPEDESC FAR *)(*env)->GetIntField(env, lpObject, VARDESC1Fc.elemdescVar_tdesc_union);

-	lpStruct->oInst = (*env)->GetIntField(env, lpObject, VARDESC1Fc.unionField);

-	lpStruct->lpstrSchema = (OLECHAR FAR *)(*env)->GetIntField(env, lpObject, VARDESC1Fc.lpstrSchema);

-	lpStruct->memid = (*env)->GetIntField(env, lpObject, VARDESC1Fc.memid);

-	return lpStruct;

-}

-

-void setVARDESC1Fields(JNIEnv *env, jobject lpObject, VARDESC *lpStruct)

-{

-	if (!VARDESC1Fc.cached) cacheVARDESC1Fids(env, lpObject);

-	(*env)->SetIntField(env, lpObject, VARDESC1Fc.varkind, lpStruct->varkind);

-	(*env)->SetShortField(env, lpObject, VARDESC1Fc.wVarFlags, lpStruct->wVarFlags);

-	(*env)->SetShortField(env, lpObject, VARDESC1Fc.elemdescVar_paramdesc_wParamFlags, lpStruct->elemdescVar.paramdesc.wParamFlags);

-	(*env)->SetIntField(env, lpObject, VARDESC1Fc.elemdescVar_paramdesc_pparamdescex, (jint)lpStruct->elemdescVar.paramdesc.pparamdescex);

-	(*env)->SetShortField(env, lpObject, VARDESC1Fc.elemdescVar_tdesc_vt, lpStruct->elemdescVar.tdesc.vt);

-	(*env)->SetIntField(env, lpObject, VARDESC1Fc.elemdescVar_tdesc_union, (jint)lpStruct->elemdescVar.tdesc.lptdesc);

-	(*env)->SetIntField(env, lpObject, VARDESC1Fc.unionField, lpStruct->oInst);

-	(*env)->SetIntField(env, lpObject, VARDESC1Fc.lpstrSchema, (jint)lpStruct->lpstrSchema);

-	(*env)->SetIntField(env, lpObject, VARDESC1Fc.memid, lpStruct->memid);

-}

-#endif /* NO_VARDESC1 */

-

-#ifndef NO_VARDESC2

-typedef struct VARDESC2_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID memid, lpstrSchema, unionField, elemdescVar_tdesc_union, elemdescVar_tdesc_vt, elemdescFunc_idldesc_dwReserved, elemdescFunc_idldesc_wIDLFlags, wVarFlags, varkind;

-} VARDESC2_FID_CACHE;

-

-VARDESC2_FID_CACHE VARDESC2Fc;

-

-void cacheVARDESC2Fids(JNIEnv *env, jobject lpObject)

-{

-	if (VARDESC2Fc.cached) return;

-	VARDESC2Fc.clazz = (*env)->GetObjectClass(env, lpObject);

-	VARDESC2Fc.memid = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "memid", "I");

-	VARDESC2Fc.lpstrSchema = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "lpstrSchema", "I");

-	VARDESC2Fc.unionField = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "unionField", "I");

-	VARDESC2Fc.elemdescVar_tdesc_union = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "elemdescVar_tdesc_union", "I");

-	VARDESC2Fc.elemdescVar_tdesc_vt = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "elemdescVar_tdesc_vt", "S");

-	VARDESC2Fc.elemdescFunc_idldesc_dwReserved = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "elemdescFunc_idldesc_dwReserved", "I");

-	VARDESC2Fc.elemdescFunc_idldesc_wIDLFlags = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "elemdescFunc_idldesc_wIDLFlags", "S");

-	VARDESC2Fc.wVarFlags = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "wVarFlags", "S");

-	VARDESC2Fc.varkind = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "varkind", "I");

-	VARDESC2Fc.cached = 1;

-}

-

-VARDESC *getVARDESC2Fields(JNIEnv *env, jobject lpObject, VARDESC *lpStruct)

-{

-	if (!VARDESC2Fc.cached) cacheVARDESC2Fids(env, lpObject);

-	lpStruct->varkind = (*env)->GetIntField(env, lpObject, VARDESC2Fc.varkind);

-	lpStruct->wVarFlags = (*env)->GetShortField(env, lpObject, VARDESC2Fc.wVarFlags);

-	lpStruct->elemdescVar.idldesc.wIDLFlags = (*env)->GetShortField(env, lpObject, VARDESC2Fc.elemdescFunc_idldesc_wIDLFlags);

-	lpStruct->elemdescVar.idldesc.dwReserved = (*env)->GetIntField(env, lpObject, VARDESC2Fc.elemdescFunc_idldesc_dwReserved);

-	lpStruct->elemdescVar.tdesc.vt = (*env)->GetShortField(env, lpObject, VARDESC2Fc.elemdescVar_tdesc_vt);

-	lpStruct->elemdescVar.tdesc.lptdesc = (struct FARSTRUCT tagTYPEDESC FAR *)(*env)->GetIntField(env, lpObject, VARDESC2Fc.elemdescVar_tdesc_union);

-	lpStruct->oInst = (*env)->GetIntField(env, lpObject, VARDESC2Fc.unionField);

-	lpStruct->lpstrSchema = (OLECHAR FAR *)(*env)->GetIntField(env, lpObject, VARDESC2Fc.lpstrSchema);

-	lpStruct->memid = (*env)->GetIntField(env, lpObject, VARDESC2Fc.memid);

-	return lpStruct;

-}

-

-void setVARDESC2Fields(JNIEnv *env, jobject lpObject, VARDESC *lpStruct)

-{

-	if (!VARDESC2Fc.cached) cacheVARDESC2Fids(env, lpObject);

-	(*env)->SetIntField(env, lpObject, VARDESC2Fc.varkind, lpStruct->varkind);

-	(*env)->SetShortField(env, lpObject, VARDESC2Fc.wVarFlags, lpStruct->wVarFlags);

-	(*env)->SetShortField(env, lpObject, VARDESC2Fc.elemdescFunc_idldesc_wIDLFlags, lpStruct->elemdescVar.idldesc.wIDLFlags);

-	(*env)->SetIntField(env, lpObject, VARDESC2Fc.elemdescFunc_idldesc_dwReserved, lpStruct->elemdescVar.idldesc.dwReserved);

-	(*env)->SetShortField(env, lpObject, VARDESC2Fc.elemdescVar_tdesc_vt, lpStruct->elemdescVar.tdesc.vt);

-	(*env)->SetIntField(env, lpObject, VARDESC2Fc.elemdescVar_tdesc_union, (jint)lpStruct->elemdescVar.tdesc.lptdesc);

-	(*env)->SetIntField(env, lpObject, VARDESC2Fc.unionField, lpStruct->oInst);

-	(*env)->SetIntField(env, lpObject, VARDESC2Fc.lpstrSchema, (jint)lpStruct->lpstrSchema);

-	(*env)->SetIntField(env, lpObject, VARDESC2Fc.memid, lpStruct->memid);

-}

-#endif /* NO_VARDESC2 */

+/*******************************************************************************
+* Copyright (c) 2000, 2003 IBM Corporation and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Common Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/cpl-v10.html
+* 
+* Contributors:
+*     IBM Corporation - initial API and implementation
+*******************************************************************************/
+
+#include "swt.h"
+#include "com_structs.h"
+
+#ifndef NO_CAUUID
+typedef struct CAUUID_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cElems, pElems;
+} CAUUID_FID_CACHE;
+
+CAUUID_FID_CACHE CAUUIDFc;
+
+void cacheCAUUIDFids(JNIEnv *env, jobject lpObject)
+{
+	if (CAUUIDFc.cached) return;
+	CAUUIDFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	CAUUIDFc.cElems = (*env)->GetFieldID(env, CAUUIDFc.clazz, "cElems", "I");
+	CAUUIDFc.pElems = (*env)->GetFieldID(env, CAUUIDFc.clazz, "pElems", "I");
+	CAUUIDFc.cached = 1;
+}
+
+CAUUID *getCAUUIDFields(JNIEnv *env, jobject lpObject, CAUUID *lpStruct)
+{
+	if (!CAUUIDFc.cached) cacheCAUUIDFids(env, lpObject);
+	lpStruct->cElems = (*env)->GetIntField(env, lpObject, CAUUIDFc.cElems);
+	lpStruct->pElems = (GUID FAR *)(*env)->GetIntField(env, lpObject, CAUUIDFc.pElems);
+	return lpStruct;
+}
+
+void setCAUUIDFields(JNIEnv *env, jobject lpObject, CAUUID *lpStruct)
+{
+	if (!CAUUIDFc.cached) cacheCAUUIDFids(env, lpObject);
+	(*env)->SetIntField(env, lpObject, CAUUIDFc.cElems, (jint)lpStruct->cElems);
+	(*env)->SetIntField(env, lpObject, CAUUIDFc.pElems, (jint)lpStruct->pElems);
+}
+#endif /* NO_CAUUID */
+
+#ifndef NO_CONTROLINFO
+typedef struct CONTROLINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cb, hAccel, cAccel, dwFlags;
+} CONTROLINFO_FID_CACHE;
+
+CONTROLINFO_FID_CACHE CONTROLINFOFc;
+
+void cacheCONTROLINFOFids(JNIEnv *env, jobject lpObject)
+{
+	if (CONTROLINFOFc.cached) return;
+	CONTROLINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	CONTROLINFOFc.cb = (*env)->GetFieldID(env, CONTROLINFOFc.clazz, "cb", "I");
+	CONTROLINFOFc.hAccel = (*env)->GetFieldID(env, CONTROLINFOFc.clazz, "hAccel", "I");
+	CONTROLINFOFc.cAccel = (*env)->GetFieldID(env, CONTROLINFOFc.clazz, "cAccel", "S");
+	CONTROLINFOFc.dwFlags = (*env)->GetFieldID(env, CONTROLINFOFc.clazz, "dwFlags", "I");
+	CONTROLINFOFc.cached = 1;
+}
+
+CONTROLINFO *getCONTROLINFOFields(JNIEnv *env, jobject lpObject, CONTROLINFO *lpStruct)
+{
+	if (!CONTROLINFOFc.cached) cacheCONTROLINFOFids(env, lpObject);
+	lpStruct->cb = (*env)->GetIntField(env, lpObject, CONTROLINFOFc.cb);
+	lpStruct->hAccel = (HACCEL)(*env)->GetIntField(env, lpObject, CONTROLINFOFc.hAccel);
+	lpStruct->cAccel = (*env)->GetShortField(env, lpObject, CONTROLINFOFc.cAccel);
+	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, CONTROLINFOFc.dwFlags);
+	return lpStruct;
+}
+
+void setCONTROLINFOFields(JNIEnv *env, jobject lpObject, CONTROLINFO *lpStruct)
+{
+	if (!CONTROLINFOFc.cached) cacheCONTROLINFOFids(env, lpObject);
+	(*env)->SetIntField(env, lpObject, CONTROLINFOFc.cb, (jint)lpStruct->cb);
+	(*env)->SetIntField(env, lpObject, CONTROLINFOFc.hAccel, (jint)lpStruct->hAccel);
+	(*env)->SetShortField(env, lpObject, CONTROLINFOFc.cAccel, (jshort)lpStruct->cAccel);
+	(*env)->SetIntField(env, lpObject, CONTROLINFOFc.dwFlags, (jint)lpStruct->dwFlags);
+}
+#endif /* NO_CONTROLINFO */
+
+#ifndef NO_COSERVERINFO
+typedef struct COSERVERINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID dwReserved1, pwszName, pAuthInfo, dwReserved2;
+} COSERVERINFO_FID_CACHE;
+
+COSERVERINFO_FID_CACHE COSERVERINFOFc;
+
+void cacheCOSERVERINFOFids(JNIEnv *env, jobject lpObject)
+{
+	if (COSERVERINFOFc.cached) return;
+	COSERVERINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	COSERVERINFOFc.dwReserved1 = (*env)->GetFieldID(env, COSERVERINFOFc.clazz, "dwReserved1", "I");
+	COSERVERINFOFc.pwszName = (*env)->GetFieldID(env, COSERVERINFOFc.clazz, "pwszName", "I");
+	COSERVERINFOFc.pAuthInfo = (*env)->GetFieldID(env, COSERVERINFOFc.clazz, "pAuthInfo", "I");
+	COSERVERINFOFc.dwReserved2 = (*env)->GetFieldID(env, COSERVERINFOFc.clazz, "dwReserved2", "I");
+	COSERVERINFOFc.cached = 1;
+}
+
+COSERVERINFO *getCOSERVERINFOFields(JNIEnv *env, jobject lpObject, COSERVERINFO *lpStruct)
+{
+	if (!COSERVERINFOFc.cached) cacheCOSERVERINFOFids(env, lpObject);
+	lpStruct->dwReserved1 = (*env)->GetIntField(env, lpObject, COSERVERINFOFc.dwReserved1);
+	lpStruct->pwszName = (LPWSTR)(*env)->GetIntField(env, lpObject, COSERVERINFOFc.pwszName);
+	lpStruct->pAuthInfo = (COAUTHINFO *)(*env)->GetIntField(env, lpObject, COSERVERINFOFc.pAuthInfo);
+	lpStruct->dwReserved2 = (*env)->GetIntField(env, lpObject, COSERVERINFOFc.dwReserved2);
+	return lpStruct;
+}
+
+void setCOSERVERINFOFields(JNIEnv *env, jobject lpObject, COSERVERINFO *lpStruct)
+{
+	if (!COSERVERINFOFc.cached) cacheCOSERVERINFOFids(env, lpObject);
+	(*env)->SetIntField(env, lpObject, COSERVERINFOFc.dwReserved1, (jint)lpStruct->dwReserved1);
+	(*env)->SetIntField(env, lpObject, COSERVERINFOFc.pwszName, (jint)lpStruct->pwszName);
+	(*env)->SetIntField(env, lpObject, COSERVERINFOFc.pAuthInfo, (jint)lpStruct->pAuthInfo);
+	(*env)->SetIntField(env, lpObject, COSERVERINFOFc.dwReserved2, (jint)lpStruct->dwReserved2);
+}
+#endif /* NO_COSERVERINFO */
+
+#ifndef NO_DISPPARAMS
+typedef struct DISPPARAMS_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID rgvarg, rgdispidNamedArgs, cArgs, cNamedArgs;
+} DISPPARAMS_FID_CACHE;
+
+DISPPARAMS_FID_CACHE DISPPARAMSFc;
+
+void cacheDISPPARAMSFids(JNIEnv *env, jobject lpObject)
+{
+	if (DISPPARAMSFc.cached) return;
+	DISPPARAMSFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	DISPPARAMSFc.rgvarg = (*env)->GetFieldID(env, DISPPARAMSFc.clazz, "rgvarg", "I");
+	DISPPARAMSFc.rgdispidNamedArgs = (*env)->GetFieldID(env, DISPPARAMSFc.clazz, "rgdispidNamedArgs", "I");
+	DISPPARAMSFc.cArgs = (*env)->GetFieldID(env, DISPPARAMSFc.clazz, "cArgs", "I");
+	DISPPARAMSFc.cNamedArgs = (*env)->GetFieldID(env, DISPPARAMSFc.clazz, "cNamedArgs", "I");
+	DISPPARAMSFc.cached = 1;
+}
+
+DISPPARAMS *getDISPPARAMSFields(JNIEnv *env, jobject lpObject, DISPPARAMS *lpStruct)
+{
+	if (!DISPPARAMSFc.cached) cacheDISPPARAMSFids(env, lpObject);
+	lpStruct->rgvarg = (VARIANTARG FAR *)(*env)->GetIntField(env, lpObject, DISPPARAMSFc.rgvarg);
+	lpStruct->rgdispidNamedArgs = (DISPID FAR *)(*env)->GetIntField(env, lpObject, DISPPARAMSFc.rgdispidNamedArgs);
+	lpStruct->cArgs = (*env)->GetIntField(env, lpObject, DISPPARAMSFc.cArgs);
+	lpStruct->cNamedArgs = (*env)->GetIntField(env, lpObject, DISPPARAMSFc.cNamedArgs);
+	return lpStruct;
+}
+
+void setDISPPARAMSFields(JNIEnv *env, jobject lpObject, DISPPARAMS *lpStruct)
+{
+	if (!DISPPARAMSFc.cached) cacheDISPPARAMSFids(env, lpObject);
+	(*env)->SetIntField(env, lpObject, DISPPARAMSFc.rgvarg, (jint)lpStruct->rgvarg);
+	(*env)->SetIntField(env, lpObject, DISPPARAMSFc.rgdispidNamedArgs, (jint)lpStruct->rgdispidNamedArgs);
+	(*env)->SetIntField(env, lpObject, DISPPARAMSFc.cArgs, (jint)lpStruct->cArgs);
+	(*env)->SetIntField(env, lpObject, DISPPARAMSFc.cNamedArgs, (jint)lpStruct->cNamedArgs);
+}
+#endif /* NO_DISPPARAMS */
+
+#ifndef NO_DVTARGETDEVICE
+typedef struct DVTARGETDEVICE_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID tdSize, tdDriverNameOffset, tdDeviceNameOffset, tdPortNameOffset, tdExtDevmodeOffset, tdData;
+} DVTARGETDEVICE_FID_CACHE;
+
+DVTARGETDEVICE_FID_CACHE DVTARGETDEVICEFc;
+
+void cacheDVTARGETDEVICEFids(JNIEnv *env, jobject lpObject)
+{
+	if (DVTARGETDEVICEFc.cached) return;
+	DVTARGETDEVICEFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	DVTARGETDEVICEFc.tdSize = (*env)->GetFieldID(env, DVTARGETDEVICEFc.clazz, "tdSize", "I");
+	DVTARGETDEVICEFc.tdDriverNameOffset = (*env)->GetFieldID(env, DVTARGETDEVICEFc.clazz, "tdDriverNameOffset", "S");
+	DVTARGETDEVICEFc.tdDeviceNameOffset = (*env)->GetFieldID(env, DVTARGETDEVICEFc.clazz, "tdDeviceNameOffset", "S");
+	DVTARGETDEVICEFc.tdPortNameOffset = (*env)->GetFieldID(env, DVTARGETDEVICEFc.clazz, "tdPortNameOffset", "S");
+	DVTARGETDEVICEFc.tdExtDevmodeOffset = (*env)->GetFieldID(env, DVTARGETDEVICEFc.clazz, "tdExtDevmodeOffset", "S");
+	DVTARGETDEVICEFc.tdData = (*env)->GetFieldID(env, DVTARGETDEVICEFc.clazz, "tdData", "B");
+	DVTARGETDEVICEFc.cached = 1;
+}
+
+DVTARGETDEVICE *getDVTARGETDEVICEFields(JNIEnv *env, jobject lpObject, DVTARGETDEVICE *lpStruct)
+{
+	if (!DVTARGETDEVICEFc.cached) cacheDVTARGETDEVICEFids(env, lpObject);
+	lpStruct->tdSize = (*env)->GetIntField(env, lpObject, DVTARGETDEVICEFc.tdSize);
+	lpStruct->tdDriverNameOffset = (*env)->GetShortField(env, lpObject, DVTARGETDEVICEFc.tdDriverNameOffset);
+	lpStruct->tdDeviceNameOffset = (*env)->GetShortField(env, lpObject, DVTARGETDEVICEFc.tdDeviceNameOffset);
+	lpStruct->tdPortNameOffset = (*env)->GetShortField(env, lpObject, DVTARGETDEVICEFc.tdPortNameOffset);
+	lpStruct->tdExtDevmodeOffset = (*env)->GetShortField(env, lpObject, DVTARGETDEVICEFc.tdExtDevmodeOffset);
+	*lpStruct->tdData = (*env)->GetByteField(env, lpObject, DVTARGETDEVICEFc.tdData);
+	return lpStruct;
+}
+
+void setDVTARGETDEVICEFields(JNIEnv *env, jobject lpObject, DVTARGETDEVICE *lpStruct)
+{
+	if (!DVTARGETDEVICEFc.cached) cacheDVTARGETDEVICEFids(env, lpObject);
+	(*env)->SetIntField(env, lpObject, DVTARGETDEVICEFc.tdSize, (jint)lpStruct->tdSize);
+	(*env)->SetShortField(env, lpObject, DVTARGETDEVICEFc.tdDriverNameOffset, (jshort)lpStruct->tdDriverNameOffset);
+	(*env)->SetShortField(env, lpObject, DVTARGETDEVICEFc.tdDeviceNameOffset, (jshort)lpStruct->tdDeviceNameOffset);
+	(*env)->SetShortField(env, lpObject, DVTARGETDEVICEFc.tdPortNameOffset, (jshort)lpStruct->tdPortNameOffset);
+	(*env)->SetShortField(env, lpObject, DVTARGETDEVICEFc.tdExtDevmodeOffset, (jshort)lpStruct->tdExtDevmodeOffset);
+	(*env)->SetByteField(env, lpObject, DVTARGETDEVICEFc.tdData, (jbyte)*lpStruct->tdData);
+}
+#endif /* NO_DVTARGETDEVICE */
+
+#ifndef NO_EXCEPINFO
+typedef struct EXCEPINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID wCode, wReserved, bstrSource, bstrDescription, bstrHelpFile, dwHelpContext, pvReserved, pfnDeferredFillIn, scode;
+} EXCEPINFO_FID_CACHE;
+
+EXCEPINFO_FID_CACHE EXCEPINFOFc;
+
+void cacheEXCEPINFOFids(JNIEnv *env, jobject lpObject)
+{
+	if (EXCEPINFOFc.cached) return;
+	EXCEPINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	EXCEPINFOFc.wCode = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "wCode", "S");
+	EXCEPINFOFc.wReserved = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "wReserved", "S");
+	EXCEPINFOFc.bstrSource = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "bstrSource", "I");
+	EXCEPINFOFc.bstrDescription = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "bstrDescription", "I");
+	EXCEPINFOFc.bstrHelpFile = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "bstrHelpFile", "I");
+	EXCEPINFOFc.dwHelpContext = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "dwHelpContext", "I");
+	EXCEPINFOFc.pvReserved = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "pvReserved", "I");
+	EXCEPINFOFc.pfnDeferredFillIn = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "pfnDeferredFillIn", "I");
+	EXCEPINFOFc.scode = (*env)->GetFieldID(env, EXCEPINFOFc.clazz, "scode", "I");
+	EXCEPINFOFc.cached = 1;
+}
+
+EXCEPINFO *getEXCEPINFOFields(JNIEnv *env, jobject lpObject, EXCEPINFO *lpStruct)
+{
+	if (!EXCEPINFOFc.cached) cacheEXCEPINFOFids(env, lpObject);
+	lpStruct->wCode = (*env)->GetShortField(env, lpObject, EXCEPINFOFc.wCode);
+	lpStruct->wReserved = (*env)->GetShortField(env, lpObject, EXCEPINFOFc.wReserved);
+	lpStruct->bstrSource = (BSTR)(*env)->GetIntField(env, lpObject, EXCEPINFOFc.bstrSource);
+	lpStruct->bstrDescription = (BSTR)(*env)->GetIntField(env, lpObject, EXCEPINFOFc.bstrDescription);
+	lpStruct->bstrHelpFile = (BSTR)(*env)->GetIntField(env, lpObject, EXCEPINFOFc.bstrHelpFile);
+	lpStruct->dwHelpContext = (*env)->GetIntField(env, lpObject, EXCEPINFOFc.dwHelpContext);
+	lpStruct->pvReserved = (void FAR *)(*env)->GetIntField(env, lpObject, EXCEPINFOFc.pvReserved);
+	lpStruct->pfnDeferredFillIn = (HRESULT (STDAPICALLTYPE FAR* )(struct tagEXCEPINFO FAR*))(*env)->GetIntField(env, lpObject, EXCEPINFOFc.pfnDeferredFillIn);
+	lpStruct->scode = (*env)->GetIntField(env, lpObject, EXCEPINFOFc.scode);
+	return lpStruct;
+}
+
+void setEXCEPINFOFields(JNIEnv *env, jobject lpObject, EXCEPINFO *lpStruct)
+{
+	if (!EXCEPINFOFc.cached) cacheEXCEPINFOFids(env, lpObject);
+	(*env)->SetShortField(env, lpObject, EXCEPINFOFc.wCode, (jshort)lpStruct->wCode);
+	(*env)->SetShortField(env, lpObject, EXCEPINFOFc.wReserved, (jshort)lpStruct->wReserved);
+	(*env)->SetIntField(env, lpObject, EXCEPINFOFc.bstrSource, (jint)lpStruct->bstrSource);
+	(*env)->SetIntField(env, lpObject, EXCEPINFOFc.bstrDescription, (jint)lpStruct->bstrDescription);
+	(*env)->SetIntField(env, lpObject, EXCEPINFOFc.bstrHelpFile, (jint)lpStruct->bstrHelpFile);
+	(*env)->SetIntField(env, lpObject, EXCEPINFOFc.dwHelpContext, (jint)lpStruct->dwHelpContext);
+	(*env)->SetIntField(env, lpObject, EXCEPINFOFc.pvReserved, (jint)lpStruct->pvReserved);
+	(*env)->SetIntField(env, lpObject, EXCEPINFOFc.pfnDeferredFillIn, (jint)lpStruct->pfnDeferredFillIn);
+	(*env)->SetIntField(env, lpObject, EXCEPINFOFc.scode, (jint)lpStruct->scode);
+}
+#endif /* NO_EXCEPINFO */
+
+#ifndef NO_FORMATETC
+typedef struct FORMATETC_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cfFormat, ptd, dwAspect, lindex, tymed;
+} FORMATETC_FID_CACHE;
+
+FORMATETC_FID_CACHE FORMATETCFc;
+
+void cacheFORMATETCFids(JNIEnv *env, jobject lpObject)
+{
+	if (FORMATETCFc.cached) return;
+	FORMATETCFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	FORMATETCFc.cfFormat = (*env)->GetFieldID(env, FORMATETCFc.clazz, "cfFormat", "I");
+	FORMATETCFc.ptd = (*env)->GetFieldID(env, FORMATETCFc.clazz, "ptd", "I");
+	FORMATETCFc.dwAspect = (*env)->GetFieldID(env, FORMATETCFc.clazz, "dwAspect", "I");
+	FORMATETCFc.lindex = (*env)->GetFieldID(env, FORMATETCFc.clazz, "lindex", "I");
+	FORMATETCFc.tymed = (*env)->GetFieldID(env, FORMATETCFc.clazz, "tymed", "I");
+	FORMATETCFc.cached = 1;
+}
+
+FORMATETC *getFORMATETCFields(JNIEnv *env, jobject lpObject, FORMATETC *lpStruct)
+{
+	if (!FORMATETCFc.cached) cacheFORMATETCFids(env, lpObject);
+	lpStruct->cfFormat = (CLIPFORMAT)(*env)->GetIntField(env, lpObject, FORMATETCFc.cfFormat);
+	lpStruct->ptd = (DVTARGETDEVICE *)(*env)->GetIntField(env, lpObject, FORMATETCFc.ptd);
+	lpStruct->dwAspect = (*env)->GetIntField(env, lpObject, FORMATETCFc.dwAspect);
+	lpStruct->lindex = (*env)->GetIntField(env, lpObject, FORMATETCFc.lindex);
+	lpStruct->tymed = (*env)->GetIntField(env, lpObject, FORMATETCFc.tymed);
+	return lpStruct;
+}
+
+void setFORMATETCFields(JNIEnv *env, jobject lpObject, FORMATETC *lpStruct)
+{
+	if (!FORMATETCFc.cached) cacheFORMATETCFids(env, lpObject);
+	(*env)->SetIntField(env, lpObject, FORMATETCFc.cfFormat, (jint)lpStruct->cfFormat);
+	(*env)->SetIntField(env, lpObject, FORMATETCFc.ptd, (jint)lpStruct->ptd);
+	(*env)->SetIntField(env, lpObject, FORMATETCFc.dwAspect, (jint)lpStruct->dwAspect);
+	(*env)->SetIntField(env, lpObject, FORMATETCFc.lindex, (jint)lpStruct->lindex);
+	(*env)->SetIntField(env, lpObject, FORMATETCFc.tymed, (jint)lpStruct->tymed);
+}
+#endif /* NO_FORMATETC */
+
+#ifndef NO_FUNCDESC1
+typedef struct FUNCDESC1_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID memid, lprgscode, lprgelemdescParam, funckind, invkind, callconv, cParams, cParamsOpt, oVft, cScodes, elemdescFunc_tdesc_union, elemdescFunc_tdesc_vt, elemdescFunc_paramdesc_pparamdescex, elemdescFunc_paramdesc_wParamFlags, wFuncFlags;
+} FUNCDESC1_FID_CACHE;
+
+FUNCDESC1_FID_CACHE FUNCDESC1Fc;
+
+void cacheFUNCDESC1Fids(JNIEnv *env, jobject lpObject)
+{
+	if (FUNCDESC1Fc.cached) return;
+	FUNCDESC1Fc.clazz = (*env)->GetObjectClass(env, lpObject);
+	FUNCDESC1Fc.memid = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "memid", "I");
+	FUNCDESC1Fc.lprgscode = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "lprgscode", "I");
+	FUNCDESC1Fc.lprgelemdescParam = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "lprgelemdescParam", "I");
+	FUNCDESC1Fc.funckind = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "funckind", "I");
+	FUNCDESC1Fc.invkind = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "invkind", "I");
+	FUNCDESC1Fc.callconv = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "callconv", "I");
+	FUNCDESC1Fc.cParams = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "cParams", "S");
+	FUNCDESC1Fc.cParamsOpt = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "cParamsOpt", "S");
+	FUNCDESC1Fc.oVft = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "oVft", "S");
+	FUNCDESC1Fc.cScodes = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "cScodes", "S");
+	FUNCDESC1Fc.elemdescFunc_tdesc_union = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "elemdescFunc_tdesc_union", "I");
+	FUNCDESC1Fc.elemdescFunc_tdesc_vt = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "elemdescFunc_tdesc_vt", "S");
+	FUNCDESC1Fc.elemdescFunc_paramdesc_pparamdescex = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "elemdescFunc_paramdesc_pparamdescex", "I");
+	FUNCDESC1Fc.elemdescFunc_paramdesc_wParamFlags = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "elemdescFunc_paramdesc_wParamFlags", "S");
+	FUNCDESC1Fc.wFuncFlags = (*env)->GetFieldID(env, FUNCDESC1Fc.clazz, "wFuncFlags", "S");
+	FUNCDESC1Fc.cached = 1;
+}
+
+FUNCDESC *getFUNCDESC1Fields(JNIEnv *env, jobject lpObject, FUNCDESC *lpStruct)
+{
+	if (!FUNCDESC1Fc.cached) cacheFUNCDESC1Fids(env, lpObject);
+	lpStruct->memid = (*env)->GetIntField(env, lpObject, FUNCDESC1Fc.memid);
+	lpStruct->lprgscode = (SCODE FAR *)(*env)->GetIntField(env, lpObject, FUNCDESC1Fc.lprgscode);
+	lpStruct->lprgelemdescParam = (ELEMDESC FAR *)(*env)->GetIntField(env, lpObject, FUNCDESC1Fc.lprgelemdescParam);
+	lpStruct->funckind = (*env)->GetIntField(env, lpObject, FUNCDESC1Fc.funckind);
+	lpStruct->invkind = (*env)->GetIntField(env, lpObject, FUNCDESC1Fc.invkind);
+	lpStruct->callconv = (*env)->GetIntField(env, lpObject, FUNCDESC1Fc.callconv);
+	lpStruct->cParams = (*env)->GetShortField(env, lpObject, FUNCDESC1Fc.cParams);
+	lpStruct->cParamsOpt = (*env)->GetShortField(env, lpObject, FUNCDESC1Fc.cParamsOpt);
+	lpStruct->oVft = (*env)->GetShortField(env, lpObject, FUNCDESC1Fc.oVft);
+	lpStruct->cScodes = (*env)->GetShortField(env, lpObject, FUNCDESC1Fc.cScodes);
+	lpStruct->elemdescFunc.tdesc.lptdesc = (struct FARSTRUCT tagTYPEDESC FAR* )(*env)->GetIntField(env, lpObject, FUNCDESC1Fc.elemdescFunc_tdesc_union);
+	lpStruct->elemdescFunc.tdesc.vt = (*env)->GetShortField(env, lpObject, FUNCDESC1Fc.elemdescFunc_tdesc_vt);
+	lpStruct->elemdescFunc.paramdesc.pparamdescex = (LPPARAMDESCEX)(*env)->GetIntField(env, lpObject, FUNCDESC1Fc.elemdescFunc_paramdesc_pparamdescex);
+	lpStruct->elemdescFunc.paramdesc.wParamFlags = (*env)->GetShortField(env, lpObject, FUNCDESC1Fc.elemdescFunc_paramdesc_wParamFlags);
+	lpStruct->wFuncFlags = (*env)->GetShortField(env, lpObject, FUNCDESC1Fc.wFuncFlags);
+	return lpStruct;
+}
+
+void setFUNCDESC1Fields(JNIEnv *env, jobject lpObject, FUNCDESC *lpStruct)
+{
+	if (!FUNCDESC1Fc.cached) cacheFUNCDESC1Fids(env, lpObject);
+	(*env)->SetIntField(env, lpObject, FUNCDESC1Fc.memid, (jint)lpStruct->memid);
+	(*env)->SetIntField(env, lpObject, FUNCDESC1Fc.lprgscode, (jint)lpStruct->lprgscode);
+	(*env)->SetIntField(env, lpObject, FUNCDESC1Fc.lprgelemdescParam, (jint)lpStruct->lprgelemdescParam);
+	(*env)->SetIntField(env, lpObject, FUNCDESC1Fc.funckind, (jint)lpStruct->funckind);
+	(*env)->SetIntField(env, lpObject, FUNCDESC1Fc.invkind, (jint)lpStruct->invkind);
+	(*env)->SetIntField(env, lpObject, FUNCDESC1Fc.callconv, (jint)lpStruct->callconv);
+	(*env)->SetShortField(env, lpObject, FUNCDESC1Fc.cParams, (jshort)lpStruct->cParams);
+	(*env)->SetShortField(env, lpObject, FUNCDESC1Fc.cParamsOpt, (jshort)lpStruct->cParamsOpt);
+	(*env)->SetShortField(env, lpObject, FUNCDESC1Fc.oVft, (jshort)lpStruct->oVft);
+	(*env)->SetShortField(env, lpObject, FUNCDESC1Fc.cScodes, (jshort)lpStruct->cScodes);
+	(*env)->SetIntField(env, lpObject, FUNCDESC1Fc.elemdescFunc_tdesc_union, (jint)lpStruct->elemdescFunc.tdesc.lptdesc);
+	(*env)->SetShortField(env, lpObject, FUNCDESC1Fc.elemdescFunc_tdesc_vt, (jshort)lpStruct->elemdescFunc.tdesc.vt);
+	(*env)->SetIntField(env, lpObject, FUNCDESC1Fc.elemdescFunc_paramdesc_pparamdescex, (jint)lpStruct->elemdescFunc.paramdesc.pparamdescex);
+	(*env)->SetShortField(env, lpObject, FUNCDESC1Fc.elemdescFunc_paramdesc_wParamFlags, (jshort)lpStruct->elemdescFunc.paramdesc.wParamFlags);
+	(*env)->SetShortField(env, lpObject, FUNCDESC1Fc.wFuncFlags, (jshort)lpStruct->wFuncFlags);
+}
+#endif /* NO_FUNCDESC1 */
+
+#ifndef NO_FUNCDESC2
+typedef struct FUNCDESC2_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID memid, lprgscode, lprgelemdescParam, funckind, invkind, callconv, cParams, cParamsOpt, oVft, cScodes, elemdescFunc_tdesc_union, elemdescFunc_tdesc_vt, elemdescFunc_idldesc_dwReserved, elemdescFunc_idldesc_wIDLFlags, wFuncFlags;
+} FUNCDESC2_FID_CACHE;
+
+FUNCDESC2_FID_CACHE FUNCDESC2Fc;
+
+void cacheFUNCDESC2Fids(JNIEnv *env, jobject lpObject)
+{
+	if (FUNCDESC2Fc.cached) return;
+	FUNCDESC2Fc.clazz = (*env)->GetObjectClass(env, lpObject);
+	FUNCDESC2Fc.memid = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "memid", "I");
+	FUNCDESC2Fc.lprgscode = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "lprgscode", "I");
+	FUNCDESC2Fc.lprgelemdescParam = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "lprgelemdescParam", "I");
+	FUNCDESC2Fc.funckind = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "funckind", "I");
+	FUNCDESC2Fc.invkind = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "invkind", "I");
+	FUNCDESC2Fc.callconv = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "callconv", "I");
+	FUNCDESC2Fc.cParams = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "cParams", "S");
+	FUNCDESC2Fc.cParamsOpt = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "cParamsOpt", "S");
+	FUNCDESC2Fc.oVft = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "oVft", "S");
+	FUNCDESC2Fc.cScodes = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "cScodes", "S");
+	FUNCDESC2Fc.elemdescFunc_tdesc_union = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "elemdescFunc_tdesc_union", "I");
+	FUNCDESC2Fc.elemdescFunc_tdesc_vt = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "elemdescFunc_tdesc_vt", "S");
+	FUNCDESC2Fc.elemdescFunc_idldesc_dwReserved = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "elemdescFunc_idldesc_dwReserved", "I");
+	FUNCDESC2Fc.elemdescFunc_idldesc_wIDLFlags = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "elemdescFunc_idldesc_wIDLFlags", "S");
+	FUNCDESC2Fc.wFuncFlags = (*env)->GetFieldID(env, FUNCDESC2Fc.clazz, "wFuncFlags", "S");
+	FUNCDESC2Fc.cached = 1;
+}
+
+FUNCDESC *getFUNCDESC2Fields(JNIEnv *env, jobject lpObject, FUNCDESC *lpStruct)
+{
+	if (!FUNCDESC2Fc.cached) cacheFUNCDESC2Fids(env, lpObject);
+	lpStruct->memid = (*env)->GetIntField(env, lpObject, FUNCDESC2Fc.memid);
+	lpStruct->lprgscode = (SCODE FAR *)(*env)->GetIntField(env, lpObject, FUNCDESC2Fc.lprgscode);
+	lpStruct->lprgelemdescParam = (ELEMDESC FAR *)(*env)->GetIntField(env, lpObject, FUNCDESC2Fc.lprgelemdescParam);
+	lpStruct->funckind = (*env)->GetIntField(env, lpObject, FUNCDESC2Fc.funckind);
+	lpStruct->invkind = (*env)->GetIntField(env, lpObject, FUNCDESC2Fc.invkind);
+	lpStruct->callconv = (*env)->GetIntField(env, lpObject, FUNCDESC2Fc.callconv);
+	lpStruct->cParams = (*env)->GetShortField(env, lpObject, FUNCDESC2Fc.cParams);
+	lpStruct->cParamsOpt = (*env)->GetShortField(env, lpObject, FUNCDESC2Fc.cParamsOpt);
+	lpStruct->oVft = (*env)->GetShortField(env, lpObject, FUNCDESC2Fc.oVft);
+	lpStruct->cScodes = (*env)->GetShortField(env, lpObject, FUNCDESC2Fc.cScodes);
+	lpStruct->elemdescFunc.tdesc.lptdesc = (struct FARSTRUCT tagTYPEDESC FAR* )(*env)->GetIntField(env, lpObject, FUNCDESC2Fc.elemdescFunc_tdesc_union);
+	lpStruct->elemdescFunc.tdesc.vt = (*env)->GetShortField(env, lpObject, FUNCDESC2Fc.elemdescFunc_tdesc_vt);
+	lpStruct->elemdescFunc.idldesc.dwReserved = (*env)->GetIntField(env, lpObject, FUNCDESC2Fc.elemdescFunc_idldesc_dwReserved);
+	lpStruct->elemdescFunc.idldesc.wIDLFlags = (*env)->GetShortField(env, lpObject, FUNCDESC2Fc.elemdescFunc_idldesc_wIDLFlags);
+	lpStruct->wFuncFlags = (*env)->GetShortField(env, lpObject, FUNCDESC2Fc.wFuncFlags);
+	return lpStruct;
+}
+
+void setFUNCDESC2Fields(JNIEnv *env, jobject lpObject, FUNCDESC *lpStruct)
+{
+	if (!FUNCDESC2Fc.cached) cacheFUNCDESC2Fids(env, lpObject);
+	(*env)->SetIntField(env, lpObject, FUNCDESC2Fc.memid, (jint)lpStruct->memid);
+	(*env)->SetIntField(env, lpObject, FUNCDESC2Fc.lprgscode, (jint)lpStruct->lprgscode);
+	(*env)->SetIntField(env, lpObject, FUNCDESC2Fc.lprgelemdescParam, (jint)lpStruct->lprgelemdescParam);
+	(*env)->SetIntField(env, lpObject, FUNCDESC2Fc.funckind, (jint)lpStruct->funckind);
+	(*env)->SetIntField(env, lpObject, FUNCDESC2Fc.invkind, (jint)lpStruct->invkind);
+	(*env)->SetIntField(env, lpObject, FUNCDESC2Fc.callconv, (jint)lpStruct->callconv);
+	(*env)->SetShortField(env, lpObject, FUNCDESC2Fc.cParams, (jshort)lpStruct->cParams);
+	(*env)->SetShortField(env, lpObject, FUNCDESC2Fc.cParamsOpt, (jshort)lpStruct->cParamsOpt);
+	(*env)->SetShortField(env, lpObject, FUNCDESC2Fc.oVft, (jshort)lpStruct->oVft);
+	(*env)->SetShortField(env, lpObject, FUNCDESC2Fc.cScodes, (jshort)lpStruct->cScodes);
+	(*env)->SetIntField(env, lpObject, FUNCDESC2Fc.elemdescFunc_tdesc_union, (jint)lpStruct->elemdescFunc.tdesc.lptdesc);
+	(*env)->SetShortField(env, lpObject, FUNCDESC2Fc.elemdescFunc_tdesc_vt, (jshort)lpStruct->elemdescFunc.tdesc.vt);
+	(*env)->SetIntField(env, lpObject, FUNCDESC2Fc.elemdescFunc_idldesc_dwReserved, (jint)lpStruct->elemdescFunc.idldesc.dwReserved);
+	(*env)->SetShortField(env, lpObject, FUNCDESC2Fc.elemdescFunc_idldesc_wIDLFlags, (jshort)lpStruct->elemdescFunc.idldesc.wIDLFlags);
+	(*env)->SetShortField(env, lpObject, FUNCDESC2Fc.wFuncFlags, (jshort)lpStruct->wFuncFlags);
+}
+#endif /* NO_FUNCDESC2 */
+
+#ifndef NO_GUID
+typedef struct GUID_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID data1, data2, data3, b0, b1, b2, b3, b4, b5, b6, b7;
+} GUID_FID_CACHE;
+
+GUID_FID_CACHE GUIDFc;
+
+void cacheGUIDFids(JNIEnv *env, jobject lpObject)
+{
+	if (GUIDFc.cached) return;
+	GUIDFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	GUIDFc.data1 = (*env)->GetFieldID(env, GUIDFc.clazz, "data1", "I");
+	GUIDFc.data2 = (*env)->GetFieldID(env, GUIDFc.clazz, "data2", "S");
+	GUIDFc.data3 = (*env)->GetFieldID(env, GUIDFc.clazz, "data3", "S");
+	GUIDFc.b0 = (*env)->GetFieldID(env, GUIDFc.clazz, "b0", "B");
+	GUIDFc.b1 = (*env)->GetFieldID(env, GUIDFc.clazz, "b1", "B");
+	GUIDFc.b2 = (*env)->GetFieldID(env, GUIDFc.clazz, "b2", "B");
+	GUIDFc.b3 = (*env)->GetFieldID(env, GUIDFc.clazz, "b3", "B");
+	GUIDFc.b4 = (*env)->GetFieldID(env, GUIDFc.clazz, "b4", "B");
+	GUIDFc.b5 = (*env)->GetFieldID(env, GUIDFc.clazz, "b5", "B");
+	GUIDFc.b6 = (*env)->GetFieldID(env, GUIDFc.clazz, "b6", "B");
+	GUIDFc.b7 = (*env)->GetFieldID(env, GUIDFc.clazz, "b7", "B");
+	GUIDFc.cached = 1;
+}
+
+GUID *getGUIDFields(JNIEnv *env, jobject lpObject, GUID *lpStruct)
+{
+	if (!GUIDFc.cached) cacheGUIDFids(env, lpObject);
+	lpStruct->Data4[7] = (*env)->GetByteField(env, lpObject, GUIDFc.b7);
+	lpStruct->Data4[6] = (*env)->GetByteField(env, lpObject, GUIDFc.b6);
+	lpStruct->Data4[5] = (*env)->GetByteField(env, lpObject, GUIDFc.b5);
+	lpStruct->Data4[4] = (*env)->GetByteField(env, lpObject, GUIDFc.b4);
+	lpStruct->Data4[3] = (*env)->GetByteField(env, lpObject, GUIDFc.b3);
+	lpStruct->Data4[2] = (*env)->GetByteField(env, lpObject, GUIDFc.b2);
+	lpStruct->Data4[1] = (*env)->GetByteField(env, lpObject, GUIDFc.b1);
+	lpStruct->Data4[0] = (*env)->GetByteField(env, lpObject, GUIDFc.b0);
+	lpStruct->Data3 = (*env)->GetShortField(env, lpObject, GUIDFc.data3);
+	lpStruct->Data2 = (*env)->GetShortField(env, lpObject, GUIDFc.data2);
+	lpStruct->Data1 = (*env)->GetIntField(env, lpObject, GUIDFc.data1);
+	return lpStruct;
+}
+
+void setGUIDFields(JNIEnv *env, jobject lpObject, GUID *lpStruct)
+{
+	if (!GUIDFc.cached) cacheGUIDFids(env, lpObject);
+	(*env)->SetByteField(env, lpObject, GUIDFc.b7, lpStruct->Data4[7]);
+	(*env)->SetByteField(env, lpObject, GUIDFc.b6, lpStruct->Data4[6]);
+	(*env)->SetByteField(env, lpObject, GUIDFc.b5, lpStruct->Data4[5]);
+	(*env)->SetByteField(env, lpObject, GUIDFc.b4, lpStruct->Data4[4]);
+	(*env)->SetByteField(env, lpObject, GUIDFc.b3, lpStruct->Data4[3]);
+	(*env)->SetByteField(env, lpObject, GUIDFc.b2, lpStruct->Data4[2]);
+	(*env)->SetByteField(env, lpObject, GUIDFc.b1, lpStruct->Data4[1]);
+	(*env)->SetByteField(env, lpObject, GUIDFc.b0, lpStruct->Data4[0]);
+	(*env)->SetShortField(env, lpObject, GUIDFc.data3, lpStruct->Data3);
+	(*env)->SetShortField(env, lpObject, GUIDFc.data2, lpStruct->Data2);
+	(*env)->SetIntField(env, lpObject, GUIDFc.data1, lpStruct->Data1);
+}
+
+#endif /* NO_GUID */
+
+#ifndef NO_LICINFO
+typedef struct LICINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbLicInfo, fRuntimeKeyAvail, fLicVerified;
+} LICINFO_FID_CACHE;
+
+LICINFO_FID_CACHE LICINFOFc;
+
+void cacheLICINFOFids(JNIEnv *env, jobject lpObject)
+{
+	if (LICINFOFc.cached) return;
+	LICINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	LICINFOFc.cbLicInfo = (*env)->GetFieldID(env, LICINFOFc.clazz, "cbLicInfo", "I");
+	LICINFOFc.fRuntimeKeyAvail = (*env)->GetFieldID(env, LICINFOFc.clazz, "fRuntimeKeyAvail", "I");
+	LICINFOFc.fLicVerified = (*env)->GetFieldID(env, LICINFOFc.clazz, "fLicVerified", "I");
+	LICINFOFc.cached = 1;
+}
+
+LICINFO *getLICINFOFields(JNIEnv *env, jobject lpObject, LICINFO *lpStruct)
+{
+	if (!LICINFOFc.cached) cacheLICINFOFids(env, lpObject);
+	lpStruct->cbLicInfo = (*env)->GetIntField(env, lpObject, LICINFOFc.cbLicInfo);
+	lpStruct->fRuntimeKeyAvail = (*env)->GetIntField(env, lpObject, LICINFOFc.fRuntimeKeyAvail);
+	lpStruct->fLicVerified = (*env)->GetIntField(env, lpObject, LICINFOFc.fLicVerified);
+	return lpStruct;
+}
+
+void setLICINFOFields(JNIEnv *env, jobject lpObject, LICINFO *lpStruct)
+{
+	if (!LICINFOFc.cached) cacheLICINFOFids(env, lpObject);
+	(*env)->SetIntField(env, lpObject, LICINFOFc.cbLicInfo, (jint)lpStruct->cbLicInfo);
+	(*env)->SetIntField(env, lpObject, LICINFOFc.fRuntimeKeyAvail, (jint)lpStruct->fRuntimeKeyAvail);
+	(*env)->SetIntField(env, lpObject, LICINFOFc.fLicVerified, (jint)lpStruct->fLicVerified);
+}
+#endif /* NO_LICINFO */
+
+#ifndef NO_OLECMD
+typedef struct OLECMD_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cmdID, cmdf;
+} OLECMD_FID_CACHE;
+
+OLECMD_FID_CACHE OLECMDFc;
+
+void cacheOLECMDFids(JNIEnv *env, jobject lpObject)
+{
+	if (OLECMDFc.cached) return;
+	OLECMDFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	OLECMDFc.cmdID = (*env)->GetFieldID(env, OLECMDFc.clazz, "cmdID", "I");
+	OLECMDFc.cmdf = (*env)->GetFieldID(env, OLECMDFc.clazz, "cmdf", "I");
+	OLECMDFc.cached = 1;
+}
+
+OLECMD *getOLECMDFields(JNIEnv *env, jobject lpObject, OLECMD *lpStruct)
+{
+	if (!OLECMDFc.cached) cacheOLECMDFids(env, lpObject);
+	lpStruct->cmdID = (*env)->GetIntField(env, lpObject, OLECMDFc.cmdID);
+	lpStruct->cmdf = (*env)->GetIntField(env, lpObject, OLECMDFc.cmdf);
+	return lpStruct;
+}
+
+void setOLECMDFields(JNIEnv *env, jobject lpObject, OLECMD *lpStruct)
+{
+	if (!OLECMDFc.cached) cacheOLECMDFids(env, lpObject);
+	(*env)->SetIntField(env, lpObject, OLECMDFc.cmdID, (jint)lpStruct->cmdID);
+	(*env)->SetIntField(env, lpObject, OLECMDFc.cmdf, (jint)lpStruct->cmdf);
+}
+#endif /* NO_OLECMD */
+
+#ifndef NO_OLECMDTEXT
+typedef struct OLECMDTEXT_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cmdtextf, cwActual, cwBuf, rgwz;
+} OLECMDTEXT_FID_CACHE;
+
+OLECMDTEXT_FID_CACHE OLECMDTEXTFc;
+
+void cacheOLECMDTEXTFids(JNIEnv *env, jobject lpObject)
+{
+	if (OLECMDTEXTFc.cached) return;
+	OLECMDTEXTFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	OLECMDTEXTFc.cmdtextf = (*env)->GetFieldID(env, OLECMDTEXTFc.clazz, "cmdtextf", "I");
+	OLECMDTEXTFc.cwActual = (*env)->GetFieldID(env, OLECMDTEXTFc.clazz, "cwActual", "I");
+	OLECMDTEXTFc.cwBuf = (*env)->GetFieldID(env, OLECMDTEXTFc.clazz, "cwBuf", "I");
+	OLECMDTEXTFc.rgwz = (*env)->GetFieldID(env, OLECMDTEXTFc.clazz, "rgwz", "S");
+	OLECMDTEXTFc.cached = 1;
+}
+
+OLECMDTEXT *getOLECMDTEXTFields(JNIEnv *env, jobject lpObject, OLECMDTEXT *lpStruct)
+{
+	if (!OLECMDTEXTFc.cached) cacheOLECMDTEXTFids(env, lpObject);
+	lpStruct->cmdtextf = (*env)->GetIntField(env, lpObject, OLECMDTEXTFc.cmdtextf);
+	lpStruct->cwActual = (*env)->GetIntField(env, lpObject, OLECMDTEXTFc.cwActual);
+	lpStruct->cwBuf = (*env)->GetIntField(env, lpObject, OLECMDTEXTFc.cwBuf);
+	lpStruct->rgwz[0] = (*env)->GetShortField(env, lpObject, OLECMDTEXTFc.rgwz); /* SPECIAL */
+	return lpStruct;
+}
+
+void setOLECMDTEXTFields(JNIEnv *env, jobject lpObject, OLECMDTEXT *lpStruct)
+{
+	if (!OLECMDTEXTFc.cached) cacheOLECMDTEXTFids(env, lpObject);
+	(*env)->SetIntField(env, lpObject, OLECMDTEXTFc.cmdtextf, (jint)lpStruct->cmdtextf);
+	(*env)->SetIntField(env, lpObject, OLECMDTEXTFc.cwActual, (jint)lpStruct->cwActual);
+	(*env)->SetIntField(env, lpObject, OLECMDTEXTFc.cwBuf, (jint)lpStruct->cwBuf);
+	(*env)->SetShortField(env, lpObject, OLECMDTEXTFc.rgwz, (jshort)lpStruct->rgwz[0]); /* SPECIAL */
+}
+#endif /* NO_OLECMDTEXT */
+
+#ifndef NO_OLEINPLACEFRAMEINFO
+typedef struct OLEINPLACEFRAMEINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cb, fMDIApp, hwndFrame, haccel, cAccelEntries;
+} OLEINPLACEFRAMEINFO_FID_CACHE;
+
+OLEINPLACEFRAMEINFO_FID_CACHE OLEINPLACEFRAMEINFOFc;
+
+void cacheOLEINPLACEFRAMEINFOFids(JNIEnv *env, jobject lpObject)
+{
+	if (OLEINPLACEFRAMEINFOFc.cached) return;
+	OLEINPLACEFRAMEINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	OLEINPLACEFRAMEINFOFc.cb = (*env)->GetFieldID(env, OLEINPLACEFRAMEINFOFc.clazz, "cb", "I");
+	OLEINPLACEFRAMEINFOFc.fMDIApp = (*env)->GetFieldID(env, OLEINPLACEFRAMEINFOFc.clazz, "fMDIApp", "I");
+	OLEINPLACEFRAMEINFOFc.hwndFrame = (*env)->GetFieldID(env, OLEINPLACEFRAMEINFOFc.clazz, "hwndFrame", "I");
+	OLEINPLACEFRAMEINFOFc.haccel = (*env)->GetFieldID(env, OLEINPLACEFRAMEINFOFc.clazz, "haccel", "I");
+	OLEINPLACEFRAMEINFOFc.cAccelEntries = (*env)->GetFieldID(env, OLEINPLACEFRAMEINFOFc.clazz, "cAccelEntries", "I");
+	OLEINPLACEFRAMEINFOFc.cached = 1;
+}
+
+OLEINPLACEFRAMEINFO *getOLEINPLACEFRAMEINFOFields(JNIEnv *env, jobject lpObject, OLEINPLACEFRAMEINFO *lpStruct)
+{
+	if (!OLEINPLACEFRAMEINFOFc.cached) cacheOLEINPLACEFRAMEINFOFids(env, lpObject);
+	lpStruct->cb = (*env)->GetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.cb);
+	lpStruct->fMDIApp = (*env)->GetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.fMDIApp);
+	lpStruct->hwndFrame = (HWND)(*env)->GetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.hwndFrame);
+	lpStruct->haccel = (HACCEL)(*env)->GetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.haccel);
+	lpStruct->cAccelEntries = (*env)->GetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.cAccelEntries);
+	return lpStruct;
+}
+
+void setOLEINPLACEFRAMEINFOFields(JNIEnv *env, jobject lpObject, OLEINPLACEFRAMEINFO *lpStruct)
+{
+	if (!OLEINPLACEFRAMEINFOFc.cached) cacheOLEINPLACEFRAMEINFOFids(env, lpObject);
+	(*env)->SetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.cb, (jint)lpStruct->cb);
+	(*env)->SetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.fMDIApp, (jint)lpStruct->fMDIApp);
+	(*env)->SetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.hwndFrame, (jint)lpStruct->hwndFrame);
+	(*env)->SetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.haccel, (jint)lpStruct->haccel);
+	(*env)->SetIntField(env, lpObject, OLEINPLACEFRAMEINFOFc.cAccelEntries, (jint)lpStruct->cAccelEntries);
+}
+#endif /* NO_OLEINPLACEFRAMEINFO */
+
+#ifndef NO_STATSTG
+typedef struct STATSTG_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID pwcsName, type, cbSize, mtime_dwLowDateTime, mtime_dwHighDateTime, ctime_dwLowDateTime, ctime_dwHighDateTime, atime_dwLowDateTime, atime_dwHighDateTime, grfMode, grfLocksSupported, clsid_data1, clsid_data2, clsid_data3, clsid_b0, clsid_b1, clsid_b2, clsid_b3, clsid_b4, clsid_b5, clsid_b6, clsid_b7, grfStateBits, reserved;
+} STATSTG_FID_CACHE;
+
+STATSTG_FID_CACHE STATSTGFc;
+
+void cacheSTATSTGFids(JNIEnv *env, jobject lpObject)
+{
+	if (STATSTGFc.cached) return;
+	STATSTGFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	STATSTGFc.pwcsName = (*env)->GetFieldID(env, STATSTGFc.clazz, "pwcsName", "I");
+	STATSTGFc.type = (*env)->GetFieldID(env, STATSTGFc.clazz, "type", "I");
+	STATSTGFc.cbSize = (*env)->GetFieldID(env, STATSTGFc.clazz, "cbSize", "J");
+	STATSTGFc.mtime_dwLowDateTime = (*env)->GetFieldID(env, STATSTGFc.clazz, "mtime_dwLowDateTime", "I");
+	STATSTGFc.mtime_dwHighDateTime = (*env)->GetFieldID(env, STATSTGFc.clazz, "mtime_dwHighDateTime", "I");
+	STATSTGFc.ctime_dwLowDateTime = (*env)->GetFieldID(env, STATSTGFc.clazz, "ctime_dwLowDateTime", "I");
+	STATSTGFc.ctime_dwHighDateTime = (*env)->GetFieldID(env, STATSTGFc.clazz, "ctime_dwHighDateTime", "I");
+	STATSTGFc.atime_dwLowDateTime = (*env)->GetFieldID(env, STATSTGFc.clazz, "atime_dwLowDateTime", "I");
+	STATSTGFc.atime_dwHighDateTime = (*env)->GetFieldID(env, STATSTGFc.clazz, "atime_dwHighDateTime", "I");
+	STATSTGFc.grfMode = (*env)->GetFieldID(env, STATSTGFc.clazz, "grfMode", "I");
+	STATSTGFc.grfLocksSupported = (*env)->GetFieldID(env, STATSTGFc.clazz, "grfLocksSupported", "I");
+	STATSTGFc.clsid_data1 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_data1", "I");
+	STATSTGFc.clsid_data2 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_data2", "S");
+	STATSTGFc.clsid_data3 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_data3", "S");
+	STATSTGFc.clsid_b0 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_b0", "B");
+	STATSTGFc.clsid_b1 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_b1", "B");
+	STATSTGFc.clsid_b2 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_b2", "B");
+	STATSTGFc.clsid_b3 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_b3", "B");
+	STATSTGFc.clsid_b4 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_b4", "B");
+	STATSTGFc.clsid_b5 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_b5", "B");
+	STATSTGFc.clsid_b6 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_b6", "B");
+	STATSTGFc.clsid_b7 = (*env)->GetFieldID(env, STATSTGFc.clazz, "clsid_b7", "B");
+	STATSTGFc.grfStateBits = (*env)->GetFieldID(env, STATSTGFc.clazz, "grfStateBits", "I");
+	STATSTGFc.reserved = (*env)->GetFieldID(env, STATSTGFc.clazz, "reserved", "I");
+	STATSTGFc.cached = 1;
+}
+
+STATSTG *getSTATSTGFields(JNIEnv *env, jobject lpObject, STATSTG *lpStruct)
+{
+	if (!STATSTGFc.cached) cacheSTATSTGFids(env, lpObject);
+	lpStruct->pwcsName = (LPWSTR)(*env)->GetIntField(env, lpObject, STATSTGFc.pwcsName);
+	lpStruct->type = (*env)->GetIntField(env, lpObject, STATSTGFc.type);
+	lpStruct->cbSize.QuadPart = (*env)->GetLongField(env, lpObject, STATSTGFc.cbSize);
+	lpStruct->mtime.dwLowDateTime = (*env)->GetIntField(env, lpObject, STATSTGFc.mtime_dwLowDateTime);
+	lpStruct->mtime.dwHighDateTime = (*env)->GetIntField(env, lpObject, STATSTGFc.mtime_dwHighDateTime);
+	lpStruct->ctime.dwLowDateTime = (*env)->GetIntField(env, lpObject, STATSTGFc.ctime_dwLowDateTime);
+	lpStruct->ctime.dwHighDateTime = (*env)->GetIntField(env, lpObject, STATSTGFc.ctime_dwHighDateTime);
+	lpStruct->atime.dwLowDateTime = (*env)->GetIntField(env, lpObject, STATSTGFc.atime_dwLowDateTime);
+	lpStruct->atime.dwHighDateTime = (*env)->GetIntField(env, lpObject, STATSTGFc.atime_dwHighDateTime);
+	lpStruct->grfMode = (*env)->GetIntField(env, lpObject, STATSTGFc.grfMode);
+	lpStruct->grfLocksSupported = (*env)->GetIntField(env, lpObject, STATSTGFc.grfLocksSupported);
+	lpStruct->clsid.Data4[7] = (*env)->GetByteField(env, lpObject, STATSTGFc.clsid_b7);
+	lpStruct->clsid.Data4[6] = (*env)->GetByteField(env, lpObject, STATSTGFc.clsid_b6);
+	lpStruct->clsid.Data4[5] = (*env)->GetByteField(env, lpObject, STATSTGFc.clsid_b5);
+	lpStruct->clsid.Data4[4] = (*env)->GetByteField(env, lpObject, STATSTGFc.clsid_b4);
+	lpStruct->clsid.Data4[3] = (*env)->GetByteField(env, lpObject, STATSTGFc.clsid_b3);
+	lpStruct->clsid.Data4[2] = (*env)->GetByteField(env, lpObject, STATSTGFc.clsid_b2);
+	lpStruct->clsid.Data4[1] = (*env)->GetByteField(env, lpObject, STATSTGFc.clsid_b1);
+	lpStruct->clsid.Data4[0] = (*env)->GetByteField(env, lpObject, STATSTGFc.clsid_b0);
+	lpStruct->clsid.Data3 = (*env)->GetShortField(env, lpObject, STATSTGFc.clsid_data3);
+	lpStruct->clsid.Data2 = (*env)->GetShortField(env, lpObject, STATSTGFc.clsid_data2);
+	lpStruct->clsid.Data1 = (*env)->GetIntField(env, lpObject, STATSTGFc.clsid_data1);
+	lpStruct->grfStateBits = (*env)->GetIntField(env, lpObject, STATSTGFc.grfStateBits);
+	lpStruct->reserved = (*env)->GetIntField(env, lpObject, STATSTGFc.reserved);
+	return lpStruct;
+}
+
+void setSTATSTGFields(JNIEnv *env, jobject lpObject, STATSTG *lpStruct)
+{
+	if (!STATSTGFc.cached) cacheSTATSTGFids(env, lpObject);
+	(*env)->SetIntField(env, lpObject, STATSTGFc.pwcsName, (jint)lpStruct->pwcsName);
+	(*env)->SetIntField(env, lpObject, STATSTGFc.type, (jint)lpStruct->type);
+	(*env)->SetLongField(env, lpObject, STATSTGFc.cbSize, (jlong)lpStruct->cbSize.QuadPart);
+	(*env)->SetIntField(env, lpObject, STATSTGFc.mtime_dwLowDateTime, (jint)lpStruct->mtime.dwLowDateTime);
+	(*env)->SetIntField(env, lpObject, STATSTGFc.mtime_dwHighDateTime, (jint)lpStruct->mtime.dwHighDateTime);
+	(*env)->SetIntField(env, lpObject, STATSTGFc.ctime_dwLowDateTime, (jint)lpStruct->ctime.dwLowDateTime);
+	(*env)->SetIntField(env, lpObject, STATSTGFc.ctime_dwHighDateTime, (jint)lpStruct->ctime.dwHighDateTime);
+	(*env)->SetIntField(env, lpObject, STATSTGFc.atime_dwLowDateTime, (jint)lpStruct->atime.dwLowDateTime);
+	(*env)->SetIntField(env, lpObject, STATSTGFc.atime_dwHighDateTime, (jint)lpStruct->atime.dwHighDateTime);
+	(*env)->SetIntField(env, lpObject, STATSTGFc.grfMode, (jint)lpStruct->grfMode);
+	(*env)->SetIntField(env, lpObject, STATSTGFc.grfLocksSupported, (jint)lpStruct->grfLocksSupported);
+	(*env)->SetByteField(env, lpObject, STATSTGFc.clsid_b7, lpStruct->clsid.Data4[7]);
+	(*env)->SetByteField(env, lpObject, STATSTGFc.clsid_b6, lpStruct->clsid.Data4[6]);
+	(*env)->SetByteField(env, lpObject, STATSTGFc.clsid_b5, lpStruct->clsid.Data4[5]);
+	(*env)->SetByteField(env, lpObject, STATSTGFc.clsid_b4, lpStruct->clsid.Data4[4]);
+	(*env)->SetByteField(env, lpObject, STATSTGFc.clsid_b3, lpStruct->clsid.Data4[3]);
+	(*env)->SetByteField(env, lpObject, STATSTGFc.clsid_b2, lpStruct->clsid.Data4[2]);
+	(*env)->SetByteField(env, lpObject, STATSTGFc.clsid_b1, lpStruct->clsid.Data4[1]);
+	(*env)->SetByteField(env, lpObject, STATSTGFc.clsid_b0, lpStruct->clsid.Data4[0]);
+	(*env)->SetShortField(env, lpObject, STATSTGFc.clsid_data3, lpStruct->clsid.Data3);
+	(*env)->SetShortField(env, lpObject, STATSTGFc.clsid_data2, lpStruct->clsid.Data2);
+	(*env)->SetIntField(env, lpObject, STATSTGFc.clsid_data1, lpStruct->clsid.Data1);
+	(*env)->SetIntField(env, lpObject, STATSTGFc.grfStateBits, (jint)lpStruct->grfStateBits);
+	(*env)->SetIntField(env, lpObject, STATSTGFc.reserved, (jint)lpStruct->reserved);
+}
+#endif /* NO_STATSTG */
+
+#ifndef NO_STGMEDIUM
+typedef struct STGMEDIUM_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID tymed, unionField, pUnkForRelease;
+} STGMEDIUM_FID_CACHE;
+
+STGMEDIUM_FID_CACHE STGMEDIUMFc;
+
+void cacheSTGMEDIUMFids(JNIEnv *env, jobject lpObject)
+{
+	if (STGMEDIUMFc.cached) return;
+	STGMEDIUMFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	STGMEDIUMFc.tymed = (*env)->GetFieldID(env, STGMEDIUMFc.clazz, "tymed", "I");
+	STGMEDIUMFc.unionField = (*env)->GetFieldID(env, STGMEDIUMFc.clazz, "unionField", "I");
+	STGMEDIUMFc.pUnkForRelease = (*env)->GetFieldID(env, STGMEDIUMFc.clazz, "pUnkForRelease", "I");
+	STGMEDIUMFc.cached = 1;
+}
+
+STGMEDIUM *getSTGMEDIUMFields(JNIEnv *env, jobject lpObject, STGMEDIUM *lpStruct)
+{
+	if (!STGMEDIUMFc.cached) cacheSTGMEDIUMFids(env, lpObject);
+	lpStruct->tymed = (*env)->GetIntField(env, lpObject, STGMEDIUMFc.tymed);
+	lpStruct->hGlobal = (HGLOBAL)(*env)->GetIntField(env, lpObject, STGMEDIUMFc.unionField);
+	lpStruct->pUnkForRelease = (IUnknown *)(*env)->GetIntField(env, lpObject, STGMEDIUMFc.pUnkForRelease);
+	return lpStruct;
+}
+
+void setSTGMEDIUMFields(JNIEnv *env, jobject lpObject, STGMEDIUM *lpStruct)
+{
+	if (!STGMEDIUMFc.cached) cacheSTGMEDIUMFids(env, lpObject);
+	(*env)->SetIntField(env, lpObject, STGMEDIUMFc.tymed, (jint)lpStruct->tymed);
+	(*env)->SetIntField(env, lpObject, STGMEDIUMFc.unionField, (jint)lpStruct->hGlobal);
+	(*env)->SetIntField(env, lpObject, STGMEDIUMFc.pUnkForRelease, (jint)lpStruct->pUnkForRelease);
+}
+#endif /* NO_STGMEDIUM */
+
+#ifndef NO_TYPEATTR
+typedef struct TYPEATTR_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID guid_data1, guid_data2, guid_data3, guid_b0, guid_b1, guid_b2, guid_b3, guid_b4, guid_b5, guid_b6, guid_b7, lcid, dwReserved, memidConstructor, memidDestructor, lpstrSchema, cbSizeInstance, typekind, cFuncs, cVars, cImplTypes, cbSizeVft, cbAlignment, wTypeFlags, wMajorVerNum, wMinorVerNum, tdescAlias_unionField, tdescAlias_vt, idldescType_dwReserved, idldescType_wIDLFlags;
+} TYPEATTR_FID_CACHE;
+
+TYPEATTR_FID_CACHE TYPEATTRFc;
+
+void cacheTYPEATTRFids(JNIEnv *env, jobject lpObject)
+{
+	if (TYPEATTRFc.cached) return;
+	TYPEATTRFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	TYPEATTRFc.guid_data1 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_data1", "I");
+	TYPEATTRFc.guid_data2 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_data2", "S");
+	TYPEATTRFc.guid_data3 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_data3", "S");
+	TYPEATTRFc.guid_b0 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_b0", "B");
+	TYPEATTRFc.guid_b1 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_b1", "B");
+	TYPEATTRFc.guid_b2 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_b2", "B");
+	TYPEATTRFc.guid_b3 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_b3", "B");
+	TYPEATTRFc.guid_b4 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_b4", "B");
+	TYPEATTRFc.guid_b5 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_b5", "B");
+	TYPEATTRFc.guid_b6 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_b6", "B");
+	TYPEATTRFc.guid_b7 = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "guid_b7", "B");
+	TYPEATTRFc.lcid = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "lcid", "I");
+	TYPEATTRFc.dwReserved = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "dwReserved", "I");
+	TYPEATTRFc.memidConstructor = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "memidConstructor", "I");
+	TYPEATTRFc.memidDestructor = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "memidDestructor", "I");
+	TYPEATTRFc.lpstrSchema = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "lpstrSchema", "I");
+	TYPEATTRFc.cbSizeInstance = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "cbSizeInstance", "I");
+	TYPEATTRFc.typekind = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "typekind", "I");
+	TYPEATTRFc.cFuncs = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "cFuncs", "S");
+	TYPEATTRFc.cVars = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "cVars", "S");
+	TYPEATTRFc.cImplTypes = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "cImplTypes", "S");
+	TYPEATTRFc.cbSizeVft = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "cbSizeVft", "S");
+	TYPEATTRFc.cbAlignment = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "cbAlignment", "S");
+	TYPEATTRFc.wTypeFlags = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "wTypeFlags", "S");
+	TYPEATTRFc.wMajorVerNum = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "wMajorVerNum", "S");
+	TYPEATTRFc.wMinorVerNum = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "wMinorVerNum", "S");
+	TYPEATTRFc.tdescAlias_unionField = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "tdescAlias_unionField", "I");
+	TYPEATTRFc.tdescAlias_vt = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "tdescAlias_vt", "S");
+	TYPEATTRFc.idldescType_dwReserved = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "idldescType_dwReserved", "I");
+	TYPEATTRFc.idldescType_wIDLFlags = (*env)->GetFieldID(env, TYPEATTRFc.clazz, "idldescType_wIDLFlags", "S");
+	TYPEATTRFc.cached = 1;
+}
+
+TYPEATTR *getTYPEATTRFields(JNIEnv *env, jobject lpObject, TYPEATTR *lpStruct)
+{
+	if (!TYPEATTRFc.cached) cacheTYPEATTRFids(env, lpObject);
+	lpStruct->idldescType.wIDLFlags = (*env)->GetShortField(env, lpObject, TYPEATTRFc.idldescType_wIDLFlags);
+	lpStruct->idldescType.dwReserved = (*env)->GetIntField(env, lpObject, TYPEATTRFc.idldescType_dwReserved);
+	lpStruct->tdescAlias.vt = (*env)->GetShortField(env, lpObject, TYPEATTRFc.tdescAlias_vt);
+	lpStruct->tdescAlias.lptdesc = (struct FARSTRUCT tagTYPEDESC FAR *)(*env)->GetIntField(env, lpObject, TYPEATTRFc.tdescAlias_unionField);
+	lpStruct->wMinorVerNum = (*env)->GetShortField(env, lpObject, TYPEATTRFc.wMinorVerNum);
+	lpStruct->wMajorVerNum = (*env)->GetShortField(env, lpObject, TYPEATTRFc.wMajorVerNum);
+	lpStruct->wTypeFlags = (*env)->GetShortField(env, lpObject, TYPEATTRFc.wTypeFlags);
+	lpStruct->cbAlignment = (*env)->GetShortField(env, lpObject, TYPEATTRFc.cbAlignment);
+	lpStruct->cbSizeVft = (*env)->GetShortField(env, lpObject, TYPEATTRFc.cbSizeVft);
+	lpStruct->cImplTypes = (*env)->GetShortField(env, lpObject, TYPEATTRFc.cImplTypes);
+	lpStruct->cVars = (*env)->GetShortField(env, lpObject, TYPEATTRFc.cVars);
+	lpStruct->cFuncs = (*env)->GetShortField(env, lpObject, TYPEATTRFc.cFuncs);
+	lpStruct->typekind = (*env)->GetIntField(env, lpObject, TYPEATTRFc.typekind);
+	lpStruct->cbSizeInstance = (*env)->GetIntField(env, lpObject, TYPEATTRFc.cbSizeInstance);
+	lpStruct->lpstrSchema = (OLECHAR FAR *)(*env)->GetIntField(env, lpObject, TYPEATTRFc.lpstrSchema);
+	lpStruct->memidDestructor = (*env)->GetIntField(env, lpObject, TYPEATTRFc.memidDestructor);
+	lpStruct->memidConstructor = (*env)->GetIntField(env, lpObject, TYPEATTRFc.memidConstructor);
+	lpStruct->dwReserved = (*env)->GetIntField(env, lpObject, TYPEATTRFc.dwReserved);
+	lpStruct->lcid = (*env)->GetIntField(env, lpObject, TYPEATTRFc.lcid);
+	lpStruct->guid.Data4[7] = (*env)->GetByteField(env, lpObject, TYPEATTRFc.guid_b7);
+	lpStruct->guid.Data4[6] = (*env)->GetByteField(env, lpObject, TYPEATTRFc.guid_b6);
+	lpStruct->guid.Data4[5] = (*env)->GetByteField(env, lpObject, TYPEATTRFc.guid_b5);
+	lpStruct->guid.Data4[4] = (*env)->GetByteField(env, lpObject, TYPEATTRFc.guid_b4);
+	lpStruct->guid.Data4[3] = (*env)->GetByteField(env, lpObject, TYPEATTRFc.guid_b3);
+	lpStruct->guid.Data4[2] = (*env)->GetByteField(env, lpObject, TYPEATTRFc.guid_b2);
+	lpStruct->guid.Data4[1] = (*env)->GetByteField(env, lpObject, TYPEATTRFc.guid_b1);
+	lpStruct->guid.Data4[0] = (*env)->GetByteField(env, lpObject, TYPEATTRFc.guid_b0);
+	lpStruct->guid.Data3 = (*env)->GetShortField(env, lpObject, TYPEATTRFc.guid_data3);
+	lpStruct->guid.Data2 = (*env)->GetShortField(env, lpObject, TYPEATTRFc.guid_data2);
+	lpStruct->guid.Data1 = (*env)->GetIntField(env, lpObject, TYPEATTRFc.guid_data1);
+	return lpStruct;
+}
+
+void setTYPEATTRFields(JNIEnv *env, jobject lpObject, TYPEATTR *lpStruct)
+{
+	if (!TYPEATTRFc.cached) cacheTYPEATTRFids(env, lpObject);
+	(*env)->SetShortField(env, lpObject, TYPEATTRFc.idldescType_wIDLFlags, lpStruct->idldescType.wIDLFlags);
+	(*env)->SetIntField(env, lpObject, TYPEATTRFc.idldescType_dwReserved, lpStruct->idldescType.dwReserved);
+	(*env)->SetShortField(env, lpObject, TYPEATTRFc.tdescAlias_vt, lpStruct->tdescAlias.vt);
+	(*env)->SetIntField(env, lpObject, TYPEATTRFc.tdescAlias_unionField, (jint)lpStruct->tdescAlias.lptdesc);
+	(*env)->SetShortField(env, lpObject, TYPEATTRFc.wMinorVerNum, lpStruct->wMinorVerNum);
+	(*env)->SetShortField(env, lpObject, TYPEATTRFc.wMajorVerNum, lpStruct->wMajorVerNum);
+	(*env)->SetShortField(env, lpObject, TYPEATTRFc.wTypeFlags, lpStruct->wTypeFlags);
+	(*env)->SetShortField(env, lpObject, TYPEATTRFc.cbAlignment, lpStruct->cbAlignment);
+	(*env)->SetShortField(env, lpObject, TYPEATTRFc.cbSizeVft, lpStruct->cbSizeVft);
+	(*env)->SetShortField(env, lpObject, TYPEATTRFc.cImplTypes, lpStruct->cImplTypes);
+	(*env)->SetShortField(env, lpObject, TYPEATTRFc.cVars, lpStruct->cVars);
+	(*env)->SetShortField(env, lpObject, TYPEATTRFc.cFuncs, lpStruct->cFuncs);
+	(*env)->SetIntField(env, lpObject, TYPEATTRFc.typekind, lpStruct->typekind);
+	(*env)->SetIntField(env, lpObject, TYPEATTRFc.cbSizeInstance, lpStruct->cbSizeInstance);
+	(*env)->SetIntField(env, lpObject, TYPEATTRFc.lpstrSchema, (jint)lpStruct->lpstrSchema);
+	(*env)->SetIntField(env, lpObject, TYPEATTRFc.memidDestructor, lpStruct->memidDestructor);
+	(*env)->SetIntField(env, lpObject, TYPEATTRFc.memidConstructor, lpStruct->memidConstructor);
+	(*env)->SetIntField(env, lpObject, TYPEATTRFc.dwReserved, lpStruct->dwReserved);
+	(*env)->SetIntField(env, lpObject, TYPEATTRFc.lcid, lpStruct->lcid);
+	(*env)->SetByteField(env, lpObject, TYPEATTRFc.guid_b7, lpStruct->guid.Data4[7]);
+	(*env)->SetByteField(env, lpObject, TYPEATTRFc.guid_b6, lpStruct->guid.Data4[6]);
+	(*env)->SetByteField(env, lpObject, TYPEATTRFc.guid_b5, lpStruct->guid.Data4[5]);
+	(*env)->SetByteField(env, lpObject, TYPEATTRFc.guid_b4, lpStruct->guid.Data4[4]);
+	(*env)->SetByteField(env, lpObject, TYPEATTRFc.guid_b3, lpStruct->guid.Data4[3]);
+	(*env)->SetByteField(env, lpObject, TYPEATTRFc.guid_b2, lpStruct->guid.Data4[2]);
+	(*env)->SetByteField(env, lpObject, TYPEATTRFc.guid_b1, lpStruct->guid.Data4[1]);
+	(*env)->SetByteField(env, lpObject, TYPEATTRFc.guid_b0, lpStruct->guid.Data4[0]);
+	(*env)->SetShortField(env, lpObject, TYPEATTRFc.guid_data3, lpStruct->guid.Data3);
+	(*env)->SetShortField(env, lpObject, TYPEATTRFc.guid_data2, lpStruct->guid.Data2);
+	(*env)->SetIntField(env, lpObject, TYPEATTRFc.guid_data1, lpStruct->guid.Data1);
+}
+#endif /* NO_TYPEATTR */
+
+#ifndef NO_VARDESC1
+typedef struct VARDESC1_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID memid, lpstrSchema, unionField, elemdescVar_tdesc_union, elemdescVar_tdesc_vt, elemdescVar_paramdesc_pparamdescex, elemdescVar_paramdesc_wParamFlags, wVarFlags, varkind;
+} VARDESC1_FID_CACHE;
+
+VARDESC1_FID_CACHE VARDESC1Fc;
+
+void cacheVARDESC1Fids(JNIEnv *env, jobject lpObject)
+{
+	if (VARDESC1Fc.cached) return;
+	VARDESC1Fc.clazz = (*env)->GetObjectClass(env, lpObject);
+	VARDESC1Fc.memid = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "memid", "I");
+	VARDESC1Fc.lpstrSchema = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "lpstrSchema", "I");
+	VARDESC1Fc.unionField = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "unionField", "I");
+	VARDESC1Fc.elemdescVar_tdesc_union = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "elemdescVar_tdesc_union", "I");
+	VARDESC1Fc.elemdescVar_tdesc_vt = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "elemdescVar_tdesc_vt", "S");
+	VARDESC1Fc.elemdescVar_paramdesc_pparamdescex = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "elemdescVar_paramdesc_pparamdescex", "I");
+	VARDESC1Fc.elemdescVar_paramdesc_wParamFlags = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "elemdescVar_paramdesc_wParamFlags", "S");
+	VARDESC1Fc.wVarFlags = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "wVarFlags", "S");
+	VARDESC1Fc.varkind = (*env)->GetFieldID(env, VARDESC1Fc.clazz, "varkind", "I");
+	VARDESC1Fc.cached = 1;
+}
+
+VARDESC *getVARDESC1Fields(JNIEnv *env, jobject lpObject, VARDESC *lpStruct)
+{
+	if (!VARDESC1Fc.cached) cacheVARDESC1Fids(env, lpObject);
+	lpStruct->varkind = (*env)->GetIntField(env, lpObject, VARDESC1Fc.varkind);
+	lpStruct->wVarFlags = (*env)->GetShortField(env, lpObject, VARDESC1Fc.wVarFlags);
+	lpStruct->elemdescVar.paramdesc.wParamFlags = (*env)->GetShortField(env, lpObject, VARDESC1Fc.elemdescVar_paramdesc_wParamFlags);
+	lpStruct->elemdescVar.paramdesc.pparamdescex = (LPPARAMDESCEX)(*env)->GetIntField(env, lpObject, VARDESC1Fc.elemdescVar_paramdesc_pparamdescex);
+	lpStruct->elemdescVar.tdesc.vt = (*env)->GetShortField(env, lpObject, VARDESC1Fc.elemdescVar_tdesc_vt);
+	lpStruct->elemdescVar.tdesc.lptdesc = (struct FARSTRUCT tagTYPEDESC FAR *)(*env)->GetIntField(env, lpObject, VARDESC1Fc.elemdescVar_tdesc_union);
+	lpStruct->oInst = (*env)->GetIntField(env, lpObject, VARDESC1Fc.unionField);
+	lpStruct->lpstrSchema = (OLECHAR FAR *)(*env)->GetIntField(env, lpObject, VARDESC1Fc.lpstrSchema);
+	lpStruct->memid = (*env)->GetIntField(env, lpObject, VARDESC1Fc.memid);
+	return lpStruct;
+}
+
+void setVARDESC1Fields(JNIEnv *env, jobject lpObject, VARDESC *lpStruct)
+{
+	if (!VARDESC1Fc.cached) cacheVARDESC1Fids(env, lpObject);
+	(*env)->SetIntField(env, lpObject, VARDESC1Fc.varkind, lpStruct->varkind);
+	(*env)->SetShortField(env, lpObject, VARDESC1Fc.wVarFlags, lpStruct->wVarFlags);
+	(*env)->SetShortField(env, lpObject, VARDESC1Fc.elemdescVar_paramdesc_wParamFlags, lpStruct->elemdescVar.paramdesc.wParamFlags);
+	(*env)->SetIntField(env, lpObject, VARDESC1Fc.elemdescVar_paramdesc_pparamdescex, (jint)lpStruct->elemdescVar.paramdesc.pparamdescex);
+	(*env)->SetShortField(env, lpObject, VARDESC1Fc.elemdescVar_tdesc_vt, lpStruct->elemdescVar.tdesc.vt);
+	(*env)->SetIntField(env, lpObject, VARDESC1Fc.elemdescVar_tdesc_union, (jint)lpStruct->elemdescVar.tdesc.lptdesc);
+	(*env)->SetIntField(env, lpObject, VARDESC1Fc.unionField, lpStruct->oInst);
+	(*env)->SetIntField(env, lpObject, VARDESC1Fc.lpstrSchema, (jint)lpStruct->lpstrSchema);
+	(*env)->SetIntField(env, lpObject, VARDESC1Fc.memid, lpStruct->memid);
+}
+#endif /* NO_VARDESC1 */
+
+#ifndef NO_VARDESC2
+typedef struct VARDESC2_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID memid, lpstrSchema, unionField, elemdescVar_tdesc_union, elemdescVar_tdesc_vt, elemdescFunc_idldesc_dwReserved, elemdescFunc_idldesc_wIDLFlags, wVarFlags, varkind;
+} VARDESC2_FID_CACHE;
+
+VARDESC2_FID_CACHE VARDESC2Fc;
+
+void cacheVARDESC2Fids(JNIEnv *env, jobject lpObject)
+{
+	if (VARDESC2Fc.cached) return;
+	VARDESC2Fc.clazz = (*env)->GetObjectClass(env, lpObject);
+	VARDESC2Fc.memid = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "memid", "I");
+	VARDESC2Fc.lpstrSchema = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "lpstrSchema", "I");
+	VARDESC2Fc.unionField = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "unionField", "I");
+	VARDESC2Fc.elemdescVar_tdesc_union = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "elemdescVar_tdesc_union", "I");
+	VARDESC2Fc.elemdescVar_tdesc_vt = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "elemdescVar_tdesc_vt", "S");
+	VARDESC2Fc.elemdescFunc_idldesc_dwReserved = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "elemdescFunc_idldesc_dwReserved", "I");
+	VARDESC2Fc.elemdescFunc_idldesc_wIDLFlags = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "elemdescFunc_idldesc_wIDLFlags", "S");
+	VARDESC2Fc.wVarFlags = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "wVarFlags", "S");
+	VARDESC2Fc.varkind = (*env)->GetFieldID(env, VARDESC2Fc.clazz, "varkind", "I");
+	VARDESC2Fc.cached = 1;
+}
+
+VARDESC *getVARDESC2Fields(JNIEnv *env, jobject lpObject, VARDESC *lpStruct)
+{
+	if (!VARDESC2Fc.cached) cacheVARDESC2Fids(env, lpObject);
+	lpStruct->varkind = (*env)->GetIntField(env, lpObject, VARDESC2Fc.varkind);
+	lpStruct->wVarFlags = (*env)->GetShortField(env, lpObject, VARDESC2Fc.wVarFlags);
+	lpStruct->elemdescVar.idldesc.wIDLFlags = (*env)->GetShortField(env, lpObject, VARDESC2Fc.elemdescFunc_idldesc_wIDLFlags);
+	lpStruct->elemdescVar.idldesc.dwReserved = (*env)->GetIntField(env, lpObject, VARDESC2Fc.elemdescFunc_idldesc_dwReserved);
+	lpStruct->elemdescVar.tdesc.vt = (*env)->GetShortField(env, lpObject, VARDESC2Fc.elemdescVar_tdesc_vt);
+	lpStruct->elemdescVar.tdesc.lptdesc = (struct FARSTRUCT tagTYPEDESC FAR *)(*env)->GetIntField(env, lpObject, VARDESC2Fc.elemdescVar_tdesc_union);
+	lpStruct->oInst = (*env)->GetIntField(env, lpObject, VARDESC2Fc.unionField);
+	lpStruct->lpstrSchema = (OLECHAR FAR *)(*env)->GetIntField(env, lpObject, VARDESC2Fc.lpstrSchema);
+	lpStruct->memid = (*env)->GetIntField(env, lpObject, VARDESC2Fc.memid);
+	return lpStruct;
+}
+
+void setVARDESC2Fields(JNIEnv *env, jobject lpObject, VARDESC *lpStruct)
+{
+	if (!VARDESC2Fc.cached) cacheVARDESC2Fids(env, lpObject);
+	(*env)->SetIntField(env, lpObject, VARDESC2Fc.varkind, lpStruct->varkind);
+	(*env)->SetShortField(env, lpObject, VARDESC2Fc.wVarFlags, lpStruct->wVarFlags);
+	(*env)->SetShortField(env, lpObject, VARDESC2Fc.elemdescFunc_idldesc_wIDLFlags, lpStruct->elemdescVar.idldesc.wIDLFlags);
+	(*env)->SetIntField(env, lpObject, VARDESC2Fc.elemdescFunc_idldesc_dwReserved, lpStruct->elemdescVar.idldesc.dwReserved);
+	(*env)->SetShortField(env, lpObject, VARDESC2Fc.elemdescVar_tdesc_vt, lpStruct->elemdescVar.tdesc.vt);
+	(*env)->SetIntField(env, lpObject, VARDESC2Fc.elemdescVar_tdesc_union, (jint)lpStruct->elemdescVar.tdesc.lptdesc);
+	(*env)->SetIntField(env, lpObject, VARDESC2Fc.unionField, lpStruct->oInst);
+	(*env)->SetIntField(env, lpObject, VARDESC2Fc.lpstrSchema, (jint)lpStruct->lpstrSchema);
+	(*env)->SetIntField(env, lpObject, VARDESC2Fc.memid, lpStruct->memid);
+}
+#endif /* NO_VARDESC2 */
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/com_structs.h b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/com_structs.h
index 066a4d6..16a103d 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/com_structs.h
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/com_structs.h
@@ -1,121 +1,121 @@
-/*******************************************************************************

-* Copyright (c) 2000, 2003 IBM Corporation and others.

-* All rights reserved. This program and the accompanying materials

-* are made available under the terms of the Common Public License v1.0

-* which accompanies this distribution, and is available at

-* http://www.eclipse.org/legal/cpl-v10.html

-* 

-* Contributors:

-*     IBM Corporation - initial API and implementation

-*******************************************************************************/

-

-#include "os_structs.h"

-

-/* used to cast Vtabl entries */

-

-/* P_OLE_FN_x typedef for an OLE function returning int with x params*/

-typedef jint (STDMETHODCALLTYPE *P_OLE_FN_9)(jint, jint, jint, jint, jint, jint, jint, jint, jint);

-typedef jint (STDMETHODCALLTYPE *P_OLE_FN_8)(jint, jint, jint, jint, jint, jint, jint, jint);

-typedef jint (STDMETHODCALLTYPE *P_OLE_FN_7)(jint, jint, jint, jint, jint, jint, jint);

-typedef jint (STDMETHODCALLTYPE *P_OLE_FN_6)(jint, jint, jint, jint, jint, jint);

-typedef jint (STDMETHODCALLTYPE *P_OLE_FN_5)(jint, jint, jint, jint, jint);

-typedef jint (STDMETHODCALLTYPE *P_OLE_FN_4)(jint, jint, jint, jint);

-typedef jint (STDMETHODCALLTYPE *P_OLE_FN_3)(jint, jint, jint);

-typedef jint (STDMETHODCALLTYPE *P_OLE_FN_2)(jint, jint);

-typedef jint (STDMETHODCALLTYPE *P_OLE_FN_1)(jint);

-typedef jint (STDMETHODCALLTYPE *P_OLE_FN_0)(void);

-

-#ifndef NO_CAUUID

-CAUUID *getCAUUIDFields(JNIEnv *env, jobject lpObject, CAUUID *lpStruct);

-void setCAUUIDFields(JNIEnv *env, jobject lpObject, CAUUID *lpStruct);

-#endif /* NO_CAUUID */

-

-#ifndef NO_CONTROLINFO

-CONTROLINFO *getCONTROLINFOFields(JNIEnv *env, jobject lpObject, CONTROLINFO *lpStruct);

-void setCONTROLINFOFields(JNIEnv *env, jobject lpObject, CONTROLINFO *lpStruct);

-#endif /* NO_CONTROLINFO */

-

-#ifndef NO_COSERVERINFO

-COSERVERINFO *getCOSERVERINFOFields(JNIEnv *env, jobject lpObject, COSERVERINFO *lpStruct);

-void setCOSERVERINFOFields(JNIEnv *env, jobject lpObject, COSERVERINFO *lpStruct);

-#endif /* NO_COSERVERINFO */

-

-#ifndef NO_DISPPARAMS

-DISPPARAMS *getDISPPARAMSFields(JNIEnv *env, jobject lpObject, DISPPARAMS *lpStruct);

-void setDISPPARAMSFields(JNIEnv *env, jobject lpObject, DISPPARAMS *lpStruct);

-#endif /* NO_DISPPARAMS */

-

-#ifndef NO_DVTARGETDEVICE

-DVTARGETDEVICE *getDVTARGETDEVICEFields(JNIEnv *env, jobject lpObject, DVTARGETDEVICE *lpStruct);

-void setDVTARGETDEVICEFields(JNIEnv *env, jobject lpObject, DVTARGETDEVICE *lpStruct);

-#endif /* NO_DVTARGETDEVICE */

-

-#ifndef NO_EXCEPINFO

-EXCEPINFO *getEXCEPINFOFields(JNIEnv *env, jobject lpObject, EXCEPINFO *lpStruct);

-void setEXCEPINFOFields(JNIEnv *env, jobject lpObject, EXCEPINFO *lpStruct);

-#endif /* NO_EXCEPINFO */

-

-#ifndef NO_FORMATETC

-FORMATETC *getFORMATETCFields(JNIEnv *env, jobject lpObject, FORMATETC *lpStruct);

-void setFORMATETCFields(JNIEnv *env, jobject lpObject, FORMATETC *lpStruct);

-#endif /* NO_FORMATETC */

-

-#ifndef NO_FUNCDESC1

-FUNCDESC *getFUNCDESC1Fields(JNIEnv *env, jobject lpObject, FUNCDESC *lpStruct);

-void setFUNCDESC1Fields(JNIEnv *env, jobject lpObject, FUNCDESC *lpStruct);

-#endif /* NO_FUNCDESC1 */

-

-#ifndef NO_FUNCDESC2

-FUNCDESC *getFUNCDESC2Fields(JNIEnv *env, jobject lpObject, FUNCDESC *lpStruct);

-void setFUNCDESC2Fields(JNIEnv *env, jobject lpObject, FUNCDESC *lpStruct);

-#endif /* NO_FUNCDESC2 */

-

-#ifndef NO_GUID

-GUID *getGUIDFields(JNIEnv *env, jobject lpObject, GUID *lpStruct);

-void setGUIDFields(JNIEnv *env, jobject lpObject, GUID *lpStruct);

-#endif /* NO_GUID */

-

-#ifndef NO_LICINFO

-LICINFO *getLICINFOFields(JNIEnv *env, jobject lpObject, LICINFO *lpStruct);

-void setLICINFOFields(JNIEnv *env, jobject lpObject, LICINFO *lpStruct);

-#endif /* NO_LICINFO */

-

-#ifndef NO_OLECMD

-OLECMD *getOLECMDFields(JNIEnv *env, jobject lpObject, OLECMD *lpStruct);

-void setOLECMDFields(JNIEnv *env, jobject lpObject, OLECMD *lpStruct);

-#endif /* NO_OLECMD */

-

-#ifndef NO_OLECMDTEXT

-OLECMDTEXT *getOLECMDTEXTFields(JNIEnv *env, jobject lpObject, OLECMDTEXT *lpStruct);

-void setOLECMDTEXTFields(JNIEnv *env, jobject lpObject, OLECMDTEXT *lpStruct);

-#endif /* NO_OLECMDTEXT */

-

-#ifndef NO_OLEINPLACEFRAMEINFO

-OLEINPLACEFRAMEINFO *getOLEINPLACEFRAMEINFOFields(JNIEnv *env, jobject lpObject, OLEINPLACEFRAMEINFO *lpStruct);

-void setOLEINPLACEFRAMEINFOFields(JNIEnv *env, jobject lpObject, OLEINPLACEFRAMEINFO *lpStruct);

-#endif /* NO_OLEINPLACEFRAMEINFO */

-

-#ifndef NO_STATSTG

-STATSTG *getSTATSTGFields(JNIEnv *env, jobject lpObject, STATSTG *lpStruct);

-void setSTATSTGFields(JNIEnv *env, jobject lpObject, STATSTG *lpStruct);

-#endif /* NO_STATSTG */

-

-#ifndef NO_STGMEDIUM

-STGMEDIUM *getSTGMEDIUMFields(JNIEnv *env, jobject lpObject, STGMEDIUM *lpStruct);

-void setSTGMEDIUMFields(JNIEnv *env, jobject lpObject, STGMEDIUM *lpStruct);

-#endif /* NO_STGMEDIUM */

-

-#ifndef NO_TYPEATTR

-TYPEATTR *getTYPEATTRFields(JNIEnv *env, jobject lpObject, TYPEATTR *lpStruct);

-void setTYPEATTRFields(JNIEnv *env, jobject lpObject, TYPEATTR *lpStruct);

-#endif /* NO_TYPEATTR */

-

-#ifndef NO_VARDESC1

-VARDESC *getVARDESC1Fields(JNIEnv *env, jobject lpObject, VARDESC *lpStruct);

-void setVARDESC1Fields(JNIEnv *env, jobject lpObject, VARDESC *lpStruct);

-#endif /* NO_VARDESC1 */

-

-#ifndef NO_VARDESC2

-VARDESC *getVARDESC2Fields(JNIEnv *env, jobject lpObject, VARDESC *lpStruct);

-void setVARDESC2Fields(JNIEnv *env, jobject lpObject, VARDESC *lpStruct);

-#endif /* NO_VARDESC2 */

+/*******************************************************************************
+* Copyright (c) 2000, 2003 IBM Corporation and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Common Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/cpl-v10.html
+* 
+* Contributors:
+*     IBM Corporation - initial API and implementation
+*******************************************************************************/
+
+#include "os_structs.h"
+
+/* used to cast Vtabl entries */
+
+/* P_OLE_FN_x typedef for an OLE function returning int with x params*/
+typedef jint (STDMETHODCALLTYPE *P_OLE_FN_9)(jint, jint, jint, jint, jint, jint, jint, jint, jint);
+typedef jint (STDMETHODCALLTYPE *P_OLE_FN_8)(jint, jint, jint, jint, jint, jint, jint, jint);
+typedef jint (STDMETHODCALLTYPE *P_OLE_FN_7)(jint, jint, jint, jint, jint, jint, jint);
+typedef jint (STDMETHODCALLTYPE *P_OLE_FN_6)(jint, jint, jint, jint, jint, jint);
+typedef jint (STDMETHODCALLTYPE *P_OLE_FN_5)(jint, jint, jint, jint, jint);
+typedef jint (STDMETHODCALLTYPE *P_OLE_FN_4)(jint, jint, jint, jint);
+typedef jint (STDMETHODCALLTYPE *P_OLE_FN_3)(jint, jint, jint);
+typedef jint (STDMETHODCALLTYPE *P_OLE_FN_2)(jint, jint);
+typedef jint (STDMETHODCALLTYPE *P_OLE_FN_1)(jint);
+typedef jint (STDMETHODCALLTYPE *P_OLE_FN_0)(void);
+
+#ifndef NO_CAUUID
+CAUUID *getCAUUIDFields(JNIEnv *env, jobject lpObject, CAUUID *lpStruct);
+void setCAUUIDFields(JNIEnv *env, jobject lpObject, CAUUID *lpStruct);
+#endif /* NO_CAUUID */
+
+#ifndef NO_CONTROLINFO
+CONTROLINFO *getCONTROLINFOFields(JNIEnv *env, jobject lpObject, CONTROLINFO *lpStruct);
+void setCONTROLINFOFields(JNIEnv *env, jobject lpObject, CONTROLINFO *lpStruct);
+#endif /* NO_CONTROLINFO */
+
+#ifndef NO_COSERVERINFO
+COSERVERINFO *getCOSERVERINFOFields(JNIEnv *env, jobject lpObject, COSERVERINFO *lpStruct);
+void setCOSERVERINFOFields(JNIEnv *env, jobject lpObject, COSERVERINFO *lpStruct);
+#endif /* NO_COSERVERINFO */
+
+#ifndef NO_DISPPARAMS
+DISPPARAMS *getDISPPARAMSFields(JNIEnv *env, jobject lpObject, DISPPARAMS *lpStruct);
+void setDISPPARAMSFields(JNIEnv *env, jobject lpObject, DISPPARAMS *lpStruct);
+#endif /* NO_DISPPARAMS */
+
+#ifndef NO_DVTARGETDEVICE
+DVTARGETDEVICE *getDVTARGETDEVICEFields(JNIEnv *env, jobject lpObject, DVTARGETDEVICE *lpStruct);
+void setDVTARGETDEVICEFields(JNIEnv *env, jobject lpObject, DVTARGETDEVICE *lpStruct);
+#endif /* NO_DVTARGETDEVICE */
+
+#ifndef NO_EXCEPINFO
+EXCEPINFO *getEXCEPINFOFields(JNIEnv *env, jobject lpObject, EXCEPINFO *lpStruct);
+void setEXCEPINFOFields(JNIEnv *env, jobject lpObject, EXCEPINFO *lpStruct);
+#endif /* NO_EXCEPINFO */
+
+#ifndef NO_FORMATETC
+FORMATETC *getFORMATETCFields(JNIEnv *env, jobject lpObject, FORMATETC *lpStruct);
+void setFORMATETCFields(JNIEnv *env, jobject lpObject, FORMATETC *lpStruct);
+#endif /* NO_FORMATETC */
+
+#ifndef NO_FUNCDESC1
+FUNCDESC *getFUNCDESC1Fields(JNIEnv *env, jobject lpObject, FUNCDESC *lpStruct);
+void setFUNCDESC1Fields(JNIEnv *env, jobject lpObject, FUNCDESC *lpStruct);
+#endif /* NO_FUNCDESC1 */
+
+#ifndef NO_FUNCDESC2
+FUNCDESC *getFUNCDESC2Fields(JNIEnv *env, jobject lpObject, FUNCDESC *lpStruct);
+void setFUNCDESC2Fields(JNIEnv *env, jobject lpObject, FUNCDESC *lpStruct);
+#endif /* NO_FUNCDESC2 */
+
+#ifndef NO_GUID
+GUID *getGUIDFields(JNIEnv *env, jobject lpObject, GUID *lpStruct);
+void setGUIDFields(JNIEnv *env, jobject lpObject, GUID *lpStruct);
+#endif /* NO_GUID */
+
+#ifndef NO_LICINFO
+LICINFO *getLICINFOFields(JNIEnv *env, jobject lpObject, LICINFO *lpStruct);
+void setLICINFOFields(JNIEnv *env, jobject lpObject, LICINFO *lpStruct);
+#endif /* NO_LICINFO */
+
+#ifndef NO_OLECMD
+OLECMD *getOLECMDFields(JNIEnv *env, jobject lpObject, OLECMD *lpStruct);
+void setOLECMDFields(JNIEnv *env, jobject lpObject, OLECMD *lpStruct);
+#endif /* NO_OLECMD */
+
+#ifndef NO_OLECMDTEXT
+OLECMDTEXT *getOLECMDTEXTFields(JNIEnv *env, jobject lpObject, OLECMDTEXT *lpStruct);
+void setOLECMDTEXTFields(JNIEnv *env, jobject lpObject, OLECMDTEXT *lpStruct);
+#endif /* NO_OLECMDTEXT */
+
+#ifndef NO_OLEINPLACEFRAMEINFO
+OLEINPLACEFRAMEINFO *getOLEINPLACEFRAMEINFOFields(JNIEnv *env, jobject lpObject, OLEINPLACEFRAMEINFO *lpStruct);
+void setOLEINPLACEFRAMEINFOFields(JNIEnv *env, jobject lpObject, OLEINPLACEFRAMEINFO *lpStruct);
+#endif /* NO_OLEINPLACEFRAMEINFO */
+
+#ifndef NO_STATSTG
+STATSTG *getSTATSTGFields(JNIEnv *env, jobject lpObject, STATSTG *lpStruct);
+void setSTATSTGFields(JNIEnv *env, jobject lpObject, STATSTG *lpStruct);
+#endif /* NO_STATSTG */
+
+#ifndef NO_STGMEDIUM
+STGMEDIUM *getSTGMEDIUMFields(JNIEnv *env, jobject lpObject, STGMEDIUM *lpStruct);
+void setSTGMEDIUMFields(JNIEnv *env, jobject lpObject, STGMEDIUM *lpStruct);
+#endif /* NO_STGMEDIUM */
+
+#ifndef NO_TYPEATTR
+TYPEATTR *getTYPEATTRFields(JNIEnv *env, jobject lpObject, TYPEATTR *lpStruct);
+void setTYPEATTRFields(JNIEnv *env, jobject lpObject, TYPEATTR *lpStruct);
+#endif /* NO_TYPEATTR */
+
+#ifndef NO_VARDESC1
+VARDESC *getVARDESC1Fields(JNIEnv *env, jobject lpObject, VARDESC *lpStruct);
+void setVARDESC1Fields(JNIEnv *env, jobject lpObject, VARDESC *lpStruct);
+#endif /* NO_VARDESC1 */
+
+#ifndef NO_VARDESC2
+VARDESC *getVARDESC2Fields(JNIEnv *env, jobject lpObject, VARDESC *lpStruct);
+void setVARDESC2Fields(JNIEnv *env, jobject lpObject, VARDESC *lpStruct);
+#endif /* NO_VARDESC2 */
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.c b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.c
index 2d870ef..bd5ea9b 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.c
@@ -1,6998 +1,6998 @@
-/*******************************************************************************

-* Copyright (c) 2000, 2003 IBM Corporation and others.

-* All rights reserved. This program and the accompanying materials

-* are made available under the terms of the Common Public License v1.0

-* which accompanies this distribution, and is available at

-* http://www.eclipse.org/legal/cpl-v10.html

-* 

-* Contributors:

-*     IBM Corporation - initial API and implementation

-*******************************************************************************/

-

-#include "swt.h"

-#include "os_structs.h"

-

-#define OS_NATIVE(func) Java_org_eclipse_swt_internal_win32_OS_##func

-

-#ifndef NO_AbortDoc

-JNIEXPORT jint JNICALL OS_NATIVE(AbortDoc)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "AbortDoc\n")

-	rc = (jint)AbortDoc((HDC)arg0);

-	NATIVE_EXIT(env, that, "AbortDoc\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ActivateKeyboardLayout

-JNIEXPORT jint JNICALL OS_NATIVE(ActivateKeyboardLayout)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "ActivateKeyboardLayout\n")

-	rc = (jint)ActivateKeyboardLayout((HKL)arg0, arg1);

-	NATIVE_EXIT(env, that, "ActivateKeyboardLayout\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_AdjustWindowRectEx

-JNIEXPORT jboolean JNICALL OS_NATIVE(AdjustWindowRectEx)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jboolean arg2, jint arg3)

-{

-	RECT _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "AdjustWindowRectEx\n")

-	if (arg0) lparg0 = getRECTFields(env, arg0, &_arg0);

-	rc = (jboolean)AdjustWindowRectEx(lparg0, arg1, arg2, arg3);

-	if (arg0) setRECTFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "AdjustWindowRectEx\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_Arc

-JNIEXPORT jboolean JNICALL OS_NATIVE(Arc)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "Arc\n")

-	rc = (jboolean)Arc((HDC)arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);

-	NATIVE_EXIT(env, that, "Arc\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_BeginDeferWindowPos

-JNIEXPORT jint JNICALL OS_NATIVE(BeginDeferWindowPos)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "BeginDeferWindowPos\n")

-	rc = (jint)BeginDeferWindowPos(arg0);

-	NATIVE_EXIT(env, that, "BeginDeferWindowPos\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_BeginPaint

-JNIEXPORT jint JNICALL OS_NATIVE(BeginPaint)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	PAINTSTRUCT _arg1, *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "BeginPaint\n")

-	if (arg1) lparg1 = getPAINTSTRUCTFields(env, arg1, &_arg1);

-	rc = (jint)BeginPaint((HWND)arg0, lparg1);

-	if (arg1) setPAINTSTRUCTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "BeginPaint\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_BitBlt

-JNIEXPORT jboolean JNICALL OS_NATIVE(BitBlt)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "BitBlt\n")

-	rc = (jboolean)BitBlt((HDC)arg0, arg1, arg2, arg3, arg4, (HDC)arg5, arg6, arg7, arg8);

-	NATIVE_EXIT(env, that, "BitBlt\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_BringWindowToTop

-JNIEXPORT jboolean JNICALL OS_NATIVE(BringWindowToTop)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "BringWindowToTop\n")

-	rc = (jboolean)BringWindowToTop((HWND)arg0);

-	NATIVE_EXIT(env, that, "BringWindowToTop\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CallNextHookEx

-JNIEXPORT jint JNICALL OS_NATIVE(CallNextHookEx)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CallNextHookEx\n")

-	rc = (jint)CallNextHookEx((HHOOK)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);

-	NATIVE_EXIT(env, that, "CallNextHookEx\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CallWindowProcA

-JNIEXPORT jint JNICALL OS_NATIVE(CallWindowProcA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CallWindowProcA\n")

-	rc = (jint)CallWindowProcA((WNDPROC)arg0, (HWND)arg1, arg2, arg3, arg4);

-	NATIVE_EXIT(env, that, "CallWindowProcA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CallWindowProcW

-JNIEXPORT jint JNICALL OS_NATIVE(CallWindowProcW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CallWindowProcW\n")

-	rc = (jint)CallWindowProcW((WNDPROC)arg0, (HWND)arg1, arg2, arg3, arg4);

-	NATIVE_EXIT(env, that, "CallWindowProcW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CharLowerA

-JNIEXPORT jshort JNICALL OS_NATIVE(CharLowerA)

-	(JNIEnv *env, jclass that, jshort arg0)

-{

-	jshort rc;

-	NATIVE_ENTER(env, that, "CharLowerA\n")

-	rc = (jshort)CharLowerA((LPSTR)arg0);

-	NATIVE_EXIT(env, that, "CharLowerA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CharLowerW

-JNIEXPORT jshort JNICALL OS_NATIVE(CharLowerW)

-	(JNIEnv *env, jclass that, jshort arg0)

-{

-	jshort rc;

-	NATIVE_ENTER(env, that, "CharLowerW\n")

-	rc = (jshort)CharLowerW((LPWSTR)arg0);

-	NATIVE_EXIT(env, that, "CharLowerW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CharUpperA

-JNIEXPORT jshort JNICALL OS_NATIVE(CharUpperA)

-	(JNIEnv *env, jclass that, jshort arg0)

-{

-	jshort rc;

-	NATIVE_ENTER(env, that, "CharUpperA\n")

-	rc = (jshort)CharUpperA((LPSTR)arg0);

-	NATIVE_EXIT(env, that, "CharUpperA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CharUpperW

-JNIEXPORT jshort JNICALL OS_NATIVE(CharUpperW)

-	(JNIEnv *env, jclass that, jshort arg0)

-{

-	jshort rc;

-	NATIVE_ENTER(env, that, "CharUpperW\n")

-	rc = (jshort)CharUpperW((LPWSTR)arg0);

-	NATIVE_EXIT(env, that, "CharUpperW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CheckMenuItem

-JNIEXPORT jboolean JNICALL OS_NATIVE(CheckMenuItem)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "CheckMenuItem\n")

-	rc = (jboolean)CheckMenuItem((HMENU)arg0, (UINT)arg1, (UINT)arg2);

-	NATIVE_EXIT(env, that, "CheckMenuItem\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ChooseColorA

-JNIEXPORT jboolean JNICALL OS_NATIVE(ChooseColorA)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	CHOOSECOLOR _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ChooseColorA\n")

-	if (arg0) lparg0 = getCHOOSECOLORFields(env, arg0, &_arg0);

-	rc = (jboolean)ChooseColorA(lparg0);

-	if (arg0) setCHOOSECOLORFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "ChooseColorA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ChooseColorW

-JNIEXPORT jboolean JNICALL OS_NATIVE(ChooseColorW)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	CHOOSECOLOR _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ChooseColorW\n")

-	if (arg0) lparg0 = getCHOOSECOLORFields(env, arg0, &_arg0);

-	rc = (jboolean)ChooseColorW((LPCHOOSECOLORW)lparg0);

-	if (arg0) setCHOOSECOLORFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "ChooseColorW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ChooseFontA

-JNIEXPORT jboolean JNICALL OS_NATIVE(ChooseFontA)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	CHOOSEFONT _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ChooseFontA\n")

-	if (arg0) lparg0 = getCHOOSEFONTFields(env, arg0, &_arg0);

-	rc = (jboolean)ChooseFontA(lparg0);

-	if (arg0) setCHOOSEFONTFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "ChooseFontA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ChooseFontW

-JNIEXPORT jboolean JNICALL OS_NATIVE(ChooseFontW)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	CHOOSEFONT _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ChooseFontW\n")

-	if (arg0) lparg0 = getCHOOSEFONTFields(env, arg0, &_arg0);

-	rc = (jboolean)ChooseFontW((LPCHOOSEFONTW)lparg0);

-	if (arg0) setCHOOSEFONTFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "ChooseFontW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ClientToScreen

-JNIEXPORT jboolean JNICALL OS_NATIVE(ClientToScreen)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	POINT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ClientToScreen\n")

-	if (arg1) lparg1 = getPOINTFields(env, arg1, &_arg1);

-	rc = (jboolean)ClientToScreen((HWND)arg0, lparg1);

-	if (arg1) setPOINTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "ClientToScreen\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CloseClipboard

-JNIEXPORT jboolean JNICALL OS_NATIVE(CloseClipboard)

-	(JNIEnv *env, jclass that)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "CloseClipboard\n")

-	rc = (jboolean)CloseClipboard();

-	NATIVE_EXIT(env, that, "CloseClipboard\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CombineRgn

-JNIEXPORT jint JNICALL OS_NATIVE(CombineRgn)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CombineRgn\n")

-	rc = (jint)CombineRgn((HRGN)arg0, (HRGN)arg1, (HRGN)arg2, arg3);

-	NATIVE_EXIT(env, that, "CombineRgn\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CommDlgExtendedError

-JNIEXPORT jint JNICALL OS_NATIVE(CommDlgExtendedError)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CommDlgExtendedError\n")

-	rc = (jint)CommDlgExtendedError();

-	NATIVE_EXIT(env, that, "CommDlgExtendedError\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CommandBar_1AddAdornments

-JNIEXPORT jboolean JNICALL OS_NATIVE(CommandBar_1AddAdornments)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "CommandBar_1AddAdornments\n")

-	rc = (jboolean)CommandBar_AddAdornments((HWND)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "CommandBar_1AddAdornments\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CommandBar_1Create

-JNIEXPORT jint JNICALL OS_NATIVE(CommandBar_1Create)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CommandBar_1Create\n")

-	rc = (jint)CommandBar_Create((HINSTANCE)arg0, (HWND)arg1, arg2);

-	NATIVE_EXIT(env, that, "CommandBar_1Create\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CommandBar_1Destroy

-JNIEXPORT void JNICALL OS_NATIVE(CommandBar_1Destroy)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	NATIVE_ENTER(env, that, "CommandBar_1Destroy\n")

-	CommandBar_Destroy((HWND)arg0);

-	NATIVE_EXIT(env, that, "CommandBar_1Destroy\n")

-}

-#endif

-

-#ifndef NO_CommandBar_1DrawMenuBar

-JNIEXPORT jboolean JNICALL OS_NATIVE(CommandBar_1DrawMenuBar)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "CommandBar_1DrawMenuBar\n")

-	rc = (jboolean)CommandBar_DrawMenuBar((HWND)arg0, (WORD)arg1);

-	NATIVE_EXIT(env, that, "CommandBar_1DrawMenuBar\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CommandBar_1Height

-JNIEXPORT jint JNICALL OS_NATIVE(CommandBar_1Height)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CommandBar_1Height\n")

-	rc = (jint)CommandBar_Height((HWND)arg0);

-	NATIVE_EXIT(env, that, "CommandBar_1Height\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CommandBar_1InsertMenubarEx

-JNIEXPORT jboolean JNICALL OS_NATIVE(CommandBar_1InsertMenubarEx)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "CommandBar_1InsertMenubarEx\n")

-	rc = (jboolean)CommandBar_InsertMenubarEx((HWND)arg0, (HINSTANCE)arg1, (LPTSTR)arg2, (WORD)arg3);

-	NATIVE_EXIT(env, that, "CommandBar_1InsertMenubarEx\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CommandBar_1Show

-JNIEXPORT jboolean JNICALL OS_NATIVE(CommandBar_1Show)

-	(JNIEnv *env, jclass that, jint arg0, jboolean arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "CommandBar_1Show\n")

-	rc = (jboolean)CommandBar_Show((HWND)arg0, (BOOL)arg1);

-	NATIVE_EXIT(env, that, "CommandBar_1Show\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CopyImage

-JNIEXPORT jint JNICALL OS_NATIVE(CopyImage)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CopyImage\n")

-	rc = (jint)CopyImage((HANDLE)arg0, arg1, arg2, arg3, arg4);

-	NATIVE_EXIT(env, that, "CopyImage\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateAcceleratorTableA

-JNIEXPORT jint JNICALL OS_NATIVE(CreateAcceleratorTableA)

-	(JNIEnv *env, jclass that, jbyteArray arg0, jint arg1)

-{

-	jbyte *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateAcceleratorTableA\n")

-	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);

-	rc = (jint)CreateAcceleratorTableA((LPACCEL)lparg0, arg1);

-	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "CreateAcceleratorTableA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateAcceleratorTableW

-JNIEXPORT jint JNICALL OS_NATIVE(CreateAcceleratorTableW)

-	(JNIEnv *env, jclass that, jbyteArray arg0, jint arg1)

-{

-	jbyte *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateAcceleratorTableW\n")

-	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);

-	rc = (jint)CreateAcceleratorTableW((LPACCEL)lparg0, arg1);

-	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "CreateAcceleratorTableW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateBitmap

-JNIEXPORT jint JNICALL OS_NATIVE(CreateBitmap)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jbyteArray arg4)

-{

-	jbyte *lparg4=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateBitmap\n")

-	if (arg4) lparg4 = (*env)->GetByteArrayElements(env, arg4, NULL);

-	rc = (jint)CreateBitmap(arg0, arg1, arg2, arg3, (CONST VOID *)lparg4);

-	if (arg4) (*env)->ReleaseByteArrayElements(env, arg4, lparg4, 0);

-	NATIVE_EXIT(env, that, "CreateBitmap\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateCaret

-JNIEXPORT jboolean JNICALL OS_NATIVE(CreateCaret)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "CreateCaret\n")

-	rc = (jboolean)CreateCaret((HWND)arg0, (HBITMAP)arg1, arg2, arg3);

-	NATIVE_EXIT(env, that, "CreateCaret\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateCompatibleBitmap

-JNIEXPORT jint JNICALL OS_NATIVE(CreateCompatibleBitmap)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateCompatibleBitmap\n")

-	rc = (jint)CreateCompatibleBitmap((HDC)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "CreateCompatibleBitmap\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateCompatibleDC

-JNIEXPORT jint JNICALL OS_NATIVE(CreateCompatibleDC)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateCompatibleDC\n")

-	rc = (jint)CreateCompatibleDC((HDC)arg0);

-	NATIVE_EXIT(env, that, "CreateCompatibleDC\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateCursor

-JNIEXPORT jint JNICALL OS_NATIVE(CreateCursor)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jbyteArray arg5, jbyteArray arg6)

-{

-	jbyte *lparg5=NULL;

-	jbyte *lparg6=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateCursor\n")

-	if (arg5) lparg5 = (*env)->GetByteArrayElements(env, arg5, NULL);

-	if (arg6) lparg6 = (*env)->GetByteArrayElements(env, arg6, NULL);

-	rc = (jint)CreateCursor((HINSTANCE)arg0, arg1, arg2, arg3, arg4, (CONST VOID *)lparg5, (CONST VOID *)lparg6);

-	if (arg5) (*env)->ReleaseByteArrayElements(env, arg5, lparg5, 0);

-	if (arg6) (*env)->ReleaseByteArrayElements(env, arg6, lparg6, 0);

-	NATIVE_EXIT(env, that, "CreateCursor\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateDCA

-JNIEXPORT jint JNICALL OS_NATIVE(CreateDCA)

-	(JNIEnv *env, jclass that, jbyteArray arg0, jbyteArray arg1, jint arg2, jint arg3)

-{

-	jbyte *lparg0=NULL;

-	jbyte *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateDCA\n")

-	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	rc = (jint)CreateDCA((LPSTR)lparg0, (LPSTR)lparg1, (LPSTR)arg2, (CONST DEVMODE *)arg3);

-	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "CreateDCA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateDCW

-JNIEXPORT jint JNICALL OS_NATIVE(CreateDCW)

-	(JNIEnv *env, jclass that, jcharArray arg0, jcharArray arg1, jint arg2, jint arg3)

-{

-	jchar *lparg0=NULL;

-	jchar *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateDCW\n")

-	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	rc = (jint)CreateDCW((LPWSTR)lparg0, (LPWSTR)lparg1, (LPWSTR)arg2, (CONST DEVMODEW *)arg3);

-	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "CreateDCW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateDIBSection

-JNIEXPORT jint JNICALL OS_NATIVE(CreateDIBSection)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2, jintArray arg3, jint arg4, jint arg5)

-{

-	jbyte *lparg1=NULL;

-	jint *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateDIBSection\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);

-	rc = (jint)CreateDIBSection((HDC)arg0, (BITMAPINFO *)lparg1, arg2, (VOID **)lparg3, (HANDLE)arg4, arg5);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "CreateDIBSection\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateFontIndirectA__I

-JNIEXPORT jint JNICALL OS_NATIVE(CreateFontIndirectA__I)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateFontIndirectA__I\n")

-	rc = (jint)CreateFontIndirectA((LPLOGFONTA)arg0);

-	NATIVE_EXIT(env, that, "CreateFontIndirectA__I\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateFontIndirectA__Lorg_eclipse_swt_internal_win32_LOGFONTA_2

-JNIEXPORT jint JNICALL OS_NATIVE(CreateFontIndirectA__Lorg_eclipse_swt_internal_win32_LOGFONTA_2)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	LOGFONTA _arg0, *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateFontIndirectA__Lorg_eclipse_swt_internal_win32_LOGFONTA_2\n")

-	if (arg0) lparg0 = getLOGFONTAFields(env, arg0, &_arg0);

-	rc = (jint)CreateFontIndirectA(lparg0);

-	if (arg0) setLOGFONTAFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "CreateFontIndirectA__Lorg_eclipse_swt_internal_win32_LOGFONTA_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateFontIndirectW__I

-JNIEXPORT jint JNICALL OS_NATIVE(CreateFontIndirectW__I)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateFontIndirectW__I\n")

-	rc = (jint)CreateFontIndirectW((LPLOGFONTW)arg0);

-	NATIVE_EXIT(env, that, "CreateFontIndirectW__I\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateFontIndirectW__Lorg_eclipse_swt_internal_win32_LOGFONTW_2

-JNIEXPORT jint JNICALL OS_NATIVE(CreateFontIndirectW__Lorg_eclipse_swt_internal_win32_LOGFONTW_2)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	LOGFONTW _arg0, *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateFontIndirectW__Lorg_eclipse_swt_internal_win32_LOGFONTW_2\n")

-	if (arg0) lparg0 = getLOGFONTWFields(env, arg0, &_arg0);

-	rc = (jint)CreateFontIndirectW(lparg0);

-	if (arg0) setLOGFONTWFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "CreateFontIndirectW__Lorg_eclipse_swt_internal_win32_LOGFONTW_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateIconIndirect

-JNIEXPORT jint JNICALL OS_NATIVE(CreateIconIndirect)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	ICONINFO _arg0, *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateIconIndirect\n")

-	if (arg0) lparg0 = getICONINFOFields(env, arg0, &_arg0);

-	rc = (jint)CreateIconIndirect(lparg0);

-	if (arg0) setICONINFOFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "CreateIconIndirect\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateMenu

-JNIEXPORT jint JNICALL OS_NATIVE(CreateMenu)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateMenu\n")

-	rc = (jint)CreateMenu();

-	NATIVE_EXIT(env, that, "CreateMenu\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreatePalette

-JNIEXPORT jint JNICALL OS_NATIVE(CreatePalette)

-	(JNIEnv *env, jclass that, jbyteArray arg0)

-{

-	jbyte *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "CreatePalette\n")

-	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);

-	rc = (jint)CreatePalette((LOGPALETTE *)lparg0);

-	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "CreatePalette\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreatePatternBrush

-JNIEXPORT jint JNICALL OS_NATIVE(CreatePatternBrush)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CreatePatternBrush\n")

-	rc = (jint)CreatePatternBrush((HBITMAP)arg0);

-	NATIVE_EXIT(env, that, "CreatePatternBrush\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreatePen

-JNIEXPORT jint JNICALL OS_NATIVE(CreatePen)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CreatePen\n")

-	rc = (jint)CreatePen(arg0, arg1, (COLORREF)arg2);

-	NATIVE_EXIT(env, that, "CreatePen\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreatePopupMenu

-JNIEXPORT jint JNICALL OS_NATIVE(CreatePopupMenu)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CreatePopupMenu\n")

-	rc = (jint)CreatePopupMenu();

-	NATIVE_EXIT(env, that, "CreatePopupMenu\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateRectRgn

-JNIEXPORT jint JNICALL OS_NATIVE(CreateRectRgn)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateRectRgn\n")

-	rc = (jint)CreateRectRgn(arg0, arg1, arg2, arg3);

-	NATIVE_EXIT(env, that, "CreateRectRgn\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateSolidBrush

-JNIEXPORT jint JNICALL OS_NATIVE(CreateSolidBrush)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateSolidBrush\n")

-	rc = (jint)CreateSolidBrush((COLORREF)arg0);

-	NATIVE_EXIT(env, that, "CreateSolidBrush\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateWindowExA

-JNIEXPORT jint JNICALL OS_NATIVE(CreateWindowExA)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jbyteArray arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8, jint arg9, jint arg10, jobject arg11)

-{

-	jbyte *lparg1=NULL;

-	jbyte *lparg2=NULL;

-	CREATESTRUCT _arg11, *lparg11=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateWindowExA\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);

-	if (arg11) lparg11 = getCREATESTRUCTFields(env, arg11, &_arg11);

-	rc = (jint)CreateWindowExA(arg0, (LPSTR)lparg1, lparg2, arg3, arg4, arg5, arg6, arg7, (HWND)arg8, (HMENU)arg9, (HINSTANCE)arg10, lparg11);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);

-	if (arg11) setCREATESTRUCTFields(env, arg11, lparg11);

-	NATIVE_EXIT(env, that, "CreateWindowExA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_CreateWindowExW

-JNIEXPORT jint JNICALL OS_NATIVE(CreateWindowExW)

-	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jcharArray arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8, jint arg9, jint arg10, jobject arg11)

-{

-	jchar *lparg1=NULL;

-	jchar *lparg2=NULL;

-	CREATESTRUCT _arg11, *lparg11=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "CreateWindowExW\n")

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);

-	if (arg11) lparg11 = getCREATESTRUCTFields(env, arg11, &_arg11);

-	rc = (jint)CreateWindowExW(arg0, (LPWSTR)lparg1, (LPWSTR)lparg2, arg3, arg4, arg5, arg6, arg7, (HWND)arg8, (HMENU)arg9, (HINSTANCE)arg10, lparg11);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);

-	if (arg11) setCREATESTRUCTFields(env, arg11, lparg11);

-	NATIVE_EXIT(env, that, "CreateWindowExW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DefFrameProcA

-JNIEXPORT jint JNICALL OS_NATIVE(DefFrameProcA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "DefFrameProcA\n")

-	rc = (jint)DefFrameProcA((HWND)arg0, (HWND)arg1, arg2, (WPARAM)arg3, (LPARAM)arg4);

-	NATIVE_EXIT(env, that, "DefFrameProcA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DefFrameProcW

-JNIEXPORT jint JNICALL OS_NATIVE(DefFrameProcW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "DefFrameProcW\n")

-	rc = (jint)DefFrameProcW((HWND)arg0, (HWND)arg1, arg2, (WPARAM)arg3, (LPARAM)arg4);

-	NATIVE_EXIT(env, that, "DefFrameProcW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DefMDIChildProcA

-JNIEXPORT jint JNICALL OS_NATIVE(DefMDIChildProcA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "DefMDIChildProcA\n")

-	rc = (jint)DefMDIChildProcA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);

-	NATIVE_EXIT(env, that, "DefMDIChildProcA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DefMDIChildProcW

-JNIEXPORT jint JNICALL OS_NATIVE(DefMDIChildProcW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "DefMDIChildProcW\n")

-	rc = (jint)DefMDIChildProcW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);

-	NATIVE_EXIT(env, that, "DefMDIChildProcW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DefWindowProcA

-JNIEXPORT jint JNICALL OS_NATIVE(DefWindowProcA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "DefWindowProcA\n")

-	rc = (jint)DefWindowProcA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);

-	NATIVE_EXIT(env, that, "DefWindowProcA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DefWindowProcW

-JNIEXPORT jint JNICALL OS_NATIVE(DefWindowProcW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "DefWindowProcW\n")

-	rc = (jint)DefWindowProcW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);

-	NATIVE_EXIT(env, that, "DefWindowProcW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DeferWindowPos

-JNIEXPORT jint JNICALL OS_NATIVE(DeferWindowPos)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "DeferWindowPos\n")

-	rc = (jint)DeferWindowPos((HDWP)arg0, (HWND)arg1, (HWND)arg2, arg3, arg4, arg5, arg6, arg7);

-	NATIVE_EXIT(env, that, "DeferWindowPos\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DeleteDC

-JNIEXPORT jboolean JNICALL OS_NATIVE(DeleteDC)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DeleteDC\n")

-	rc = (jboolean)DeleteDC((HDC)arg0);

-	NATIVE_EXIT(env, that, "DeleteDC\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DeleteMenu

-JNIEXPORT jboolean JNICALL OS_NATIVE(DeleteMenu)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DeleteMenu\n")

-	rc = (jboolean)DeleteMenu((HMENU)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "DeleteMenu\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DeleteObject

-JNIEXPORT jboolean JNICALL OS_NATIVE(DeleteObject)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DeleteObject\n")

-	rc = (jboolean)DeleteObject((HGDIOBJ)arg0);

-	NATIVE_EXIT(env, that, "DeleteObject\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DestroyAcceleratorTable

-JNIEXPORT jboolean JNICALL OS_NATIVE(DestroyAcceleratorTable)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DestroyAcceleratorTable\n")

-	rc = (jboolean)DestroyAcceleratorTable((HACCEL)arg0);

-	NATIVE_EXIT(env, that, "DestroyAcceleratorTable\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DestroyCaret

-JNIEXPORT jboolean JNICALL OS_NATIVE(DestroyCaret)

-	(JNIEnv *env, jclass that)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DestroyCaret\n")

-	rc = (jboolean)DestroyCaret();

-	NATIVE_EXIT(env, that, "DestroyCaret\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DestroyCursor

-JNIEXPORT jboolean JNICALL OS_NATIVE(DestroyCursor)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DestroyCursor\n")

-	rc = (jboolean)DestroyCursor((HCURSOR)arg0);

-	NATIVE_EXIT(env, that, "DestroyCursor\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DestroyIcon

-JNIEXPORT jboolean JNICALL OS_NATIVE(DestroyIcon)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DestroyIcon\n")

-	rc = (jboolean)DestroyIcon((HICON)arg0);

-	NATIVE_EXIT(env, that, "DestroyIcon\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DestroyMenu

-JNIEXPORT jboolean JNICALL OS_NATIVE(DestroyMenu)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DestroyMenu\n")

-	rc = (jboolean)DestroyMenu((HMENU)arg0);

-	NATIVE_EXIT(env, that, "DestroyMenu\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DestroyWindow

-JNIEXPORT jboolean JNICALL OS_NATIVE(DestroyWindow)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DestroyWindow\n")

-	rc = (jboolean)DestroyWindow((HWND)arg0);

-	NATIVE_EXIT(env, that, "DestroyWindow\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DispatchMessageA

-JNIEXPORT jint JNICALL OS_NATIVE(DispatchMessageA)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	MSG _arg0, *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "DispatchMessageA\n")

-	if (arg0) lparg0 = getMSGFields(env, arg0, &_arg0);

-	rc = (jint)DispatchMessageA(lparg0);

-	if (arg0) setMSGFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "DispatchMessageA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DispatchMessageW

-JNIEXPORT jint JNICALL OS_NATIVE(DispatchMessageW)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	MSG _arg0, *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "DispatchMessageW\n")

-	if (arg0) lparg0 = getMSGFields(env, arg0, &_arg0);

-	rc = (jint)DispatchMessageW(lparg0);

-	if (arg0) setMSGFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "DispatchMessageW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DragDetect

-JNIEXPORT jboolean JNICALL OS_NATIVE(DragDetect)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	POINT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DragDetect\n")

-	if (arg1) lparg1 = getPOINTFields(env, arg1, &_arg1);

-	rc = (jboolean)DragDetect((HWND)arg0, *lparg1);

-	if (arg1) setPOINTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "DragDetect\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DragFinish

-JNIEXPORT void JNICALL OS_NATIVE(DragFinish)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	NATIVE_ENTER(env, that, "DragFinish\n")

-	DragFinish((HDROP)arg0);

-	NATIVE_EXIT(env, that, "DragFinish\n")

-}

-#endif

-

-#ifndef NO_DragQueryFileA

-JNIEXPORT jint JNICALL OS_NATIVE(DragQueryFileA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jbyteArray arg2, jint arg3)

-{

-	jbyte *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "DragQueryFileA\n")

-	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);

-	rc = (jint)DragQueryFileA((HDROP)arg0, arg1, (LPTSTR)lparg2, arg3);

-	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);

-	NATIVE_EXIT(env, that, "DragQueryFileA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DragQueryFileW

-JNIEXPORT jint JNICALL OS_NATIVE(DragQueryFileW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jcharArray arg2, jint arg3)

-{

-	jchar *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "DragQueryFileW\n")

-	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);

-	rc = (jint)DragQueryFileW((HDROP)arg0, arg1, (LPWSTR)lparg2, arg3);

-	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);

-	NATIVE_EXIT(env, that, "DragQueryFileW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DrawEdge

-JNIEXPORT jboolean JNICALL OS_NATIVE(DrawEdge)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2, jint arg3)

-{

-	RECT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DrawEdge\n")

-	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);

-	rc = (jboolean)DrawEdge((HDC)arg0, lparg1, arg2, arg3);

-	if (arg1) setRECTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "DrawEdge\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DrawFocusRect

-JNIEXPORT jboolean JNICALL OS_NATIVE(DrawFocusRect)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	RECT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DrawFocusRect\n")

-	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);

-	rc = (jboolean)DrawFocusRect((HDC)arg0, lparg1);

-	if (arg1) setRECTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "DrawFocusRect\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DrawFrameControl

-JNIEXPORT jboolean JNICALL OS_NATIVE(DrawFrameControl)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2, jint arg3)

-{

-	RECT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DrawFrameControl\n")

-	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);

-	rc = (jboolean)DrawFrameControl((HDC)arg0, lparg1, arg2, arg3);

-	if (arg1) setRECTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "DrawFrameControl\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DrawIconEx

-JNIEXPORT jboolean JNICALL OS_NATIVE(DrawIconEx)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DrawIconEx\n")

-	rc = (jboolean)DrawIconEx((HDC)arg0, arg1, arg2, (HICON)arg3, arg4, arg5, arg6, (HBRUSH)arg7, arg8);

-	NATIVE_EXIT(env, that, "DrawIconEx\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DrawMenuBar

-JNIEXPORT jboolean JNICALL OS_NATIVE(DrawMenuBar)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DrawMenuBar\n")

-	rc = (jboolean)DrawMenuBar((HWND)arg0);

-	NATIVE_EXIT(env, that, "DrawMenuBar\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DrawStateA

-JNIEXPORT jboolean JNICALL OS_NATIVE(DrawStateA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8, jint arg9)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DrawStateA\n")

-	rc = (jboolean)DrawStateA((HDC)arg0, (HBRUSH)arg1, (DRAWSTATEPROC)arg2, (LPARAM)arg3, (WPARAM)arg4, arg5, arg6, arg7, arg8, arg9);

-	NATIVE_EXIT(env, that, "DrawStateA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DrawStateW

-JNIEXPORT jboolean JNICALL OS_NATIVE(DrawStateW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8, jint arg9)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "DrawStateW\n")

-	rc = (jboolean)DrawStateW((HDC)arg0, (HBRUSH)arg1, (DRAWSTATEPROC)arg2, (LPARAM)arg3, (WPARAM)arg4, arg5, arg6, arg7, arg8, arg9);

-	NATIVE_EXIT(env, that, "DrawStateW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DrawTextA

-JNIEXPORT jint JNICALL OS_NATIVE(DrawTextA)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2, jobject arg3, jint arg4)

-{

-	jbyte *lparg1=NULL;

-	RECT _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "DrawTextA\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	if (arg3) lparg3 = getRECTFields(env, arg3, &_arg3);

-	rc = (jint)DrawTextA((HDC)arg0, (LPSTR)lparg1, arg2, lparg3, arg4);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	if (arg3) setRECTFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "DrawTextA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_DrawTextW

-JNIEXPORT jint JNICALL OS_NATIVE(DrawTextW)

-	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2, jobject arg3, jint arg4)

-{

-	jchar *lparg1=NULL;

-	RECT _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "DrawTextW\n")

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	if (arg3) lparg3 = getRECTFields(env, arg3, &_arg3);

-	rc = (jint)DrawTextW((HDC)arg0, (LPWSTR)lparg1, arg2, lparg3, arg4);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	if (arg3) setRECTFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "DrawTextW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_Ellipse

-JNIEXPORT jboolean JNICALL OS_NATIVE(Ellipse)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "Ellipse\n")

-	rc = (jboolean)Ellipse((HDC)arg0, arg1, arg2, arg3, arg4);

-	NATIVE_EXIT(env, that, "Ellipse\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_EnableMenuItem

-JNIEXPORT jboolean JNICALL OS_NATIVE(EnableMenuItem)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "EnableMenuItem\n")

-	rc = (jboolean)EnableMenuItem((HMENU)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "EnableMenuItem\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_EnableScrollBar

-JNIEXPORT jboolean JNICALL OS_NATIVE(EnableScrollBar)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "EnableScrollBar\n")

-	rc = (jboolean)EnableScrollBar((HWND)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "EnableScrollBar\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_EnableWindow

-JNIEXPORT jboolean JNICALL OS_NATIVE(EnableWindow)

-	(JNIEnv *env, jclass that, jint arg0, jboolean arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "EnableWindow\n")

-	rc = (jboolean)EnableWindow((HWND)arg0, arg1);

-	NATIVE_EXIT(env, that, "EnableWindow\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_EndDeferWindowPos

-JNIEXPORT jboolean JNICALL OS_NATIVE(EndDeferWindowPos)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "EndDeferWindowPos\n")

-	rc = (jboolean)EndDeferWindowPos((HDWP)arg0);

-	NATIVE_EXIT(env, that, "EndDeferWindowPos\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_EndDoc

-JNIEXPORT jint JNICALL OS_NATIVE(EndDoc)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "EndDoc\n")

-	rc = (jint)EndDoc((HDC)arg0);

-	NATIVE_EXIT(env, that, "EndDoc\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_EndPage

-JNIEXPORT jint JNICALL OS_NATIVE(EndPage)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "EndPage\n")

-	rc = (jint)EndPage((HDC)arg0);

-	NATIVE_EXIT(env, that, "EndPage\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_EndPaint

-JNIEXPORT jint JNICALL OS_NATIVE(EndPaint)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	PAINTSTRUCT _arg1, *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "EndPaint\n")

-	if (arg1) lparg1 = getPAINTSTRUCTFields(env, arg1, &_arg1);

-	rc = (jint)EndPaint((HWND)arg0, lparg1);

-	if (arg1) setPAINTSTRUCTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "EndPaint\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_EnumFontFamiliesA

-JNIEXPORT jint JNICALL OS_NATIVE(EnumFontFamiliesA)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2, jint arg3)

-{

-	jbyte *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "EnumFontFamiliesA\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	rc = (jint)EnumFontFamiliesA((HDC)arg0, (LPSTR)lparg1, (FONTENUMPROC)arg2, (LPARAM)arg3);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "EnumFontFamiliesA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_EnumFontFamiliesW

-JNIEXPORT jint JNICALL OS_NATIVE(EnumFontFamiliesW)

-	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2, jint arg3)

-{

-	jchar *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "EnumFontFamiliesW\n")

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	rc = (jint)EnumFontFamiliesW((HDC)arg0, (LPCWSTR)lparg1, (FONTENUMPROCW)arg2, (LPARAM)arg3);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "EnumFontFamiliesW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_EnumSystemLocalesA

-JNIEXPORT jboolean JNICALL OS_NATIVE(EnumSystemLocalesA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "EnumSystemLocalesA\n")

-	rc = (jboolean)EnumSystemLocalesA((LOCALE_ENUMPROCA)arg0, arg1);

-	NATIVE_EXIT(env, that, "EnumSystemLocalesA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_EnumSystemLocalesW

-JNIEXPORT jboolean JNICALL OS_NATIVE(EnumSystemLocalesW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "EnumSystemLocalesW\n")

-	rc = (jboolean)EnumSystemLocalesW((LOCALE_ENUMPROCW)arg0, arg1);

-	NATIVE_EXIT(env, that, "EnumSystemLocalesW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_EqualRect

-JNIEXPORT jboolean JNICALL OS_NATIVE(EqualRect)

-	(JNIEnv *env, jclass that, jobject arg0, jobject arg1)

-{

-	RECT _arg0, *lparg0=NULL;

-	RECT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "EqualRect\n")

-	if (arg0) lparg0 = getRECTFields(env, arg0, &_arg0);

-	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);

-	rc = (jboolean)EqualRect((CONST RECT *)lparg0, (CONST RECT *)lparg1);

-	if (arg0) setRECTFields(env, arg0, lparg0);

-	if (arg1) setRECTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "EqualRect\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_EqualRgn

-JNIEXPORT jboolean JNICALL OS_NATIVE(EqualRgn)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "EqualRgn\n")

-	rc = (jboolean)EqualRgn((HRGN)arg0, (HRGN)arg1);

-	NATIVE_EXIT(env, that, "EqualRgn\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ExpandEnvironmentStringsA

-JNIEXPORT jint JNICALL OS_NATIVE(ExpandEnvironmentStringsA)

-	(JNIEnv *env, jclass that, jbyteArray arg0, jbyteArray arg1, jint arg2)

-{

-	jbyte *lparg0=NULL;

-	jbyte *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "ExpandEnvironmentStringsA\n")

-	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	rc = (jint)ExpandEnvironmentStringsA(lparg0, lparg1, arg2);

-	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "ExpandEnvironmentStringsA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ExpandEnvironmentStringsW

-JNIEXPORT jint JNICALL OS_NATIVE(ExpandEnvironmentStringsW)

-	(JNIEnv *env, jclass that, jcharArray arg0, jcharArray arg1, jint arg2)

-{

-	jchar *lparg0=NULL;

-	jchar *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "ExpandEnvironmentStringsW\n")

-	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	rc = (jint)ExpandEnvironmentStringsW(lparg0, lparg1, arg2);

-	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "ExpandEnvironmentStringsW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ExtTextOutA

-JNIEXPORT jboolean JNICALL OS_NATIVE(ExtTextOutA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jobject arg4, jbyteArray arg5, jint arg6, jintArray arg7)

-{

-	RECT _arg4, *lparg4=NULL;

-	jbyte *lparg5=NULL;

-	jint *lparg7=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ExtTextOutA\n")

-	if (arg4) lparg4 = getRECTFields(env, arg4, &_arg4);

-	if (arg5) lparg5 = (*env)->GetByteArrayElements(env, arg5, NULL);

-	if (arg7) lparg7 = (*env)->GetIntArrayElements(env, arg7, NULL);

-	rc = (jboolean)ExtTextOutA((HDC)arg0, arg1, arg2, arg3, lparg4, (LPSTR)lparg5, arg6, (CONST INT *)lparg7);

-	if (arg4) setRECTFields(env, arg4, lparg4);

-	if (arg5) (*env)->ReleaseByteArrayElements(env, arg5, lparg5, 0);

-	if (arg7) (*env)->ReleaseIntArrayElements(env, arg7, lparg7, 0);

-	NATIVE_EXIT(env, that, "ExtTextOutA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ExtTextOutW

-JNIEXPORT jboolean JNICALL OS_NATIVE(ExtTextOutW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jobject arg4, jcharArray arg5, jint arg6, jintArray arg7)

-{

-	RECT _arg4, *lparg4=NULL;

-	jchar *lparg5=NULL;

-	jint *lparg7=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ExtTextOutW\n")

-	if (arg4) lparg4 = getRECTFields(env, arg4, &_arg4);

-	if (arg5) lparg5 = (*env)->GetCharArrayElements(env, arg5, NULL);

-	if (arg7) lparg7 = (*env)->GetIntArrayElements(env, arg7, NULL);

-	rc = (jboolean)ExtTextOutW((HDC)arg0, arg1, arg2, arg3, lparg4, (LPWSTR)lparg5, arg6, (CONST INT *)lparg7);

-	if (arg4) setRECTFields(env, arg4, lparg4);

-	if (arg5) (*env)->ReleaseCharArrayElements(env, arg5, lparg5, 0);

-	if (arg7) (*env)->ReleaseIntArrayElements(env, arg7, lparg7, 0);

-	NATIVE_EXIT(env, that, "ExtTextOutW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ExtractIconExA

-JNIEXPORT jint JNICALL OS_NATIVE(ExtractIconExA)

-	(JNIEnv *env, jclass that, jbyteArray arg0, jint arg1, jintArray arg2, jintArray arg3, jint arg4)

-{

-	jbyte *lparg0=NULL;

-	jint *lparg2=NULL;

-	jint *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "ExtractIconExA\n")

-	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);

-	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);

-	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);

-	rc = (jint)ExtractIconExA((LPSTR)lparg0, arg1, (HICON FAR *)lparg2, (HICON FAR *)lparg3, arg4);

-	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);

-	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);

-	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "ExtractIconExA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ExtractIconExW

-JNIEXPORT jint JNICALL OS_NATIVE(ExtractIconExW)

-	(JNIEnv *env, jclass that, jcharArray arg0, jint arg1, jintArray arg2, jintArray arg3, jint arg4)

-{

-	jchar *lparg0=NULL;

-	jint *lparg2=NULL;

-	jint *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "ExtractIconExW\n")

-	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);

-	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);

-	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);

-	rc = (jint)ExtractIconExW((LPWSTR)lparg0, arg1, (HICON FAR *)lparg2, (HICON FAR *)lparg3, arg4);

-	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);

-	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);

-	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "ExtractIconExW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_FillRect

-JNIEXPORT jint JNICALL OS_NATIVE(FillRect)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)

-{

-	RECT _arg1, *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "FillRect\n")

-	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);

-	rc = (jint)FillRect((HDC)arg0, lparg1, (HBRUSH)arg2);

-	if (arg1) setRECTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "FillRect\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_FindWindowA

-JNIEXPORT jint JNICALL OS_NATIVE(FindWindowA)

-	(JNIEnv *env, jclass that, jbyteArray arg0, jbyteArray arg1)

-{

-	jbyte *lparg0=NULL;

-	jbyte *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "FindWindowA\n")

-	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	rc = (jint)FindWindowA((LPSTR)lparg0, (LPSTR)lparg1);

-	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "FindWindowA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_FindWindowW

-JNIEXPORT jint JNICALL OS_NATIVE(FindWindowW)

-	(JNIEnv *env, jclass that, jcharArray arg0, jcharArray arg1)

-{

-	jchar *lparg0=NULL;

-	jchar *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "FindWindowW\n")

-	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	rc = (jint)FindWindowW((LPWSTR)lparg0, (LPWSTR)lparg1);

-	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "FindWindowW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_FreeLibrary

-JNIEXPORT jboolean JNICALL OS_NATIVE(FreeLibrary)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "FreeLibrary\n")

-	rc = (jboolean)FreeLibrary((HMODULE)arg0);

-	NATIVE_EXIT(env, that, "FreeLibrary\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetACP

-JNIEXPORT jint JNICALL OS_NATIVE(GetACP)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetACP\n")

-	rc = (jint)GetACP();

-	NATIVE_EXIT(env, that, "GetACP\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetActiveWindow

-JNIEXPORT jint JNICALL OS_NATIVE(GetActiveWindow)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetActiveWindow\n")

-	rc = (jint)GetActiveWindow();

-	NATIVE_EXIT(env, that, "GetActiveWindow\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetBkColor

-JNIEXPORT jint JNICALL OS_NATIVE(GetBkColor)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetBkColor\n")

-	rc = (jint)GetBkColor((HDC)arg0);

-	NATIVE_EXIT(env, that, "GetBkColor\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetCapture

-JNIEXPORT jint JNICALL OS_NATIVE(GetCapture)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetCapture\n")

-	rc = (jint)GetCapture();

-	NATIVE_EXIT(env, that, "GetCapture\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetCaretPos

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetCaretPos)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	POINT _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetCaretPos\n")

-	if (arg0) lparg0 = getPOINTFields(env, arg0, &_arg0);

-	rc = (jboolean)GetCaretPos(lparg0);

-	if (arg0) setPOINTFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "GetCaretPos\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetCharABCWidthsA

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetCharABCWidthsA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jintArray arg3)

-{

-	jint *lparg3=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetCharABCWidthsA\n")

-	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);

-	rc = (jboolean)GetCharABCWidthsA((HDC)arg0, arg1, arg2, (LPABC)lparg3);

-	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "GetCharABCWidthsA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetCharABCWidthsW

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetCharABCWidthsW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jintArray arg3)

-{

-	jint *lparg3=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetCharABCWidthsW\n")

-	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);

-	rc = (jboolean)GetCharABCWidthsW((HDC)arg0, arg1, arg2, (LPABC)lparg3);

-	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "GetCharABCWidthsW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetCharWidthA

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetCharWidthA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jintArray arg3)

-{

-	jint *lparg3=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetCharWidthA\n")

-	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);

-	rc = (jboolean)GetCharWidthA((HDC)arg0, arg1, arg2, (LPINT)lparg3);

-	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "GetCharWidthA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetCharWidthW

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetCharWidthW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jintArray arg3)

-{

-	jint *lparg3=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetCharWidthW\n")

-	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);

-	rc = (jboolean)GetCharWidthW((HDC)arg0, arg1, arg2, (LPINT)lparg3);

-	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "GetCharWidthW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetCharacterPlacementA

-JNIEXPORT jint JNICALL OS_NATIVE(GetCharacterPlacementA)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2, jint arg3, jobject arg4, jint arg5)

-{

-	jbyte *lparg1=NULL;

-	GCP_RESULTS _arg4, *lparg4=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetCharacterPlacementA\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	if (arg4) lparg4 = getGCP_RESULTSFields(env, arg4, &_arg4);

-	rc = (jint)GetCharacterPlacementA((HDC)arg0, (LPSTR)lparg1, arg2, arg3, lparg4, arg5);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	if (arg4) setGCP_RESULTSFields(env, arg4, lparg4);

-	NATIVE_EXIT(env, that, "GetCharacterPlacementA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetCharacterPlacementW

-JNIEXPORT jint JNICALL OS_NATIVE(GetCharacterPlacementW)

-	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2, jint arg3, jobject arg4, jint arg5)

-{

-	jchar *lparg1=NULL;

-	GCP_RESULTS _arg4, *lparg4=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetCharacterPlacementW\n")

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	if (arg4) lparg4 = getGCP_RESULTSFields(env, arg4, &_arg4);

-	rc = (jint)GetCharacterPlacementW((HDC)arg0, (LPWSTR)lparg1, arg2, arg3, (LPGCP_RESULTSW)lparg4, arg5);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	if (arg4) setGCP_RESULTSFields(env, arg4, lparg4);

-	NATIVE_EXIT(env, that, "GetCharacterPlacementW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetClassInfoA

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetClassInfoA)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jobject arg2)

-{

-	jbyte *lparg1=NULL;

-	WNDCLASS _arg2, *lparg2=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetClassInfoA\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	if (arg2) lparg2 = getWNDCLASSFields(env, arg2, &_arg2);

-	rc = (jboolean)GetClassInfoA((HINSTANCE)arg0, (LPSTR)lparg1, lparg2);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	if (arg2) setWNDCLASSFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "GetClassInfoA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetClassInfoW

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetClassInfoW)

-	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jobject arg2)

-{

-	jchar *lparg1=NULL;

-	WNDCLASS _arg2, *lparg2=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetClassInfoW\n")

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	if (arg2) lparg2 = getWNDCLASSFields(env, arg2, &_arg2);

-	rc = (jboolean)GetClassInfoW((HINSTANCE)arg0, (LPWSTR)lparg1, (LPWNDCLASSW)lparg2);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	if (arg2) setWNDCLASSFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "GetClassInfoW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetClientRect

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetClientRect)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	RECT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetClientRect\n")

-	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);

-	rc = (jboolean)GetClientRect((HWND)arg0, lparg1);

-	if (arg1) setRECTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "GetClientRect\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetClipBox

-JNIEXPORT jint JNICALL OS_NATIVE(GetClipBox)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	RECT _arg1, *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetClipBox\n")

-	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);

-	rc = (jint)GetClipBox((HDC)arg0, lparg1);

-	if (arg1) setRECTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "GetClipBox\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetClipRgn

-JNIEXPORT jint JNICALL OS_NATIVE(GetClipRgn)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetClipRgn\n")

-	rc = (jint)GetClipRgn((HDC)arg0, (HRGN)arg1);

-	NATIVE_EXIT(env, that, "GetClipRgn\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetClipboardData

-JNIEXPORT jint JNICALL OS_NATIVE(GetClipboardData)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetClipboardData\n")

-	rc = (jint)GetClipboardData(arg0);

-	NATIVE_EXIT(env, that, "GetClipboardData\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetClipboardFormatNameA

-JNIEXPORT jint JNICALL OS_NATIVE(GetClipboardFormatNameA)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2)

-{

-	jbyte *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetClipboardFormatNameA\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	rc = (jint)GetClipboardFormatNameA(arg0, lparg1, arg2);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "GetClipboardFormatNameA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetClipboardFormatNameW

-JNIEXPORT jint JNICALL OS_NATIVE(GetClipboardFormatNameW)

-	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2)

-{

-	jchar *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetClipboardFormatNameW\n")

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	rc = (jint)GetClipboardFormatNameW(arg0, (LPWSTR)lparg1, arg2);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "GetClipboardFormatNameW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetCurrentObject

-JNIEXPORT jint JNICALL OS_NATIVE(GetCurrentObject)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetCurrentObject\n")

-	rc = (jint)GetCurrentObject((HDC)arg0, arg1);

-	NATIVE_EXIT(env, that, "GetCurrentObject\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetCurrentProcessId

-JNIEXPORT jint JNICALL OS_NATIVE(GetCurrentProcessId)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetCurrentProcessId\n")

-	rc = (jint)GetCurrentProcessId();

-	NATIVE_EXIT(env, that, "GetCurrentProcessId\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetCurrentThreadId

-JNIEXPORT jint JNICALL OS_NATIVE(GetCurrentThreadId)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetCurrentThreadId\n")

-	rc = (jint)GetCurrentThreadId();

-	NATIVE_EXIT(env, that, "GetCurrentThreadId\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetCursor

-JNIEXPORT jint JNICALL OS_NATIVE(GetCursor)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetCursor\n")

-	rc = (jint)GetCursor();

-	NATIVE_EXIT(env, that, "GetCursor\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetCursorPos

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetCursorPos)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	POINT _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetCursorPos\n")

-	if (arg0) lparg0 = getPOINTFields(env, arg0, &_arg0);

-	rc = (jboolean)GetCursorPos(lparg0);

-	if (arg0) setPOINTFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "GetCursorPos\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetDC

-JNIEXPORT jint JNICALL OS_NATIVE(GetDC)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetDC\n")

-	rc = (jint)GetDC((HWND)arg0);

-	NATIVE_EXIT(env, that, "GetDC\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetDCEx

-JNIEXPORT jint JNICALL OS_NATIVE(GetDCEx)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetDCEx\n")

-	rc = (jint)GetDCEx((HWND)arg0, (HRGN)arg1, arg2);

-	NATIVE_EXIT(env, that, "GetDCEx\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetDIBColorTable

-JNIEXPORT jint JNICALL OS_NATIVE(GetDIBColorTable)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jbyteArray arg3)

-{

-	jbyte *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetDIBColorTable\n")

-	if (arg3) lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL);

-	rc = (jint)GetDIBColorTable((HDC)arg0, arg1, arg2, (RGBQUAD *)lparg3);

-	if (arg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "GetDIBColorTable\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetDIBits

-JNIEXPORT jint JNICALL OS_NATIVE(GetDIBits)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jbyteArray arg5, jint arg6)

-{

-	jbyte *lparg5=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetDIBits\n")

-	if (arg5) lparg5 = (*env)->GetByteArrayElements(env, arg5, NULL);

-	rc = (jint)GetDIBits((HDC)arg0, (HBITMAP)arg1, arg2, arg3, (LPVOID)arg4, (LPBITMAPINFO)lparg5, arg6);

-	if (arg5) (*env)->ReleaseByteArrayElements(env, arg5, lparg5, 0);

-	NATIVE_EXIT(env, that, "GetDIBits\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetDesktopWindow

-JNIEXPORT jint JNICALL OS_NATIVE(GetDesktopWindow)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetDesktopWindow\n")

-	rc = (jint)GetDesktopWindow();

-	NATIVE_EXIT(env, that, "GetDesktopWindow\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetDeviceCaps

-JNIEXPORT jint JNICALL OS_NATIVE(GetDeviceCaps)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetDeviceCaps\n")

-	rc = (jint)GetDeviceCaps((HDC)arg0, arg1);

-	NATIVE_EXIT(env, that, "GetDeviceCaps\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetDialogBaseUnits

-JNIEXPORT jint JNICALL OS_NATIVE(GetDialogBaseUnits)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetDialogBaseUnits\n")

-	rc = (jint)GetDialogBaseUnits();

-	NATIVE_EXIT(env, that, "GetDialogBaseUnits\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetDlgItem

-JNIEXPORT jint JNICALL OS_NATIVE(GetDlgItem)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetDlgItem\n")

-	rc = (jint)GetDlgItem((HWND)arg0, arg1);

-	NATIVE_EXIT(env, that, "GetDlgItem\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetDoubleClickTime

-JNIEXPORT jint JNICALL OS_NATIVE(GetDoubleClickTime)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetDoubleClickTime\n")

-	rc = (jint)GetDoubleClickTime();

-	NATIVE_EXIT(env, that, "GetDoubleClickTime\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetFocus

-JNIEXPORT jint JNICALL OS_NATIVE(GetFocus)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetFocus\n")

-	rc = (jint)GetFocus();

-	NATIVE_EXIT(env, that, "GetFocus\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetFontLanguageInfo

-JNIEXPORT jint JNICALL OS_NATIVE(GetFontLanguageInfo)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetFontLanguageInfo\n")

-	rc = (jint)GetFontLanguageInfo((HDC)arg0);

-	NATIVE_EXIT(env, that, "GetFontLanguageInfo\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetIconInfo

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetIconInfo)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	ICONINFO _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetIconInfo\n")

-	if (arg1) lparg1 = getICONINFOFields(env, arg1, &_arg1);

-	rc = (jboolean)GetIconInfo((HICON)arg0, lparg1);

-	if (arg1) setICONINFOFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "GetIconInfo\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetKeyNameTextA

-JNIEXPORT jint JNICALL OS_NATIVE(GetKeyNameTextA)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2)

-{

-	jbyte *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetKeyNameTextA\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	rc = (jint)GetKeyNameTextA(arg0, (LPSTR)lparg1, arg2);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "GetKeyNameTextA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetKeyNameTextW

-JNIEXPORT jint JNICALL OS_NATIVE(GetKeyNameTextW)

-	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2)

-{

-	jchar *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetKeyNameTextW\n")

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	rc = (jint)GetKeyNameTextW(arg0, (LPWSTR)lparg1, arg2);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "GetKeyNameTextW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetKeyState

-JNIEXPORT jshort JNICALL OS_NATIVE(GetKeyState)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jshort rc;

-	NATIVE_ENTER(env, that, "GetKeyState\n")

-	rc = (jshort)GetKeyState(arg0);

-	NATIVE_EXIT(env, that, "GetKeyState\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetKeyboardLayout

-JNIEXPORT jint JNICALL OS_NATIVE(GetKeyboardLayout)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetKeyboardLayout\n")

-	rc = (jint)GetKeyboardLayout(arg0);

-	NATIVE_EXIT(env, that, "GetKeyboardLayout\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetKeyboardLayoutList

-JNIEXPORT jint JNICALL OS_NATIVE(GetKeyboardLayoutList)

-	(JNIEnv *env, jclass that, jint arg0, jintArray arg1)

-{

-	jint *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetKeyboardLayoutList\n")

-	if (arg1) lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL);

-	rc = (jint)GetKeyboardLayoutList(arg0, (HKL FAR *)lparg1);

-	if (arg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "GetKeyboardLayoutList\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetKeyboardState

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetKeyboardState)

-	(JNIEnv *env, jclass that, jbyteArray arg0)

-{

-	jbyte *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetKeyboardState\n")

-	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);

-	rc = (jboolean)GetKeyboardState((PBYTE)lparg0);

-	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "GetKeyboardState\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetLastActivePopup

-JNIEXPORT jint JNICALL OS_NATIVE(GetLastActivePopup)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetLastActivePopup\n")

-	rc = (jint)GetLastActivePopup((HWND)arg0);

-	NATIVE_EXIT(env, that, "GetLastActivePopup\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetLastError

-JNIEXPORT jint JNICALL OS_NATIVE(GetLastError)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetLastError\n")

-	rc = (jint)GetLastError();

-	NATIVE_EXIT(env, that, "GetLastError\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetLocaleInfoA

-JNIEXPORT jint JNICALL OS_NATIVE(GetLocaleInfoA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jbyteArray arg2, jint arg3)

-{

-	jbyte *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetLocaleInfoA\n")

-	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);

-	rc = (jint)GetLocaleInfoA(arg0, arg1, (LPSTR)lparg2, arg3);

-	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);

-	NATIVE_EXIT(env, that, "GetLocaleInfoA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetLocaleInfoW

-JNIEXPORT jint JNICALL OS_NATIVE(GetLocaleInfoW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jcharArray arg2, jint arg3)

-{

-	jchar *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetLocaleInfoW\n")

-	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);

-	rc = (jint)GetLocaleInfoW(arg0, arg1, (LPWSTR)lparg2, arg3);

-	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);

-	NATIVE_EXIT(env, that, "GetLocaleInfoW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetMenu

-JNIEXPORT jint JNICALL OS_NATIVE(GetMenu)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetMenu\n")

-	rc = (jint)GetMenu((HWND)arg0);

-	NATIVE_EXIT(env, that, "GetMenu\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetMenuDefaultItem

-JNIEXPORT jint JNICALL OS_NATIVE(GetMenuDefaultItem)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetMenuDefaultItem\n")

-	rc = (jint)GetMenuDefaultItem((HMENU)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "GetMenuDefaultItem\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetMenuItemCount

-JNIEXPORT jint JNICALL OS_NATIVE(GetMenuItemCount)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetMenuItemCount\n")

-	rc = (jint)GetMenuItemCount((HMENU)arg0);

-	NATIVE_EXIT(env, that, "GetMenuItemCount\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetMenuItemInfoA

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetMenuItemInfoA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2, jobject arg3)

-{

-	MENUITEMINFO _arg3, *lparg3=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetMenuItemInfoA\n")

-	if (arg3) lparg3 = getMENUITEMINFOFields(env, arg3, &_arg3);

-	rc = (jboolean)GetMenuItemInfoA((HMENU)arg0, arg1, arg2, lparg3);

-	if (arg3) setMENUITEMINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "GetMenuItemInfoA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetMenuItemInfoW

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetMenuItemInfoW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2, jobject arg3)

-{

-	MENUITEMINFO _arg3, *lparg3=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetMenuItemInfoW\n")

-	if (arg3) lparg3 = getMENUITEMINFOFields(env, arg3, &_arg3);

-	rc = (jboolean)GetMenuItemInfoW((HMENU)arg0, arg1, arg2, (LPMENUITEMINFOW)lparg3);

-	if (arg3) setMENUITEMINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "GetMenuItemInfoW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetMessageA

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetMessageA)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2, jint arg3)

-{

-	MSG _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetMessageA\n")

-	if (arg0) lparg0 = getMSGFields(env, arg0, &_arg0);

-	rc = (jboolean)GetMessageA(lparg0, (HWND)arg1, arg2, arg3);

-	if (arg0) setMSGFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "GetMessageA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetMessagePos

-JNIEXPORT jint JNICALL OS_NATIVE(GetMessagePos)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetMessagePos\n")

-	rc = (jint)GetMessagePos();

-	NATIVE_EXIT(env, that, "GetMessagePos\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetMessageTime

-JNIEXPORT jint JNICALL OS_NATIVE(GetMessageTime)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetMessageTime\n")

-	rc = (jint)GetMessageTime();

-	NATIVE_EXIT(env, that, "GetMessageTime\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetMessageW

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetMessageW)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2, jint arg3)

-{

-	MSG _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetMessageW\n")

-	if (arg0) lparg0 = getMSGFields(env, arg0, &_arg0);

-	rc = (jboolean)GetMessageW(lparg0, (HWND)arg1, arg2, arg3);

-	if (arg0) setMSGFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "GetMessageW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetModuleHandleA

-JNIEXPORT jint JNICALL OS_NATIVE(GetModuleHandleA)

-	(JNIEnv *env, jclass that, jbyteArray arg0)

-{

-	jbyte *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetModuleHandleA\n")

-	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);

-	rc = (jint)GetModuleHandleA((LPSTR)lparg0);

-	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "GetModuleHandleA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetModuleHandleW

-JNIEXPORT jint JNICALL OS_NATIVE(GetModuleHandleW)

-	(JNIEnv *env, jclass that, jcharArray arg0)

-{

-	jchar *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetModuleHandleW\n")

-	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);

-	rc = (jint)GetModuleHandleW((LPWSTR)lparg0);

-	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "GetModuleHandleW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetNearestPaletteIndex

-JNIEXPORT jint JNICALL OS_NATIVE(GetNearestPaletteIndex)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetNearestPaletteIndex\n")

-	rc = (jint)GetNearestPaletteIndex((HPALETTE)arg0, (COLORREF)arg1);

-	NATIVE_EXIT(env, that, "GetNearestPaletteIndex\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetObjectA__IILorg_eclipse_swt_internal_win32_BITMAP_2

-JNIEXPORT jint JNICALL OS_NATIVE(GetObjectA__IILorg_eclipse_swt_internal_win32_BITMAP_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)

-{

-	BITMAP _arg2, *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_BITMAP_2\n")

-	if (arg2) lparg2 = getBITMAPFields(env, arg2, &_arg2);

-	rc = (jint)GetObjectA((HGDIOBJ)arg0, arg1, lparg2);

-	if (arg2) setBITMAPFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_BITMAP_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetObjectA__IILorg_eclipse_swt_internal_win32_DIBSECTION_2

-JNIEXPORT jint JNICALL OS_NATIVE(GetObjectA__IILorg_eclipse_swt_internal_win32_DIBSECTION_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)

-{

-	DIBSECTION _arg2, *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_DIBSECTION_2\n")

-	if (arg2) lparg2 = getDIBSECTIONFields(env, arg2, &_arg2);

-	rc = (jint)GetObjectA((HGDIOBJ)arg0, arg1, lparg2);

-	if (arg2) setDIBSECTIONFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_DIBSECTION_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetObjectA__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2

-JNIEXPORT jint JNICALL OS_NATIVE(GetObjectA__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)

-{

-	LOGBRUSH _arg2, *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2\n")

-	if (arg2) lparg2 = getLOGBRUSHFields(env, arg2, &_arg2);

-	rc = (jint)GetObjectA((HGDIOBJ)arg0, arg1, lparg2);

-	if (arg2) setLOGBRUSHFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetObjectA__IILorg_eclipse_swt_internal_win32_LOGFONTA_2

-JNIEXPORT jint JNICALL OS_NATIVE(GetObjectA__IILorg_eclipse_swt_internal_win32_LOGFONTA_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)

-{

-	LOGFONTA _arg2, *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_LOGFONTA_2\n")

-	if (arg2) lparg2 = getLOGFONTAFields(env, arg2, &_arg2);

-	rc = (jint)GetObjectA((HGDIOBJ)arg0, arg1, lparg2);

-	if (arg2) setLOGFONTAFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_LOGFONTA_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetObjectA__IILorg_eclipse_swt_internal_win32_LOGPEN_2

-JNIEXPORT jint JNICALL OS_NATIVE(GetObjectA__IILorg_eclipse_swt_internal_win32_LOGPEN_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)

-{

-	LOGPEN _arg2, *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_LOGPEN_2\n")

-	if (arg2) lparg2 = getLOGPENFields(env, arg2, &_arg2);

-	rc = (jint)GetObjectA((HGDIOBJ)arg0, arg1, lparg2);

-	if (arg2) setLOGPENFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_LOGPEN_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetObjectW__IILorg_eclipse_swt_internal_win32_BITMAP_2

-JNIEXPORT jint JNICALL OS_NATIVE(GetObjectW__IILorg_eclipse_swt_internal_win32_BITMAP_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)

-{

-	BITMAP _arg2, *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_BITMAP_2\n")

-	if (arg2) lparg2 = getBITMAPFields(env, arg2, &_arg2);

-	rc = (jint)GetObjectW((HGDIOBJ)arg0, arg1, lparg2);

-	if (arg2) setBITMAPFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_BITMAP_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetObjectW__IILorg_eclipse_swt_internal_win32_DIBSECTION_2

-JNIEXPORT jint JNICALL OS_NATIVE(GetObjectW__IILorg_eclipse_swt_internal_win32_DIBSECTION_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)

-{

-	DIBSECTION _arg2, *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_DIBSECTION_2\n")

-	if (arg2) lparg2 = getDIBSECTIONFields(env, arg2, &_arg2);

-	rc = (jint)GetObjectW((HGDIOBJ)arg0, arg1, lparg2);

-	if (arg2) setDIBSECTIONFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_DIBSECTION_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetObjectW__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2

-JNIEXPORT jint JNICALL OS_NATIVE(GetObjectW__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)

-{

-	LOGBRUSH _arg2, *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2\n")

-	if (arg2) lparg2 = getLOGBRUSHFields(env, arg2, &_arg2);

-	rc = (jint)GetObjectW((HGDIOBJ)arg0, arg1, lparg2);

-	if (arg2) setLOGBRUSHFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetObjectW__IILorg_eclipse_swt_internal_win32_LOGFONTW_2

-JNIEXPORT jint JNICALL OS_NATIVE(GetObjectW__IILorg_eclipse_swt_internal_win32_LOGFONTW_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)

-{

-	LOGFONTW _arg2, *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_LOGFONTW_2\n")

-	if (arg2) lparg2 = getLOGFONTWFields(env, arg2, &_arg2);

-	rc = (jint)GetObjectW((HGDIOBJ)arg0, arg1, lparg2);

-	if (arg2) setLOGFONTWFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_LOGFONTW_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetObjectW__IILorg_eclipse_swt_internal_win32_LOGPEN_2

-JNIEXPORT jint JNICALL OS_NATIVE(GetObjectW__IILorg_eclipse_swt_internal_win32_LOGPEN_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)

-{

-	LOGPEN _arg2, *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_LOGPEN_2\n")

-	if (arg2) lparg2 = getLOGPENFields(env, arg2, &_arg2);

-	rc = (jint)GetObjectW((HGDIOBJ)arg0, arg1, lparg2);

-	if (arg2) setLOGPENFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_LOGPEN_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetOpenFileNameA

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetOpenFileNameA)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	OPENFILENAME _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetOpenFileNameA\n")

-	if (arg0) lparg0 = getOPENFILENAMEFields(env, arg0, &_arg0);

-	rc = (jboolean)GetOpenFileNameA(lparg0);

-	if (arg0) setOPENFILENAMEFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "GetOpenFileNameA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetOpenFileNameW

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetOpenFileNameW)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	OPENFILENAME _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetOpenFileNameW\n")

-	if (arg0) lparg0 = getOPENFILENAMEFields(env, arg0, &_arg0);

-	rc = (jboolean)GetOpenFileNameW((LPOPENFILENAMEW)lparg0);

-	if (arg0) setOPENFILENAMEFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "GetOpenFileNameW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetPaletteEntries

-JNIEXPORT jint JNICALL OS_NATIVE(GetPaletteEntries)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jbyteArray arg3)

-{

-	jbyte *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetPaletteEntries\n")

-	if (arg3) lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL);

-	rc = (jint)GetPaletteEntries((HPALETTE)arg0, arg1, arg2, (LPPALETTEENTRY)lparg3);

-	if (arg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "GetPaletteEntries\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetParent

-JNIEXPORT jint JNICALL OS_NATIVE(GetParent)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetParent\n")

-	rc = (jint)GetParent((HWND)arg0);

-	NATIVE_EXIT(env, that, "GetParent\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetPixel

-JNIEXPORT jint JNICALL OS_NATIVE(GetPixel)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetPixel\n")

-	rc = (jint)GetPixel((HDC)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "GetPixel\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetProcAddress

-JNIEXPORT jint JNICALL OS_NATIVE(GetProcAddress)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1)

-{

-	jbyte *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetProcAddress\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	rc = (jint)GetProcAddress((HMODULE)arg0, (LPCTSTR)lparg1);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "GetProcAddress\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetProcessHeap

-JNIEXPORT jint JNICALL OS_NATIVE(GetProcessHeap)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetProcessHeap\n")

-	rc = (jint)GetProcessHeap();

-	NATIVE_EXIT(env, that, "GetProcessHeap\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetProfileStringA

-JNIEXPORT jint JNICALL OS_NATIVE(GetProfileStringA)

-	(JNIEnv *env, jclass that, jbyteArray arg0, jbyteArray arg1, jbyteArray arg2, jbyteArray arg3, jint arg4)

-{

-	jbyte *lparg0=NULL;

-	jbyte *lparg1=NULL;

-	jbyte *lparg2=NULL;

-	jbyte *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetProfileStringA\n")

-	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);

-	if (arg3) lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL);

-	rc = (jint)GetProfileStringA((LPSTR)lparg0, (LPSTR)lparg1, (LPSTR)lparg2, (LPSTR)lparg3, arg4);

-	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);

-	if (arg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "GetProfileStringA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetProfileStringW

-JNIEXPORT jint JNICALL OS_NATIVE(GetProfileStringW)

-	(JNIEnv *env, jclass that, jcharArray arg0, jcharArray arg1, jcharArray arg2, jcharArray arg3, jint arg4)

-{

-	jchar *lparg0=NULL;

-	jchar *lparg1=NULL;

-	jchar *lparg2=NULL;

-	jchar *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetProfileStringW\n")

-	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);

-	if (arg3) lparg3 = (*env)->GetCharArrayElements(env, arg3, NULL);

-	rc = (jint)GetProfileStringW((LPWSTR)lparg0, (LPWSTR)lparg1, (LPWSTR)lparg2, (LPWSTR)lparg3, arg4);

-	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);

-	if (arg3) (*env)->ReleaseCharArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "GetProfileStringW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetROP2

-JNIEXPORT jint JNICALL OS_NATIVE(GetROP2)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetROP2\n")

-	rc = (jint)GetROP2((HDC)arg0);

-	NATIVE_EXIT(env, that, "GetROP2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetRegionData

-JNIEXPORT jint JNICALL OS_NATIVE(GetRegionData)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2)

-{

-	jint *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetRegionData\n")

-	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);

-	rc = (jint)GetRegionData((HRGN)arg0, arg1, (RGNDATA *)lparg2);

-	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);

-	NATIVE_EXIT(env, that, "GetRegionData\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetRgnBox

-JNIEXPORT jint JNICALL OS_NATIVE(GetRgnBox)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	RECT _arg1, *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetRgnBox\n")

-	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);

-	rc = (jint)GetRgnBox((HRGN)arg0, lparg1);

-	if (arg1) setRECTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "GetRgnBox\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetSaveFileNameA

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetSaveFileNameA)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	OPENFILENAME _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetSaveFileNameA\n")

-	if (arg0) lparg0 = getOPENFILENAMEFields(env, arg0, &_arg0);

-	rc = (jboolean)GetSaveFileNameA(lparg0);

-	if (arg0) setOPENFILENAMEFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "GetSaveFileNameA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetSaveFileNameW

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetSaveFileNameW)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	OPENFILENAME _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetSaveFileNameW\n")

-	if (arg0) lparg0 = getOPENFILENAMEFields(env, arg0, &_arg0);

-	rc = (jboolean)GetSaveFileNameW((LPOPENFILENAMEW)lparg0);

-	if (arg0) setOPENFILENAMEFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "GetSaveFileNameW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetScrollInfo

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetScrollInfo)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)

-{

-	SCROLLINFO _arg2, *lparg2=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetScrollInfo\n")

-	if (arg2) lparg2 = getSCROLLINFOFields(env, arg2, &_arg2);

-	rc = (jboolean)GetScrollInfo((HWND)arg0, arg1, lparg2);

-	if (arg2) setSCROLLINFOFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "GetScrollInfo\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetStockObject

-JNIEXPORT jint JNICALL OS_NATIVE(GetStockObject)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetStockObject\n")

-	rc = (jint)GetStockObject(arg0);

-	NATIVE_EXIT(env, that, "GetStockObject\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetSysColor

-JNIEXPORT jint JNICALL OS_NATIVE(GetSysColor)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetSysColor\n")

-	rc = (jint)GetSysColor(arg0);

-	NATIVE_EXIT(env, that, "GetSysColor\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetSysColorBrush

-JNIEXPORT jint JNICALL OS_NATIVE(GetSysColorBrush)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetSysColorBrush\n")

-	rc = (jint)GetSysColorBrush(arg0);

-	NATIVE_EXIT(env, that, "GetSysColorBrush\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetSystemMenu

-JNIEXPORT jint JNICALL OS_NATIVE(GetSystemMenu)

-	(JNIEnv *env, jclass that, jint arg0, jboolean arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetSystemMenu\n")

-	rc = (jint)GetSystemMenu((HWND)arg0, arg1);

-	NATIVE_EXIT(env, that, "GetSystemMenu\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetSystemMetrics

-JNIEXPORT jint JNICALL OS_NATIVE(GetSystemMetrics)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetSystemMetrics\n")

-	rc = (jint)GetSystemMetrics(arg0);

-	NATIVE_EXIT(env, that, "GetSystemMetrics\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetSystemPaletteEntries

-JNIEXPORT jint JNICALL OS_NATIVE(GetSystemPaletteEntries)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jbyteArray arg3)

-{

-	jbyte *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetSystemPaletteEntries\n")

-	if (arg3) lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL);

-	rc = (jint)GetSystemPaletteEntries((HDC)arg0, (UINT)arg1, (UINT)arg2, (LPPALETTEENTRY)lparg3);

-	if (arg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "GetSystemPaletteEntries\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetTextCharset

-JNIEXPORT jint JNICALL OS_NATIVE(GetTextCharset)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetTextCharset\n")

-	rc = (jint)GetTextCharset((HDC)arg0);

-	NATIVE_EXIT(env, that, "GetTextCharset\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetTextColor

-JNIEXPORT jint JNICALL OS_NATIVE(GetTextColor)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetTextColor\n")

-	rc = (jint)GetTextColor((HDC)arg0);

-	NATIVE_EXIT(env, that, "GetTextColor\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetTextExtentPoint32A

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetTextExtentPoint32A)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2, jobject arg3)

-{

-	jbyte *lparg1=NULL;

-	SIZE _arg3, *lparg3=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetTextExtentPoint32A\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	if (arg3) lparg3 = getSIZEFields(env, arg3, &_arg3);

-	rc = (jboolean)GetTextExtentPoint32A((HDC)arg0, (LPSTR)lparg1, arg2, lparg3);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	if (arg3) setSIZEFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "GetTextExtentPoint32A\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetTextExtentPoint32W

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetTextExtentPoint32W)

-	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2, jobject arg3)

-{

-	jchar *lparg1=NULL;

-	SIZE _arg3, *lparg3=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetTextExtentPoint32W\n")

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	if (arg3) lparg3 = getSIZEFields(env, arg3, &_arg3);

-	rc = (jboolean)GetTextExtentPoint32W((HDC)arg0, (LPWSTR)lparg1, arg2, lparg3);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	if (arg3) setSIZEFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "GetTextExtentPoint32W\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetTextMetricsA

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetTextMetricsA)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	TEXTMETRICA _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetTextMetricsA\n")

-	if (arg1) lparg1 = getTEXTMETRICAFields(env, arg1, &_arg1);

-	rc = (jboolean)GetTextMetricsA((HDC)arg0, lparg1);

-	if (arg1) setTEXTMETRICAFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "GetTextMetricsA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetTextMetricsW

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetTextMetricsW)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	TEXTMETRICW _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetTextMetricsW\n")

-	if (arg1) lparg1 = getTEXTMETRICWFields(env, arg1, &_arg1);

-	rc = (jboolean)GetTextMetricsW((HDC)arg0, lparg1);

-	if (arg1) setTEXTMETRICWFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "GetTextMetricsW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetTickCount

-JNIEXPORT jint JNICALL OS_NATIVE(GetTickCount)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetTickCount\n")

-	rc = (jint)GetTickCount();

-	NATIVE_EXIT(env, that, "GetTickCount\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetUpdateRect

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetUpdateRect)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jboolean arg2)

-{

-	RECT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetUpdateRect\n")

-	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);

-	rc = (jboolean)GetUpdateRect((HWND)arg0, (LPRECT)lparg1, (BOOL)arg2);

-	if (arg1) setRECTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "GetUpdateRect\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetUpdateRgn

-JNIEXPORT jint JNICALL OS_NATIVE(GetUpdateRgn)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetUpdateRgn\n")

-	rc = (jint)GetUpdateRgn((HWND)arg0, (HRGN)arg1, arg2);

-	NATIVE_EXIT(env, that, "GetUpdateRgn\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetVersionExA

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetVersionExA)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	OSVERSIONINFOA _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetVersionExA\n")

-	if (arg0) lparg0 = getOSVERSIONINFOAFields(env, arg0, &_arg0);

-	rc = (jboolean)GetVersionExA(lparg0);

-	if (arg0) setOSVERSIONINFOAFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "GetVersionExA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetVersionExW

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetVersionExW)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	OSVERSIONINFOW _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetVersionExW\n")

-	if (arg0) lparg0 = getOSVERSIONINFOWFields(env, arg0, &_arg0);

-	rc = (jboolean)GetVersionExW(lparg0);

-	if (arg0) setOSVERSIONINFOWFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "GetVersionExW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetWindow

-JNIEXPORT jint JNICALL OS_NATIVE(GetWindow)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetWindow\n")

-	rc = (jint)GetWindow((HWND)arg0, arg1);

-	NATIVE_EXIT(env, that, "GetWindow\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetWindowLongA

-JNIEXPORT jint JNICALL OS_NATIVE(GetWindowLongA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetWindowLongA\n")

-	rc = (jint)GetWindowLongA((HWND)arg0, arg1);

-	NATIVE_EXIT(env, that, "GetWindowLongA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetWindowLongW

-JNIEXPORT jint JNICALL OS_NATIVE(GetWindowLongW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetWindowLongW\n")

-	rc = (jint)GetWindowLongW((HWND)arg0, arg1);

-	NATIVE_EXIT(env, that, "GetWindowLongW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetWindowPlacement

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetWindowPlacement)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	WINDOWPLACEMENT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetWindowPlacement\n")

-	if (arg1) lparg1 = getWINDOWPLACEMENTFields(env, arg1, &_arg1);

-	rc = (jboolean)GetWindowPlacement((HWND)arg0, lparg1);

-	if (arg1) setWINDOWPLACEMENTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "GetWindowPlacement\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetWindowRect

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetWindowRect)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	RECT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetWindowRect\n")

-	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);

-	rc = (jboolean)GetWindowRect((HWND)arg0, lparg1);

-	if (arg1) setRECTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "GetWindowRect\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetWindowTextA

-JNIEXPORT jint JNICALL OS_NATIVE(GetWindowTextA)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2)

-{

-	jbyte *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetWindowTextA\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	rc = (jint)GetWindowTextA((HWND)arg0, (LPSTR)lparg1, arg2);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "GetWindowTextA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetWindowTextLengthA

-JNIEXPORT jint JNICALL OS_NATIVE(GetWindowTextLengthA)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetWindowTextLengthA\n")

-	rc = (jint)GetWindowTextLengthA((HWND)arg0);

-	NATIVE_EXIT(env, that, "GetWindowTextLengthA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetWindowTextLengthW

-JNIEXPORT jint JNICALL OS_NATIVE(GetWindowTextLengthW)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetWindowTextLengthW\n")

-	rc = (jint)GetWindowTextLengthW((HWND)arg0);

-	NATIVE_EXIT(env, that, "GetWindowTextLengthW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetWindowTextW

-JNIEXPORT jint JNICALL OS_NATIVE(GetWindowTextW)

-	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2)

-{

-	jchar *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetWindowTextW\n")

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	rc = (jint)GetWindowTextW((HWND)arg0, (LPWSTR)lparg1, arg2);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "GetWindowTextW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetWindowThreadProcessId

-JNIEXPORT jint JNICALL OS_NATIVE(GetWindowThreadProcessId)

-	(JNIEnv *env, jclass that, jint arg0, jintArray arg1)

-{

-	jint *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "GetWindowThreadProcessId\n")

-	if (arg1) lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL);

-	rc = (jint)GetWindowThreadProcessId((HWND)arg0, (LPDWORD)lparg1);

-	if (arg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "GetWindowThreadProcessId\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GlobalAlloc

-JNIEXPORT jint JNICALL OS_NATIVE(GlobalAlloc)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GlobalAlloc\n")

-	rc = (jint)GlobalAlloc(arg0, arg1);

-	NATIVE_EXIT(env, that, "GlobalAlloc\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GlobalFree

-JNIEXPORT jint JNICALL OS_NATIVE(GlobalFree)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GlobalFree\n")

-	rc = (jint)GlobalFree((HANDLE)arg0);

-	NATIVE_EXIT(env, that, "GlobalFree\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GlobalLock

-JNIEXPORT jint JNICALL OS_NATIVE(GlobalLock)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GlobalLock\n")

-	rc = (jint)GlobalLock((HANDLE)arg0);

-	NATIVE_EXIT(env, that, "GlobalLock\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GlobalSize

-JNIEXPORT jint JNICALL OS_NATIVE(GlobalSize)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GlobalSize\n")

-	rc = (jint)GlobalSize((HANDLE)arg0);

-	NATIVE_EXIT(env, that, "GlobalSize\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GlobalUnlock

-JNIEXPORT jboolean JNICALL OS_NATIVE(GlobalUnlock)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GlobalUnlock\n")

-	rc = (jboolean)GlobalUnlock((HANDLE)arg0);

-	NATIVE_EXIT(env, that, "GlobalUnlock\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_HeapAlloc

-JNIEXPORT jint JNICALL OS_NATIVE(HeapAlloc)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "HeapAlloc\n")

-	rc = (jint)HeapAlloc((HANDLE)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "HeapAlloc\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_HeapFree

-JNIEXPORT jboolean JNICALL OS_NATIVE(HeapFree)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "HeapFree\n")

-	rc = (jboolean)HeapFree((HANDLE)arg0, arg1, (LPVOID)arg2);

-	NATIVE_EXIT(env, that, "HeapFree\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_HideCaret

-JNIEXPORT jboolean JNICALL OS_NATIVE(HideCaret)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "HideCaret\n")

-	rc = (jboolean)HideCaret((HWND)arg0);

-	NATIVE_EXIT(env, that, "HideCaret\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImageList_1Add

-JNIEXPORT jint JNICALL OS_NATIVE(ImageList_1Add)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "ImageList_1Add\n")

-	rc = (jint)ImageList_Add((HIMAGELIST)arg0, (HBITMAP)arg1, (HBITMAP)arg2);

-	NATIVE_EXIT(env, that, "ImageList_1Add\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImageList_1AddMasked

-JNIEXPORT jint JNICALL OS_NATIVE(ImageList_1AddMasked)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "ImageList_1AddMasked\n")

-	rc = (jint)ImageList_AddMasked((HIMAGELIST)arg0, (HBITMAP)arg1, (COLORREF)arg2);

-	NATIVE_EXIT(env, that, "ImageList_1AddMasked\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImageList_1Create

-JNIEXPORT jint JNICALL OS_NATIVE(ImageList_1Create)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "ImageList_1Create\n")

-	rc = (jint)ImageList_Create(arg0, arg1, arg2, arg3, arg4);

-	NATIVE_EXIT(env, that, "ImageList_1Create\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImageList_1Destroy

-JNIEXPORT jboolean JNICALL OS_NATIVE(ImageList_1Destroy)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ImageList_1Destroy\n")

-	rc = (jboolean)ImageList_Destroy((HIMAGELIST)arg0);

-	NATIVE_EXIT(env, that, "ImageList_1Destroy\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImageList_1GetIcon

-JNIEXPORT jint JNICALL OS_NATIVE(ImageList_1GetIcon)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "ImageList_1GetIcon\n")

-	rc = (jint)ImageList_GetIcon((HIMAGELIST)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "ImageList_1GetIcon\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImageList_1GetIconSize

-JNIEXPORT jboolean JNICALL OS_NATIVE(ImageList_1GetIconSize)

-	(JNIEnv *env, jclass that, jint arg0, jintArray arg1, jintArray arg2)

-{

-	jint *lparg1=NULL;

-	jint *lparg2=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ImageList_1GetIconSize\n")

-	if (arg1) lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL);

-	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);

-	rc = (jboolean)ImageList_GetIconSize((HIMAGELIST)arg0, lparg1, lparg2);

-	if (arg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);

-	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);

-	NATIVE_EXIT(env, that, "ImageList_1GetIconSize\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImageList_1GetImageCount

-JNIEXPORT jint JNICALL OS_NATIVE(ImageList_1GetImageCount)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "ImageList_1GetImageCount\n")

-	rc = (jint)ImageList_GetImageCount((HIMAGELIST)arg0);

-	NATIVE_EXIT(env, that, "ImageList_1GetImageCount\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImageList_1Remove

-JNIEXPORT jboolean JNICALL OS_NATIVE(ImageList_1Remove)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ImageList_1Remove\n")

-	rc = (jboolean)ImageList_Remove((HIMAGELIST)arg0, arg1);

-	NATIVE_EXIT(env, that, "ImageList_1Remove\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImageList_1Replace

-JNIEXPORT jboolean JNICALL OS_NATIVE(ImageList_1Replace)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ImageList_1Replace\n")

-	rc = (jboolean)ImageList_Replace((HIMAGELIST)arg0, arg1, (HBITMAP)arg2, (HBITMAP)arg3);

-	NATIVE_EXIT(env, that, "ImageList_1Replace\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImageList_1ReplaceIcon

-JNIEXPORT jint JNICALL OS_NATIVE(ImageList_1ReplaceIcon)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "ImageList_1ReplaceIcon\n")

-	rc = (jint)ImageList_ReplaceIcon((HIMAGELIST)arg0, arg1, (HICON)arg2);

-	NATIVE_EXIT(env, that, "ImageList_1ReplaceIcon\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImageList_1SetIconSize

-JNIEXPORT jboolean JNICALL OS_NATIVE(ImageList_1SetIconSize)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ImageList_1SetIconSize\n")

-	rc = (jboolean)ImageList_SetIconSize((HIMAGELIST)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "ImageList_1SetIconSize\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmAssociateContext

-JNIEXPORT jint JNICALL OS_NATIVE(ImmAssociateContext)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "ImmAssociateContext\n")

-	rc = (jint)ImmAssociateContext((HWND)arg0, (HIMC)arg1);

-	NATIVE_EXIT(env, that, "ImmAssociateContext\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmCreateContext

-JNIEXPORT jint JNICALL OS_NATIVE(ImmCreateContext)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "ImmCreateContext\n")

-	rc = (jint)ImmCreateContext();

-	NATIVE_EXIT(env, that, "ImmCreateContext\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmDestroyContext

-JNIEXPORT jboolean JNICALL OS_NATIVE(ImmDestroyContext)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ImmDestroyContext\n")

-	rc = (jboolean)ImmDestroyContext((HIMC)arg0);

-	NATIVE_EXIT(env, that, "ImmDestroyContext\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmGetCompositionFontA

-JNIEXPORT jboolean JNICALL OS_NATIVE(ImmGetCompositionFontA)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	LOGFONTA _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ImmGetCompositionFontA\n")

-	if (arg1) lparg1 = getLOGFONTAFields(env, arg1, &_arg1);

-	rc = (jboolean)ImmGetCompositionFontA((HIMC)arg0, lparg1);

-	if (arg1) setLOGFONTAFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "ImmGetCompositionFontA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmGetCompositionFontW

-JNIEXPORT jboolean JNICALL OS_NATIVE(ImmGetCompositionFontW)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	LOGFONTW _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ImmGetCompositionFontW\n")

-	if (arg1) lparg1 = getLOGFONTWFields(env, arg1, &_arg1);

-	rc = (jboolean)ImmGetCompositionFontW((HIMC)arg0, lparg1);

-	if (arg1) setLOGFONTWFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "ImmGetCompositionFontW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmGetCompositionStringA

-JNIEXPORT jint JNICALL OS_NATIVE(ImmGetCompositionStringA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jbyteArray arg2, jint arg3)

-{

-	jbyte *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "ImmGetCompositionStringA\n")

-	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);

-	rc = (jint)ImmGetCompositionStringA((HIMC)arg0, arg1, (LPSTR)lparg2, arg3);

-	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);

-	NATIVE_EXIT(env, that, "ImmGetCompositionStringA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmGetCompositionStringW

-JNIEXPORT jint JNICALL OS_NATIVE(ImmGetCompositionStringW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jcharArray arg2, jint arg3)

-{

-	jchar *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "ImmGetCompositionStringW\n")

-	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);

-	rc = (jint)ImmGetCompositionStringW((HIMC)arg0, arg1, (LPWSTR)lparg2, arg3);

-	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);

-	NATIVE_EXIT(env, that, "ImmGetCompositionStringW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmGetContext

-JNIEXPORT jint JNICALL OS_NATIVE(ImmGetContext)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "ImmGetContext\n")

-	rc = (jint)ImmGetContext((HWND)arg0);

-	NATIVE_EXIT(env, that, "ImmGetContext\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmGetConversionStatus

-JNIEXPORT jboolean JNICALL OS_NATIVE(ImmGetConversionStatus)

-	(JNIEnv *env, jclass that, jint arg0, jintArray arg1, jintArray arg2)

-{

-	jint *lparg1=NULL;

-	jint *lparg2=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ImmGetConversionStatus\n")

-	if (arg1) lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL);

-	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);

-	rc = (jboolean)ImmGetConversionStatus((HIMC)arg0, lparg1, lparg2);

-	if (arg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);

-	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);

-	NATIVE_EXIT(env, that, "ImmGetConversionStatus\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmGetDefaultIMEWnd

-JNIEXPORT jint JNICALL OS_NATIVE(ImmGetDefaultIMEWnd)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "ImmGetDefaultIMEWnd\n")

-	rc = (jint)ImmGetDefaultIMEWnd((HWND)arg0);

-	NATIVE_EXIT(env, that, "ImmGetDefaultIMEWnd\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmGetOpenStatus

-JNIEXPORT jboolean JNICALL OS_NATIVE(ImmGetOpenStatus)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ImmGetOpenStatus\n")

-	rc = (jboolean)ImmGetOpenStatus((HIMC)arg0);

-	NATIVE_EXIT(env, that, "ImmGetOpenStatus\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmReleaseContext

-JNIEXPORT jboolean JNICALL OS_NATIVE(ImmReleaseContext)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ImmReleaseContext\n")

-	rc = (jboolean)ImmReleaseContext((HWND)arg0, (HIMC)arg1);

-	NATIVE_EXIT(env, that, "ImmReleaseContext\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmSetCompositionFontA

-JNIEXPORT jboolean JNICALL OS_NATIVE(ImmSetCompositionFontA)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	LOGFONTA _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ImmSetCompositionFontA\n")

-	if (arg1) lparg1 = getLOGFONTAFields(env, arg1, &_arg1);

-	rc = (jboolean)ImmSetCompositionFontA((HIMC)arg0, lparg1);

-	if (arg1) setLOGFONTAFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "ImmSetCompositionFontA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmSetCompositionFontW

-JNIEXPORT jboolean JNICALL OS_NATIVE(ImmSetCompositionFontW)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	LOGFONTW _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ImmSetCompositionFontW\n")

-	if (arg1) lparg1 = getLOGFONTWFields(env, arg1, &_arg1);

-	rc = (jboolean)ImmSetCompositionFontW((HIMC)arg0, lparg1);

-	if (arg1) setLOGFONTWFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "ImmSetCompositionFontW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmSetCompositionWindow

-JNIEXPORT jboolean JNICALL OS_NATIVE(ImmSetCompositionWindow)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	COMPOSITIONFORM _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ImmSetCompositionWindow\n")

-	if (arg1) lparg1 = getCOMPOSITIONFORMFields(env, arg1, &_arg1);

-	rc = (jboolean)ImmSetCompositionWindow((HIMC)arg0, lparg1);

-	if (arg1) setCOMPOSITIONFORMFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "ImmSetCompositionWindow\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmSetConversionStatus

-JNIEXPORT jboolean JNICALL OS_NATIVE(ImmSetConversionStatus)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ImmSetConversionStatus\n")

-	rc = (jboolean)ImmSetConversionStatus((HIMC)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "ImmSetConversionStatus\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ImmSetOpenStatus

-JNIEXPORT jboolean JNICALL OS_NATIVE(ImmSetOpenStatus)

-	(JNIEnv *env, jclass that, jint arg0, jboolean arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ImmSetOpenStatus\n")

-	rc = (jboolean)ImmSetOpenStatus((HIMC)arg0, arg1);

-	NATIVE_EXIT(env, that, "ImmSetOpenStatus\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_InitCommonControls

-JNIEXPORT void JNICALL OS_NATIVE(InitCommonControls)

-	(JNIEnv *env, jclass that)

-{

-	NATIVE_ENTER(env, that, "InitCommonControls\n")

-	InitCommonControls();

-	NATIVE_EXIT(env, that, "InitCommonControls\n")

-}

-#endif

-

-#ifndef NO_InitCommonControlsEx

-JNIEXPORT jboolean JNICALL OS_NATIVE(InitCommonControlsEx)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	INITCOMMONCONTROLSEX _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "InitCommonControlsEx\n")

-	if (arg0) lparg0 = getINITCOMMONCONTROLSEXFields(env, arg0, &_arg0);

-	rc = (jboolean)InitCommonControlsEx(lparg0);

-	if (arg0) setINITCOMMONCONTROLSEXFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "InitCommonControlsEx\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_InsertMenuA

-JNIEXPORT jboolean JNICALL OS_NATIVE(InsertMenuA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jbyteArray arg4)

-{

-	jbyte *lparg4=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "InsertMenuA\n")

-	if (arg4) lparg4 = (*env)->GetByteArrayElements(env, arg4, NULL);

-	rc = (jboolean)InsertMenuA((HMENU)arg0, arg1, arg2, arg3, lparg4);

-	if (arg4) (*env)->ReleaseByteArrayElements(env, arg4, lparg4, 0);

-	NATIVE_EXIT(env, that, "InsertMenuA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_InsertMenuItemA

-JNIEXPORT jboolean JNICALL OS_NATIVE(InsertMenuItemA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2, jobject arg3)

-{

-	MENUITEMINFO _arg3, *lparg3=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "InsertMenuItemA\n")

-	if (arg3) lparg3 = getMENUITEMINFOFields(env, arg3, &_arg3);

-	rc = (jboolean)InsertMenuItemA((HMENU)arg0, arg1, arg2, lparg3);

-	if (arg3) setMENUITEMINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "InsertMenuItemA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_InsertMenuItemW

-JNIEXPORT jboolean JNICALL OS_NATIVE(InsertMenuItemW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2, jobject arg3)

-{

-	MENUITEMINFO _arg3, *lparg3=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "InsertMenuItemW\n")

-	if (arg3) lparg3 = getMENUITEMINFOFields(env, arg3, &_arg3);

-	rc = (jboolean)InsertMenuItemW((HMENU)arg0, arg1, arg2, (LPMENUITEMINFOW)lparg3);

-	if (arg3) setMENUITEMINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "InsertMenuItemW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_InsertMenuW

-JNIEXPORT jboolean JNICALL OS_NATIVE(InsertMenuW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jcharArray arg4)

-{

-	jchar *lparg4=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "InsertMenuW\n")

-	if (arg4) lparg4 = (*env)->GetCharArrayElements(env, arg4, NULL);

-	rc = (jboolean)InsertMenuW((HMENU)arg0, arg1, arg2, arg3, lparg4);

-	if (arg4) (*env)->ReleaseCharArrayElements(env, arg4, lparg4, 0);

-	NATIVE_EXIT(env, that, "InsertMenuW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_InvalidateRect

-JNIEXPORT jboolean JNICALL OS_NATIVE(InvalidateRect)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jboolean arg2)

-{

-	RECT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "InvalidateRect\n")

-	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);

-	rc = (jboolean)InvalidateRect((HWND)arg0, lparg1, arg2);

-	if (arg1) setRECTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "InvalidateRect\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_InvalidateRgn

-JNIEXPORT jboolean JNICALL OS_NATIVE(InvalidateRgn)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "InvalidateRgn\n")

-	rc = (jboolean)InvalidateRgn((HWND)arg0, (HRGN)arg1, arg2);

-	NATIVE_EXIT(env, that, "InvalidateRgn\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_IsDBCSLeadByte

-JNIEXPORT jboolean JNICALL OS_NATIVE(IsDBCSLeadByte)

-	(JNIEnv *env, jclass that, jbyte arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "IsDBCSLeadByte\n")

-	rc = (jboolean)IsDBCSLeadByte(arg0);

-	NATIVE_EXIT(env, that, "IsDBCSLeadByte\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_IsIconic

-JNIEXPORT jboolean JNICALL OS_NATIVE(IsIconic)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "IsIconic\n")

-	rc = (jboolean)IsIconic((HWND)arg0);

-	NATIVE_EXIT(env, that, "IsIconic\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_IsWindowEnabled

-JNIEXPORT jboolean JNICALL OS_NATIVE(IsWindowEnabled)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "IsWindowEnabled\n")

-	rc = (jboolean)IsWindowEnabled((HWND)arg0);

-	NATIVE_EXIT(env, that, "IsWindowEnabled\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_IsWindowVisible

-JNIEXPORT jboolean JNICALL OS_NATIVE(IsWindowVisible)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "IsWindowVisible\n")

-	rc = (jboolean)IsWindowVisible((HWND)arg0);

-	NATIVE_EXIT(env, that, "IsWindowVisible\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_IsZoomed

-JNIEXPORT jboolean JNICALL OS_NATIVE(IsZoomed)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "IsZoomed\n")

-	rc = (jboolean)IsZoomed((HWND)arg0);

-	NATIVE_EXIT(env, that, "IsZoomed\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_KillTimer

-JNIEXPORT jboolean JNICALL OS_NATIVE(KillTimer)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "KillTimer\n")

-	rc = (jboolean)KillTimer((HWND)arg0, arg1);

-	NATIVE_EXIT(env, that, "KillTimer\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_LineTo

-JNIEXPORT jboolean JNICALL OS_NATIVE(LineTo)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "LineTo\n")

-	rc = (jboolean)LineTo((HDC)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "LineTo\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_LoadBitmapA

-JNIEXPORT jint JNICALL OS_NATIVE(LoadBitmapA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "LoadBitmapA\n")

-	rc = (jint)LoadBitmapA((HINSTANCE)arg0, (LPSTR)arg1);

-	NATIVE_EXIT(env, that, "LoadBitmapA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_LoadBitmapW

-JNIEXPORT jint JNICALL OS_NATIVE(LoadBitmapW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "LoadBitmapW\n")

-	rc = (jint)LoadBitmapW((HINSTANCE)arg0, (LPWSTR)arg1);

-	NATIVE_EXIT(env, that, "LoadBitmapW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_LoadCursorA

-JNIEXPORT jint JNICALL OS_NATIVE(LoadCursorA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "LoadCursorA\n")

-	rc = (jint)LoadCursorA((HINSTANCE)arg0, (LPSTR)arg1);

-	NATIVE_EXIT(env, that, "LoadCursorA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_LoadCursorW

-JNIEXPORT jint JNICALL OS_NATIVE(LoadCursorW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "LoadCursorW\n")

-	rc = (jint)LoadCursorW((HINSTANCE)arg0, (LPWSTR)arg1);

-	NATIVE_EXIT(env, that, "LoadCursorW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_LoadIconA

-JNIEXPORT jint JNICALL OS_NATIVE(LoadIconA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "LoadIconA\n")

-	rc = (jint)LoadIconA((HINSTANCE)arg0, (LPSTR)arg1);

-	NATIVE_EXIT(env, that, "LoadIconA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_LoadIconW

-JNIEXPORT jint JNICALL OS_NATIVE(LoadIconW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "LoadIconW\n")

-	rc = (jint)LoadIconW((HINSTANCE)arg0, (LPWSTR)arg1);

-	NATIVE_EXIT(env, that, "LoadIconW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_LoadImageA

-JNIEXPORT jint JNICALL OS_NATIVE(LoadImageA)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2, jint arg3, jint arg4, jint arg5)

-{

-	jbyte *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "LoadImageA\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	rc = (jint)LoadImageA((HINSTANCE)arg0, (LPSTR)lparg1, arg2, arg3, arg4, arg5);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "LoadImageA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_LoadImageW

-JNIEXPORT jint JNICALL OS_NATIVE(LoadImageW)

-	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2, jint arg3, jint arg4, jint arg5)

-{

-	jchar *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "LoadImageW\n")

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	rc = (jint)LoadImageW((HINSTANCE)arg0, (LPWSTR)lparg1, arg2, arg3, arg4, arg5);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "LoadImageW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_LoadLibraryA

-JNIEXPORT jint JNICALL OS_NATIVE(LoadLibraryA)

-	(JNIEnv *env, jclass that, jbyteArray arg0)

-{

-	jbyte *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "LoadLibraryA\n")

-	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);

-	rc = (jint)LoadLibraryA((LPSTR)lparg0);

-	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "LoadLibraryA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_LoadLibraryW

-JNIEXPORT jint JNICALL OS_NATIVE(LoadLibraryW)

-	(JNIEnv *env, jclass that, jcharArray arg0)

-{

-	jchar *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "LoadLibraryW\n")

-	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);

-	rc = (jint)LoadLibraryW((LPWSTR)lparg0);

-	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "LoadLibraryW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_MapVirtualKeyA

-JNIEXPORT jint JNICALL OS_NATIVE(MapVirtualKeyA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "MapVirtualKeyA\n")

-	rc = (jint)MapVirtualKeyA(arg0, arg1);

-	NATIVE_EXIT(env, that, "MapVirtualKeyA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_MapVirtualKeyW

-JNIEXPORT jint JNICALL OS_NATIVE(MapVirtualKeyW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "MapVirtualKeyW\n")

-	rc = (jint)MapVirtualKeyW(arg0, arg1);

-	NATIVE_EXIT(env, that, "MapVirtualKeyW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_MapWindowPoints__IILorg_eclipse_swt_internal_win32_POINT_2I

-JNIEXPORT jint JNICALL OS_NATIVE(MapWindowPoints__IILorg_eclipse_swt_internal_win32_POINT_2I)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2, jint arg3)

-{

-	POINT _arg2, *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "MapWindowPoints__IILorg_eclipse_swt_internal_win32_POINT_2I\n")

-	if (arg2) lparg2 = getPOINTFields(env, arg2, &_arg2);

-	rc = (jint)MapWindowPoints((HWND)arg0, (HWND)arg1, (LPPOINT)lparg2, arg3);

-	if (arg2) setPOINTFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "MapWindowPoints__IILorg_eclipse_swt_internal_win32_POINT_2I\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_MapWindowPoints__IILorg_eclipse_swt_internal_win32_RECT_2I

-JNIEXPORT jint JNICALL OS_NATIVE(MapWindowPoints__IILorg_eclipse_swt_internal_win32_RECT_2I)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2, jint arg3)

-{

-	RECT _arg2, *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "MapWindowPoints__IILorg_eclipse_swt_internal_win32_RECT_2I\n")

-	if (arg2) lparg2 = getRECTFields(env, arg2, &_arg2);

-	rc = (jint)MapWindowPoints((HWND)arg0, (HWND)arg1, (LPPOINT)lparg2, arg3);

-	if (arg2) setRECTFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "MapWindowPoints__IILorg_eclipse_swt_internal_win32_RECT_2I\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_MessageBeep

-JNIEXPORT jboolean JNICALL OS_NATIVE(MessageBeep)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "MessageBeep\n")

-	rc = (jboolean)MessageBeep(arg0);

-	NATIVE_EXIT(env, that, "MessageBeep\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_MessageBoxA

-JNIEXPORT jint JNICALL OS_NATIVE(MessageBoxA)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jbyteArray arg2, jint arg3)

-{

-	jbyte *lparg1=NULL;

-	jbyte *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "MessageBoxA\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);

-	rc = (jint)MessageBoxA((HWND)arg0, (LPSTR)lparg1, (LPSTR)lparg2, arg3);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);

-	NATIVE_EXIT(env, that, "MessageBoxA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_MessageBoxW

-JNIEXPORT jint JNICALL OS_NATIVE(MessageBoxW)

-	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jcharArray arg2, jint arg3)

-{

-	jchar *lparg1=NULL;

-	jchar *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "MessageBoxW\n")

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);

-	rc = (jint)MessageBoxW((HWND)arg0, (LPWSTR)lparg1, (LPWSTR)lparg2, arg3);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);

-	NATIVE_EXIT(env, that, "MessageBoxW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_DROPFILES_2I

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_DROPFILES_2I)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)

-{

-	DROPFILES _arg1, *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_DROPFILES_2I\n")

-	if (arg1) lparg1 = getDROPFILESFields(env, arg1, &_arg1);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_DROPFILES_2I\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)

-{

-	GRADIENT_RECT _arg1, *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I\n")

-	if (arg1) lparg1 = getGRADIENT_RECTFields(env, arg1, &_arg1);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTA_2I

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTA_2I)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)

-{

-	LOGFONTA _arg1, *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTA_2I\n")

-	if (arg1) lparg1 = getLOGFONTAFields(env, arg1, &_arg1);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTA_2I\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTW_2I

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTW_2I)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)

-{

-	LOGFONTW _arg1, *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTW_2I\n")

-	if (arg1) lparg1 = getLOGFONTWFields(env, arg1, &_arg1);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTW_2I\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_MEASUREITEMSTRUCT_2I

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_MEASUREITEMSTRUCT_2I)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)

-{

-	MEASUREITEMSTRUCT _arg1, *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_MEASUREITEMSTRUCT_2I\n")

-	if (arg1) lparg1 = getMEASUREITEMSTRUCTFields(env, arg1, &_arg1);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_MEASUREITEMSTRUCT_2I\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2I

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2I)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)

-{

-	NMLVCUSTOMDRAW _arg1, *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2I\n")

-	if (arg1) lparg1 = getNMLVCUSTOMDRAWFields(env, arg1, &_arg1);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2I\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2I

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2I)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)

-{

-	NMTTDISPINFOA _arg1, *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2I\n")

-	if (arg1) lparg1 = getNMTTDISPINFOAFields(env, arg1, &_arg1);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2I\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2I

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2I)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)

-{

-	NMTTDISPINFOW _arg1, *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2I\n")

-	if (arg1) lparg1 = getNMTTDISPINFOWFields(env, arg1, &_arg1);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2I\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_NMTVCUSTOMDRAW_2I

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_NMTVCUSTOMDRAW_2I)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)

-{

-	NMTVCUSTOMDRAW _arg1, *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_NMTVCUSTOMDRAW_2I\n")

-	if (arg1) lparg1 = getNMTVCUSTOMDRAWFields(env, arg1, &_arg1);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_NMTVCUSTOMDRAW_2I\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_RECT_2I

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_RECT_2I)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)

-{

-	RECT _arg1, *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_RECT_2I\n")

-	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_RECT_2I\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_TRIVERTEX_2I

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_TRIVERTEX_2I)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)

-{

-	TRIVERTEX _arg1, *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_TRIVERTEX_2I\n")

-	if (arg1) lparg1 = getTRIVERTEXFields(env, arg1, &_arg1);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_TRIVERTEX_2I\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_WINDOWPOS_2I

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_WINDOWPOS_2I)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)

-{

-	WINDOWPOS _arg1, *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_WINDOWPOS_2I\n")

-	if (arg1) lparg1 = getWINDOWPOSFields(env, arg1, &_arg1);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	if (arg1) setWINDOWPOSFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_WINDOWPOS_2I\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__I_3BI

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__I_3BI)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2)

-{

-	jbyte *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__I_3BI\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, JNI_ABORT);

-	NATIVE_EXIT(env, that, "MoveMemory__I_3BI\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__I_3CI

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__I_3CI)

-	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2)

-{

-	jchar *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__I_3CI\n")

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, JNI_ABORT);

-	NATIVE_EXIT(env, that, "MoveMemory__I_3CI\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__I_3DI

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__I_3DI)

-	(JNIEnv *env, jclass that, jint arg0, jdoubleArray arg1, jint arg2)

-{

-	jdouble *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__I_3DI\n")

-	if (arg1) lparg1 = (*env)->GetDoubleArrayElements(env, arg1, NULL);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	if (arg1) (*env)->ReleaseDoubleArrayElements(env, arg1, lparg1, JNI_ABORT);

-	NATIVE_EXIT(env, that, "MoveMemory__I_3DI\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__I_3FI

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__I_3FI)

-	(JNIEnv *env, jclass that, jint arg0, jfloatArray arg1, jint arg2)

-{

-	jfloat *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__I_3FI\n")

-	if (arg1) lparg1 = (*env)->GetFloatArrayElements(env, arg1, NULL);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	if (arg1) (*env)->ReleaseFloatArrayElements(env, arg1, lparg1, JNI_ABORT);

-	NATIVE_EXIT(env, that, "MoveMemory__I_3FI\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__I_3II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__I_3II)

-	(JNIEnv *env, jclass that, jint arg0, jintArray arg1, jint arg2)

-{

-	jint *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__I_3II\n")

-	if (arg1) lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	if (arg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, JNI_ABORT);

-	NATIVE_EXIT(env, that, "MoveMemory__I_3II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__I_3SI

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__I_3SI)

-	(JNIEnv *env, jclass that, jint arg0, jshortArray arg1, jint arg2)

-{

-	jshort *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__I_3SI\n")

-	if (arg1) lparg1 = (*env)->GetShortArrayElements(env, arg1, NULL);

-	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);

-	if (arg1) (*env)->ReleaseShortArrayElements(env, arg1, lparg1, JNI_ABORT);

-	NATIVE_EXIT(env, that, "MoveMemory__I_3SI\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_BITMAPINFOHEADER_2_3BI

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_BITMAPINFOHEADER_2_3BI)

-	(JNIEnv *env, jclass that, jobject arg0, jbyteArray arg1, jint arg2)

-{

-	BITMAPINFOHEADER _arg0, *lparg0=NULL;

-	jbyte *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_BITMAPINFOHEADER_2_3BI\n")

-	if (arg0) lparg0 = &_arg0;

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	MoveMemory((PVOID)lparg0, (CONST VOID *)lparg1, arg2);

-	if (arg0) setBITMAPINFOHEADERFields(env, arg0, lparg0);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_BITMAPINFOHEADER_2_3BI\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_DRAWITEMSTRUCT_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_DRAWITEMSTRUCT_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	DRAWITEMSTRUCT _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_DRAWITEMSTRUCT_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setDRAWITEMSTRUCTFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_DRAWITEMSTRUCT_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_HDITEM_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_HDITEM_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	HDITEM _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_HDITEM_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setHDITEMFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_HDITEM_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_HELPINFO_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_HELPINFO_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	HELPINFO _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_HELPINFO_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setHELPINFOFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_HELPINFO_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTA_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTA_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	LOGFONTA _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTA_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setLOGFONTAFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTA_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTW_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTW_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	LOGFONTW _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTW_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setLOGFONTWFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTW_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_MEASUREITEMSTRUCT_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_MEASUREITEMSTRUCT_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	MEASUREITEMSTRUCT _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_MEASUREITEMSTRUCT_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setMEASUREITEMSTRUCTFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_MEASUREITEMSTRUCT_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_MSG_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_MSG_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	MSG _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_MSG_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setMSGFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_MSG_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMHDR_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMHDR_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	NMHDR _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMHDR_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setNMHDRFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMHDR_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	NMHEADER _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setNMHEADERFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMLISTVIEW_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMLISTVIEW_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	NMLISTVIEW _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMLISTVIEW_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setNMLISTVIEWFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMLISTVIEW_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	NMLVCUSTOMDRAW _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setNMLVCUSTOMDRAWFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMREBARCHEVRON_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMREBARCHEVRON_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	NMREBARCHEVRON _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMREBARCHEVRON_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setNMREBARCHEVRONFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMREBARCHEVRON_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMTOOLBAR_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMTOOLBAR_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	NMTOOLBAR _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMTOOLBAR_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setNMTOOLBARFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMTOOLBAR_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	NMTTDISPINFOA _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setNMTTDISPINFOAFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	NMTTDISPINFOW _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setNMTTDISPINFOWFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMTVCUSTOMDRAW_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMTVCUSTOMDRAW_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	NMTVCUSTOMDRAW _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMTVCUSTOMDRAW_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setNMTVCUSTOMDRAWFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMTVCUSTOMDRAW_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_TVITEM_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_TVITEM_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	TVITEM _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_TVITEM_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setTVITEMFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_TVITEM_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_WINDOWPOS_2II

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_WINDOWPOS_2II)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)

-{

-	WINDOWPOS _arg0, *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_WINDOWPOS_2II\n")

-	if (arg0) lparg0 = &_arg0;

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) setWINDOWPOSFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_WINDOWPOS_2II\n")

-}

-#endif

-

-#ifndef NO_MoveMemory___3BII

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory___3BII)

-	(JNIEnv *env, jclass that, jbyteArray arg0, jint arg1, jint arg2)

-{

-	jbyte *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory___3BII\n")

-	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "MoveMemory___3BII\n")

-}

-#endif

-

-#ifndef NO_MoveMemory___3BLorg_eclipse_swt_internal_win32_ACCEL_2I

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory___3BLorg_eclipse_swt_internal_win32_ACCEL_2I)

-	(JNIEnv *env, jclass that, jbyteArray arg0, jobject arg1, jint arg2)

-{

-	jbyte *lparg0=NULL;

-	ACCEL _arg1, *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory___3BLorg_eclipse_swt_internal_win32_ACCEL_2I\n")

-	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);

-	if (arg1) lparg1 = getACCELFields(env, arg1, &_arg1);

-	MoveMemory((PVOID)lparg0, (CONST VOID *)lparg1, arg2);

-	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "MoveMemory___3BLorg_eclipse_swt_internal_win32_ACCEL_2I\n")

-}

-#endif

-

-#ifndef NO_MoveMemory___3BLorg_eclipse_swt_internal_win32_BITMAPINFOHEADER_2I

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory___3BLorg_eclipse_swt_internal_win32_BITMAPINFOHEADER_2I)

-	(JNIEnv *env, jclass that, jbyteArray arg0, jobject arg1, jint arg2)

-{

-	jbyte *lparg0=NULL;

-	BITMAPINFOHEADER _arg1, *lparg1=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory___3BLorg_eclipse_swt_internal_win32_BITMAPINFOHEADER_2I\n")

-	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);

-	if (arg1) lparg1 = getBITMAPINFOHEADERFields(env, arg1, &_arg1);

-	MoveMemory((PVOID)lparg0, (CONST VOID *)lparg1, arg2);

-	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "MoveMemory___3BLorg_eclipse_swt_internal_win32_BITMAPINFOHEADER_2I\n")

-}

-#endif

-

-#ifndef NO_MoveMemory___3CII

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory___3CII)

-	(JNIEnv *env, jclass that, jcharArray arg0, jint arg1, jint arg2)

-{

-	jchar *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory___3CII\n")

-	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "MoveMemory___3CII\n")

-}

-#endif

-

-#ifndef NO_MoveMemory___3DII

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory___3DII)

-	(JNIEnv *env, jclass that, jdoubleArray arg0, jint arg1, jint arg2)

-{

-	jdouble *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory___3DII\n")

-	if (arg0) lparg0 = (*env)->GetDoubleArrayElements(env, arg0, NULL);

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) (*env)->ReleaseDoubleArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "MoveMemory___3DII\n")

-}

-#endif

-

-#ifndef NO_MoveMemory___3FII

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory___3FII)

-	(JNIEnv *env, jclass that, jfloatArray arg0, jint arg1, jint arg2)

-{

-	jfloat *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory___3FII\n")

-	if (arg0) lparg0 = (*env)->GetFloatArrayElements(env, arg0, NULL);

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) (*env)->ReleaseFloatArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "MoveMemory___3FII\n")

-}

-#endif

-

-#ifndef NO_MoveMemory___3III

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory___3III)

-	(JNIEnv *env, jclass that, jintArray arg0, jint arg1, jint arg2)

-{

-	jint *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory___3III\n")

-	if (arg0) lparg0 = (*env)->GetIntArrayElements(env, arg0, NULL);

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) (*env)->ReleaseIntArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "MoveMemory___3III\n")

-}

-#endif

-

-#ifndef NO_MoveMemory___3SII

-JNIEXPORT void JNICALL OS_NATIVE(MoveMemory___3SII)

-	(JNIEnv *env, jclass that, jshortArray arg0, jint arg1, jint arg2)

-{

-	jshort *lparg0=NULL;

-	NATIVE_ENTER(env, that, "MoveMemory___3SII\n")

-	if (arg0) lparg0 = (*env)->GetShortArrayElements(env, arg0, NULL);

-	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);

-	if (arg0) (*env)->ReleaseShortArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "MoveMemory___3SII\n")

-}

-#endif

-

-#ifndef NO_MoveToEx

-JNIEXPORT jboolean JNICALL OS_NATIVE(MoveToEx)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "MoveToEx\n")

-	rc = (jboolean)MoveToEx((HDC)arg0, arg1, arg2, (LPPOINT)arg3);

-	NATIVE_EXIT(env, that, "MoveToEx\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_MsgWaitForMultipleObjectsEx

-JNIEXPORT jint JNICALL OS_NATIVE(MsgWaitForMultipleObjectsEx)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "MsgWaitForMultipleObjectsEx\n")

-	rc = (jint)MsgWaitForMultipleObjectsEx((DWORD)arg0, (LPHANDLE)arg1, (DWORD)arg2, (DWORD)arg3, (DWORD)arg4);

-	NATIVE_EXIT(env, that, "MsgWaitForMultipleObjectsEx\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_MultiByteToWideChar__IIII_3CI

-JNIEXPORT jint JNICALL OS_NATIVE(MultiByteToWideChar__IIII_3CI)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jcharArray arg4, jint arg5)

-{

-	jchar *lparg4=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "MultiByteToWideChar__IIII_3CI\n")

-	if (arg4) lparg4 = (*env)->GetCharArrayElements(env, arg4, NULL);

-	rc = (jint)MultiByteToWideChar(arg0, arg1, (LPCSTR)arg2, arg3, (LPWSTR)lparg4, arg5);

-	if (arg4) (*env)->ReleaseCharArrayElements(env, arg4, lparg4, 0);

-	NATIVE_EXIT(env, that, "MultiByteToWideChar__IIII_3CI\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_MultiByteToWideChar__II_3BI_3CI

-JNIEXPORT jint JNICALL OS_NATIVE(MultiByteToWideChar__II_3BI_3CI)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jbyteArray arg2, jint arg3, jcharArray arg4, jint arg5)

-{

-	jbyte *lparg2=NULL;

-	jchar *lparg4=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "MultiByteToWideChar__II_3BI_3CI\n")

-	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);

-	if (arg4) lparg4 = (*env)->GetCharArrayElements(env, arg4, NULL);

-	rc = (jint)MultiByteToWideChar(arg0, arg1, (LPCSTR)lparg2, arg3, (LPWSTR)lparg4, arg5);

-	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);

-	if (arg4) (*env)->ReleaseCharArrayElements(env, arg4, lparg4, 0);

-	NATIVE_EXIT(env, that, "MultiByteToWideChar__II_3BI_3CI\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_OleInitialize

-JNIEXPORT jint JNICALL OS_NATIVE(OleInitialize)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "OleInitialize\n")

-	rc = (jint)OleInitialize((LPVOID)arg0);

-	NATIVE_EXIT(env, that, "OleInitialize\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_OleUninitialize

-JNIEXPORT void JNICALL OS_NATIVE(OleUninitialize)

-	(JNIEnv *env, jclass that)

-{

-	NATIVE_ENTER(env, that, "OleUninitialize\n")

-	OleUninitialize();

-	NATIVE_EXIT(env, that, "OleUninitialize\n")

-}

-#endif

-

-#ifndef NO_OpenClipboard

-JNIEXPORT jboolean JNICALL OS_NATIVE(OpenClipboard)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "OpenClipboard\n")

-	rc = (jboolean)OpenClipboard((HWND)arg0);

-	NATIVE_EXIT(env, that, "OpenClipboard\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_PatBlt

-JNIEXPORT jboolean JNICALL OS_NATIVE(PatBlt)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "PatBlt\n")

-	rc = (jboolean)PatBlt((HDC)arg0, arg1, arg2, arg3, arg4, arg5);

-	NATIVE_EXIT(env, that, "PatBlt\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_PeekMessageA

-JNIEXPORT jboolean JNICALL OS_NATIVE(PeekMessageA)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2, jint arg3, jint arg4)

-{

-	MSG _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "PeekMessageA\n")

-	if (arg0) lparg0 = getMSGFields(env, arg0, &_arg0);

-	rc = (jboolean)PeekMessageA(lparg0, (HWND)arg1, arg2, arg3, arg4);

-	if (arg0) setMSGFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "PeekMessageA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_PeekMessageW

-JNIEXPORT jboolean JNICALL OS_NATIVE(PeekMessageW)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2, jint arg3, jint arg4)

-{

-	MSG _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "PeekMessageW\n")

-	if (arg0) lparg0 = getMSGFields(env, arg0, &_arg0);

-	rc = (jboolean)PeekMessageW(lparg0, (HWND)arg1, arg2, arg3, arg4);

-	if (arg0) setMSGFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "PeekMessageW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_Pie

-JNIEXPORT jboolean JNICALL OS_NATIVE(Pie)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "Pie\n")

-	rc = (jboolean)Pie((HDC)arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);

-	NATIVE_EXIT(env, that, "Pie\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_Polygon

-JNIEXPORT jboolean JNICALL OS_NATIVE(Polygon)

-	(JNIEnv *env, jclass that, jint arg0, jintArray arg1, jint arg2)

-{

-	jint *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "Polygon\n")

-	if (arg1) lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL);

-	rc = (jboolean)Polygon((HDC)arg0, (CONST POINT *)lparg1, arg2);

-	if (arg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "Polygon\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_Polyline

-JNIEXPORT jboolean JNICALL OS_NATIVE(Polyline)

-	(JNIEnv *env, jclass that, jint arg0, jintArray arg1, jint arg2)

-{

-	jint *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "Polyline\n")

-	if (arg1) lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL);

-	rc = (jboolean)Polyline((HDC)arg0, (CONST POINT *)lparg1, arg2);

-	if (arg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "Polyline\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_PostMessageA

-JNIEXPORT jboolean JNICALL OS_NATIVE(PostMessageA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "PostMessageA\n")

-	rc = (jboolean)PostMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);

-	NATIVE_EXIT(env, that, "PostMessageA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_PostMessageW

-JNIEXPORT jboolean JNICALL OS_NATIVE(PostMessageW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "PostMessageW\n")

-	rc = (jboolean)PostMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);

-	NATIVE_EXIT(env, that, "PostMessageW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_PostThreadMessageA

-JNIEXPORT jboolean JNICALL OS_NATIVE(PostThreadMessageA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "PostThreadMessageA\n")

-	rc = (jboolean)PostThreadMessageA(arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);

-	NATIVE_EXIT(env, that, "PostThreadMessageA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_PostThreadMessageW

-JNIEXPORT jboolean JNICALL OS_NATIVE(PostThreadMessageW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "PostThreadMessageW\n")

-	rc = (jboolean)PostThreadMessageW(arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);

-	NATIVE_EXIT(env, that, "PostThreadMessageW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_PrintDlgA

-JNIEXPORT jboolean JNICALL OS_NATIVE(PrintDlgA)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	PRINTDLG _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "PrintDlgA\n")

-	if (arg0) lparg0 = getPRINTDLGFields(env, arg0, &_arg0);

-	rc = (jboolean)PrintDlgA(lparg0);

-	if (arg0) setPRINTDLGFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "PrintDlgA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_PrintDlgW

-JNIEXPORT jboolean JNICALL OS_NATIVE(PrintDlgW)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	PRINTDLG _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "PrintDlgW\n")

-	if (arg0) lparg0 = getPRINTDLGFields(env, arg0, &_arg0);

-	rc = (jboolean)PrintDlgW((LPPRINTDLGW)lparg0);

-	if (arg0) setPRINTDLGFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "PrintDlgW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_PtInRect

-JNIEXPORT jboolean JNICALL OS_NATIVE(PtInRect)

-	(JNIEnv *env, jclass that, jobject arg0, jobject arg1)

-{

-	RECT _arg0, *lparg0=NULL;

-	POINT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "PtInRect\n")

-	if (arg0) lparg0 = getRECTFields(env, arg0, &_arg0);

-	if (arg1) lparg1 = getPOINTFields(env, arg1, &_arg1);

-	rc = (jboolean)PtInRect(lparg0, *lparg1);

-	if (arg0) setRECTFields(env, arg0, lparg0);

-	if (arg1) setPOINTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "PtInRect\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_PtInRegion

-JNIEXPORT jboolean JNICALL OS_NATIVE(PtInRegion)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "PtInRegion\n")

-	rc = (jboolean)PtInRegion((HRGN)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "PtInRegion\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RealizePalette

-JNIEXPORT jint JNICALL OS_NATIVE(RealizePalette)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "RealizePalette\n")

-	rc = (jint)RealizePalette((HDC)arg0);

-	NATIVE_EXIT(env, that, "RealizePalette\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RectInRegion

-JNIEXPORT jboolean JNICALL OS_NATIVE(RectInRegion)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	RECT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "RectInRegion\n")

-	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);

-	rc = (jboolean)RectInRegion((HRGN)arg0, lparg1);

-	if (arg1) setRECTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "RectInRegion\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_Rectangle

-JNIEXPORT jboolean JNICALL OS_NATIVE(Rectangle)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "Rectangle\n")

-	rc = (jboolean)Rectangle((HDC)arg0, arg1, arg2, arg3, arg4);

-	NATIVE_EXIT(env, that, "Rectangle\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RedrawWindow

-JNIEXPORT jboolean JNICALL OS_NATIVE(RedrawWindow)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2, jint arg3)

-{

-	RECT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "RedrawWindow\n")

-	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);

-	rc = (jboolean)RedrawWindow((HWND)arg0, lparg1, (HRGN)arg2, arg3);

-	if (arg1) setRECTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "RedrawWindow\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RegCloseKey

-JNIEXPORT jint JNICALL OS_NATIVE(RegCloseKey)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "RegCloseKey\n")

-	rc = (jint)RegCloseKey((HKEY)arg0);

-	NATIVE_EXIT(env, that, "RegCloseKey\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RegEnumKeyExA

-JNIEXPORT jint JNICALL OS_NATIVE(RegEnumKeyExA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jbyteArray arg2, jintArray arg3, jintArray arg4, jbyteArray arg5, jintArray arg6, jobject arg7)

-{

-	jbyte *lparg2=NULL;

-	jint *lparg3=NULL;

-	jint *lparg4=NULL;

-	jbyte *lparg5=NULL;

-	jint *lparg6=NULL;

-	FILETIME _arg7, *lparg7=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "RegEnumKeyExA\n")

-	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);

-	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);

-	if (arg4) lparg4 = (*env)->GetIntArrayElements(env, arg4, NULL);

-	if (arg5) lparg5 = (*env)->GetByteArrayElements(env, arg5, NULL);

-	if (arg6) lparg6 = (*env)->GetIntArrayElements(env, arg6, NULL);

-	if (arg7) lparg7 = getFILETIMEFields(env, arg7, &_arg7);

-	rc = (jint)RegEnumKeyExA((HKEY)arg0, arg1, (LPSTR)lparg2, lparg3, lparg4, (LPSTR)lparg5, lparg6, lparg7);

-	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);

-	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);

-	if (arg4) (*env)->ReleaseIntArrayElements(env, arg4, lparg4, 0);

-	if (arg5) (*env)->ReleaseByteArrayElements(env, arg5, lparg5, 0);

-	if (arg6) (*env)->ReleaseIntArrayElements(env, arg6, lparg6, 0);

-	if (arg7) setFILETIMEFields(env, arg7, lparg7);

-	NATIVE_EXIT(env, that, "RegEnumKeyExA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RegEnumKeyExW

-JNIEXPORT jint JNICALL OS_NATIVE(RegEnumKeyExW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jcharArray arg2, jintArray arg3, jintArray arg4, jcharArray arg5, jintArray arg6, jobject arg7)

-{

-	jchar *lparg2=NULL;

-	jint *lparg3=NULL;

-	jint *lparg4=NULL;

-	jchar *lparg5=NULL;

-	jint *lparg6=NULL;

-	FILETIME _arg7, *lparg7=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "RegEnumKeyExW\n")

-	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);

-	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);

-	if (arg4) lparg4 = (*env)->GetIntArrayElements(env, arg4, NULL);

-	if (arg5) lparg5 = (*env)->GetCharArrayElements(env, arg5, NULL);

-	if (arg6) lparg6 = (*env)->GetIntArrayElements(env, arg6, NULL);

-	if (arg7) lparg7 = getFILETIMEFields(env, arg7, &_arg7);

-	rc = (jint)RegEnumKeyExW((HKEY)arg0, arg1, (LPWSTR)lparg2, lparg3, lparg4, (LPWSTR)lparg5, lparg6, lparg7);

-	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);

-	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);

-	if (arg4) (*env)->ReleaseIntArrayElements(env, arg4, lparg4, 0);

-	if (arg5) (*env)->ReleaseCharArrayElements(env, arg5, lparg5, 0);

-	if (arg6) (*env)->ReleaseIntArrayElements(env, arg6, lparg6, 0);

-	if (arg7) setFILETIMEFields(env, arg7, lparg7);

-	NATIVE_EXIT(env, that, "RegEnumKeyExW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RegOpenKeyExA

-JNIEXPORT jint JNICALL OS_NATIVE(RegOpenKeyExA)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2, jint arg3, jintArray arg4)

-{

-	jbyte *lparg1=NULL;

-	jint *lparg4=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "RegOpenKeyExA\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	if (arg4) lparg4 = (*env)->GetIntArrayElements(env, arg4, NULL);

-	rc = (jint)RegOpenKeyExA((HKEY)arg0, (LPSTR)lparg1, arg2, arg3, (PHKEY)lparg4);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	if (arg4) (*env)->ReleaseIntArrayElements(env, arg4, lparg4, 0);

-	NATIVE_EXIT(env, that, "RegOpenKeyExA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RegOpenKeyExW

-JNIEXPORT jint JNICALL OS_NATIVE(RegOpenKeyExW)

-	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2, jint arg3, jintArray arg4)

-{

-	jchar *lparg1=NULL;

-	jint *lparg4=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "RegOpenKeyExW\n")

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	if (arg4) lparg4 = (*env)->GetIntArrayElements(env, arg4, NULL);

-	rc = (jint)RegOpenKeyExW((HKEY)arg0, (LPWSTR)lparg1, arg2, arg3, (PHKEY)lparg4);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	if (arg4) (*env)->ReleaseIntArrayElements(env, arg4, lparg4, 0);

-	NATIVE_EXIT(env, that, "RegOpenKeyExW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RegQueryInfoKeyA

-JNIEXPORT jint JNICALL OS_NATIVE(RegQueryInfoKeyA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jint arg3, jintArray arg4, jintArray arg5, jintArray arg6, jintArray arg7, jintArray arg8, jintArray arg9, jintArray arg10, jint arg11)

-{

-	jint *lparg2=NULL;

-	jint *lparg4=NULL;

-	jint *lparg5=NULL;

-	jint *lparg6=NULL;

-	jint *lparg7=NULL;

-	jint *lparg8=NULL;

-	jint *lparg9=NULL;

-	jint *lparg10=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "RegQueryInfoKeyA\n")

-	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);

-	if (arg4) lparg4 = (*env)->GetIntArrayElements(env, arg4, NULL);

-	if (arg5) lparg5 = (*env)->GetIntArrayElements(env, arg5, NULL);

-	if (arg6) lparg6 = (*env)->GetIntArrayElements(env, arg6, NULL);

-	if (arg7) lparg7 = (*env)->GetIntArrayElements(env, arg7, NULL);

-	if (arg8) lparg8 = (*env)->GetIntArrayElements(env, arg8, NULL);

-	if (arg9) lparg9 = (*env)->GetIntArrayElements(env, arg9, NULL);

-	if (arg10) lparg10 = (*env)->GetIntArrayElements(env, arg10, NULL);

-	rc = (jint)RegQueryInfoKeyA((HKEY)arg0, (LPSTR)arg1, lparg2, (LPDWORD)arg3, lparg4, lparg5, lparg6, lparg7, lparg8, lparg9, lparg10, (PFILETIME)arg11);

-	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);

-	if (arg4) (*env)->ReleaseIntArrayElements(env, arg4, lparg4, 0);

-	if (arg5) (*env)->ReleaseIntArrayElements(env, arg5, lparg5, 0);

-	if (arg6) (*env)->ReleaseIntArrayElements(env, arg6, lparg6, 0);

-	if (arg7) (*env)->ReleaseIntArrayElements(env, arg7, lparg7, 0);

-	if (arg8) (*env)->ReleaseIntArrayElements(env, arg8, lparg8, 0);

-	if (arg9) (*env)->ReleaseIntArrayElements(env, arg9, lparg9, 0);

-	if (arg10) (*env)->ReleaseIntArrayElements(env, arg10, lparg10, 0);

-	NATIVE_EXIT(env, that, "RegQueryInfoKeyA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RegQueryInfoKeyW

-JNIEXPORT jint JNICALL OS_NATIVE(RegQueryInfoKeyW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jint arg3, jintArray arg4, jintArray arg5, jintArray arg6, jintArray arg7, jintArray arg8, jintArray arg9, jintArray arg10, jint arg11)

-{

-	jint *lparg2=NULL;

-	jint *lparg4=NULL;

-	jint *lparg5=NULL;

-	jint *lparg6=NULL;

-	jint *lparg7=NULL;

-	jint *lparg8=NULL;

-	jint *lparg9=NULL;

-	jint *lparg10=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "RegQueryInfoKeyW\n")

-	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);

-	if (arg4) lparg4 = (*env)->GetIntArrayElements(env, arg4, NULL);

-	if (arg5) lparg5 = (*env)->GetIntArrayElements(env, arg5, NULL);

-	if (arg6) lparg6 = (*env)->GetIntArrayElements(env, arg6, NULL);

-	if (arg7) lparg7 = (*env)->GetIntArrayElements(env, arg7, NULL);

-	if (arg8) lparg8 = (*env)->GetIntArrayElements(env, arg8, NULL);

-	if (arg9) lparg9 = (*env)->GetIntArrayElements(env, arg9, NULL);

-	if (arg10) lparg10 = (*env)->GetIntArrayElements(env, arg10, NULL);

-	rc = (jint)RegQueryInfoKeyW((HKEY)arg0, (LPWSTR)arg1, lparg2, (LPDWORD)arg3, lparg4, lparg5, lparg6, lparg7, lparg8, lparg9, lparg10, (PFILETIME)arg11);

-	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);

-	if (arg4) (*env)->ReleaseIntArrayElements(env, arg4, lparg4, 0);

-	if (arg5) (*env)->ReleaseIntArrayElements(env, arg5, lparg5, 0);

-	if (arg6) (*env)->ReleaseIntArrayElements(env, arg6, lparg6, 0);

-	if (arg7) (*env)->ReleaseIntArrayElements(env, arg7, lparg7, 0);

-	if (arg8) (*env)->ReleaseIntArrayElements(env, arg8, lparg8, 0);

-	if (arg9) (*env)->ReleaseIntArrayElements(env, arg9, lparg9, 0);

-	if (arg10) (*env)->ReleaseIntArrayElements(env, arg10, lparg10, 0);

-	NATIVE_EXIT(env, that, "RegQueryInfoKeyW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RegQueryValueExA

-JNIEXPORT jint JNICALL OS_NATIVE(RegQueryValueExA)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2, jintArray arg3, jbyteArray arg4, jintArray arg5)

-{

-	jbyte *lparg1=NULL;

-	jint *lparg3=NULL;

-	jbyte *lparg4=NULL;

-	jint *lparg5=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "RegQueryValueExA\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);

-	if (arg4) lparg4 = (*env)->GetByteArrayElements(env, arg4, NULL);

-	if (arg5) lparg5 = (*env)->GetIntArrayElements(env, arg5, NULL);

-	rc = (jint)RegQueryValueExA((HKEY)arg0, (LPSTR)lparg1, (LPDWORD)arg2, lparg3, (LPBYTE)lparg4, lparg5);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);

-	if (arg4) (*env)->ReleaseByteArrayElements(env, arg4, lparg4, 0);

-	if (arg5) (*env)->ReleaseIntArrayElements(env, arg5, lparg5, 0);

-	NATIVE_EXIT(env, that, "RegQueryValueExA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RegQueryValueExW

-JNIEXPORT jint JNICALL OS_NATIVE(RegQueryValueExW)

-	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2, jintArray arg3, jcharArray arg4, jintArray arg5)

-{

-	jchar *lparg1=NULL;

-	jint *lparg3=NULL;

-	jchar *lparg4=NULL;

-	jint *lparg5=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "RegQueryValueExW\n")

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);

-	if (arg4) lparg4 = (*env)->GetCharArrayElements(env, arg4, NULL);

-	if (arg5) lparg5 = (*env)->GetIntArrayElements(env, arg5, NULL);

-	rc = (jint)RegQueryValueExW((HKEY)arg0, (LPWSTR)lparg1, (LPDWORD)arg2, lparg3, (LPBYTE)lparg4, lparg5);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);

-	if (arg4) (*env)->ReleaseCharArrayElements(env, arg4, lparg4, 0);

-	if (arg5) (*env)->ReleaseIntArrayElements(env, arg5, lparg5, 0);

-	NATIVE_EXIT(env, that, "RegQueryValueExW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RegisterClassA

-JNIEXPORT jint JNICALL OS_NATIVE(RegisterClassA)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	WNDCLASS _arg0, *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "RegisterClassA\n")

-	if (arg0) lparg0 = getWNDCLASSFields(env, arg0, &_arg0);

-	rc = (jint)RegisterClassA(lparg0);

-	if (arg0) setWNDCLASSFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "RegisterClassA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RegisterClassW

-JNIEXPORT jint JNICALL OS_NATIVE(RegisterClassW)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	WNDCLASS _arg0, *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "RegisterClassW\n")

-	if (arg0) lparg0 = getWNDCLASSFields(env, arg0, &_arg0);

-	rc = (jint)RegisterClassW((LPWNDCLASSW)lparg0);

-	if (arg0) setWNDCLASSFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "RegisterClassW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RegisterClipboardFormatA

-JNIEXPORT jint JNICALL OS_NATIVE(RegisterClipboardFormatA)

-	(JNIEnv *env, jclass that, jbyteArray arg0)

-{

-	jbyte *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "RegisterClipboardFormatA\n")

-	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);

-	rc = (jint)RegisterClipboardFormatA((LPTSTR)lparg0);

-	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "RegisterClipboardFormatA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RegisterClipboardFormatW

-JNIEXPORT jint JNICALL OS_NATIVE(RegisterClipboardFormatW)

-	(JNIEnv *env, jclass that, jcharArray arg0)

-{

-	jchar *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "RegisterClipboardFormatW\n")

-	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);

-	rc = (jint)RegisterClipboardFormatW((LPWSTR)lparg0);

-	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "RegisterClipboardFormatW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ReleaseCapture

-JNIEXPORT jboolean JNICALL OS_NATIVE(ReleaseCapture)

-	(JNIEnv *env, jclass that)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ReleaseCapture\n")

-	rc = (jboolean)ReleaseCapture();

-	NATIVE_EXIT(env, that, "ReleaseCapture\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ReleaseDC

-JNIEXPORT jint JNICALL OS_NATIVE(ReleaseDC)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "ReleaseDC\n")

-	rc = (jint)ReleaseDC((HWND)arg0, (HDC)arg1);

-	NATIVE_EXIT(env, that, "ReleaseDC\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RemoveMenu

-JNIEXPORT jboolean JNICALL OS_NATIVE(RemoveMenu)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "RemoveMenu\n")

-	rc = (jboolean)RemoveMenu((HMENU)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "RemoveMenu\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_RoundRect

-JNIEXPORT jboolean JNICALL OS_NATIVE(RoundRect)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "RoundRect\n")

-	rc = (jboolean)RoundRect((HDC)arg0, arg1, arg2, arg3, arg4, arg5, arg6);

-	NATIVE_EXIT(env, that, "RoundRect\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SHBrowseForFolderA

-JNIEXPORT jint JNICALL OS_NATIVE(SHBrowseForFolderA)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	BROWSEINFO _arg0, *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SHBrowseForFolderA\n")

-	if (arg0) lparg0 = getBROWSEINFOFields(env, arg0, &_arg0);

-	rc = (jint)SHBrowseForFolderA(lparg0);

-	if (arg0) setBROWSEINFOFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "SHBrowseForFolderA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SHBrowseForFolderW

-JNIEXPORT jint JNICALL OS_NATIVE(SHBrowseForFolderW)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	BROWSEINFO _arg0, *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SHBrowseForFolderW\n")

-	if (arg0) lparg0 = getBROWSEINFOFields(env, arg0, &_arg0);

-	rc = (jint)SHBrowseForFolderW((LPBROWSEINFOW)lparg0);

-	if (arg0) setBROWSEINFOFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "SHBrowseForFolderW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SHCreateMenuBar

-JNIEXPORT jboolean JNICALL OS_NATIVE(SHCreateMenuBar)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	SHMENUBARINFO _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SHCreateMenuBar\n")

-	if (arg0) lparg0 = getSHMENUBARINFOFields(env, arg0, &_arg0);

-	rc = (jboolean)SHCreateMenuBar((PSHMENUBARINFO)lparg0);

-	if (arg0) setSHMENUBARINFOFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "SHCreateMenuBar\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SHGetMalloc

-JNIEXPORT jint JNICALL OS_NATIVE(SHGetMalloc)

-	(JNIEnv *env, jclass that, jintArray arg0)

-{

-	jint *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SHGetMalloc\n")

-	if (arg0) lparg0 = (*env)->GetIntArrayElements(env, arg0, NULL);

-	rc = (jint)SHGetMalloc((LPMALLOC *)lparg0);

-	if (arg0) (*env)->ReleaseIntArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "SHGetMalloc\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SHGetPathFromIDListA

-JNIEXPORT jboolean JNICALL OS_NATIVE(SHGetPathFromIDListA)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1)

-{

-	jbyte *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SHGetPathFromIDListA\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	rc = (jboolean)SHGetPathFromIDListA((LPCITEMIDLIST)arg0, (LPSTR)lparg1);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "SHGetPathFromIDListA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SHGetPathFromIDListW

-JNIEXPORT jboolean JNICALL OS_NATIVE(SHGetPathFromIDListW)

-	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1)

-{

-	jchar *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SHGetPathFromIDListW\n")

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	rc = (jboolean)SHGetPathFromIDListW((LPCITEMIDLIST)arg0, (LPWSTR)lparg1);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "SHGetPathFromIDListW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SHHandleWMSettingChange

-JNIEXPORT jboolean JNICALL OS_NATIVE(SHHandleWMSettingChange)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	SHACTIVATEINFO _arg3, *lparg3=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SHHandleWMSettingChange\n")

-	if (arg3) lparg3 = getSHACTIVATEINFOFields(env, arg3, &_arg3);

-	rc = (jboolean)SHHandleWMSettingChange((HWND)arg0, arg1, arg2, lparg3);

-	if (arg3) setSHACTIVATEINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SHHandleWMSettingChange\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SHRecognizeGesture

-JNIEXPORT jint JNICALL OS_NATIVE(SHRecognizeGesture)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	SHRGINFO _arg0, *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SHRecognizeGesture\n")

-	if (arg0) lparg0 = getSHRGINFOFields(env, arg0, &_arg0);

-	rc = (jint)SHRecognizeGesture(lparg0);

-	if (arg0) setSHRGINFOFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "SHRecognizeGesture\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SHSendBackToFocusWindow

-JNIEXPORT void JNICALL OS_NATIVE(SHSendBackToFocusWindow)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	NATIVE_ENTER(env, that, "SHSendBackToFocusWindow\n")

-	SHSendBackToFocusWindow(arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "SHSendBackToFocusWindow\n")

-}

-#endif

-

-#ifndef NO_SHSetAppKeyWndAssoc

-JNIEXPORT jboolean JNICALL OS_NATIVE(SHSetAppKeyWndAssoc)

-	(JNIEnv *env, jclass that, jbyte arg0, jint arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SHSetAppKeyWndAssoc\n")

-	rc = (jboolean)SHSetAppKeyWndAssoc((BYTE)arg0, (HWND)arg1);

-	NATIVE_EXIT(env, that, "SHSetAppKeyWndAssoc\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SHSipPreference

-JNIEXPORT jboolean JNICALL OS_NATIVE(SHSipPreference)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SHSipPreference\n")

-	rc = (jboolean)SHSipPreference((HWND)arg0, arg1);

-	NATIVE_EXIT(env, that, "SHSipPreference\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ScreenToClient

-JNIEXPORT jboolean JNICALL OS_NATIVE(ScreenToClient)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	POINT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ScreenToClient\n")

-	if (arg1) lparg1 = getPOINTFields(env, arg1, &_arg1);

-	rc = (jboolean)ScreenToClient((HWND)arg0, lparg1);

-	if (arg1) setPOINTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "ScreenToClient\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ScrollWindowEx

-JNIEXPORT jint JNICALL OS_NATIVE(ScrollWindowEx)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3, jobject arg4, jint arg5, jobject arg6, jint arg7)

-{

-	RECT _arg3, *lparg3=NULL;

-	RECT _arg4, *lparg4=NULL;

-	RECT _arg6, *lparg6=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "ScrollWindowEx\n")

-	if (arg3) lparg3 = getRECTFields(env, arg3, &_arg3);

-	if (arg4) lparg4 = getRECTFields(env, arg4, &_arg4);

-	if (arg6) lparg6 = getRECTFields(env, arg6, &_arg6);

-	rc = (jint)ScrollWindowEx((HWND)arg0, arg1, arg2, lparg3, lparg4, (HRGN)arg5, lparg6, arg7);

-	if (arg3) setRECTFields(env, arg3, lparg3);

-	if (arg4) setRECTFields(env, arg4, lparg4);

-	if (arg6) setRECTFields(env, arg6, lparg6);

-	NATIVE_EXIT(env, that, "ScrollWindowEx\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SelectClipRgn

-JNIEXPORT jint JNICALL OS_NATIVE(SelectClipRgn)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SelectClipRgn\n")

-	rc = (jint)SelectClipRgn((HDC)arg0, (HRGN)arg1);

-	NATIVE_EXIT(env, that, "SelectClipRgn\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SelectObject

-JNIEXPORT jint JNICALL OS_NATIVE(SelectObject)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SelectObject\n")

-	rc = (jint)SelectObject((HDC)arg0, (HGDIOBJ)arg1);

-	NATIVE_EXIT(env, that, "SelectObject\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SelectPalette

-JNIEXPORT jint JNICALL OS_NATIVE(SelectPalette)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SelectPalette\n")

-	rc = (jint)SelectPalette((HDC)arg0, (HPALETTE)arg1, arg2);

-	NATIVE_EXIT(env, that, "SelectPalette\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__IIII

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIII)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__IIII\n")

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);

-	NATIVE_EXIT(env, that, "SendMessageA__IIII\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	LVCOLUMN _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2\n")

-	if (arg3) lparg3 = getLVCOLUMNFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setLVCOLUMNFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	LVHITTESTINFO _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2\n")

-	if (arg3) lparg3 = getLVHITTESTINFOFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setLVHITTESTINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_LVITEM_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_LVITEM_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	LVITEM _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_LVITEM_2\n")

-	if (arg3) lparg3 = getLVITEMFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setLVITEMFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_LVITEM_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	REBARBANDINFO _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2\n")

-	if (arg3) lparg3 = getREBARBANDINFOFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setREBARBANDINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_RECT_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_RECT_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	RECT _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_RECT_2\n")

-	if (arg3) lparg3 = getRECTFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setRECTFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_RECT_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	TBBUTTONINFO _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2\n")

-	if (arg3) lparg3 = getTBBUTTONINFOFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setTBBUTTONINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	TBBUTTON _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2\n")

-	if (arg3) lparg3 = getTBBUTTONFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setTBBUTTONFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TCITEM_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_TCITEM_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	TCITEM _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TCITEM_2\n")

-	if (arg3) lparg3 = getTCITEMFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setTCITEMFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TCITEM_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	TOOLINFO _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2\n")

-	if (arg3) lparg3 = getTOOLINFOFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setTOOLINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	TVHITTESTINFO _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2\n")

-	if (arg3) lparg3 = getTVHITTESTINFOFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setTVHITTESTINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	TVINSERTSTRUCT _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2\n")

-	if (arg3) lparg3 = getTVINSERTSTRUCTFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setTVINSERTSTRUCTFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVITEM_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_TVITEM_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	TVITEM _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TVITEM_2\n")

-	if (arg3) lparg3 = getTVITEMFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setTVITEMFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TVITEM_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__III_3B

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__III_3B)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jbyteArray arg3)

-{

-	jbyte *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__III_3B\n")

-	if (arg3) lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "SendMessageA__III_3B\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__III_3I

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__III_3I)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jintArray arg3)

-{

-	jint *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__III_3I\n")

-	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "SendMessageA__III_3I\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__III_3S

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__III_3S)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jshortArray arg3)

-{

-	jshort *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__III_3S\n")

-	if (arg3) lparg3 = (*env)->GetShortArrayElements(env, arg3, NULL);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) (*env)->ReleaseShortArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "SendMessageA__III_3S\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__II_3II

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__II_3II)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jint arg3)

-{

-	jint *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__II_3II\n")

-	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)lparg2, (LPARAM)arg3);

-	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);

-	NATIVE_EXIT(env, that, "SendMessageA__II_3II\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageA__II_3I_3I

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__II_3I_3I)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jintArray arg3)

-{

-	jint *lparg2=NULL;

-	jint *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageA__II_3I_3I\n")

-	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);

-	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);

-	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)lparg2, (LPARAM)lparg3);

-	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);

-	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "SendMessageA__II_3I_3I\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__IIII

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIII)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__IIII\n")

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);

-	NATIVE_EXIT(env, that, "SendMessageW__IIII\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	LVCOLUMN _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2\n")

-	if (arg3) lparg3 = getLVCOLUMNFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setLVCOLUMNFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	LVHITTESTINFO _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2\n")

-	if (arg3) lparg3 = getLVHITTESTINFOFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setLVHITTESTINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_LVITEM_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_LVITEM_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	LVITEM _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_LVITEM_2\n")

-	if (arg3) lparg3 = getLVITEMFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setLVITEMFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_LVITEM_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	REBARBANDINFO _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2\n")

-	if (arg3) lparg3 = getREBARBANDINFOFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setREBARBANDINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_RECT_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_RECT_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	RECT _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_RECT_2\n")

-	if (arg3) lparg3 = getRECTFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setRECTFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_RECT_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	TBBUTTONINFO _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2\n")

-	if (arg3) lparg3 = getTBBUTTONINFOFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setTBBUTTONINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	TBBUTTON _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2\n")

-	if (arg3) lparg3 = getTBBUTTONFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setTBBUTTONFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TCITEM_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_TCITEM_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	TCITEM _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TCITEM_2\n")

-	if (arg3) lparg3 = getTCITEMFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setTCITEMFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TCITEM_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	TOOLINFO _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2\n")

-	if (arg3) lparg3 = getTOOLINFOFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setTOOLINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	TVHITTESTINFO _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2\n")

-	if (arg3) lparg3 = getTVHITTESTINFOFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setTVHITTESTINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	TVINSERTSTRUCT _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2\n")

-	if (arg3) lparg3 = getTVINSERTSTRUCTFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setTVINSERTSTRUCTFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TVITEM_2

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_TVITEM_2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)

-{

-	TVITEM _arg3, *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TVITEM_2\n")

-	if (arg3) lparg3 = getTVITEMFields(env, arg3, &_arg3);

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) setTVITEMFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TVITEM_2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__III_3C

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__III_3C)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jcharArray arg3)

-{

-	jchar *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__III_3C\n")

-	if (arg3) lparg3 = (*env)->GetCharArrayElements(env, arg3, NULL);

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) (*env)->ReleaseCharArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "SendMessageW__III_3C\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__III_3I

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__III_3I)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jintArray arg3)

-{

-	jint *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__III_3I\n")

-	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "SendMessageW__III_3I\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__III_3S

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__III_3S)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jshortArray arg3)

-{

-	jshort *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__III_3S\n")

-	if (arg3) lparg3 = (*env)->GetShortArrayElements(env, arg3, NULL);

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);

-	if (arg3) (*env)->ReleaseShortArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "SendMessageW__III_3S\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__II_3II

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__II_3II)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jint arg3)

-{

-	jint *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__II_3II\n")

-	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)lparg2, (LPARAM)arg3);

-	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);

-	NATIVE_EXIT(env, that, "SendMessageW__II_3II\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetActiveWindow

-JNIEXPORT jint JNICALL OS_NATIVE(SetActiveWindow)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetActiveWindow\n")

-	rc = (jint)SetActiveWindow((HWND)arg0);

-	NATIVE_EXIT(env, that, "SetActiveWindow\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetBkColor

-JNIEXPORT jint JNICALL OS_NATIVE(SetBkColor)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetBkColor\n")

-	rc = (jint)SetBkColor((HDC)arg0, (COLORREF)arg1);

-	NATIVE_EXIT(env, that, "SetBkColor\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetBkMode

-JNIEXPORT jint JNICALL OS_NATIVE(SetBkMode)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetBkMode\n")

-	rc = (jint)SetBkMode((HDC)arg0, arg1);

-	NATIVE_EXIT(env, that, "SetBkMode\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetCapture

-JNIEXPORT jint JNICALL OS_NATIVE(SetCapture)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetCapture\n")

-	rc = (jint)SetCapture((HWND)arg0);

-	NATIVE_EXIT(env, that, "SetCapture\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetCaretPos

-JNIEXPORT jboolean JNICALL OS_NATIVE(SetCaretPos)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SetCaretPos\n")

-	rc = (jboolean)SetCaretPos(arg0, arg1);

-	NATIVE_EXIT(env, that, "SetCaretPos\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetClipboardData

-JNIEXPORT jint JNICALL OS_NATIVE(SetClipboardData)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetClipboardData\n")

-	rc = (jint)SetClipboardData(arg0, (HANDLE)arg1);

-	NATIVE_EXIT(env, that, "SetClipboardData\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetCursor

-JNIEXPORT jint JNICALL OS_NATIVE(SetCursor)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetCursor\n")

-	rc = (jint)SetCursor((HCURSOR)arg0);

-	NATIVE_EXIT(env, that, "SetCursor\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetCursorPos

-JNIEXPORT jboolean JNICALL OS_NATIVE(SetCursorPos)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SetCursorPos\n")

-	rc = (jboolean)SetCursorPos(arg0, arg1);

-	NATIVE_EXIT(env, that, "SetCursorPos\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetDIBColorTable

-JNIEXPORT jint JNICALL OS_NATIVE(SetDIBColorTable)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jbyteArray arg3)

-{

-	jbyte *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SetDIBColorTable\n")

-	if (arg3) lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL);

-	rc = (jint)SetDIBColorTable((HDC)arg0, arg1, arg2, (RGBQUAD *)lparg3);

-	if (arg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "SetDIBColorTable\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetErrorMode

-JNIEXPORT jint JNICALL OS_NATIVE(SetErrorMode)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetErrorMode\n")

-	rc = (jint)SetErrorMode(arg0);

-	NATIVE_EXIT(env, that, "SetErrorMode\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetFocus

-JNIEXPORT jint JNICALL OS_NATIVE(SetFocus)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetFocus\n")

-	rc = (jint)SetFocus((HWND)arg0);

-	NATIVE_EXIT(env, that, "SetFocus\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetForegroundWindow

-JNIEXPORT jboolean JNICALL OS_NATIVE(SetForegroundWindow)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SetForegroundWindow\n")

-	rc = (jboolean)SetForegroundWindow((HWND)arg0);

-	NATIVE_EXIT(env, that, "SetForegroundWindow\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetMenu

-JNIEXPORT jboolean JNICALL OS_NATIVE(SetMenu)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SetMenu\n")

-	rc = (jboolean)SetMenu((HWND)arg0, (HMENU)arg1);

-	NATIVE_EXIT(env, that, "SetMenu\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetMenuDefaultItem

-JNIEXPORT jboolean JNICALL OS_NATIVE(SetMenuDefaultItem)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SetMenuDefaultItem\n")

-	rc = (jboolean)SetMenuDefaultItem((HMENU)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "SetMenuDefaultItem\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetMenuItemInfoA

-JNIEXPORT jboolean JNICALL OS_NATIVE(SetMenuItemInfoA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2, jobject arg3)

-{

-	MENUITEMINFO _arg3, *lparg3=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SetMenuItemInfoA\n")

-	if (arg3) lparg3 = getMENUITEMINFOFields(env, arg3, &_arg3);

-	rc = (jboolean)SetMenuItemInfoA((HMENU)arg0, arg1, arg2, lparg3);

-	if (arg3) setMENUITEMINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SetMenuItemInfoA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetMenuItemInfoW

-JNIEXPORT jboolean JNICALL OS_NATIVE(SetMenuItemInfoW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2, jobject arg3)

-{

-	MENUITEMINFO _arg3, *lparg3=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SetMenuItemInfoW\n")

-	if (arg3) lparg3 = getMENUITEMINFOFields(env, arg3, &_arg3);

-	rc = (jboolean)SetMenuItemInfoW((HMENU)arg0, arg1, arg2, (LPMENUITEMINFOW)lparg3);

-	if (arg3) setMENUITEMINFOFields(env, arg3, lparg3);

-	NATIVE_EXIT(env, that, "SetMenuItemInfoW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetPaletteEntries

-JNIEXPORT jint JNICALL OS_NATIVE(SetPaletteEntries)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jbyteArray arg3)

-{

-	jbyte *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SetPaletteEntries\n")

-	if (arg3) lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL);

-	rc = (jint)SetPaletteEntries((HPALETTE)arg0, arg1, arg2, (PALETTEENTRY *)lparg3);

-	if (arg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "SetPaletteEntries\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetParent

-JNIEXPORT jint JNICALL OS_NATIVE(SetParent)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetParent\n")

-	rc = (jint)SetParent((HWND)arg0, (HWND)arg1);

-	NATIVE_EXIT(env, that, "SetParent\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetPixel

-JNIEXPORT jint JNICALL OS_NATIVE(SetPixel)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetPixel\n")

-	rc = (jint)SetPixel((HDC)arg0, arg1, arg2, arg3);

-	NATIVE_EXIT(env, that, "SetPixel\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetROP2

-JNIEXPORT jint JNICALL OS_NATIVE(SetROP2)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetROP2\n")

-	rc = (jint)SetROP2((HDC)arg0, arg1);

-	NATIVE_EXIT(env, that, "SetROP2\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetRect

-JNIEXPORT jboolean JNICALL OS_NATIVE(SetRect)

-	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2, jint arg3, jint arg4)

-{

-	RECT _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SetRect\n")

-	if (arg0) lparg0 = getRECTFields(env, arg0, &_arg0);

-	rc = (jboolean)SetRect(lparg0, arg1, arg2, arg3, arg4);

-	if (arg0) setRECTFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "SetRect\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetRectRgn

-JNIEXPORT jboolean JNICALL OS_NATIVE(SetRectRgn)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SetRectRgn\n")

-	rc = (jboolean)SetRectRgn((HRGN)arg0, arg1, arg2, arg3, arg4);

-	NATIVE_EXIT(env, that, "SetRectRgn\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetScrollInfo

-JNIEXPORT jboolean JNICALL OS_NATIVE(SetScrollInfo)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2, jboolean arg3)

-{

-	SCROLLINFO _arg2, *lparg2=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SetScrollInfo\n")

-	if (arg2) lparg2 = getSCROLLINFOFields(env, arg2, &_arg2);

-	rc = (jboolean)SetScrollInfo((HWND)arg0, arg1, lparg2, arg3);

-	if (arg2) setSCROLLINFOFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "SetScrollInfo\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetStretchBltMode

-JNIEXPORT jint JNICALL OS_NATIVE(SetStretchBltMode)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetStretchBltMode\n")

-	rc = (jint)SetStretchBltMode((HDC)arg0, arg1);

-	NATIVE_EXIT(env, that, "SetStretchBltMode\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetTextAlign

-JNIEXPORT jint JNICALL OS_NATIVE(SetTextAlign)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetTextAlign\n")

-	rc = (jint)SetTextAlign((HDC)arg0, arg1);

-	NATIVE_EXIT(env, that, "SetTextAlign\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetTextColor

-JNIEXPORT jint JNICALL OS_NATIVE(SetTextColor)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetTextColor\n")

-	rc = (jint)SetTextColor((HDC)arg0, (COLORREF)arg1);

-	NATIVE_EXIT(env, that, "SetTextColor\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetTimer

-JNIEXPORT jint JNICALL OS_NATIVE(SetTimer)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetTimer\n")

-	rc = (jint)SetTimer((HWND)arg0, arg1, arg2, (TIMERPROC)arg3);

-	NATIVE_EXIT(env, that, "SetTimer\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetWindowLongA

-JNIEXPORT jint JNICALL OS_NATIVE(SetWindowLongA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetWindowLongA\n")

-	rc = (jint)SetWindowLongA((HWND)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "SetWindowLongA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetWindowLongW

-JNIEXPORT jint JNICALL OS_NATIVE(SetWindowLongW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetWindowLongW\n")

-	rc = (jint)SetWindowLongW((HWND)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "SetWindowLongW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetWindowPlacement

-JNIEXPORT jboolean JNICALL OS_NATIVE(SetWindowPlacement)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	WINDOWPLACEMENT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SetWindowPlacement\n")

-	if (arg1) lparg1 = getWINDOWPLACEMENTFields(env, arg1, &_arg1);

-	rc = (jboolean)SetWindowPlacement((HWND)arg0, lparg1);

-	if (arg1) setWINDOWPLACEMENTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "SetWindowPlacement\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetWindowPos

-JNIEXPORT jboolean JNICALL OS_NATIVE(SetWindowPos)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SetWindowPos\n")

-	rc = (jboolean)SetWindowPos((HWND)arg0, (HWND)arg1, arg2, arg3, arg4, arg5, arg6);

-	NATIVE_EXIT(env, that, "SetWindowPos\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetWindowTextA

-JNIEXPORT jboolean JNICALL OS_NATIVE(SetWindowTextA)

-	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1)

-{

-	jbyte *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SetWindowTextA\n")

-	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);

-	rc = (jboolean)SetWindowTextA((HWND)arg0, (LPSTR)lparg1);

-	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "SetWindowTextA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetWindowTextW

-JNIEXPORT jboolean JNICALL OS_NATIVE(SetWindowTextW)

-	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1)

-{

-	jchar *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SetWindowTextW\n")

-	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);

-	rc = (jboolean)SetWindowTextW((HWND)arg0, (LPWSTR)lparg1);

-	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "SetWindowTextW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetWindowsHookExA

-JNIEXPORT jint JNICALL OS_NATIVE(SetWindowsHookExA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetWindowsHookExA\n")

-	rc = (jint)SetWindowsHookExA(arg0, (HOOKPROC)arg1, (HINSTANCE)arg2, arg3);

-	NATIVE_EXIT(env, that, "SetWindowsHookExA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetWindowsHookExW

-JNIEXPORT jint JNICALL OS_NATIVE(SetWindowsHookExW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetWindowsHookExW\n")

-	rc = (jint)SetWindowsHookExW(arg0, (HOOKPROC)arg1, (HINSTANCE)arg2, arg3);

-	NATIVE_EXIT(env, that, "SetWindowsHookExW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ShellExecuteExA

-JNIEXPORT jboolean JNICALL OS_NATIVE(ShellExecuteExA)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	SHELLEXECUTEINFO _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ShellExecuteExA\n")

-	if (arg0) lparg0 = getSHELLEXECUTEINFOFields(env, arg0, &_arg0);

-	rc = (jboolean)ShellExecuteExA(lparg0);

-	if (arg0) setSHELLEXECUTEINFOFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "ShellExecuteExA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ShellExecuteExW

-JNIEXPORT jboolean JNICALL OS_NATIVE(ShellExecuteExW)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	SHELLEXECUTEINFO _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ShellExecuteExW\n")

-	if (arg0) lparg0 = getSHELLEXECUTEINFOFields(env, arg0, &_arg0);

-	rc = (jboolean)ShellExecuteExW((LPSHELLEXECUTEINFOW)lparg0);

-	if (arg0) setSHELLEXECUTEINFOFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "ShellExecuteExW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ShowCaret

-JNIEXPORT jboolean JNICALL OS_NATIVE(ShowCaret)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ShowCaret\n")

-	rc = (jboolean)ShowCaret((HWND)arg0);

-	NATIVE_EXIT(env, that, "ShowCaret\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ShowOwnedPopups

-JNIEXPORT jboolean JNICALL OS_NATIVE(ShowOwnedPopups)

-	(JNIEnv *env, jclass that, jint arg0, jboolean arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ShowOwnedPopups\n")

-	rc = (jboolean)ShowOwnedPopups((HWND)arg0, arg1);

-	NATIVE_EXIT(env, that, "ShowOwnedPopups\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ShowScrollBar

-JNIEXPORT jboolean JNICALL OS_NATIVE(ShowScrollBar)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ShowScrollBar\n")

-	rc = (jboolean)ShowScrollBar((HWND)arg0, arg1, arg2);

-	NATIVE_EXIT(env, that, "ShowScrollBar\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ShowWindow

-JNIEXPORT jboolean JNICALL OS_NATIVE(ShowWindow)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ShowWindow\n")

-	rc = (jboolean)ShowWindow((HWND)arg0, arg1);

-	NATIVE_EXIT(env, that, "ShowWindow\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SipGetInfo

-JNIEXPORT jboolean JNICALL OS_NATIVE(SipGetInfo)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	SIPINFO _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SipGetInfo\n")

-	if (arg0) lparg0 = getSIPINFOFields(env, arg0, &_arg0);

-	rc = (jboolean)SipGetInfo(lparg0);

-	if (arg0) setSIPINFOFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "SipGetInfo\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_StartDocA

-JNIEXPORT jint JNICALL OS_NATIVE(StartDocA)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	DOCINFO _arg1, *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "StartDocA\n")

-	if (arg1) lparg1 = getDOCINFOFields(env, arg1, &_arg1);

-	rc = (jint)StartDocA((HDC)arg0, lparg1);

-	if (arg1) setDOCINFOFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "StartDocA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_StartDocW

-JNIEXPORT jint JNICALL OS_NATIVE(StartDocW)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	DOCINFO _arg1, *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "StartDocW\n")

-	if (arg1) lparg1 = getDOCINFOFields(env, arg1, &_arg1);

-	rc = (jint)StartDocW((HDC)arg0, (LPDOCINFOW)lparg1);

-	if (arg1) setDOCINFOFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "StartDocW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_StartPage

-JNIEXPORT jint JNICALL OS_NATIVE(StartPage)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "StartPage\n")

-	rc = (jint)StartPage((HDC)arg0);

-	NATIVE_EXIT(env, that, "StartPage\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_StretchBlt

-JNIEXPORT jboolean JNICALL OS_NATIVE(StretchBlt)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8, jint arg9, jint arg10)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "StretchBlt\n")

-	rc = (jboolean)StretchBlt((HDC)arg0, arg1, arg2, arg3, arg4, (HDC)arg5, arg6, arg7, arg8, arg9, arg10);

-	NATIVE_EXIT(env, that, "StretchBlt\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSA_2I

-JNIEXPORT jboolean JNICALL OS_NATIVE(SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSA_2I)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2, jint arg3)

-{

-	NONCLIENTMETRICSA _arg2, *lparg2=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSA_2I\n")

-	if (arg2) lparg2 = getNONCLIENTMETRICSAFields(env, arg2, &_arg2);

-	rc = (jboolean)SystemParametersInfoA(arg0, arg1, lparg2, arg3);

-	if (arg2) setNONCLIENTMETRICSAFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSA_2I\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_RECT_2I

-JNIEXPORT jboolean JNICALL OS_NATIVE(SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_RECT_2I)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2, jint arg3)

-{

-	RECT _arg2, *lparg2=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_RECT_2I\n")

-	if (arg2) lparg2 = getRECTFields(env, arg2, &_arg2);

-	rc = (jboolean)SystemParametersInfoA(arg0, arg1, lparg2, arg3);

-	if (arg2) setRECTFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_RECT_2I\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SystemParametersInfoA__II_3II

-JNIEXPORT jboolean JNICALL OS_NATIVE(SystemParametersInfoA__II_3II)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jint arg3)

-{

-	jint *lparg2=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SystemParametersInfoA__II_3II\n")

-	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);

-	rc = (jboolean)SystemParametersInfoA(arg0, arg1, lparg2, arg3);

-	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);

-	NATIVE_EXIT(env, that, "SystemParametersInfoA__II_3II\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSW_2I

-JNIEXPORT jboolean JNICALL OS_NATIVE(SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSW_2I)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2, jint arg3)

-{

-	NONCLIENTMETRICSW _arg2, *lparg2=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSW_2I\n")

-	if (arg2) lparg2 = getNONCLIENTMETRICSWFields(env, arg2, &_arg2);

-	rc = (jboolean)SystemParametersInfoW(arg0, arg1, lparg2, arg3);

-	if (arg2) setNONCLIENTMETRICSWFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSW_2I\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_RECT_2I

-JNIEXPORT jboolean JNICALL OS_NATIVE(SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_RECT_2I)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2, jint arg3)

-{

-	RECT _arg2, *lparg2=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_RECT_2I\n")

-	if (arg2) lparg2 = getRECTFields(env, arg2, &_arg2);

-	rc = (jboolean)SystemParametersInfoW(arg0, arg1, lparg2, arg3);

-	if (arg2) setRECTFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_RECT_2I\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SystemParametersInfoW__II_3II

-JNIEXPORT jboolean JNICALL OS_NATIVE(SystemParametersInfoW__II_3II)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jint arg3)

-{

-	jint *lparg2=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SystemParametersInfoW__II_3II\n")

-	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);

-	rc = (jboolean)SystemParametersInfoW(arg0, arg1, lparg2, arg3);

-	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);

-	NATIVE_EXIT(env, that, "SystemParametersInfoW__II_3II\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ToAscii

-JNIEXPORT jint JNICALL OS_NATIVE(ToAscii)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jbyteArray arg2, jshortArray arg3, jint arg4)

-{

-	jbyte *lparg2=NULL;

-	jshort *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "ToAscii\n")

-	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);

-	if (arg3) lparg3 = (*env)->GetShortArrayElements(env, arg3, NULL);

-	rc = (jint)ToAscii(arg0, arg1, (PBYTE)lparg2, (LPWORD)lparg3, arg4);

-	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);

-	if (arg3) (*env)->ReleaseShortArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "ToAscii\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ToUnicode

-JNIEXPORT jint JNICALL OS_NATIVE(ToUnicode)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jbyteArray arg2, jcharArray arg3, jint arg4, jint arg5)

-{

-	jbyte *lparg2=NULL;

-	jchar *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "ToUnicode\n")

-	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);

-	if (arg3) lparg3 = (*env)->GetCharArrayElements(env, arg3, NULL);

-	rc = (jint)ToUnicode(arg0, arg1, (PBYTE)lparg2, (LPWSTR)lparg3, arg4, arg5);

-	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);

-	if (arg3) (*env)->ReleaseCharArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "ToUnicode\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_TrackMouseEvent

-JNIEXPORT jboolean JNICALL OS_NATIVE(TrackMouseEvent)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	TRACKMOUSEEVENT _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "TrackMouseEvent\n")

-	if (arg0) lparg0 = getTRACKMOUSEEVENTFields(env, arg0, &_arg0);

-	rc = (jboolean)TrackMouseEvent(lparg0);

-	if (arg0) setTRACKMOUSEEVENTFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "TrackMouseEvent\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_TrackPopupMenu

-JNIEXPORT jboolean JNICALL OS_NATIVE(TrackPopupMenu)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jobject arg6)

-{

-	RECT _arg6, *lparg6=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "TrackPopupMenu\n")

-	if (arg6) lparg6 = getRECTFields(env, arg6, &_arg6);

-	rc = (jboolean)TrackPopupMenu((HMENU)arg0, arg1, arg2, arg3, arg4, (HWND)arg5, lparg6);

-	if (arg6) setRECTFields(env, arg6, lparg6);

-	NATIVE_EXIT(env, that, "TrackPopupMenu\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_TranslateAcceleratorA

-JNIEXPORT jint JNICALL OS_NATIVE(TranslateAcceleratorA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)

-{

-	MSG _arg2, *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "TranslateAcceleratorA\n")

-	if (arg2) lparg2 = getMSGFields(env, arg2, &_arg2);

-	rc = (jint)TranslateAcceleratorA((HWND)arg0, (HACCEL)arg1, lparg2);

-	if (arg2) setMSGFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "TranslateAcceleratorA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_TranslateAcceleratorW

-JNIEXPORT jint JNICALL OS_NATIVE(TranslateAcceleratorW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)

-{

-	MSG _arg2, *lparg2=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "TranslateAcceleratorW\n")

-	if (arg2) lparg2 = getMSGFields(env, arg2, &_arg2);

-	rc = (jint)TranslateAcceleratorW((HWND)arg0, (HACCEL)arg1, lparg2);

-	if (arg2) setMSGFields(env, arg2, lparg2);

-	NATIVE_EXIT(env, that, "TranslateAcceleratorW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_TranslateCharsetInfo

-JNIEXPORT jboolean JNICALL OS_NATIVE(TranslateCharsetInfo)

-	(JNIEnv *env, jclass that, jint arg0, jintArray arg1, jint arg2)

-{

-	jint *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "TranslateCharsetInfo\n")

-	if (arg1) lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL);

-	rc = (jboolean)TranslateCharsetInfo((DWORD *)arg0, (LPCHARSETINFO)lparg1, arg2);

-	if (arg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);

-	NATIVE_EXIT(env, that, "TranslateCharsetInfo\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_TranslateMDISysAccel

-JNIEXPORT jboolean JNICALL OS_NATIVE(TranslateMDISysAccel)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	MSG _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "TranslateMDISysAccel\n")

-	if (arg1) lparg1 = getMSGFields(env, arg1, &_arg1);

-	rc = (jboolean)TranslateMDISysAccel((HWND)arg0, (LPMSG)lparg1);

-	if (arg1) setMSGFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "TranslateMDISysAccel\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_TranslateMessage

-JNIEXPORT jboolean JNICALL OS_NATIVE(TranslateMessage)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	MSG _arg0, *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "TranslateMessage\n")

-	if (arg0) lparg0 = getMSGFields(env, arg0, &_arg0);

-	rc = (jboolean)TranslateMessage(lparg0);

-	if (arg0) setMSGFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "TranslateMessage\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_TransparentImage

-JNIEXPORT jboolean JNICALL OS_NATIVE(TransparentImage)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8, jint arg9, jint arg10)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "TransparentImage\n")

-	rc = (jboolean)TransparentImage((HDC)arg0, arg1, arg2, arg3, arg4, (HANDLE)arg5, arg6, arg7, arg8, arg9, (COLORREF)arg10);

-	NATIVE_EXIT(env, that, "TransparentImage\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_UnhookWindowsHookEx

-JNIEXPORT jboolean JNICALL OS_NATIVE(UnhookWindowsHookEx)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "UnhookWindowsHookEx\n")

-	rc = (jboolean)UnhookWindowsHookEx((HHOOK)arg0);

-	NATIVE_EXIT(env, that, "UnhookWindowsHookEx\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_UnregisterClassA

-JNIEXPORT jboolean JNICALL OS_NATIVE(UnregisterClassA)

-	(JNIEnv *env, jclass that, jbyteArray arg0, jint arg1)

-{

-	jbyte *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "UnregisterClassA\n")

-	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);

-	rc = (jboolean)UnregisterClassA((LPSTR)lparg0, (HINSTANCE)arg1);

-	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "UnregisterClassA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_UnregisterClassW

-JNIEXPORT jboolean JNICALL OS_NATIVE(UnregisterClassW)

-	(JNIEnv *env, jclass that, jcharArray arg0, jint arg1)

-{

-	jchar *lparg0=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "UnregisterClassW\n")

-	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);

-	rc = (jboolean)UnregisterClassW((LPWSTR)lparg0, (HINSTANCE)arg1);

-	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);

-	NATIVE_EXIT(env, that, "UnregisterClassW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_UpdateWindow

-JNIEXPORT jboolean JNICALL OS_NATIVE(UpdateWindow)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "UpdateWindow\n")

-	rc = (jboolean)UpdateWindow((HWND)arg0);

-	NATIVE_EXIT(env, that, "UpdateWindow\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_ValidateRect

-JNIEXPORT jboolean JNICALL OS_NATIVE(ValidateRect)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	RECT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "ValidateRect\n")

-	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);

-	rc = (jboolean)ValidateRect((HWND)arg0, lparg1);

-	if (arg1) setRECTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "ValidateRect\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_VkKeyScanA

-JNIEXPORT jshort JNICALL OS_NATIVE(VkKeyScanA)

-	(JNIEnv *env, jclass that, jshort arg0)

-{

-	jshort rc;

-	NATIVE_ENTER(env, that, "VkKeyScanA\n")

-	rc = (jshort)VkKeyScanA((TCHAR)arg0);

-	NATIVE_EXIT(env, that, "VkKeyScanA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_VkKeyScanW

-JNIEXPORT jshort JNICALL OS_NATIVE(VkKeyScanW)

-	(JNIEnv *env, jclass that, jshort arg0)

-{

-	jshort rc;

-	NATIVE_ENTER(env, that, "VkKeyScanW\n")

-	rc = (jshort)VkKeyScanW((WCHAR)arg0);

-	NATIVE_EXIT(env, that, "VkKeyScanW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_WaitMessage

-JNIEXPORT jboolean JNICALL OS_NATIVE(WaitMessage)

-	(JNIEnv *env, jclass that)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "WaitMessage\n")

-	rc = (jboolean)WaitMessage();

-	NATIVE_EXIT(env, that, "WaitMessage\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_WideCharToMultiByte__II_3CIII_3B_3Z

-JNIEXPORT jint JNICALL OS_NATIVE(WideCharToMultiByte__II_3CIII_3B_3Z)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jcharArray arg2, jint arg3, jint arg4, jint arg5, jbyteArray arg6, jbooleanArray arg7)

-{

-	jchar *lparg2=NULL;

-	jbyte *lparg6=NULL;

-	jboolean *lparg7=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "WideCharToMultiByte__II_3CIII_3B_3Z\n")

-	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);

-	if (arg6) lparg6 = (*env)->GetByteArrayElements(env, arg6, NULL);

-	if (arg7) lparg7 = (*env)->GetBooleanArrayElements(env, arg7, NULL);

-	rc = (jint)WideCharToMultiByte(arg0, arg1, (LPCWSTR)lparg2, arg3, (LPSTR)arg4, arg5, (LPCSTR)lparg6, (LPBOOL)lparg7);

-	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);

-	if (arg6) (*env)->ReleaseByteArrayElements(env, arg6, lparg6, 0);

-	if (arg7) (*env)->ReleaseBooleanArrayElements(env, arg7, lparg7, 0);

-	NATIVE_EXIT(env, that, "WideCharToMultiByte__II_3CIII_3B_3Z\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_WideCharToMultiByte__II_3CI_3BI_3B_3Z

-JNIEXPORT jint JNICALL OS_NATIVE(WideCharToMultiByte__II_3CI_3BI_3B_3Z)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jcharArray arg2, jint arg3, jbyteArray arg4, jint arg5, jbyteArray arg6, jbooleanArray arg7)

-{

-	jchar *lparg2=NULL;

-	jbyte *lparg4=NULL;

-	jbyte *lparg6=NULL;

-	jboolean *lparg7=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "WideCharToMultiByte__II_3CI_3BI_3B_3Z\n")

-	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);

-	if (arg4) lparg4 = (*env)->GetByteArrayElements(env, arg4, NULL);

-	if (arg6) lparg6 = (*env)->GetByteArrayElements(env, arg6, NULL);

-	if (arg7) lparg7 = (*env)->GetBooleanArrayElements(env, arg7, NULL);

-	rc = (jint)WideCharToMultiByte(arg0, arg1, (LPCWSTR)lparg2, arg3, (LPSTR)lparg4, arg5, (LPCSTR)lparg6, (LPBOOL)lparg7);

-	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);

-	if (arg4) (*env)->ReleaseByteArrayElements(env, arg4, lparg4, 0);

-	if (arg6) (*env)->ReleaseByteArrayElements(env, arg6, lparg6, 0);

-	if (arg7) (*env)->ReleaseBooleanArrayElements(env, arg7, lparg7, 0);

-	NATIVE_EXIT(env, that, "WideCharToMultiByte__II_3CI_3BI_3B_3Z\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_WindowFromDC

-JNIEXPORT jint JNICALL OS_NATIVE(WindowFromDC)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "WindowFromDC\n")

-	rc = (jint)WindowFromDC((HDC)arg0);

-	NATIVE_EXIT(env, that, "WindowFromDC\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_WindowFromPoint

-JNIEXPORT jint JNICALL OS_NATIVE(WindowFromPoint)

-	(JNIEnv *env, jclass that, jobject arg0)

-{

-	POINT _arg0, *lparg0=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "WindowFromPoint\n")

-	if (arg0) lparg0 = getPOINTFields(env, arg0, &_arg0);

-	rc = (jint)WindowFromPoint(*lparg0);

-	if (arg0) setPOINTFields(env, arg0, lparg0);

-	NATIVE_EXIT(env, that, "WindowFromPoint\n")

-	return rc;

-}

-#endif

-

+/*******************************************************************************
+* Copyright (c) 2000, 2003 IBM Corporation and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Common Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/cpl-v10.html
+* 
+* Contributors:
+*     IBM Corporation - initial API and implementation
+*******************************************************************************/
+
+#include "swt.h"
+#include "os_structs.h"
+
+#define OS_NATIVE(func) Java_org_eclipse_swt_internal_win32_OS_##func
+
+#ifndef NO_AbortDoc
+JNIEXPORT jint JNICALL OS_NATIVE(AbortDoc)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "AbortDoc\n")
+	rc = (jint)AbortDoc((HDC)arg0);
+	NATIVE_EXIT(env, that, "AbortDoc\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ActivateKeyboardLayout
+JNIEXPORT jint JNICALL OS_NATIVE(ActivateKeyboardLayout)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "ActivateKeyboardLayout\n")
+	rc = (jint)ActivateKeyboardLayout((HKL)arg0, arg1);
+	NATIVE_EXIT(env, that, "ActivateKeyboardLayout\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_AdjustWindowRectEx
+JNIEXPORT jboolean JNICALL OS_NATIVE(AdjustWindowRectEx)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jboolean arg2, jint arg3)
+{
+	RECT _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "AdjustWindowRectEx\n")
+	if (arg0) lparg0 = getRECTFields(env, arg0, &_arg0);
+	rc = (jboolean)AdjustWindowRectEx(lparg0, arg1, arg2, arg3);
+	if (arg0) setRECTFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "AdjustWindowRectEx\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_Arc
+JNIEXPORT jboolean JNICALL OS_NATIVE(Arc)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "Arc\n")
+	rc = (jboolean)Arc((HDC)arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
+	NATIVE_EXIT(env, that, "Arc\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_BeginDeferWindowPos
+JNIEXPORT jint JNICALL OS_NATIVE(BeginDeferWindowPos)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "BeginDeferWindowPos\n")
+	rc = (jint)BeginDeferWindowPos(arg0);
+	NATIVE_EXIT(env, that, "BeginDeferWindowPos\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_BeginPaint
+JNIEXPORT jint JNICALL OS_NATIVE(BeginPaint)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	PAINTSTRUCT _arg1, *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "BeginPaint\n")
+	if (arg1) lparg1 = getPAINTSTRUCTFields(env, arg1, &_arg1);
+	rc = (jint)BeginPaint((HWND)arg0, lparg1);
+	if (arg1) setPAINTSTRUCTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "BeginPaint\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_BitBlt
+JNIEXPORT jboolean JNICALL OS_NATIVE(BitBlt)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "BitBlt\n")
+	rc = (jboolean)BitBlt((HDC)arg0, arg1, arg2, arg3, arg4, (HDC)arg5, arg6, arg7, arg8);
+	NATIVE_EXIT(env, that, "BitBlt\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_BringWindowToTop
+JNIEXPORT jboolean JNICALL OS_NATIVE(BringWindowToTop)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "BringWindowToTop\n")
+	rc = (jboolean)BringWindowToTop((HWND)arg0);
+	NATIVE_EXIT(env, that, "BringWindowToTop\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CallNextHookEx
+JNIEXPORT jint JNICALL OS_NATIVE(CallNextHookEx)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CallNextHookEx\n")
+	rc = (jint)CallNextHookEx((HHOOK)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);
+	NATIVE_EXIT(env, that, "CallNextHookEx\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CallWindowProcA
+JNIEXPORT jint JNICALL OS_NATIVE(CallWindowProcA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CallWindowProcA\n")
+	rc = (jint)CallWindowProcA((WNDPROC)arg0, (HWND)arg1, arg2, arg3, arg4);
+	NATIVE_EXIT(env, that, "CallWindowProcA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CallWindowProcW
+JNIEXPORT jint JNICALL OS_NATIVE(CallWindowProcW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CallWindowProcW\n")
+	rc = (jint)CallWindowProcW((WNDPROC)arg0, (HWND)arg1, arg2, arg3, arg4);
+	NATIVE_EXIT(env, that, "CallWindowProcW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CharLowerA
+JNIEXPORT jshort JNICALL OS_NATIVE(CharLowerA)
+	(JNIEnv *env, jclass that, jshort arg0)
+{
+	jshort rc;
+	NATIVE_ENTER(env, that, "CharLowerA\n")
+	rc = (jshort)CharLowerA((LPSTR)arg0);
+	NATIVE_EXIT(env, that, "CharLowerA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CharLowerW
+JNIEXPORT jshort JNICALL OS_NATIVE(CharLowerW)
+	(JNIEnv *env, jclass that, jshort arg0)
+{
+	jshort rc;
+	NATIVE_ENTER(env, that, "CharLowerW\n")
+	rc = (jshort)CharLowerW((LPWSTR)arg0);
+	NATIVE_EXIT(env, that, "CharLowerW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CharUpperA
+JNIEXPORT jshort JNICALL OS_NATIVE(CharUpperA)
+	(JNIEnv *env, jclass that, jshort arg0)
+{
+	jshort rc;
+	NATIVE_ENTER(env, that, "CharUpperA\n")
+	rc = (jshort)CharUpperA((LPSTR)arg0);
+	NATIVE_EXIT(env, that, "CharUpperA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CharUpperW
+JNIEXPORT jshort JNICALL OS_NATIVE(CharUpperW)
+	(JNIEnv *env, jclass that, jshort arg0)
+{
+	jshort rc;
+	NATIVE_ENTER(env, that, "CharUpperW\n")
+	rc = (jshort)CharUpperW((LPWSTR)arg0);
+	NATIVE_EXIT(env, that, "CharUpperW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CheckMenuItem
+JNIEXPORT jboolean JNICALL OS_NATIVE(CheckMenuItem)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "CheckMenuItem\n")
+	rc = (jboolean)CheckMenuItem((HMENU)arg0, (UINT)arg1, (UINT)arg2);
+	NATIVE_EXIT(env, that, "CheckMenuItem\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ChooseColorA
+JNIEXPORT jboolean JNICALL OS_NATIVE(ChooseColorA)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	CHOOSECOLOR _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ChooseColorA\n")
+	if (arg0) lparg0 = getCHOOSECOLORFields(env, arg0, &_arg0);
+	rc = (jboolean)ChooseColorA(lparg0);
+	if (arg0) setCHOOSECOLORFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "ChooseColorA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ChooseColorW
+JNIEXPORT jboolean JNICALL OS_NATIVE(ChooseColorW)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	CHOOSECOLOR _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ChooseColorW\n")
+	if (arg0) lparg0 = getCHOOSECOLORFields(env, arg0, &_arg0);
+	rc = (jboolean)ChooseColorW((LPCHOOSECOLORW)lparg0);
+	if (arg0) setCHOOSECOLORFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "ChooseColorW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ChooseFontA
+JNIEXPORT jboolean JNICALL OS_NATIVE(ChooseFontA)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	CHOOSEFONT _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ChooseFontA\n")
+	if (arg0) lparg0 = getCHOOSEFONTFields(env, arg0, &_arg0);
+	rc = (jboolean)ChooseFontA(lparg0);
+	if (arg0) setCHOOSEFONTFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "ChooseFontA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ChooseFontW
+JNIEXPORT jboolean JNICALL OS_NATIVE(ChooseFontW)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	CHOOSEFONT _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ChooseFontW\n")
+	if (arg0) lparg0 = getCHOOSEFONTFields(env, arg0, &_arg0);
+	rc = (jboolean)ChooseFontW((LPCHOOSEFONTW)lparg0);
+	if (arg0) setCHOOSEFONTFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "ChooseFontW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ClientToScreen
+JNIEXPORT jboolean JNICALL OS_NATIVE(ClientToScreen)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	POINT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ClientToScreen\n")
+	if (arg1) lparg1 = getPOINTFields(env, arg1, &_arg1);
+	rc = (jboolean)ClientToScreen((HWND)arg0, lparg1);
+	if (arg1) setPOINTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "ClientToScreen\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CloseClipboard
+JNIEXPORT jboolean JNICALL OS_NATIVE(CloseClipboard)
+	(JNIEnv *env, jclass that)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "CloseClipboard\n")
+	rc = (jboolean)CloseClipboard();
+	NATIVE_EXIT(env, that, "CloseClipboard\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CombineRgn
+JNIEXPORT jint JNICALL OS_NATIVE(CombineRgn)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CombineRgn\n")
+	rc = (jint)CombineRgn((HRGN)arg0, (HRGN)arg1, (HRGN)arg2, arg3);
+	NATIVE_EXIT(env, that, "CombineRgn\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CommDlgExtendedError
+JNIEXPORT jint JNICALL OS_NATIVE(CommDlgExtendedError)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CommDlgExtendedError\n")
+	rc = (jint)CommDlgExtendedError();
+	NATIVE_EXIT(env, that, "CommDlgExtendedError\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CommandBar_1AddAdornments
+JNIEXPORT jboolean JNICALL OS_NATIVE(CommandBar_1AddAdornments)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "CommandBar_1AddAdornments\n")
+	rc = (jboolean)CommandBar_AddAdornments((HWND)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "CommandBar_1AddAdornments\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CommandBar_1Create
+JNIEXPORT jint JNICALL OS_NATIVE(CommandBar_1Create)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CommandBar_1Create\n")
+	rc = (jint)CommandBar_Create((HINSTANCE)arg0, (HWND)arg1, arg2);
+	NATIVE_EXIT(env, that, "CommandBar_1Create\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CommandBar_1Destroy
+JNIEXPORT void JNICALL OS_NATIVE(CommandBar_1Destroy)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	NATIVE_ENTER(env, that, "CommandBar_1Destroy\n")
+	CommandBar_Destroy((HWND)arg0);
+	NATIVE_EXIT(env, that, "CommandBar_1Destroy\n")
+}
+#endif
+
+#ifndef NO_CommandBar_1DrawMenuBar
+JNIEXPORT jboolean JNICALL OS_NATIVE(CommandBar_1DrawMenuBar)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "CommandBar_1DrawMenuBar\n")
+	rc = (jboolean)CommandBar_DrawMenuBar((HWND)arg0, (WORD)arg1);
+	NATIVE_EXIT(env, that, "CommandBar_1DrawMenuBar\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CommandBar_1Height
+JNIEXPORT jint JNICALL OS_NATIVE(CommandBar_1Height)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CommandBar_1Height\n")
+	rc = (jint)CommandBar_Height((HWND)arg0);
+	NATIVE_EXIT(env, that, "CommandBar_1Height\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CommandBar_1InsertMenubarEx
+JNIEXPORT jboolean JNICALL OS_NATIVE(CommandBar_1InsertMenubarEx)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "CommandBar_1InsertMenubarEx\n")
+	rc = (jboolean)CommandBar_InsertMenubarEx((HWND)arg0, (HINSTANCE)arg1, (LPTSTR)arg2, (WORD)arg3);
+	NATIVE_EXIT(env, that, "CommandBar_1InsertMenubarEx\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CommandBar_1Show
+JNIEXPORT jboolean JNICALL OS_NATIVE(CommandBar_1Show)
+	(JNIEnv *env, jclass that, jint arg0, jboolean arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "CommandBar_1Show\n")
+	rc = (jboolean)CommandBar_Show((HWND)arg0, (BOOL)arg1);
+	NATIVE_EXIT(env, that, "CommandBar_1Show\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CopyImage
+JNIEXPORT jint JNICALL OS_NATIVE(CopyImage)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CopyImage\n")
+	rc = (jint)CopyImage((HANDLE)arg0, arg1, arg2, arg3, arg4);
+	NATIVE_EXIT(env, that, "CopyImage\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateAcceleratorTableA
+JNIEXPORT jint JNICALL OS_NATIVE(CreateAcceleratorTableA)
+	(JNIEnv *env, jclass that, jbyteArray arg0, jint arg1)
+{
+	jbyte *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateAcceleratorTableA\n")
+	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);
+	rc = (jint)CreateAcceleratorTableA((LPACCEL)lparg0, arg1);
+	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "CreateAcceleratorTableA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateAcceleratorTableW
+JNIEXPORT jint JNICALL OS_NATIVE(CreateAcceleratorTableW)
+	(JNIEnv *env, jclass that, jbyteArray arg0, jint arg1)
+{
+	jbyte *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateAcceleratorTableW\n")
+	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);
+	rc = (jint)CreateAcceleratorTableW((LPACCEL)lparg0, arg1);
+	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "CreateAcceleratorTableW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateBitmap
+JNIEXPORT jint JNICALL OS_NATIVE(CreateBitmap)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jbyteArray arg4)
+{
+	jbyte *lparg4=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateBitmap\n")
+	if (arg4) lparg4 = (*env)->GetByteArrayElements(env, arg4, NULL);
+	rc = (jint)CreateBitmap(arg0, arg1, arg2, arg3, (CONST VOID *)lparg4);
+	if (arg4) (*env)->ReleaseByteArrayElements(env, arg4, lparg4, 0);
+	NATIVE_EXIT(env, that, "CreateBitmap\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateCaret
+JNIEXPORT jboolean JNICALL OS_NATIVE(CreateCaret)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "CreateCaret\n")
+	rc = (jboolean)CreateCaret((HWND)arg0, (HBITMAP)arg1, arg2, arg3);
+	NATIVE_EXIT(env, that, "CreateCaret\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateCompatibleBitmap
+JNIEXPORT jint JNICALL OS_NATIVE(CreateCompatibleBitmap)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateCompatibleBitmap\n")
+	rc = (jint)CreateCompatibleBitmap((HDC)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "CreateCompatibleBitmap\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateCompatibleDC
+JNIEXPORT jint JNICALL OS_NATIVE(CreateCompatibleDC)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateCompatibleDC\n")
+	rc = (jint)CreateCompatibleDC((HDC)arg0);
+	NATIVE_EXIT(env, that, "CreateCompatibleDC\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateCursor
+JNIEXPORT jint JNICALL OS_NATIVE(CreateCursor)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jbyteArray arg5, jbyteArray arg6)
+{
+	jbyte *lparg5=NULL;
+	jbyte *lparg6=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateCursor\n")
+	if (arg5) lparg5 = (*env)->GetByteArrayElements(env, arg5, NULL);
+	if (arg6) lparg6 = (*env)->GetByteArrayElements(env, arg6, NULL);
+	rc = (jint)CreateCursor((HINSTANCE)arg0, arg1, arg2, arg3, arg4, (CONST VOID *)lparg5, (CONST VOID *)lparg6);
+	if (arg5) (*env)->ReleaseByteArrayElements(env, arg5, lparg5, 0);
+	if (arg6) (*env)->ReleaseByteArrayElements(env, arg6, lparg6, 0);
+	NATIVE_EXIT(env, that, "CreateCursor\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateDCA
+JNIEXPORT jint JNICALL OS_NATIVE(CreateDCA)
+	(JNIEnv *env, jclass that, jbyteArray arg0, jbyteArray arg1, jint arg2, jint arg3)
+{
+	jbyte *lparg0=NULL;
+	jbyte *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateDCA\n")
+	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	rc = (jint)CreateDCA((LPSTR)lparg0, (LPSTR)lparg1, (LPSTR)arg2, (CONST DEVMODE *)arg3);
+	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "CreateDCA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateDCW
+JNIEXPORT jint JNICALL OS_NATIVE(CreateDCW)
+	(JNIEnv *env, jclass that, jcharArray arg0, jcharArray arg1, jint arg2, jint arg3)
+{
+	jchar *lparg0=NULL;
+	jchar *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateDCW\n")
+	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	rc = (jint)CreateDCW((LPWSTR)lparg0, (LPWSTR)lparg1, (LPWSTR)arg2, (CONST DEVMODEW *)arg3);
+	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "CreateDCW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateDIBSection
+JNIEXPORT jint JNICALL OS_NATIVE(CreateDIBSection)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2, jintArray arg3, jint arg4, jint arg5)
+{
+	jbyte *lparg1=NULL;
+	jint *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateDIBSection\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);
+	rc = (jint)CreateDIBSection((HDC)arg0, (BITMAPINFO *)lparg1, arg2, (VOID **)lparg3, (HANDLE)arg4, arg5);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "CreateDIBSection\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateFontIndirectA__I
+JNIEXPORT jint JNICALL OS_NATIVE(CreateFontIndirectA__I)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateFontIndirectA__I\n")
+	rc = (jint)CreateFontIndirectA((LPLOGFONTA)arg0);
+	NATIVE_EXIT(env, that, "CreateFontIndirectA__I\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateFontIndirectA__Lorg_eclipse_swt_internal_win32_LOGFONTA_2
+JNIEXPORT jint JNICALL OS_NATIVE(CreateFontIndirectA__Lorg_eclipse_swt_internal_win32_LOGFONTA_2)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	LOGFONTA _arg0, *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateFontIndirectA__Lorg_eclipse_swt_internal_win32_LOGFONTA_2\n")
+	if (arg0) lparg0 = getLOGFONTAFields(env, arg0, &_arg0);
+	rc = (jint)CreateFontIndirectA(lparg0);
+	if (arg0) setLOGFONTAFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "CreateFontIndirectA__Lorg_eclipse_swt_internal_win32_LOGFONTA_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateFontIndirectW__I
+JNIEXPORT jint JNICALL OS_NATIVE(CreateFontIndirectW__I)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateFontIndirectW__I\n")
+	rc = (jint)CreateFontIndirectW((LPLOGFONTW)arg0);
+	NATIVE_EXIT(env, that, "CreateFontIndirectW__I\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateFontIndirectW__Lorg_eclipse_swt_internal_win32_LOGFONTW_2
+JNIEXPORT jint JNICALL OS_NATIVE(CreateFontIndirectW__Lorg_eclipse_swt_internal_win32_LOGFONTW_2)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	LOGFONTW _arg0, *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateFontIndirectW__Lorg_eclipse_swt_internal_win32_LOGFONTW_2\n")
+	if (arg0) lparg0 = getLOGFONTWFields(env, arg0, &_arg0);
+	rc = (jint)CreateFontIndirectW(lparg0);
+	if (arg0) setLOGFONTWFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "CreateFontIndirectW__Lorg_eclipse_swt_internal_win32_LOGFONTW_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateIconIndirect
+JNIEXPORT jint JNICALL OS_NATIVE(CreateIconIndirect)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	ICONINFO _arg0, *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateIconIndirect\n")
+	if (arg0) lparg0 = getICONINFOFields(env, arg0, &_arg0);
+	rc = (jint)CreateIconIndirect(lparg0);
+	if (arg0) setICONINFOFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "CreateIconIndirect\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateMenu
+JNIEXPORT jint JNICALL OS_NATIVE(CreateMenu)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateMenu\n")
+	rc = (jint)CreateMenu();
+	NATIVE_EXIT(env, that, "CreateMenu\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreatePalette
+JNIEXPORT jint JNICALL OS_NATIVE(CreatePalette)
+	(JNIEnv *env, jclass that, jbyteArray arg0)
+{
+	jbyte *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "CreatePalette\n")
+	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);
+	rc = (jint)CreatePalette((LOGPALETTE *)lparg0);
+	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "CreatePalette\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreatePatternBrush
+JNIEXPORT jint JNICALL OS_NATIVE(CreatePatternBrush)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CreatePatternBrush\n")
+	rc = (jint)CreatePatternBrush((HBITMAP)arg0);
+	NATIVE_EXIT(env, that, "CreatePatternBrush\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreatePen
+JNIEXPORT jint JNICALL OS_NATIVE(CreatePen)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CreatePen\n")
+	rc = (jint)CreatePen(arg0, arg1, (COLORREF)arg2);
+	NATIVE_EXIT(env, that, "CreatePen\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreatePopupMenu
+JNIEXPORT jint JNICALL OS_NATIVE(CreatePopupMenu)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CreatePopupMenu\n")
+	rc = (jint)CreatePopupMenu();
+	NATIVE_EXIT(env, that, "CreatePopupMenu\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateRectRgn
+JNIEXPORT jint JNICALL OS_NATIVE(CreateRectRgn)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateRectRgn\n")
+	rc = (jint)CreateRectRgn(arg0, arg1, arg2, arg3);
+	NATIVE_EXIT(env, that, "CreateRectRgn\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateSolidBrush
+JNIEXPORT jint JNICALL OS_NATIVE(CreateSolidBrush)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateSolidBrush\n")
+	rc = (jint)CreateSolidBrush((COLORREF)arg0);
+	NATIVE_EXIT(env, that, "CreateSolidBrush\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateWindowExA
+JNIEXPORT jint JNICALL OS_NATIVE(CreateWindowExA)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jbyteArray arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8, jint arg9, jint arg10, jobject arg11)
+{
+	jbyte *lparg1=NULL;
+	jbyte *lparg2=NULL;
+	CREATESTRUCT _arg11, *lparg11=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateWindowExA\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);
+	if (arg11) lparg11 = getCREATESTRUCTFields(env, arg11, &_arg11);
+	rc = (jint)CreateWindowExA(arg0, (LPSTR)lparg1, lparg2, arg3, arg4, arg5, arg6, arg7, (HWND)arg8, (HMENU)arg9, (HINSTANCE)arg10, lparg11);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);
+	if (arg11) setCREATESTRUCTFields(env, arg11, lparg11);
+	NATIVE_EXIT(env, that, "CreateWindowExA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_CreateWindowExW
+JNIEXPORT jint JNICALL OS_NATIVE(CreateWindowExW)
+	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jcharArray arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8, jint arg9, jint arg10, jobject arg11)
+{
+	jchar *lparg1=NULL;
+	jchar *lparg2=NULL;
+	CREATESTRUCT _arg11, *lparg11=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "CreateWindowExW\n")
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);
+	if (arg11) lparg11 = getCREATESTRUCTFields(env, arg11, &_arg11);
+	rc = (jint)CreateWindowExW(arg0, (LPWSTR)lparg1, (LPWSTR)lparg2, arg3, arg4, arg5, arg6, arg7, (HWND)arg8, (HMENU)arg9, (HINSTANCE)arg10, lparg11);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);
+	if (arg11) setCREATESTRUCTFields(env, arg11, lparg11);
+	NATIVE_EXIT(env, that, "CreateWindowExW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DefFrameProcA
+JNIEXPORT jint JNICALL OS_NATIVE(DefFrameProcA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "DefFrameProcA\n")
+	rc = (jint)DefFrameProcA((HWND)arg0, (HWND)arg1, arg2, (WPARAM)arg3, (LPARAM)arg4);
+	NATIVE_EXIT(env, that, "DefFrameProcA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DefFrameProcW
+JNIEXPORT jint JNICALL OS_NATIVE(DefFrameProcW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "DefFrameProcW\n")
+	rc = (jint)DefFrameProcW((HWND)arg0, (HWND)arg1, arg2, (WPARAM)arg3, (LPARAM)arg4);
+	NATIVE_EXIT(env, that, "DefFrameProcW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DefMDIChildProcA
+JNIEXPORT jint JNICALL OS_NATIVE(DefMDIChildProcA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "DefMDIChildProcA\n")
+	rc = (jint)DefMDIChildProcA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);
+	NATIVE_EXIT(env, that, "DefMDIChildProcA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DefMDIChildProcW
+JNIEXPORT jint JNICALL OS_NATIVE(DefMDIChildProcW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "DefMDIChildProcW\n")
+	rc = (jint)DefMDIChildProcW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);
+	NATIVE_EXIT(env, that, "DefMDIChildProcW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DefWindowProcA
+JNIEXPORT jint JNICALL OS_NATIVE(DefWindowProcA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "DefWindowProcA\n")
+	rc = (jint)DefWindowProcA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);
+	NATIVE_EXIT(env, that, "DefWindowProcA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DefWindowProcW
+JNIEXPORT jint JNICALL OS_NATIVE(DefWindowProcW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "DefWindowProcW\n")
+	rc = (jint)DefWindowProcW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);
+	NATIVE_EXIT(env, that, "DefWindowProcW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DeferWindowPos
+JNIEXPORT jint JNICALL OS_NATIVE(DeferWindowPos)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "DeferWindowPos\n")
+	rc = (jint)DeferWindowPos((HDWP)arg0, (HWND)arg1, (HWND)arg2, arg3, arg4, arg5, arg6, arg7);
+	NATIVE_EXIT(env, that, "DeferWindowPos\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DeleteDC
+JNIEXPORT jboolean JNICALL OS_NATIVE(DeleteDC)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DeleteDC\n")
+	rc = (jboolean)DeleteDC((HDC)arg0);
+	NATIVE_EXIT(env, that, "DeleteDC\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DeleteMenu
+JNIEXPORT jboolean JNICALL OS_NATIVE(DeleteMenu)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DeleteMenu\n")
+	rc = (jboolean)DeleteMenu((HMENU)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "DeleteMenu\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DeleteObject
+JNIEXPORT jboolean JNICALL OS_NATIVE(DeleteObject)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DeleteObject\n")
+	rc = (jboolean)DeleteObject((HGDIOBJ)arg0);
+	NATIVE_EXIT(env, that, "DeleteObject\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DestroyAcceleratorTable
+JNIEXPORT jboolean JNICALL OS_NATIVE(DestroyAcceleratorTable)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DestroyAcceleratorTable\n")
+	rc = (jboolean)DestroyAcceleratorTable((HACCEL)arg0);
+	NATIVE_EXIT(env, that, "DestroyAcceleratorTable\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DestroyCaret
+JNIEXPORT jboolean JNICALL OS_NATIVE(DestroyCaret)
+	(JNIEnv *env, jclass that)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DestroyCaret\n")
+	rc = (jboolean)DestroyCaret();
+	NATIVE_EXIT(env, that, "DestroyCaret\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DestroyCursor
+JNIEXPORT jboolean JNICALL OS_NATIVE(DestroyCursor)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DestroyCursor\n")
+	rc = (jboolean)DestroyCursor((HCURSOR)arg0);
+	NATIVE_EXIT(env, that, "DestroyCursor\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DestroyIcon
+JNIEXPORT jboolean JNICALL OS_NATIVE(DestroyIcon)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DestroyIcon\n")
+	rc = (jboolean)DestroyIcon((HICON)arg0);
+	NATIVE_EXIT(env, that, "DestroyIcon\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DestroyMenu
+JNIEXPORT jboolean JNICALL OS_NATIVE(DestroyMenu)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DestroyMenu\n")
+	rc = (jboolean)DestroyMenu((HMENU)arg0);
+	NATIVE_EXIT(env, that, "DestroyMenu\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DestroyWindow
+JNIEXPORT jboolean JNICALL OS_NATIVE(DestroyWindow)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DestroyWindow\n")
+	rc = (jboolean)DestroyWindow((HWND)arg0);
+	NATIVE_EXIT(env, that, "DestroyWindow\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DispatchMessageA
+JNIEXPORT jint JNICALL OS_NATIVE(DispatchMessageA)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	MSG _arg0, *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "DispatchMessageA\n")
+	if (arg0) lparg0 = getMSGFields(env, arg0, &_arg0);
+	rc = (jint)DispatchMessageA(lparg0);
+	if (arg0) setMSGFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "DispatchMessageA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DispatchMessageW
+JNIEXPORT jint JNICALL OS_NATIVE(DispatchMessageW)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	MSG _arg0, *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "DispatchMessageW\n")
+	if (arg0) lparg0 = getMSGFields(env, arg0, &_arg0);
+	rc = (jint)DispatchMessageW(lparg0);
+	if (arg0) setMSGFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "DispatchMessageW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DragDetect
+JNIEXPORT jboolean JNICALL OS_NATIVE(DragDetect)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	POINT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DragDetect\n")
+	if (arg1) lparg1 = getPOINTFields(env, arg1, &_arg1);
+	rc = (jboolean)DragDetect((HWND)arg0, *lparg1);
+	if (arg1) setPOINTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "DragDetect\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DragFinish
+JNIEXPORT void JNICALL OS_NATIVE(DragFinish)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	NATIVE_ENTER(env, that, "DragFinish\n")
+	DragFinish((HDROP)arg0);
+	NATIVE_EXIT(env, that, "DragFinish\n")
+}
+#endif
+
+#ifndef NO_DragQueryFileA
+JNIEXPORT jint JNICALL OS_NATIVE(DragQueryFileA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jbyteArray arg2, jint arg3)
+{
+	jbyte *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "DragQueryFileA\n")
+	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);
+	rc = (jint)DragQueryFileA((HDROP)arg0, arg1, (LPTSTR)lparg2, arg3);
+	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);
+	NATIVE_EXIT(env, that, "DragQueryFileA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DragQueryFileW
+JNIEXPORT jint JNICALL OS_NATIVE(DragQueryFileW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jcharArray arg2, jint arg3)
+{
+	jchar *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "DragQueryFileW\n")
+	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);
+	rc = (jint)DragQueryFileW((HDROP)arg0, arg1, (LPWSTR)lparg2, arg3);
+	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);
+	NATIVE_EXIT(env, that, "DragQueryFileW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DrawEdge
+JNIEXPORT jboolean JNICALL OS_NATIVE(DrawEdge)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2, jint arg3)
+{
+	RECT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DrawEdge\n")
+	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);
+	rc = (jboolean)DrawEdge((HDC)arg0, lparg1, arg2, arg3);
+	if (arg1) setRECTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "DrawEdge\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DrawFocusRect
+JNIEXPORT jboolean JNICALL OS_NATIVE(DrawFocusRect)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	RECT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DrawFocusRect\n")
+	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);
+	rc = (jboolean)DrawFocusRect((HDC)arg0, lparg1);
+	if (arg1) setRECTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "DrawFocusRect\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DrawFrameControl
+JNIEXPORT jboolean JNICALL OS_NATIVE(DrawFrameControl)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2, jint arg3)
+{
+	RECT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DrawFrameControl\n")
+	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);
+	rc = (jboolean)DrawFrameControl((HDC)arg0, lparg1, arg2, arg3);
+	if (arg1) setRECTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "DrawFrameControl\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DrawIconEx
+JNIEXPORT jboolean JNICALL OS_NATIVE(DrawIconEx)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DrawIconEx\n")
+	rc = (jboolean)DrawIconEx((HDC)arg0, arg1, arg2, (HICON)arg3, arg4, arg5, arg6, (HBRUSH)arg7, arg8);
+	NATIVE_EXIT(env, that, "DrawIconEx\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DrawMenuBar
+JNIEXPORT jboolean JNICALL OS_NATIVE(DrawMenuBar)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DrawMenuBar\n")
+	rc = (jboolean)DrawMenuBar((HWND)arg0);
+	NATIVE_EXIT(env, that, "DrawMenuBar\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DrawStateA
+JNIEXPORT jboolean JNICALL OS_NATIVE(DrawStateA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8, jint arg9)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DrawStateA\n")
+	rc = (jboolean)DrawStateA((HDC)arg0, (HBRUSH)arg1, (DRAWSTATEPROC)arg2, (LPARAM)arg3, (WPARAM)arg4, arg5, arg6, arg7, arg8, arg9);
+	NATIVE_EXIT(env, that, "DrawStateA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DrawStateW
+JNIEXPORT jboolean JNICALL OS_NATIVE(DrawStateW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8, jint arg9)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "DrawStateW\n")
+	rc = (jboolean)DrawStateW((HDC)arg0, (HBRUSH)arg1, (DRAWSTATEPROC)arg2, (LPARAM)arg3, (WPARAM)arg4, arg5, arg6, arg7, arg8, arg9);
+	NATIVE_EXIT(env, that, "DrawStateW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DrawTextA
+JNIEXPORT jint JNICALL OS_NATIVE(DrawTextA)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2, jobject arg3, jint arg4)
+{
+	jbyte *lparg1=NULL;
+	RECT _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "DrawTextA\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	if (arg3) lparg3 = getRECTFields(env, arg3, &_arg3);
+	rc = (jint)DrawTextA((HDC)arg0, (LPSTR)lparg1, arg2, lparg3, arg4);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	if (arg3) setRECTFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "DrawTextA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_DrawTextW
+JNIEXPORT jint JNICALL OS_NATIVE(DrawTextW)
+	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2, jobject arg3, jint arg4)
+{
+	jchar *lparg1=NULL;
+	RECT _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "DrawTextW\n")
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	if (arg3) lparg3 = getRECTFields(env, arg3, &_arg3);
+	rc = (jint)DrawTextW((HDC)arg0, (LPWSTR)lparg1, arg2, lparg3, arg4);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	if (arg3) setRECTFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "DrawTextW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_Ellipse
+JNIEXPORT jboolean JNICALL OS_NATIVE(Ellipse)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "Ellipse\n")
+	rc = (jboolean)Ellipse((HDC)arg0, arg1, arg2, arg3, arg4);
+	NATIVE_EXIT(env, that, "Ellipse\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_EnableMenuItem
+JNIEXPORT jboolean JNICALL OS_NATIVE(EnableMenuItem)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "EnableMenuItem\n")
+	rc = (jboolean)EnableMenuItem((HMENU)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "EnableMenuItem\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_EnableScrollBar
+JNIEXPORT jboolean JNICALL OS_NATIVE(EnableScrollBar)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "EnableScrollBar\n")
+	rc = (jboolean)EnableScrollBar((HWND)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "EnableScrollBar\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_EnableWindow
+JNIEXPORT jboolean JNICALL OS_NATIVE(EnableWindow)
+	(JNIEnv *env, jclass that, jint arg0, jboolean arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "EnableWindow\n")
+	rc = (jboolean)EnableWindow((HWND)arg0, arg1);
+	NATIVE_EXIT(env, that, "EnableWindow\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_EndDeferWindowPos
+JNIEXPORT jboolean JNICALL OS_NATIVE(EndDeferWindowPos)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "EndDeferWindowPos\n")
+	rc = (jboolean)EndDeferWindowPos((HDWP)arg0);
+	NATIVE_EXIT(env, that, "EndDeferWindowPos\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_EndDoc
+JNIEXPORT jint JNICALL OS_NATIVE(EndDoc)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "EndDoc\n")
+	rc = (jint)EndDoc((HDC)arg0);
+	NATIVE_EXIT(env, that, "EndDoc\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_EndPage
+JNIEXPORT jint JNICALL OS_NATIVE(EndPage)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "EndPage\n")
+	rc = (jint)EndPage((HDC)arg0);
+	NATIVE_EXIT(env, that, "EndPage\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_EndPaint
+JNIEXPORT jint JNICALL OS_NATIVE(EndPaint)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	PAINTSTRUCT _arg1, *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "EndPaint\n")
+	if (arg1) lparg1 = getPAINTSTRUCTFields(env, arg1, &_arg1);
+	rc = (jint)EndPaint((HWND)arg0, lparg1);
+	if (arg1) setPAINTSTRUCTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "EndPaint\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_EnumFontFamiliesA
+JNIEXPORT jint JNICALL OS_NATIVE(EnumFontFamiliesA)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2, jint arg3)
+{
+	jbyte *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "EnumFontFamiliesA\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	rc = (jint)EnumFontFamiliesA((HDC)arg0, (LPSTR)lparg1, (FONTENUMPROC)arg2, (LPARAM)arg3);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "EnumFontFamiliesA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_EnumFontFamiliesW
+JNIEXPORT jint JNICALL OS_NATIVE(EnumFontFamiliesW)
+	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2, jint arg3)
+{
+	jchar *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "EnumFontFamiliesW\n")
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	rc = (jint)EnumFontFamiliesW((HDC)arg0, (LPCWSTR)lparg1, (FONTENUMPROCW)arg2, (LPARAM)arg3);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "EnumFontFamiliesW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_EnumSystemLocalesA
+JNIEXPORT jboolean JNICALL OS_NATIVE(EnumSystemLocalesA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "EnumSystemLocalesA\n")
+	rc = (jboolean)EnumSystemLocalesA((LOCALE_ENUMPROCA)arg0, arg1);
+	NATIVE_EXIT(env, that, "EnumSystemLocalesA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_EnumSystemLocalesW
+JNIEXPORT jboolean JNICALL OS_NATIVE(EnumSystemLocalesW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "EnumSystemLocalesW\n")
+	rc = (jboolean)EnumSystemLocalesW((LOCALE_ENUMPROCW)arg0, arg1);
+	NATIVE_EXIT(env, that, "EnumSystemLocalesW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_EqualRect
+JNIEXPORT jboolean JNICALL OS_NATIVE(EqualRect)
+	(JNIEnv *env, jclass that, jobject arg0, jobject arg1)
+{
+	RECT _arg0, *lparg0=NULL;
+	RECT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "EqualRect\n")
+	if (arg0) lparg0 = getRECTFields(env, arg0, &_arg0);
+	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);
+	rc = (jboolean)EqualRect((CONST RECT *)lparg0, (CONST RECT *)lparg1);
+	if (arg0) setRECTFields(env, arg0, lparg0);
+	if (arg1) setRECTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "EqualRect\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_EqualRgn
+JNIEXPORT jboolean JNICALL OS_NATIVE(EqualRgn)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "EqualRgn\n")
+	rc = (jboolean)EqualRgn((HRGN)arg0, (HRGN)arg1);
+	NATIVE_EXIT(env, that, "EqualRgn\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ExpandEnvironmentStringsA
+JNIEXPORT jint JNICALL OS_NATIVE(ExpandEnvironmentStringsA)
+	(JNIEnv *env, jclass that, jbyteArray arg0, jbyteArray arg1, jint arg2)
+{
+	jbyte *lparg0=NULL;
+	jbyte *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "ExpandEnvironmentStringsA\n")
+	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	rc = (jint)ExpandEnvironmentStringsA(lparg0, lparg1, arg2);
+	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "ExpandEnvironmentStringsA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ExpandEnvironmentStringsW
+JNIEXPORT jint JNICALL OS_NATIVE(ExpandEnvironmentStringsW)
+	(JNIEnv *env, jclass that, jcharArray arg0, jcharArray arg1, jint arg2)
+{
+	jchar *lparg0=NULL;
+	jchar *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "ExpandEnvironmentStringsW\n")
+	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	rc = (jint)ExpandEnvironmentStringsW(lparg0, lparg1, arg2);
+	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "ExpandEnvironmentStringsW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ExtTextOutA
+JNIEXPORT jboolean JNICALL OS_NATIVE(ExtTextOutA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jobject arg4, jbyteArray arg5, jint arg6, jintArray arg7)
+{
+	RECT _arg4, *lparg4=NULL;
+	jbyte *lparg5=NULL;
+	jint *lparg7=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ExtTextOutA\n")
+	if (arg4) lparg4 = getRECTFields(env, arg4, &_arg4);
+	if (arg5) lparg5 = (*env)->GetByteArrayElements(env, arg5, NULL);
+	if (arg7) lparg7 = (*env)->GetIntArrayElements(env, arg7, NULL);
+	rc = (jboolean)ExtTextOutA((HDC)arg0, arg1, arg2, arg3, lparg4, (LPSTR)lparg5, arg6, (CONST INT *)lparg7);
+	if (arg4) setRECTFields(env, arg4, lparg4);
+	if (arg5) (*env)->ReleaseByteArrayElements(env, arg5, lparg5, 0);
+	if (arg7) (*env)->ReleaseIntArrayElements(env, arg7, lparg7, 0);
+	NATIVE_EXIT(env, that, "ExtTextOutA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ExtTextOutW
+JNIEXPORT jboolean JNICALL OS_NATIVE(ExtTextOutW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jobject arg4, jcharArray arg5, jint arg6, jintArray arg7)
+{
+	RECT _arg4, *lparg4=NULL;
+	jchar *lparg5=NULL;
+	jint *lparg7=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ExtTextOutW\n")
+	if (arg4) lparg4 = getRECTFields(env, arg4, &_arg4);
+	if (arg5) lparg5 = (*env)->GetCharArrayElements(env, arg5, NULL);
+	if (arg7) lparg7 = (*env)->GetIntArrayElements(env, arg7, NULL);
+	rc = (jboolean)ExtTextOutW((HDC)arg0, arg1, arg2, arg3, lparg4, (LPWSTR)lparg5, arg6, (CONST INT *)lparg7);
+	if (arg4) setRECTFields(env, arg4, lparg4);
+	if (arg5) (*env)->ReleaseCharArrayElements(env, arg5, lparg5, 0);
+	if (arg7) (*env)->ReleaseIntArrayElements(env, arg7, lparg7, 0);
+	NATIVE_EXIT(env, that, "ExtTextOutW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ExtractIconExA
+JNIEXPORT jint JNICALL OS_NATIVE(ExtractIconExA)
+	(JNIEnv *env, jclass that, jbyteArray arg0, jint arg1, jintArray arg2, jintArray arg3, jint arg4)
+{
+	jbyte *lparg0=NULL;
+	jint *lparg2=NULL;
+	jint *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "ExtractIconExA\n")
+	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);
+	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);
+	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);
+	rc = (jint)ExtractIconExA((LPSTR)lparg0, arg1, (HICON FAR *)lparg2, (HICON FAR *)lparg3, arg4);
+	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "ExtractIconExA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ExtractIconExW
+JNIEXPORT jint JNICALL OS_NATIVE(ExtractIconExW)
+	(JNIEnv *env, jclass that, jcharArray arg0, jint arg1, jintArray arg2, jintArray arg3, jint arg4)
+{
+	jchar *lparg0=NULL;
+	jint *lparg2=NULL;
+	jint *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "ExtractIconExW\n")
+	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);
+	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);
+	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);
+	rc = (jint)ExtractIconExW((LPWSTR)lparg0, arg1, (HICON FAR *)lparg2, (HICON FAR *)lparg3, arg4);
+	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);
+	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "ExtractIconExW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_FillRect
+JNIEXPORT jint JNICALL OS_NATIVE(FillRect)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)
+{
+	RECT _arg1, *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "FillRect\n")
+	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);
+	rc = (jint)FillRect((HDC)arg0, lparg1, (HBRUSH)arg2);
+	if (arg1) setRECTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "FillRect\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_FindWindowA
+JNIEXPORT jint JNICALL OS_NATIVE(FindWindowA)
+	(JNIEnv *env, jclass that, jbyteArray arg0, jbyteArray arg1)
+{
+	jbyte *lparg0=NULL;
+	jbyte *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "FindWindowA\n")
+	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	rc = (jint)FindWindowA((LPSTR)lparg0, (LPSTR)lparg1);
+	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "FindWindowA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_FindWindowW
+JNIEXPORT jint JNICALL OS_NATIVE(FindWindowW)
+	(JNIEnv *env, jclass that, jcharArray arg0, jcharArray arg1)
+{
+	jchar *lparg0=NULL;
+	jchar *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "FindWindowW\n")
+	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	rc = (jint)FindWindowW((LPWSTR)lparg0, (LPWSTR)lparg1);
+	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "FindWindowW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_FreeLibrary
+JNIEXPORT jboolean JNICALL OS_NATIVE(FreeLibrary)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "FreeLibrary\n")
+	rc = (jboolean)FreeLibrary((HMODULE)arg0);
+	NATIVE_EXIT(env, that, "FreeLibrary\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetACP
+JNIEXPORT jint JNICALL OS_NATIVE(GetACP)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetACP\n")
+	rc = (jint)GetACP();
+	NATIVE_EXIT(env, that, "GetACP\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetActiveWindow
+JNIEXPORT jint JNICALL OS_NATIVE(GetActiveWindow)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetActiveWindow\n")
+	rc = (jint)GetActiveWindow();
+	NATIVE_EXIT(env, that, "GetActiveWindow\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetBkColor
+JNIEXPORT jint JNICALL OS_NATIVE(GetBkColor)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetBkColor\n")
+	rc = (jint)GetBkColor((HDC)arg0);
+	NATIVE_EXIT(env, that, "GetBkColor\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetCapture
+JNIEXPORT jint JNICALL OS_NATIVE(GetCapture)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetCapture\n")
+	rc = (jint)GetCapture();
+	NATIVE_EXIT(env, that, "GetCapture\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetCaretPos
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetCaretPos)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	POINT _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetCaretPos\n")
+	if (arg0) lparg0 = getPOINTFields(env, arg0, &_arg0);
+	rc = (jboolean)GetCaretPos(lparg0);
+	if (arg0) setPOINTFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "GetCaretPos\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetCharABCWidthsA
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetCharABCWidthsA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jintArray arg3)
+{
+	jint *lparg3=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetCharABCWidthsA\n")
+	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);
+	rc = (jboolean)GetCharABCWidthsA((HDC)arg0, arg1, arg2, (LPABC)lparg3);
+	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "GetCharABCWidthsA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetCharABCWidthsW
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetCharABCWidthsW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jintArray arg3)
+{
+	jint *lparg3=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetCharABCWidthsW\n")
+	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);
+	rc = (jboolean)GetCharABCWidthsW((HDC)arg0, arg1, arg2, (LPABC)lparg3);
+	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "GetCharABCWidthsW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetCharWidthA
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetCharWidthA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jintArray arg3)
+{
+	jint *lparg3=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetCharWidthA\n")
+	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);
+	rc = (jboolean)GetCharWidthA((HDC)arg0, arg1, arg2, (LPINT)lparg3);
+	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "GetCharWidthA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetCharWidthW
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetCharWidthW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jintArray arg3)
+{
+	jint *lparg3=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetCharWidthW\n")
+	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);
+	rc = (jboolean)GetCharWidthW((HDC)arg0, arg1, arg2, (LPINT)lparg3);
+	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "GetCharWidthW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetCharacterPlacementA
+JNIEXPORT jint JNICALL OS_NATIVE(GetCharacterPlacementA)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2, jint arg3, jobject arg4, jint arg5)
+{
+	jbyte *lparg1=NULL;
+	GCP_RESULTS _arg4, *lparg4=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetCharacterPlacementA\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	if (arg4) lparg4 = getGCP_RESULTSFields(env, arg4, &_arg4);
+	rc = (jint)GetCharacterPlacementA((HDC)arg0, (LPSTR)lparg1, arg2, arg3, lparg4, arg5);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	if (arg4) setGCP_RESULTSFields(env, arg4, lparg4);
+	NATIVE_EXIT(env, that, "GetCharacterPlacementA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetCharacterPlacementW
+JNIEXPORT jint JNICALL OS_NATIVE(GetCharacterPlacementW)
+	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2, jint arg3, jobject arg4, jint arg5)
+{
+	jchar *lparg1=NULL;
+	GCP_RESULTS _arg4, *lparg4=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetCharacterPlacementW\n")
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	if (arg4) lparg4 = getGCP_RESULTSFields(env, arg4, &_arg4);
+	rc = (jint)GetCharacterPlacementW((HDC)arg0, (LPWSTR)lparg1, arg2, arg3, (LPGCP_RESULTSW)lparg4, arg5);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	if (arg4) setGCP_RESULTSFields(env, arg4, lparg4);
+	NATIVE_EXIT(env, that, "GetCharacterPlacementW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetClassInfoA
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetClassInfoA)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jobject arg2)
+{
+	jbyte *lparg1=NULL;
+	WNDCLASS _arg2, *lparg2=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetClassInfoA\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	if (arg2) lparg2 = getWNDCLASSFields(env, arg2, &_arg2);
+	rc = (jboolean)GetClassInfoA((HINSTANCE)arg0, (LPSTR)lparg1, lparg2);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	if (arg2) setWNDCLASSFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "GetClassInfoA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetClassInfoW
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetClassInfoW)
+	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jobject arg2)
+{
+	jchar *lparg1=NULL;
+	WNDCLASS _arg2, *lparg2=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetClassInfoW\n")
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	if (arg2) lparg2 = getWNDCLASSFields(env, arg2, &_arg2);
+	rc = (jboolean)GetClassInfoW((HINSTANCE)arg0, (LPWSTR)lparg1, (LPWNDCLASSW)lparg2);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	if (arg2) setWNDCLASSFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "GetClassInfoW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetClientRect
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetClientRect)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	RECT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetClientRect\n")
+	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);
+	rc = (jboolean)GetClientRect((HWND)arg0, lparg1);
+	if (arg1) setRECTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "GetClientRect\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetClipBox
+JNIEXPORT jint JNICALL OS_NATIVE(GetClipBox)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	RECT _arg1, *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetClipBox\n")
+	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);
+	rc = (jint)GetClipBox((HDC)arg0, lparg1);
+	if (arg1) setRECTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "GetClipBox\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetClipRgn
+JNIEXPORT jint JNICALL OS_NATIVE(GetClipRgn)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetClipRgn\n")
+	rc = (jint)GetClipRgn((HDC)arg0, (HRGN)arg1);
+	NATIVE_EXIT(env, that, "GetClipRgn\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetClipboardData
+JNIEXPORT jint JNICALL OS_NATIVE(GetClipboardData)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetClipboardData\n")
+	rc = (jint)GetClipboardData(arg0);
+	NATIVE_EXIT(env, that, "GetClipboardData\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetClipboardFormatNameA
+JNIEXPORT jint JNICALL OS_NATIVE(GetClipboardFormatNameA)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2)
+{
+	jbyte *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetClipboardFormatNameA\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	rc = (jint)GetClipboardFormatNameA(arg0, lparg1, arg2);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "GetClipboardFormatNameA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetClipboardFormatNameW
+JNIEXPORT jint JNICALL OS_NATIVE(GetClipboardFormatNameW)
+	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2)
+{
+	jchar *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetClipboardFormatNameW\n")
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	rc = (jint)GetClipboardFormatNameW(arg0, (LPWSTR)lparg1, arg2);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "GetClipboardFormatNameW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetCurrentObject
+JNIEXPORT jint JNICALL OS_NATIVE(GetCurrentObject)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetCurrentObject\n")
+	rc = (jint)GetCurrentObject((HDC)arg0, arg1);
+	NATIVE_EXIT(env, that, "GetCurrentObject\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetCurrentProcessId
+JNIEXPORT jint JNICALL OS_NATIVE(GetCurrentProcessId)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetCurrentProcessId\n")
+	rc = (jint)GetCurrentProcessId();
+	NATIVE_EXIT(env, that, "GetCurrentProcessId\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetCurrentThreadId
+JNIEXPORT jint JNICALL OS_NATIVE(GetCurrentThreadId)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetCurrentThreadId\n")
+	rc = (jint)GetCurrentThreadId();
+	NATIVE_EXIT(env, that, "GetCurrentThreadId\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetCursor
+JNIEXPORT jint JNICALL OS_NATIVE(GetCursor)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetCursor\n")
+	rc = (jint)GetCursor();
+	NATIVE_EXIT(env, that, "GetCursor\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetCursorPos
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetCursorPos)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	POINT _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetCursorPos\n")
+	if (arg0) lparg0 = getPOINTFields(env, arg0, &_arg0);
+	rc = (jboolean)GetCursorPos(lparg0);
+	if (arg0) setPOINTFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "GetCursorPos\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetDC
+JNIEXPORT jint JNICALL OS_NATIVE(GetDC)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetDC\n")
+	rc = (jint)GetDC((HWND)arg0);
+	NATIVE_EXIT(env, that, "GetDC\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetDCEx
+JNIEXPORT jint JNICALL OS_NATIVE(GetDCEx)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetDCEx\n")
+	rc = (jint)GetDCEx((HWND)arg0, (HRGN)arg1, arg2);
+	NATIVE_EXIT(env, that, "GetDCEx\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetDIBColorTable
+JNIEXPORT jint JNICALL OS_NATIVE(GetDIBColorTable)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jbyteArray arg3)
+{
+	jbyte *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetDIBColorTable\n")
+	if (arg3) lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL);
+	rc = (jint)GetDIBColorTable((HDC)arg0, arg1, arg2, (RGBQUAD *)lparg3);
+	if (arg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "GetDIBColorTable\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetDIBits
+JNIEXPORT jint JNICALL OS_NATIVE(GetDIBits)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jbyteArray arg5, jint arg6)
+{
+	jbyte *lparg5=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetDIBits\n")
+	if (arg5) lparg5 = (*env)->GetByteArrayElements(env, arg5, NULL);
+	rc = (jint)GetDIBits((HDC)arg0, (HBITMAP)arg1, arg2, arg3, (LPVOID)arg4, (LPBITMAPINFO)lparg5, arg6);
+	if (arg5) (*env)->ReleaseByteArrayElements(env, arg5, lparg5, 0);
+	NATIVE_EXIT(env, that, "GetDIBits\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetDesktopWindow
+JNIEXPORT jint JNICALL OS_NATIVE(GetDesktopWindow)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetDesktopWindow\n")
+	rc = (jint)GetDesktopWindow();
+	NATIVE_EXIT(env, that, "GetDesktopWindow\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetDeviceCaps
+JNIEXPORT jint JNICALL OS_NATIVE(GetDeviceCaps)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetDeviceCaps\n")
+	rc = (jint)GetDeviceCaps((HDC)arg0, arg1);
+	NATIVE_EXIT(env, that, "GetDeviceCaps\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetDialogBaseUnits
+JNIEXPORT jint JNICALL OS_NATIVE(GetDialogBaseUnits)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetDialogBaseUnits\n")
+	rc = (jint)GetDialogBaseUnits();
+	NATIVE_EXIT(env, that, "GetDialogBaseUnits\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetDlgItem
+JNIEXPORT jint JNICALL OS_NATIVE(GetDlgItem)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetDlgItem\n")
+	rc = (jint)GetDlgItem((HWND)arg0, arg1);
+	NATIVE_EXIT(env, that, "GetDlgItem\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetDoubleClickTime
+JNIEXPORT jint JNICALL OS_NATIVE(GetDoubleClickTime)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetDoubleClickTime\n")
+	rc = (jint)GetDoubleClickTime();
+	NATIVE_EXIT(env, that, "GetDoubleClickTime\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetFocus
+JNIEXPORT jint JNICALL OS_NATIVE(GetFocus)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetFocus\n")
+	rc = (jint)GetFocus();
+	NATIVE_EXIT(env, that, "GetFocus\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetFontLanguageInfo
+JNIEXPORT jint JNICALL OS_NATIVE(GetFontLanguageInfo)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetFontLanguageInfo\n")
+	rc = (jint)GetFontLanguageInfo((HDC)arg0);
+	NATIVE_EXIT(env, that, "GetFontLanguageInfo\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetIconInfo
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetIconInfo)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	ICONINFO _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetIconInfo\n")
+	if (arg1) lparg1 = getICONINFOFields(env, arg1, &_arg1);
+	rc = (jboolean)GetIconInfo((HICON)arg0, lparg1);
+	if (arg1) setICONINFOFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "GetIconInfo\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetKeyNameTextA
+JNIEXPORT jint JNICALL OS_NATIVE(GetKeyNameTextA)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2)
+{
+	jbyte *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetKeyNameTextA\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	rc = (jint)GetKeyNameTextA(arg0, (LPSTR)lparg1, arg2);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "GetKeyNameTextA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetKeyNameTextW
+JNIEXPORT jint JNICALL OS_NATIVE(GetKeyNameTextW)
+	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2)
+{
+	jchar *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetKeyNameTextW\n")
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	rc = (jint)GetKeyNameTextW(arg0, (LPWSTR)lparg1, arg2);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "GetKeyNameTextW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetKeyState
+JNIEXPORT jshort JNICALL OS_NATIVE(GetKeyState)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jshort rc;
+	NATIVE_ENTER(env, that, "GetKeyState\n")
+	rc = (jshort)GetKeyState(arg0);
+	NATIVE_EXIT(env, that, "GetKeyState\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetKeyboardLayout
+JNIEXPORT jint JNICALL OS_NATIVE(GetKeyboardLayout)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetKeyboardLayout\n")
+	rc = (jint)GetKeyboardLayout(arg0);
+	NATIVE_EXIT(env, that, "GetKeyboardLayout\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetKeyboardLayoutList
+JNIEXPORT jint JNICALL OS_NATIVE(GetKeyboardLayoutList)
+	(JNIEnv *env, jclass that, jint arg0, jintArray arg1)
+{
+	jint *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetKeyboardLayoutList\n")
+	if (arg1) lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL);
+	rc = (jint)GetKeyboardLayoutList(arg0, (HKL FAR *)lparg1);
+	if (arg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "GetKeyboardLayoutList\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetKeyboardState
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetKeyboardState)
+	(JNIEnv *env, jclass that, jbyteArray arg0)
+{
+	jbyte *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetKeyboardState\n")
+	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);
+	rc = (jboolean)GetKeyboardState((PBYTE)lparg0);
+	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "GetKeyboardState\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetLastActivePopup
+JNIEXPORT jint JNICALL OS_NATIVE(GetLastActivePopup)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetLastActivePopup\n")
+	rc = (jint)GetLastActivePopup((HWND)arg0);
+	NATIVE_EXIT(env, that, "GetLastActivePopup\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetLastError
+JNIEXPORT jint JNICALL OS_NATIVE(GetLastError)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetLastError\n")
+	rc = (jint)GetLastError();
+	NATIVE_EXIT(env, that, "GetLastError\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetLocaleInfoA
+JNIEXPORT jint JNICALL OS_NATIVE(GetLocaleInfoA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jbyteArray arg2, jint arg3)
+{
+	jbyte *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetLocaleInfoA\n")
+	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);
+	rc = (jint)GetLocaleInfoA(arg0, arg1, (LPSTR)lparg2, arg3);
+	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);
+	NATIVE_EXIT(env, that, "GetLocaleInfoA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetLocaleInfoW
+JNIEXPORT jint JNICALL OS_NATIVE(GetLocaleInfoW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jcharArray arg2, jint arg3)
+{
+	jchar *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetLocaleInfoW\n")
+	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);
+	rc = (jint)GetLocaleInfoW(arg0, arg1, (LPWSTR)lparg2, arg3);
+	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);
+	NATIVE_EXIT(env, that, "GetLocaleInfoW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetMenu
+JNIEXPORT jint JNICALL OS_NATIVE(GetMenu)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetMenu\n")
+	rc = (jint)GetMenu((HWND)arg0);
+	NATIVE_EXIT(env, that, "GetMenu\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetMenuDefaultItem
+JNIEXPORT jint JNICALL OS_NATIVE(GetMenuDefaultItem)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetMenuDefaultItem\n")
+	rc = (jint)GetMenuDefaultItem((HMENU)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "GetMenuDefaultItem\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetMenuItemCount
+JNIEXPORT jint JNICALL OS_NATIVE(GetMenuItemCount)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetMenuItemCount\n")
+	rc = (jint)GetMenuItemCount((HMENU)arg0);
+	NATIVE_EXIT(env, that, "GetMenuItemCount\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetMenuItemInfoA
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetMenuItemInfoA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2, jobject arg3)
+{
+	MENUITEMINFO _arg3, *lparg3=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetMenuItemInfoA\n")
+	if (arg3) lparg3 = getMENUITEMINFOFields(env, arg3, &_arg3);
+	rc = (jboolean)GetMenuItemInfoA((HMENU)arg0, arg1, arg2, lparg3);
+	if (arg3) setMENUITEMINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "GetMenuItemInfoA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetMenuItemInfoW
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetMenuItemInfoW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2, jobject arg3)
+{
+	MENUITEMINFO _arg3, *lparg3=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetMenuItemInfoW\n")
+	if (arg3) lparg3 = getMENUITEMINFOFields(env, arg3, &_arg3);
+	rc = (jboolean)GetMenuItemInfoW((HMENU)arg0, arg1, arg2, (LPMENUITEMINFOW)lparg3);
+	if (arg3) setMENUITEMINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "GetMenuItemInfoW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetMessageA
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetMessageA)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2, jint arg3)
+{
+	MSG _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetMessageA\n")
+	if (arg0) lparg0 = getMSGFields(env, arg0, &_arg0);
+	rc = (jboolean)GetMessageA(lparg0, (HWND)arg1, arg2, arg3);
+	if (arg0) setMSGFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "GetMessageA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetMessagePos
+JNIEXPORT jint JNICALL OS_NATIVE(GetMessagePos)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetMessagePos\n")
+	rc = (jint)GetMessagePos();
+	NATIVE_EXIT(env, that, "GetMessagePos\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetMessageTime
+JNIEXPORT jint JNICALL OS_NATIVE(GetMessageTime)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetMessageTime\n")
+	rc = (jint)GetMessageTime();
+	NATIVE_EXIT(env, that, "GetMessageTime\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetMessageW
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetMessageW)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2, jint arg3)
+{
+	MSG _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetMessageW\n")
+	if (arg0) lparg0 = getMSGFields(env, arg0, &_arg0);
+	rc = (jboolean)GetMessageW(lparg0, (HWND)arg1, arg2, arg3);
+	if (arg0) setMSGFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "GetMessageW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetModuleHandleA
+JNIEXPORT jint JNICALL OS_NATIVE(GetModuleHandleA)
+	(JNIEnv *env, jclass that, jbyteArray arg0)
+{
+	jbyte *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetModuleHandleA\n")
+	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);
+	rc = (jint)GetModuleHandleA((LPSTR)lparg0);
+	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "GetModuleHandleA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetModuleHandleW
+JNIEXPORT jint JNICALL OS_NATIVE(GetModuleHandleW)
+	(JNIEnv *env, jclass that, jcharArray arg0)
+{
+	jchar *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetModuleHandleW\n")
+	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);
+	rc = (jint)GetModuleHandleW((LPWSTR)lparg0);
+	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "GetModuleHandleW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetNearestPaletteIndex
+JNIEXPORT jint JNICALL OS_NATIVE(GetNearestPaletteIndex)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetNearestPaletteIndex\n")
+	rc = (jint)GetNearestPaletteIndex((HPALETTE)arg0, (COLORREF)arg1);
+	NATIVE_EXIT(env, that, "GetNearestPaletteIndex\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetObjectA__IILorg_eclipse_swt_internal_win32_BITMAP_2
+JNIEXPORT jint JNICALL OS_NATIVE(GetObjectA__IILorg_eclipse_swt_internal_win32_BITMAP_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)
+{
+	BITMAP _arg2, *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_BITMAP_2\n")
+	if (arg2) lparg2 = getBITMAPFields(env, arg2, &_arg2);
+	rc = (jint)GetObjectA((HGDIOBJ)arg0, arg1, lparg2);
+	if (arg2) setBITMAPFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_BITMAP_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetObjectA__IILorg_eclipse_swt_internal_win32_DIBSECTION_2
+JNIEXPORT jint JNICALL OS_NATIVE(GetObjectA__IILorg_eclipse_swt_internal_win32_DIBSECTION_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)
+{
+	DIBSECTION _arg2, *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_DIBSECTION_2\n")
+	if (arg2) lparg2 = getDIBSECTIONFields(env, arg2, &_arg2);
+	rc = (jint)GetObjectA((HGDIOBJ)arg0, arg1, lparg2);
+	if (arg2) setDIBSECTIONFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_DIBSECTION_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetObjectA__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2
+JNIEXPORT jint JNICALL OS_NATIVE(GetObjectA__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)
+{
+	LOGBRUSH _arg2, *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2\n")
+	if (arg2) lparg2 = getLOGBRUSHFields(env, arg2, &_arg2);
+	rc = (jint)GetObjectA((HGDIOBJ)arg0, arg1, lparg2);
+	if (arg2) setLOGBRUSHFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetObjectA__IILorg_eclipse_swt_internal_win32_LOGFONTA_2
+JNIEXPORT jint JNICALL OS_NATIVE(GetObjectA__IILorg_eclipse_swt_internal_win32_LOGFONTA_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)
+{
+	LOGFONTA _arg2, *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_LOGFONTA_2\n")
+	if (arg2) lparg2 = getLOGFONTAFields(env, arg2, &_arg2);
+	rc = (jint)GetObjectA((HGDIOBJ)arg0, arg1, lparg2);
+	if (arg2) setLOGFONTAFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_LOGFONTA_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetObjectA__IILorg_eclipse_swt_internal_win32_LOGPEN_2
+JNIEXPORT jint JNICALL OS_NATIVE(GetObjectA__IILorg_eclipse_swt_internal_win32_LOGPEN_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)
+{
+	LOGPEN _arg2, *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_LOGPEN_2\n")
+	if (arg2) lparg2 = getLOGPENFields(env, arg2, &_arg2);
+	rc = (jint)GetObjectA((HGDIOBJ)arg0, arg1, lparg2);
+	if (arg2) setLOGPENFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "GetObjectA__IILorg_eclipse_swt_internal_win32_LOGPEN_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetObjectW__IILorg_eclipse_swt_internal_win32_BITMAP_2
+JNIEXPORT jint JNICALL OS_NATIVE(GetObjectW__IILorg_eclipse_swt_internal_win32_BITMAP_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)
+{
+	BITMAP _arg2, *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_BITMAP_2\n")
+	if (arg2) lparg2 = getBITMAPFields(env, arg2, &_arg2);
+	rc = (jint)GetObjectW((HGDIOBJ)arg0, arg1, lparg2);
+	if (arg2) setBITMAPFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_BITMAP_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetObjectW__IILorg_eclipse_swt_internal_win32_DIBSECTION_2
+JNIEXPORT jint JNICALL OS_NATIVE(GetObjectW__IILorg_eclipse_swt_internal_win32_DIBSECTION_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)
+{
+	DIBSECTION _arg2, *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_DIBSECTION_2\n")
+	if (arg2) lparg2 = getDIBSECTIONFields(env, arg2, &_arg2);
+	rc = (jint)GetObjectW((HGDIOBJ)arg0, arg1, lparg2);
+	if (arg2) setDIBSECTIONFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_DIBSECTION_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetObjectW__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2
+JNIEXPORT jint JNICALL OS_NATIVE(GetObjectW__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)
+{
+	LOGBRUSH _arg2, *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2\n")
+	if (arg2) lparg2 = getLOGBRUSHFields(env, arg2, &_arg2);
+	rc = (jint)GetObjectW((HGDIOBJ)arg0, arg1, lparg2);
+	if (arg2) setLOGBRUSHFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetObjectW__IILorg_eclipse_swt_internal_win32_LOGFONTW_2
+JNIEXPORT jint JNICALL OS_NATIVE(GetObjectW__IILorg_eclipse_swt_internal_win32_LOGFONTW_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)
+{
+	LOGFONTW _arg2, *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_LOGFONTW_2\n")
+	if (arg2) lparg2 = getLOGFONTWFields(env, arg2, &_arg2);
+	rc = (jint)GetObjectW((HGDIOBJ)arg0, arg1, lparg2);
+	if (arg2) setLOGFONTWFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_LOGFONTW_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetObjectW__IILorg_eclipse_swt_internal_win32_LOGPEN_2
+JNIEXPORT jint JNICALL OS_NATIVE(GetObjectW__IILorg_eclipse_swt_internal_win32_LOGPEN_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)
+{
+	LOGPEN _arg2, *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_LOGPEN_2\n")
+	if (arg2) lparg2 = getLOGPENFields(env, arg2, &_arg2);
+	rc = (jint)GetObjectW((HGDIOBJ)arg0, arg1, lparg2);
+	if (arg2) setLOGPENFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "GetObjectW__IILorg_eclipse_swt_internal_win32_LOGPEN_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetOpenFileNameA
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetOpenFileNameA)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	OPENFILENAME _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetOpenFileNameA\n")
+	if (arg0) lparg0 = getOPENFILENAMEFields(env, arg0, &_arg0);
+	rc = (jboolean)GetOpenFileNameA(lparg0);
+	if (arg0) setOPENFILENAMEFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "GetOpenFileNameA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetOpenFileNameW
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetOpenFileNameW)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	OPENFILENAME _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetOpenFileNameW\n")
+	if (arg0) lparg0 = getOPENFILENAMEFields(env, arg0, &_arg0);
+	rc = (jboolean)GetOpenFileNameW((LPOPENFILENAMEW)lparg0);
+	if (arg0) setOPENFILENAMEFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "GetOpenFileNameW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetPaletteEntries
+JNIEXPORT jint JNICALL OS_NATIVE(GetPaletteEntries)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jbyteArray arg3)
+{
+	jbyte *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetPaletteEntries\n")
+	if (arg3) lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL);
+	rc = (jint)GetPaletteEntries((HPALETTE)arg0, arg1, arg2, (LPPALETTEENTRY)lparg3);
+	if (arg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "GetPaletteEntries\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetParent
+JNIEXPORT jint JNICALL OS_NATIVE(GetParent)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetParent\n")
+	rc = (jint)GetParent((HWND)arg0);
+	NATIVE_EXIT(env, that, "GetParent\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetPixel
+JNIEXPORT jint JNICALL OS_NATIVE(GetPixel)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetPixel\n")
+	rc = (jint)GetPixel((HDC)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "GetPixel\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetProcAddress
+JNIEXPORT jint JNICALL OS_NATIVE(GetProcAddress)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1)
+{
+	jbyte *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetProcAddress\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	rc = (jint)GetProcAddress((HMODULE)arg0, (LPCTSTR)lparg1);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "GetProcAddress\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetProcessHeap
+JNIEXPORT jint JNICALL OS_NATIVE(GetProcessHeap)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetProcessHeap\n")
+	rc = (jint)GetProcessHeap();
+	NATIVE_EXIT(env, that, "GetProcessHeap\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetProfileStringA
+JNIEXPORT jint JNICALL OS_NATIVE(GetProfileStringA)
+	(JNIEnv *env, jclass that, jbyteArray arg0, jbyteArray arg1, jbyteArray arg2, jbyteArray arg3, jint arg4)
+{
+	jbyte *lparg0=NULL;
+	jbyte *lparg1=NULL;
+	jbyte *lparg2=NULL;
+	jbyte *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetProfileStringA\n")
+	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);
+	if (arg3) lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL);
+	rc = (jint)GetProfileStringA((LPSTR)lparg0, (LPSTR)lparg1, (LPSTR)lparg2, (LPSTR)lparg3, arg4);
+	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);
+	if (arg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "GetProfileStringA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetProfileStringW
+JNIEXPORT jint JNICALL OS_NATIVE(GetProfileStringW)
+	(JNIEnv *env, jclass that, jcharArray arg0, jcharArray arg1, jcharArray arg2, jcharArray arg3, jint arg4)
+{
+	jchar *lparg0=NULL;
+	jchar *lparg1=NULL;
+	jchar *lparg2=NULL;
+	jchar *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetProfileStringW\n")
+	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);
+	if (arg3) lparg3 = (*env)->GetCharArrayElements(env, arg3, NULL);
+	rc = (jint)GetProfileStringW((LPWSTR)lparg0, (LPWSTR)lparg1, (LPWSTR)lparg2, (LPWSTR)lparg3, arg4);
+	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);
+	if (arg3) (*env)->ReleaseCharArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "GetProfileStringW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetROP2
+JNIEXPORT jint JNICALL OS_NATIVE(GetROP2)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetROP2\n")
+	rc = (jint)GetROP2((HDC)arg0);
+	NATIVE_EXIT(env, that, "GetROP2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetRegionData
+JNIEXPORT jint JNICALL OS_NATIVE(GetRegionData)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2)
+{
+	jint *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetRegionData\n")
+	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);
+	rc = (jint)GetRegionData((HRGN)arg0, arg1, (RGNDATA *)lparg2);
+	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	NATIVE_EXIT(env, that, "GetRegionData\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetRgnBox
+JNIEXPORT jint JNICALL OS_NATIVE(GetRgnBox)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	RECT _arg1, *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetRgnBox\n")
+	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);
+	rc = (jint)GetRgnBox((HRGN)arg0, lparg1);
+	if (arg1) setRECTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "GetRgnBox\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetSaveFileNameA
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetSaveFileNameA)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	OPENFILENAME _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetSaveFileNameA\n")
+	if (arg0) lparg0 = getOPENFILENAMEFields(env, arg0, &_arg0);
+	rc = (jboolean)GetSaveFileNameA(lparg0);
+	if (arg0) setOPENFILENAMEFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "GetSaveFileNameA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetSaveFileNameW
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetSaveFileNameW)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	OPENFILENAME _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetSaveFileNameW\n")
+	if (arg0) lparg0 = getOPENFILENAMEFields(env, arg0, &_arg0);
+	rc = (jboolean)GetSaveFileNameW((LPOPENFILENAMEW)lparg0);
+	if (arg0) setOPENFILENAMEFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "GetSaveFileNameW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetScrollInfo
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetScrollInfo)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)
+{
+	SCROLLINFO _arg2, *lparg2=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetScrollInfo\n")
+	if (arg2) lparg2 = getSCROLLINFOFields(env, arg2, &_arg2);
+	rc = (jboolean)GetScrollInfo((HWND)arg0, arg1, lparg2);
+	if (arg2) setSCROLLINFOFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "GetScrollInfo\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetStockObject
+JNIEXPORT jint JNICALL OS_NATIVE(GetStockObject)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetStockObject\n")
+	rc = (jint)GetStockObject(arg0);
+	NATIVE_EXIT(env, that, "GetStockObject\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetSysColor
+JNIEXPORT jint JNICALL OS_NATIVE(GetSysColor)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetSysColor\n")
+	rc = (jint)GetSysColor(arg0);
+	NATIVE_EXIT(env, that, "GetSysColor\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetSysColorBrush
+JNIEXPORT jint JNICALL OS_NATIVE(GetSysColorBrush)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetSysColorBrush\n")
+	rc = (jint)GetSysColorBrush(arg0);
+	NATIVE_EXIT(env, that, "GetSysColorBrush\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetSystemMenu
+JNIEXPORT jint JNICALL OS_NATIVE(GetSystemMenu)
+	(JNIEnv *env, jclass that, jint arg0, jboolean arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetSystemMenu\n")
+	rc = (jint)GetSystemMenu((HWND)arg0, arg1);
+	NATIVE_EXIT(env, that, "GetSystemMenu\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetSystemMetrics
+JNIEXPORT jint JNICALL OS_NATIVE(GetSystemMetrics)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetSystemMetrics\n")
+	rc = (jint)GetSystemMetrics(arg0);
+	NATIVE_EXIT(env, that, "GetSystemMetrics\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetSystemPaletteEntries
+JNIEXPORT jint JNICALL OS_NATIVE(GetSystemPaletteEntries)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jbyteArray arg3)
+{
+	jbyte *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetSystemPaletteEntries\n")
+	if (arg3) lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL);
+	rc = (jint)GetSystemPaletteEntries((HDC)arg0, (UINT)arg1, (UINT)arg2, (LPPALETTEENTRY)lparg3);
+	if (arg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "GetSystemPaletteEntries\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetTextCharset
+JNIEXPORT jint JNICALL OS_NATIVE(GetTextCharset)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetTextCharset\n")
+	rc = (jint)GetTextCharset((HDC)arg0);
+	NATIVE_EXIT(env, that, "GetTextCharset\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetTextColor
+JNIEXPORT jint JNICALL OS_NATIVE(GetTextColor)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetTextColor\n")
+	rc = (jint)GetTextColor((HDC)arg0);
+	NATIVE_EXIT(env, that, "GetTextColor\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetTextExtentPoint32A
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetTextExtentPoint32A)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2, jobject arg3)
+{
+	jbyte *lparg1=NULL;
+	SIZE _arg3, *lparg3=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetTextExtentPoint32A\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	if (arg3) lparg3 = getSIZEFields(env, arg3, &_arg3);
+	rc = (jboolean)GetTextExtentPoint32A((HDC)arg0, (LPSTR)lparg1, arg2, lparg3);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	if (arg3) setSIZEFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "GetTextExtentPoint32A\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetTextExtentPoint32W
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetTextExtentPoint32W)
+	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2, jobject arg3)
+{
+	jchar *lparg1=NULL;
+	SIZE _arg3, *lparg3=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetTextExtentPoint32W\n")
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	if (arg3) lparg3 = getSIZEFields(env, arg3, &_arg3);
+	rc = (jboolean)GetTextExtentPoint32W((HDC)arg0, (LPWSTR)lparg1, arg2, lparg3);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	if (arg3) setSIZEFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "GetTextExtentPoint32W\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetTextMetricsA
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetTextMetricsA)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	TEXTMETRICA _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetTextMetricsA\n")
+	if (arg1) lparg1 = getTEXTMETRICAFields(env, arg1, &_arg1);
+	rc = (jboolean)GetTextMetricsA((HDC)arg0, lparg1);
+	if (arg1) setTEXTMETRICAFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "GetTextMetricsA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetTextMetricsW
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetTextMetricsW)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	TEXTMETRICW _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetTextMetricsW\n")
+	if (arg1) lparg1 = getTEXTMETRICWFields(env, arg1, &_arg1);
+	rc = (jboolean)GetTextMetricsW((HDC)arg0, lparg1);
+	if (arg1) setTEXTMETRICWFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "GetTextMetricsW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetTickCount
+JNIEXPORT jint JNICALL OS_NATIVE(GetTickCount)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetTickCount\n")
+	rc = (jint)GetTickCount();
+	NATIVE_EXIT(env, that, "GetTickCount\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetUpdateRect
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetUpdateRect)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jboolean arg2)
+{
+	RECT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetUpdateRect\n")
+	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);
+	rc = (jboolean)GetUpdateRect((HWND)arg0, (LPRECT)lparg1, (BOOL)arg2);
+	if (arg1) setRECTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "GetUpdateRect\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetUpdateRgn
+JNIEXPORT jint JNICALL OS_NATIVE(GetUpdateRgn)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetUpdateRgn\n")
+	rc = (jint)GetUpdateRgn((HWND)arg0, (HRGN)arg1, arg2);
+	NATIVE_EXIT(env, that, "GetUpdateRgn\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetVersionExA
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetVersionExA)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	OSVERSIONINFOA _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetVersionExA\n")
+	if (arg0) lparg0 = getOSVERSIONINFOAFields(env, arg0, &_arg0);
+	rc = (jboolean)GetVersionExA(lparg0);
+	if (arg0) setOSVERSIONINFOAFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "GetVersionExA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetVersionExW
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetVersionExW)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	OSVERSIONINFOW _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetVersionExW\n")
+	if (arg0) lparg0 = getOSVERSIONINFOWFields(env, arg0, &_arg0);
+	rc = (jboolean)GetVersionExW(lparg0);
+	if (arg0) setOSVERSIONINFOWFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "GetVersionExW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetWindow
+JNIEXPORT jint JNICALL OS_NATIVE(GetWindow)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetWindow\n")
+	rc = (jint)GetWindow((HWND)arg0, arg1);
+	NATIVE_EXIT(env, that, "GetWindow\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetWindowLongA
+JNIEXPORT jint JNICALL OS_NATIVE(GetWindowLongA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetWindowLongA\n")
+	rc = (jint)GetWindowLongA((HWND)arg0, arg1);
+	NATIVE_EXIT(env, that, "GetWindowLongA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetWindowLongW
+JNIEXPORT jint JNICALL OS_NATIVE(GetWindowLongW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetWindowLongW\n")
+	rc = (jint)GetWindowLongW((HWND)arg0, arg1);
+	NATIVE_EXIT(env, that, "GetWindowLongW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetWindowPlacement
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetWindowPlacement)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	WINDOWPLACEMENT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetWindowPlacement\n")
+	if (arg1) lparg1 = getWINDOWPLACEMENTFields(env, arg1, &_arg1);
+	rc = (jboolean)GetWindowPlacement((HWND)arg0, lparg1);
+	if (arg1) setWINDOWPLACEMENTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "GetWindowPlacement\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetWindowRect
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetWindowRect)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	RECT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetWindowRect\n")
+	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);
+	rc = (jboolean)GetWindowRect((HWND)arg0, lparg1);
+	if (arg1) setRECTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "GetWindowRect\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetWindowTextA
+JNIEXPORT jint JNICALL OS_NATIVE(GetWindowTextA)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2)
+{
+	jbyte *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetWindowTextA\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	rc = (jint)GetWindowTextA((HWND)arg0, (LPSTR)lparg1, arg2);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "GetWindowTextA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetWindowTextLengthA
+JNIEXPORT jint JNICALL OS_NATIVE(GetWindowTextLengthA)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetWindowTextLengthA\n")
+	rc = (jint)GetWindowTextLengthA((HWND)arg0);
+	NATIVE_EXIT(env, that, "GetWindowTextLengthA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetWindowTextLengthW
+JNIEXPORT jint JNICALL OS_NATIVE(GetWindowTextLengthW)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetWindowTextLengthW\n")
+	rc = (jint)GetWindowTextLengthW((HWND)arg0);
+	NATIVE_EXIT(env, that, "GetWindowTextLengthW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetWindowTextW
+JNIEXPORT jint JNICALL OS_NATIVE(GetWindowTextW)
+	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2)
+{
+	jchar *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetWindowTextW\n")
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	rc = (jint)GetWindowTextW((HWND)arg0, (LPWSTR)lparg1, arg2);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "GetWindowTextW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetWindowThreadProcessId
+JNIEXPORT jint JNICALL OS_NATIVE(GetWindowThreadProcessId)
+	(JNIEnv *env, jclass that, jint arg0, jintArray arg1)
+{
+	jint *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "GetWindowThreadProcessId\n")
+	if (arg1) lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL);
+	rc = (jint)GetWindowThreadProcessId((HWND)arg0, (LPDWORD)lparg1);
+	if (arg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "GetWindowThreadProcessId\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GlobalAlloc
+JNIEXPORT jint JNICALL OS_NATIVE(GlobalAlloc)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GlobalAlloc\n")
+	rc = (jint)GlobalAlloc(arg0, arg1);
+	NATIVE_EXIT(env, that, "GlobalAlloc\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GlobalFree
+JNIEXPORT jint JNICALL OS_NATIVE(GlobalFree)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GlobalFree\n")
+	rc = (jint)GlobalFree((HANDLE)arg0);
+	NATIVE_EXIT(env, that, "GlobalFree\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GlobalLock
+JNIEXPORT jint JNICALL OS_NATIVE(GlobalLock)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GlobalLock\n")
+	rc = (jint)GlobalLock((HANDLE)arg0);
+	NATIVE_EXIT(env, that, "GlobalLock\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GlobalSize
+JNIEXPORT jint JNICALL OS_NATIVE(GlobalSize)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GlobalSize\n")
+	rc = (jint)GlobalSize((HANDLE)arg0);
+	NATIVE_EXIT(env, that, "GlobalSize\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GlobalUnlock
+JNIEXPORT jboolean JNICALL OS_NATIVE(GlobalUnlock)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GlobalUnlock\n")
+	rc = (jboolean)GlobalUnlock((HANDLE)arg0);
+	NATIVE_EXIT(env, that, "GlobalUnlock\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_HeapAlloc
+JNIEXPORT jint JNICALL OS_NATIVE(HeapAlloc)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "HeapAlloc\n")
+	rc = (jint)HeapAlloc((HANDLE)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "HeapAlloc\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_HeapFree
+JNIEXPORT jboolean JNICALL OS_NATIVE(HeapFree)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "HeapFree\n")
+	rc = (jboolean)HeapFree((HANDLE)arg0, arg1, (LPVOID)arg2);
+	NATIVE_EXIT(env, that, "HeapFree\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_HideCaret
+JNIEXPORT jboolean JNICALL OS_NATIVE(HideCaret)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "HideCaret\n")
+	rc = (jboolean)HideCaret((HWND)arg0);
+	NATIVE_EXIT(env, that, "HideCaret\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImageList_1Add
+JNIEXPORT jint JNICALL OS_NATIVE(ImageList_1Add)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "ImageList_1Add\n")
+	rc = (jint)ImageList_Add((HIMAGELIST)arg0, (HBITMAP)arg1, (HBITMAP)arg2);
+	NATIVE_EXIT(env, that, "ImageList_1Add\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImageList_1AddMasked
+JNIEXPORT jint JNICALL OS_NATIVE(ImageList_1AddMasked)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "ImageList_1AddMasked\n")
+	rc = (jint)ImageList_AddMasked((HIMAGELIST)arg0, (HBITMAP)arg1, (COLORREF)arg2);
+	NATIVE_EXIT(env, that, "ImageList_1AddMasked\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImageList_1Create
+JNIEXPORT jint JNICALL OS_NATIVE(ImageList_1Create)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "ImageList_1Create\n")
+	rc = (jint)ImageList_Create(arg0, arg1, arg2, arg3, arg4);
+	NATIVE_EXIT(env, that, "ImageList_1Create\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImageList_1Destroy
+JNIEXPORT jboolean JNICALL OS_NATIVE(ImageList_1Destroy)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ImageList_1Destroy\n")
+	rc = (jboolean)ImageList_Destroy((HIMAGELIST)arg0);
+	NATIVE_EXIT(env, that, "ImageList_1Destroy\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImageList_1GetIcon
+JNIEXPORT jint JNICALL OS_NATIVE(ImageList_1GetIcon)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "ImageList_1GetIcon\n")
+	rc = (jint)ImageList_GetIcon((HIMAGELIST)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "ImageList_1GetIcon\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImageList_1GetIconSize
+JNIEXPORT jboolean JNICALL OS_NATIVE(ImageList_1GetIconSize)
+	(JNIEnv *env, jclass that, jint arg0, jintArray arg1, jintArray arg2)
+{
+	jint *lparg1=NULL;
+	jint *lparg2=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ImageList_1GetIconSize\n")
+	if (arg1) lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL);
+	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);
+	rc = (jboolean)ImageList_GetIconSize((HIMAGELIST)arg0, lparg1, lparg2);
+	if (arg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);
+	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	NATIVE_EXIT(env, that, "ImageList_1GetIconSize\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImageList_1GetImageCount
+JNIEXPORT jint JNICALL OS_NATIVE(ImageList_1GetImageCount)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "ImageList_1GetImageCount\n")
+	rc = (jint)ImageList_GetImageCount((HIMAGELIST)arg0);
+	NATIVE_EXIT(env, that, "ImageList_1GetImageCount\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImageList_1Remove
+JNIEXPORT jboolean JNICALL OS_NATIVE(ImageList_1Remove)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ImageList_1Remove\n")
+	rc = (jboolean)ImageList_Remove((HIMAGELIST)arg0, arg1);
+	NATIVE_EXIT(env, that, "ImageList_1Remove\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImageList_1Replace
+JNIEXPORT jboolean JNICALL OS_NATIVE(ImageList_1Replace)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ImageList_1Replace\n")
+	rc = (jboolean)ImageList_Replace((HIMAGELIST)arg0, arg1, (HBITMAP)arg2, (HBITMAP)arg3);
+	NATIVE_EXIT(env, that, "ImageList_1Replace\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImageList_1ReplaceIcon
+JNIEXPORT jint JNICALL OS_NATIVE(ImageList_1ReplaceIcon)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "ImageList_1ReplaceIcon\n")
+	rc = (jint)ImageList_ReplaceIcon((HIMAGELIST)arg0, arg1, (HICON)arg2);
+	NATIVE_EXIT(env, that, "ImageList_1ReplaceIcon\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImageList_1SetIconSize
+JNIEXPORT jboolean JNICALL OS_NATIVE(ImageList_1SetIconSize)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ImageList_1SetIconSize\n")
+	rc = (jboolean)ImageList_SetIconSize((HIMAGELIST)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "ImageList_1SetIconSize\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmAssociateContext
+JNIEXPORT jint JNICALL OS_NATIVE(ImmAssociateContext)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "ImmAssociateContext\n")
+	rc = (jint)ImmAssociateContext((HWND)arg0, (HIMC)arg1);
+	NATIVE_EXIT(env, that, "ImmAssociateContext\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmCreateContext
+JNIEXPORT jint JNICALL OS_NATIVE(ImmCreateContext)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "ImmCreateContext\n")
+	rc = (jint)ImmCreateContext();
+	NATIVE_EXIT(env, that, "ImmCreateContext\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmDestroyContext
+JNIEXPORT jboolean JNICALL OS_NATIVE(ImmDestroyContext)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ImmDestroyContext\n")
+	rc = (jboolean)ImmDestroyContext((HIMC)arg0);
+	NATIVE_EXIT(env, that, "ImmDestroyContext\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmGetCompositionFontA
+JNIEXPORT jboolean JNICALL OS_NATIVE(ImmGetCompositionFontA)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	LOGFONTA _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ImmGetCompositionFontA\n")
+	if (arg1) lparg1 = getLOGFONTAFields(env, arg1, &_arg1);
+	rc = (jboolean)ImmGetCompositionFontA((HIMC)arg0, lparg1);
+	if (arg1) setLOGFONTAFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "ImmGetCompositionFontA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmGetCompositionFontW
+JNIEXPORT jboolean JNICALL OS_NATIVE(ImmGetCompositionFontW)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	LOGFONTW _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ImmGetCompositionFontW\n")
+	if (arg1) lparg1 = getLOGFONTWFields(env, arg1, &_arg1);
+	rc = (jboolean)ImmGetCompositionFontW((HIMC)arg0, lparg1);
+	if (arg1) setLOGFONTWFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "ImmGetCompositionFontW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmGetCompositionStringA
+JNIEXPORT jint JNICALL OS_NATIVE(ImmGetCompositionStringA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jbyteArray arg2, jint arg3)
+{
+	jbyte *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "ImmGetCompositionStringA\n")
+	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);
+	rc = (jint)ImmGetCompositionStringA((HIMC)arg0, arg1, (LPSTR)lparg2, arg3);
+	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);
+	NATIVE_EXIT(env, that, "ImmGetCompositionStringA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmGetCompositionStringW
+JNIEXPORT jint JNICALL OS_NATIVE(ImmGetCompositionStringW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jcharArray arg2, jint arg3)
+{
+	jchar *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "ImmGetCompositionStringW\n")
+	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);
+	rc = (jint)ImmGetCompositionStringW((HIMC)arg0, arg1, (LPWSTR)lparg2, arg3);
+	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);
+	NATIVE_EXIT(env, that, "ImmGetCompositionStringW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmGetContext
+JNIEXPORT jint JNICALL OS_NATIVE(ImmGetContext)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "ImmGetContext\n")
+	rc = (jint)ImmGetContext((HWND)arg0);
+	NATIVE_EXIT(env, that, "ImmGetContext\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmGetConversionStatus
+JNIEXPORT jboolean JNICALL OS_NATIVE(ImmGetConversionStatus)
+	(JNIEnv *env, jclass that, jint arg0, jintArray arg1, jintArray arg2)
+{
+	jint *lparg1=NULL;
+	jint *lparg2=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ImmGetConversionStatus\n")
+	if (arg1) lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL);
+	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);
+	rc = (jboolean)ImmGetConversionStatus((HIMC)arg0, lparg1, lparg2);
+	if (arg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);
+	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	NATIVE_EXIT(env, that, "ImmGetConversionStatus\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmGetDefaultIMEWnd
+JNIEXPORT jint JNICALL OS_NATIVE(ImmGetDefaultIMEWnd)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "ImmGetDefaultIMEWnd\n")
+	rc = (jint)ImmGetDefaultIMEWnd((HWND)arg0);
+	NATIVE_EXIT(env, that, "ImmGetDefaultIMEWnd\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmGetOpenStatus
+JNIEXPORT jboolean JNICALL OS_NATIVE(ImmGetOpenStatus)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ImmGetOpenStatus\n")
+	rc = (jboolean)ImmGetOpenStatus((HIMC)arg0);
+	NATIVE_EXIT(env, that, "ImmGetOpenStatus\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmReleaseContext
+JNIEXPORT jboolean JNICALL OS_NATIVE(ImmReleaseContext)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ImmReleaseContext\n")
+	rc = (jboolean)ImmReleaseContext((HWND)arg0, (HIMC)arg1);
+	NATIVE_EXIT(env, that, "ImmReleaseContext\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmSetCompositionFontA
+JNIEXPORT jboolean JNICALL OS_NATIVE(ImmSetCompositionFontA)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	LOGFONTA _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ImmSetCompositionFontA\n")
+	if (arg1) lparg1 = getLOGFONTAFields(env, arg1, &_arg1);
+	rc = (jboolean)ImmSetCompositionFontA((HIMC)arg0, lparg1);
+	if (arg1) setLOGFONTAFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "ImmSetCompositionFontA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmSetCompositionFontW
+JNIEXPORT jboolean JNICALL OS_NATIVE(ImmSetCompositionFontW)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	LOGFONTW _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ImmSetCompositionFontW\n")
+	if (arg1) lparg1 = getLOGFONTWFields(env, arg1, &_arg1);
+	rc = (jboolean)ImmSetCompositionFontW((HIMC)arg0, lparg1);
+	if (arg1) setLOGFONTWFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "ImmSetCompositionFontW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmSetCompositionWindow
+JNIEXPORT jboolean JNICALL OS_NATIVE(ImmSetCompositionWindow)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	COMPOSITIONFORM _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ImmSetCompositionWindow\n")
+	if (arg1) lparg1 = getCOMPOSITIONFORMFields(env, arg1, &_arg1);
+	rc = (jboolean)ImmSetCompositionWindow((HIMC)arg0, lparg1);
+	if (arg1) setCOMPOSITIONFORMFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "ImmSetCompositionWindow\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmSetConversionStatus
+JNIEXPORT jboolean JNICALL OS_NATIVE(ImmSetConversionStatus)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ImmSetConversionStatus\n")
+	rc = (jboolean)ImmSetConversionStatus((HIMC)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "ImmSetConversionStatus\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ImmSetOpenStatus
+JNIEXPORT jboolean JNICALL OS_NATIVE(ImmSetOpenStatus)
+	(JNIEnv *env, jclass that, jint arg0, jboolean arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ImmSetOpenStatus\n")
+	rc = (jboolean)ImmSetOpenStatus((HIMC)arg0, arg1);
+	NATIVE_EXIT(env, that, "ImmSetOpenStatus\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_InitCommonControls
+JNIEXPORT void JNICALL OS_NATIVE(InitCommonControls)
+	(JNIEnv *env, jclass that)
+{
+	NATIVE_ENTER(env, that, "InitCommonControls\n")
+	InitCommonControls();
+	NATIVE_EXIT(env, that, "InitCommonControls\n")
+}
+#endif
+
+#ifndef NO_InitCommonControlsEx
+JNIEXPORT jboolean JNICALL OS_NATIVE(InitCommonControlsEx)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	INITCOMMONCONTROLSEX _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "InitCommonControlsEx\n")
+	if (arg0) lparg0 = getINITCOMMONCONTROLSEXFields(env, arg0, &_arg0);
+	rc = (jboolean)InitCommonControlsEx(lparg0);
+	if (arg0) setINITCOMMONCONTROLSEXFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "InitCommonControlsEx\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_InsertMenuA
+JNIEXPORT jboolean JNICALL OS_NATIVE(InsertMenuA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jbyteArray arg4)
+{
+	jbyte *lparg4=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "InsertMenuA\n")
+	if (arg4) lparg4 = (*env)->GetByteArrayElements(env, arg4, NULL);
+	rc = (jboolean)InsertMenuA((HMENU)arg0, arg1, arg2, arg3, lparg4);
+	if (arg4) (*env)->ReleaseByteArrayElements(env, arg4, lparg4, 0);
+	NATIVE_EXIT(env, that, "InsertMenuA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_InsertMenuItemA
+JNIEXPORT jboolean JNICALL OS_NATIVE(InsertMenuItemA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2, jobject arg3)
+{
+	MENUITEMINFO _arg3, *lparg3=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "InsertMenuItemA\n")
+	if (arg3) lparg3 = getMENUITEMINFOFields(env, arg3, &_arg3);
+	rc = (jboolean)InsertMenuItemA((HMENU)arg0, arg1, arg2, lparg3);
+	if (arg3) setMENUITEMINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "InsertMenuItemA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_InsertMenuItemW
+JNIEXPORT jboolean JNICALL OS_NATIVE(InsertMenuItemW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2, jobject arg3)
+{
+	MENUITEMINFO _arg3, *lparg3=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "InsertMenuItemW\n")
+	if (arg3) lparg3 = getMENUITEMINFOFields(env, arg3, &_arg3);
+	rc = (jboolean)InsertMenuItemW((HMENU)arg0, arg1, arg2, (LPMENUITEMINFOW)lparg3);
+	if (arg3) setMENUITEMINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "InsertMenuItemW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_InsertMenuW
+JNIEXPORT jboolean JNICALL OS_NATIVE(InsertMenuW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jcharArray arg4)
+{
+	jchar *lparg4=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "InsertMenuW\n")
+	if (arg4) lparg4 = (*env)->GetCharArrayElements(env, arg4, NULL);
+	rc = (jboolean)InsertMenuW((HMENU)arg0, arg1, arg2, arg3, lparg4);
+	if (arg4) (*env)->ReleaseCharArrayElements(env, arg4, lparg4, 0);
+	NATIVE_EXIT(env, that, "InsertMenuW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_InvalidateRect
+JNIEXPORT jboolean JNICALL OS_NATIVE(InvalidateRect)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jboolean arg2)
+{
+	RECT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "InvalidateRect\n")
+	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);
+	rc = (jboolean)InvalidateRect((HWND)arg0, lparg1, arg2);
+	if (arg1) setRECTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "InvalidateRect\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_InvalidateRgn
+JNIEXPORT jboolean JNICALL OS_NATIVE(InvalidateRgn)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "InvalidateRgn\n")
+	rc = (jboolean)InvalidateRgn((HWND)arg0, (HRGN)arg1, arg2);
+	NATIVE_EXIT(env, that, "InvalidateRgn\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_IsDBCSLeadByte
+JNIEXPORT jboolean JNICALL OS_NATIVE(IsDBCSLeadByte)
+	(JNIEnv *env, jclass that, jbyte arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "IsDBCSLeadByte\n")
+	rc = (jboolean)IsDBCSLeadByte(arg0);
+	NATIVE_EXIT(env, that, "IsDBCSLeadByte\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_IsIconic
+JNIEXPORT jboolean JNICALL OS_NATIVE(IsIconic)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "IsIconic\n")
+	rc = (jboolean)IsIconic((HWND)arg0);
+	NATIVE_EXIT(env, that, "IsIconic\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_IsWindowEnabled
+JNIEXPORT jboolean JNICALL OS_NATIVE(IsWindowEnabled)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "IsWindowEnabled\n")
+	rc = (jboolean)IsWindowEnabled((HWND)arg0);
+	NATIVE_EXIT(env, that, "IsWindowEnabled\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_IsWindowVisible
+JNIEXPORT jboolean JNICALL OS_NATIVE(IsWindowVisible)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "IsWindowVisible\n")
+	rc = (jboolean)IsWindowVisible((HWND)arg0);
+	NATIVE_EXIT(env, that, "IsWindowVisible\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_IsZoomed
+JNIEXPORT jboolean JNICALL OS_NATIVE(IsZoomed)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "IsZoomed\n")
+	rc = (jboolean)IsZoomed((HWND)arg0);
+	NATIVE_EXIT(env, that, "IsZoomed\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_KillTimer
+JNIEXPORT jboolean JNICALL OS_NATIVE(KillTimer)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "KillTimer\n")
+	rc = (jboolean)KillTimer((HWND)arg0, arg1);
+	NATIVE_EXIT(env, that, "KillTimer\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_LineTo
+JNIEXPORT jboolean JNICALL OS_NATIVE(LineTo)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "LineTo\n")
+	rc = (jboolean)LineTo((HDC)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "LineTo\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_LoadBitmapA
+JNIEXPORT jint JNICALL OS_NATIVE(LoadBitmapA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "LoadBitmapA\n")
+	rc = (jint)LoadBitmapA((HINSTANCE)arg0, (LPSTR)arg1);
+	NATIVE_EXIT(env, that, "LoadBitmapA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_LoadBitmapW
+JNIEXPORT jint JNICALL OS_NATIVE(LoadBitmapW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "LoadBitmapW\n")
+	rc = (jint)LoadBitmapW((HINSTANCE)arg0, (LPWSTR)arg1);
+	NATIVE_EXIT(env, that, "LoadBitmapW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_LoadCursorA
+JNIEXPORT jint JNICALL OS_NATIVE(LoadCursorA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "LoadCursorA\n")
+	rc = (jint)LoadCursorA((HINSTANCE)arg0, (LPSTR)arg1);
+	NATIVE_EXIT(env, that, "LoadCursorA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_LoadCursorW
+JNIEXPORT jint JNICALL OS_NATIVE(LoadCursorW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "LoadCursorW\n")
+	rc = (jint)LoadCursorW((HINSTANCE)arg0, (LPWSTR)arg1);
+	NATIVE_EXIT(env, that, "LoadCursorW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_LoadIconA
+JNIEXPORT jint JNICALL OS_NATIVE(LoadIconA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "LoadIconA\n")
+	rc = (jint)LoadIconA((HINSTANCE)arg0, (LPSTR)arg1);
+	NATIVE_EXIT(env, that, "LoadIconA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_LoadIconW
+JNIEXPORT jint JNICALL OS_NATIVE(LoadIconW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "LoadIconW\n")
+	rc = (jint)LoadIconW((HINSTANCE)arg0, (LPWSTR)arg1);
+	NATIVE_EXIT(env, that, "LoadIconW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_LoadImageA
+JNIEXPORT jint JNICALL OS_NATIVE(LoadImageA)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2, jint arg3, jint arg4, jint arg5)
+{
+	jbyte *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "LoadImageA\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	rc = (jint)LoadImageA((HINSTANCE)arg0, (LPSTR)lparg1, arg2, arg3, arg4, arg5);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "LoadImageA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_LoadImageW
+JNIEXPORT jint JNICALL OS_NATIVE(LoadImageW)
+	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2, jint arg3, jint arg4, jint arg5)
+{
+	jchar *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "LoadImageW\n")
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	rc = (jint)LoadImageW((HINSTANCE)arg0, (LPWSTR)lparg1, arg2, arg3, arg4, arg5);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "LoadImageW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_LoadLibraryA
+JNIEXPORT jint JNICALL OS_NATIVE(LoadLibraryA)
+	(JNIEnv *env, jclass that, jbyteArray arg0)
+{
+	jbyte *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "LoadLibraryA\n")
+	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);
+	rc = (jint)LoadLibraryA((LPSTR)lparg0);
+	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "LoadLibraryA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_LoadLibraryW
+JNIEXPORT jint JNICALL OS_NATIVE(LoadLibraryW)
+	(JNIEnv *env, jclass that, jcharArray arg0)
+{
+	jchar *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "LoadLibraryW\n")
+	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);
+	rc = (jint)LoadLibraryW((LPWSTR)lparg0);
+	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "LoadLibraryW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_MapVirtualKeyA
+JNIEXPORT jint JNICALL OS_NATIVE(MapVirtualKeyA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "MapVirtualKeyA\n")
+	rc = (jint)MapVirtualKeyA(arg0, arg1);
+	NATIVE_EXIT(env, that, "MapVirtualKeyA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_MapVirtualKeyW
+JNIEXPORT jint JNICALL OS_NATIVE(MapVirtualKeyW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "MapVirtualKeyW\n")
+	rc = (jint)MapVirtualKeyW(arg0, arg1);
+	NATIVE_EXIT(env, that, "MapVirtualKeyW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_MapWindowPoints__IILorg_eclipse_swt_internal_win32_POINT_2I
+JNIEXPORT jint JNICALL OS_NATIVE(MapWindowPoints__IILorg_eclipse_swt_internal_win32_POINT_2I)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2, jint arg3)
+{
+	POINT _arg2, *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "MapWindowPoints__IILorg_eclipse_swt_internal_win32_POINT_2I\n")
+	if (arg2) lparg2 = getPOINTFields(env, arg2, &_arg2);
+	rc = (jint)MapWindowPoints((HWND)arg0, (HWND)arg1, (LPPOINT)lparg2, arg3);
+	if (arg2) setPOINTFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "MapWindowPoints__IILorg_eclipse_swt_internal_win32_POINT_2I\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_MapWindowPoints__IILorg_eclipse_swt_internal_win32_RECT_2I
+JNIEXPORT jint JNICALL OS_NATIVE(MapWindowPoints__IILorg_eclipse_swt_internal_win32_RECT_2I)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2, jint arg3)
+{
+	RECT _arg2, *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "MapWindowPoints__IILorg_eclipse_swt_internal_win32_RECT_2I\n")
+	if (arg2) lparg2 = getRECTFields(env, arg2, &_arg2);
+	rc = (jint)MapWindowPoints((HWND)arg0, (HWND)arg1, (LPPOINT)lparg2, arg3);
+	if (arg2) setRECTFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "MapWindowPoints__IILorg_eclipse_swt_internal_win32_RECT_2I\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_MessageBeep
+JNIEXPORT jboolean JNICALL OS_NATIVE(MessageBeep)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "MessageBeep\n")
+	rc = (jboolean)MessageBeep(arg0);
+	NATIVE_EXIT(env, that, "MessageBeep\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_MessageBoxA
+JNIEXPORT jint JNICALL OS_NATIVE(MessageBoxA)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jbyteArray arg2, jint arg3)
+{
+	jbyte *lparg1=NULL;
+	jbyte *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "MessageBoxA\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);
+	rc = (jint)MessageBoxA((HWND)arg0, (LPSTR)lparg1, (LPSTR)lparg2, arg3);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);
+	NATIVE_EXIT(env, that, "MessageBoxA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_MessageBoxW
+JNIEXPORT jint JNICALL OS_NATIVE(MessageBoxW)
+	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jcharArray arg2, jint arg3)
+{
+	jchar *lparg1=NULL;
+	jchar *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "MessageBoxW\n")
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);
+	rc = (jint)MessageBoxW((HWND)arg0, (LPWSTR)lparg1, (LPWSTR)lparg2, arg3);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);
+	NATIVE_EXIT(env, that, "MessageBoxW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_DROPFILES_2I
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_DROPFILES_2I)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)
+{
+	DROPFILES _arg1, *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_DROPFILES_2I\n")
+	if (arg1) lparg1 = getDROPFILESFields(env, arg1, &_arg1);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_DROPFILES_2I\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)
+{
+	GRADIENT_RECT _arg1, *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I\n")
+	if (arg1) lparg1 = getGRADIENT_RECTFields(env, arg1, &_arg1);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTA_2I
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTA_2I)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)
+{
+	LOGFONTA _arg1, *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTA_2I\n")
+	if (arg1) lparg1 = getLOGFONTAFields(env, arg1, &_arg1);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTA_2I\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTW_2I
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTW_2I)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)
+{
+	LOGFONTW _arg1, *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTW_2I\n")
+	if (arg1) lparg1 = getLOGFONTWFields(env, arg1, &_arg1);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTW_2I\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_MEASUREITEMSTRUCT_2I
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_MEASUREITEMSTRUCT_2I)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)
+{
+	MEASUREITEMSTRUCT _arg1, *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_MEASUREITEMSTRUCT_2I\n")
+	if (arg1) lparg1 = getMEASUREITEMSTRUCTFields(env, arg1, &_arg1);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_MEASUREITEMSTRUCT_2I\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2I
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2I)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)
+{
+	NMLVCUSTOMDRAW _arg1, *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2I\n")
+	if (arg1) lparg1 = getNMLVCUSTOMDRAWFields(env, arg1, &_arg1);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2I\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2I
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2I)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)
+{
+	NMTTDISPINFOA _arg1, *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2I\n")
+	if (arg1) lparg1 = getNMTTDISPINFOAFields(env, arg1, &_arg1);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2I\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2I
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2I)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)
+{
+	NMTTDISPINFOW _arg1, *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2I\n")
+	if (arg1) lparg1 = getNMTTDISPINFOWFields(env, arg1, &_arg1);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2I\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_NMTVCUSTOMDRAW_2I
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_NMTVCUSTOMDRAW_2I)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)
+{
+	NMTVCUSTOMDRAW _arg1, *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_NMTVCUSTOMDRAW_2I\n")
+	if (arg1) lparg1 = getNMTVCUSTOMDRAWFields(env, arg1, &_arg1);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_NMTVCUSTOMDRAW_2I\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_RECT_2I
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_RECT_2I)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)
+{
+	RECT _arg1, *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_RECT_2I\n")
+	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_RECT_2I\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_TRIVERTEX_2I
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_TRIVERTEX_2I)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)
+{
+	TRIVERTEX _arg1, *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_TRIVERTEX_2I\n")
+	if (arg1) lparg1 = getTRIVERTEXFields(env, arg1, &_arg1);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_TRIVERTEX_2I\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__ILorg_eclipse_swt_internal_win32_WINDOWPOS_2I
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__ILorg_eclipse_swt_internal_win32_WINDOWPOS_2I)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2)
+{
+	WINDOWPOS _arg1, *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_WINDOWPOS_2I\n")
+	if (arg1) lparg1 = getWINDOWPOSFields(env, arg1, &_arg1);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	if (arg1) setWINDOWPOSFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "MoveMemory__ILorg_eclipse_swt_internal_win32_WINDOWPOS_2I\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__I_3BI
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__I_3BI)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2)
+{
+	jbyte *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__I_3BI\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, JNI_ABORT);
+	NATIVE_EXIT(env, that, "MoveMemory__I_3BI\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__I_3CI
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__I_3CI)
+	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2)
+{
+	jchar *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__I_3CI\n")
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, JNI_ABORT);
+	NATIVE_EXIT(env, that, "MoveMemory__I_3CI\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__I_3DI
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__I_3DI)
+	(JNIEnv *env, jclass that, jint arg0, jdoubleArray arg1, jint arg2)
+{
+	jdouble *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__I_3DI\n")
+	if (arg1) lparg1 = (*env)->GetDoubleArrayElements(env, arg1, NULL);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	if (arg1) (*env)->ReleaseDoubleArrayElements(env, arg1, lparg1, JNI_ABORT);
+	NATIVE_EXIT(env, that, "MoveMemory__I_3DI\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__I_3FI
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__I_3FI)
+	(JNIEnv *env, jclass that, jint arg0, jfloatArray arg1, jint arg2)
+{
+	jfloat *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__I_3FI\n")
+	if (arg1) lparg1 = (*env)->GetFloatArrayElements(env, arg1, NULL);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	if (arg1) (*env)->ReleaseFloatArrayElements(env, arg1, lparg1, JNI_ABORT);
+	NATIVE_EXIT(env, that, "MoveMemory__I_3FI\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__I_3II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__I_3II)
+	(JNIEnv *env, jclass that, jint arg0, jintArray arg1, jint arg2)
+{
+	jint *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__I_3II\n")
+	if (arg1) lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	if (arg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, JNI_ABORT);
+	NATIVE_EXIT(env, that, "MoveMemory__I_3II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__I_3SI
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__I_3SI)
+	(JNIEnv *env, jclass that, jint arg0, jshortArray arg1, jint arg2)
+{
+	jshort *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__I_3SI\n")
+	if (arg1) lparg1 = (*env)->GetShortArrayElements(env, arg1, NULL);
+	MoveMemory((PVOID)arg0, (CONST VOID *)lparg1, arg2);
+	if (arg1) (*env)->ReleaseShortArrayElements(env, arg1, lparg1, JNI_ABORT);
+	NATIVE_EXIT(env, that, "MoveMemory__I_3SI\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_BITMAPINFOHEADER_2_3BI
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_BITMAPINFOHEADER_2_3BI)
+	(JNIEnv *env, jclass that, jobject arg0, jbyteArray arg1, jint arg2)
+{
+	BITMAPINFOHEADER _arg0, *lparg0=NULL;
+	jbyte *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_BITMAPINFOHEADER_2_3BI\n")
+	if (arg0) lparg0 = &_arg0;
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	MoveMemory((PVOID)lparg0, (CONST VOID *)lparg1, arg2);
+	if (arg0) setBITMAPINFOHEADERFields(env, arg0, lparg0);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_BITMAPINFOHEADER_2_3BI\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_DRAWITEMSTRUCT_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_DRAWITEMSTRUCT_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	DRAWITEMSTRUCT _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_DRAWITEMSTRUCT_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setDRAWITEMSTRUCTFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_DRAWITEMSTRUCT_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_HDITEM_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_HDITEM_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	HDITEM _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_HDITEM_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setHDITEMFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_HDITEM_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_HELPINFO_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_HELPINFO_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	HELPINFO _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_HELPINFO_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setHELPINFOFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_HELPINFO_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTA_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTA_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	LOGFONTA _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTA_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setLOGFONTAFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTA_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTW_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTW_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	LOGFONTW _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTW_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setLOGFONTWFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTW_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_MEASUREITEMSTRUCT_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_MEASUREITEMSTRUCT_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	MEASUREITEMSTRUCT _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_MEASUREITEMSTRUCT_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setMEASUREITEMSTRUCTFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_MEASUREITEMSTRUCT_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_MSG_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_MSG_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	MSG _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_MSG_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setMSGFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_MSG_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMHDR_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMHDR_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	NMHDR _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMHDR_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setNMHDRFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMHDR_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	NMHEADER _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setNMHEADERFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMHEADER_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMLISTVIEW_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMLISTVIEW_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	NMLISTVIEW _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMLISTVIEW_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setNMLISTVIEWFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMLISTVIEW_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	NMLVCUSTOMDRAW _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setNMLVCUSTOMDRAWFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMLVCUSTOMDRAW_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMREBARCHEVRON_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMREBARCHEVRON_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	NMREBARCHEVRON _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMREBARCHEVRON_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setNMREBARCHEVRONFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMREBARCHEVRON_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMTOOLBAR_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMTOOLBAR_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	NMTOOLBAR _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMTOOLBAR_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setNMTOOLBARFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMTOOLBAR_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	NMTTDISPINFOA _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setNMTTDISPINFOAFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	NMTTDISPINFOW _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setNMTTDISPINFOWFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMTVCUSTOMDRAW_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_NMTVCUSTOMDRAW_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	NMTVCUSTOMDRAW _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMTVCUSTOMDRAW_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setNMTVCUSTOMDRAWFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_NMTVCUSTOMDRAW_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_TVITEM_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_TVITEM_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	TVITEM _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_TVITEM_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setTVITEMFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_TVITEM_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory__Lorg_eclipse_swt_internal_win32_WINDOWPOS_2II
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory__Lorg_eclipse_swt_internal_win32_WINDOWPOS_2II)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2)
+{
+	WINDOWPOS _arg0, *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_WINDOWPOS_2II\n")
+	if (arg0) lparg0 = &_arg0;
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) setWINDOWPOSFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "MoveMemory__Lorg_eclipse_swt_internal_win32_WINDOWPOS_2II\n")
+}
+#endif
+
+#ifndef NO_MoveMemory___3BII
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory___3BII)
+	(JNIEnv *env, jclass that, jbyteArray arg0, jint arg1, jint arg2)
+{
+	jbyte *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory___3BII\n")
+	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "MoveMemory___3BII\n")
+}
+#endif
+
+#ifndef NO_MoveMemory___3BLorg_eclipse_swt_internal_win32_ACCEL_2I
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory___3BLorg_eclipse_swt_internal_win32_ACCEL_2I)
+	(JNIEnv *env, jclass that, jbyteArray arg0, jobject arg1, jint arg2)
+{
+	jbyte *lparg0=NULL;
+	ACCEL _arg1, *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory___3BLorg_eclipse_swt_internal_win32_ACCEL_2I\n")
+	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);
+	if (arg1) lparg1 = getACCELFields(env, arg1, &_arg1);
+	MoveMemory((PVOID)lparg0, (CONST VOID *)lparg1, arg2);
+	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "MoveMemory___3BLorg_eclipse_swt_internal_win32_ACCEL_2I\n")
+}
+#endif
+
+#ifndef NO_MoveMemory___3BLorg_eclipse_swt_internal_win32_BITMAPINFOHEADER_2I
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory___3BLorg_eclipse_swt_internal_win32_BITMAPINFOHEADER_2I)
+	(JNIEnv *env, jclass that, jbyteArray arg0, jobject arg1, jint arg2)
+{
+	jbyte *lparg0=NULL;
+	BITMAPINFOHEADER _arg1, *lparg1=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory___3BLorg_eclipse_swt_internal_win32_BITMAPINFOHEADER_2I\n")
+	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);
+	if (arg1) lparg1 = getBITMAPINFOHEADERFields(env, arg1, &_arg1);
+	MoveMemory((PVOID)lparg0, (CONST VOID *)lparg1, arg2);
+	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "MoveMemory___3BLorg_eclipse_swt_internal_win32_BITMAPINFOHEADER_2I\n")
+}
+#endif
+
+#ifndef NO_MoveMemory___3CII
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory___3CII)
+	(JNIEnv *env, jclass that, jcharArray arg0, jint arg1, jint arg2)
+{
+	jchar *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory___3CII\n")
+	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "MoveMemory___3CII\n")
+}
+#endif
+
+#ifndef NO_MoveMemory___3DII
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory___3DII)
+	(JNIEnv *env, jclass that, jdoubleArray arg0, jint arg1, jint arg2)
+{
+	jdouble *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory___3DII\n")
+	if (arg0) lparg0 = (*env)->GetDoubleArrayElements(env, arg0, NULL);
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) (*env)->ReleaseDoubleArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "MoveMemory___3DII\n")
+}
+#endif
+
+#ifndef NO_MoveMemory___3FII
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory___3FII)
+	(JNIEnv *env, jclass that, jfloatArray arg0, jint arg1, jint arg2)
+{
+	jfloat *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory___3FII\n")
+	if (arg0) lparg0 = (*env)->GetFloatArrayElements(env, arg0, NULL);
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) (*env)->ReleaseFloatArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "MoveMemory___3FII\n")
+}
+#endif
+
+#ifndef NO_MoveMemory___3III
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory___3III)
+	(JNIEnv *env, jclass that, jintArray arg0, jint arg1, jint arg2)
+{
+	jint *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory___3III\n")
+	if (arg0) lparg0 = (*env)->GetIntArrayElements(env, arg0, NULL);
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) (*env)->ReleaseIntArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "MoveMemory___3III\n")
+}
+#endif
+
+#ifndef NO_MoveMemory___3SII
+JNIEXPORT void JNICALL OS_NATIVE(MoveMemory___3SII)
+	(JNIEnv *env, jclass that, jshortArray arg0, jint arg1, jint arg2)
+{
+	jshort *lparg0=NULL;
+	NATIVE_ENTER(env, that, "MoveMemory___3SII\n")
+	if (arg0) lparg0 = (*env)->GetShortArrayElements(env, arg0, NULL);
+	MoveMemory((PVOID)lparg0, (CONST VOID *)arg1, arg2);
+	if (arg0) (*env)->ReleaseShortArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "MoveMemory___3SII\n")
+}
+#endif
+
+#ifndef NO_MoveToEx
+JNIEXPORT jboolean JNICALL OS_NATIVE(MoveToEx)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "MoveToEx\n")
+	rc = (jboolean)MoveToEx((HDC)arg0, arg1, arg2, (LPPOINT)arg3);
+	NATIVE_EXIT(env, that, "MoveToEx\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_MsgWaitForMultipleObjectsEx
+JNIEXPORT jint JNICALL OS_NATIVE(MsgWaitForMultipleObjectsEx)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "MsgWaitForMultipleObjectsEx\n")
+	rc = (jint)MsgWaitForMultipleObjectsEx((DWORD)arg0, (LPHANDLE)arg1, (DWORD)arg2, (DWORD)arg3, (DWORD)arg4);
+	NATIVE_EXIT(env, that, "MsgWaitForMultipleObjectsEx\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_MultiByteToWideChar__IIII_3CI
+JNIEXPORT jint JNICALL OS_NATIVE(MultiByteToWideChar__IIII_3CI)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jcharArray arg4, jint arg5)
+{
+	jchar *lparg4=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "MultiByteToWideChar__IIII_3CI\n")
+	if (arg4) lparg4 = (*env)->GetCharArrayElements(env, arg4, NULL);
+	rc = (jint)MultiByteToWideChar(arg0, arg1, (LPCSTR)arg2, arg3, (LPWSTR)lparg4, arg5);
+	if (arg4) (*env)->ReleaseCharArrayElements(env, arg4, lparg4, 0);
+	NATIVE_EXIT(env, that, "MultiByteToWideChar__IIII_3CI\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_MultiByteToWideChar__II_3BI_3CI
+JNIEXPORT jint JNICALL OS_NATIVE(MultiByteToWideChar__II_3BI_3CI)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jbyteArray arg2, jint arg3, jcharArray arg4, jint arg5)
+{
+	jbyte *lparg2=NULL;
+	jchar *lparg4=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "MultiByteToWideChar__II_3BI_3CI\n")
+	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);
+	if (arg4) lparg4 = (*env)->GetCharArrayElements(env, arg4, NULL);
+	rc = (jint)MultiByteToWideChar(arg0, arg1, (LPCSTR)lparg2, arg3, (LPWSTR)lparg4, arg5);
+	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);
+	if (arg4) (*env)->ReleaseCharArrayElements(env, arg4, lparg4, 0);
+	NATIVE_EXIT(env, that, "MultiByteToWideChar__II_3BI_3CI\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_OleInitialize
+JNIEXPORT jint JNICALL OS_NATIVE(OleInitialize)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "OleInitialize\n")
+	rc = (jint)OleInitialize((LPVOID)arg0);
+	NATIVE_EXIT(env, that, "OleInitialize\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_OleUninitialize
+JNIEXPORT void JNICALL OS_NATIVE(OleUninitialize)
+	(JNIEnv *env, jclass that)
+{
+	NATIVE_ENTER(env, that, "OleUninitialize\n")
+	OleUninitialize();
+	NATIVE_EXIT(env, that, "OleUninitialize\n")
+}
+#endif
+
+#ifndef NO_OpenClipboard
+JNIEXPORT jboolean JNICALL OS_NATIVE(OpenClipboard)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "OpenClipboard\n")
+	rc = (jboolean)OpenClipboard((HWND)arg0);
+	NATIVE_EXIT(env, that, "OpenClipboard\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_PatBlt
+JNIEXPORT jboolean JNICALL OS_NATIVE(PatBlt)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "PatBlt\n")
+	rc = (jboolean)PatBlt((HDC)arg0, arg1, arg2, arg3, arg4, arg5);
+	NATIVE_EXIT(env, that, "PatBlt\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_PeekMessageA
+JNIEXPORT jboolean JNICALL OS_NATIVE(PeekMessageA)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2, jint arg3, jint arg4)
+{
+	MSG _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "PeekMessageA\n")
+	if (arg0) lparg0 = getMSGFields(env, arg0, &_arg0);
+	rc = (jboolean)PeekMessageA(lparg0, (HWND)arg1, arg2, arg3, arg4);
+	if (arg0) setMSGFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "PeekMessageA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_PeekMessageW
+JNIEXPORT jboolean JNICALL OS_NATIVE(PeekMessageW)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2, jint arg3, jint arg4)
+{
+	MSG _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "PeekMessageW\n")
+	if (arg0) lparg0 = getMSGFields(env, arg0, &_arg0);
+	rc = (jboolean)PeekMessageW(lparg0, (HWND)arg1, arg2, arg3, arg4);
+	if (arg0) setMSGFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "PeekMessageW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_Pie
+JNIEXPORT jboolean JNICALL OS_NATIVE(Pie)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "Pie\n")
+	rc = (jboolean)Pie((HDC)arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
+	NATIVE_EXIT(env, that, "Pie\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_Polygon
+JNIEXPORT jboolean JNICALL OS_NATIVE(Polygon)
+	(JNIEnv *env, jclass that, jint arg0, jintArray arg1, jint arg2)
+{
+	jint *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "Polygon\n")
+	if (arg1) lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL);
+	rc = (jboolean)Polygon((HDC)arg0, (CONST POINT *)lparg1, arg2);
+	if (arg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "Polygon\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_Polyline
+JNIEXPORT jboolean JNICALL OS_NATIVE(Polyline)
+	(JNIEnv *env, jclass that, jint arg0, jintArray arg1, jint arg2)
+{
+	jint *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "Polyline\n")
+	if (arg1) lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL);
+	rc = (jboolean)Polyline((HDC)arg0, (CONST POINT *)lparg1, arg2);
+	if (arg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "Polyline\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_PostMessageA
+JNIEXPORT jboolean JNICALL OS_NATIVE(PostMessageA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "PostMessageA\n")
+	rc = (jboolean)PostMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);
+	NATIVE_EXIT(env, that, "PostMessageA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_PostMessageW
+JNIEXPORT jboolean JNICALL OS_NATIVE(PostMessageW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "PostMessageW\n")
+	rc = (jboolean)PostMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);
+	NATIVE_EXIT(env, that, "PostMessageW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_PostThreadMessageA
+JNIEXPORT jboolean JNICALL OS_NATIVE(PostThreadMessageA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "PostThreadMessageA\n")
+	rc = (jboolean)PostThreadMessageA(arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);
+	NATIVE_EXIT(env, that, "PostThreadMessageA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_PostThreadMessageW
+JNIEXPORT jboolean JNICALL OS_NATIVE(PostThreadMessageW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "PostThreadMessageW\n")
+	rc = (jboolean)PostThreadMessageW(arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);
+	NATIVE_EXIT(env, that, "PostThreadMessageW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_PrintDlgA
+JNIEXPORT jboolean JNICALL OS_NATIVE(PrintDlgA)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	PRINTDLG _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "PrintDlgA\n")
+	if (arg0) lparg0 = getPRINTDLGFields(env, arg0, &_arg0);
+	rc = (jboolean)PrintDlgA(lparg0);
+	if (arg0) setPRINTDLGFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "PrintDlgA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_PrintDlgW
+JNIEXPORT jboolean JNICALL OS_NATIVE(PrintDlgW)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	PRINTDLG _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "PrintDlgW\n")
+	if (arg0) lparg0 = getPRINTDLGFields(env, arg0, &_arg0);
+	rc = (jboolean)PrintDlgW((LPPRINTDLGW)lparg0);
+	if (arg0) setPRINTDLGFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "PrintDlgW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_PtInRect
+JNIEXPORT jboolean JNICALL OS_NATIVE(PtInRect)
+	(JNIEnv *env, jclass that, jobject arg0, jobject arg1)
+{
+	RECT _arg0, *lparg0=NULL;
+	POINT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "PtInRect\n")
+	if (arg0) lparg0 = getRECTFields(env, arg0, &_arg0);
+	if (arg1) lparg1 = getPOINTFields(env, arg1, &_arg1);
+	rc = (jboolean)PtInRect(lparg0, *lparg1);
+	if (arg0) setRECTFields(env, arg0, lparg0);
+	if (arg1) setPOINTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "PtInRect\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_PtInRegion
+JNIEXPORT jboolean JNICALL OS_NATIVE(PtInRegion)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "PtInRegion\n")
+	rc = (jboolean)PtInRegion((HRGN)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "PtInRegion\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RealizePalette
+JNIEXPORT jint JNICALL OS_NATIVE(RealizePalette)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "RealizePalette\n")
+	rc = (jint)RealizePalette((HDC)arg0);
+	NATIVE_EXIT(env, that, "RealizePalette\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RectInRegion
+JNIEXPORT jboolean JNICALL OS_NATIVE(RectInRegion)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	RECT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "RectInRegion\n")
+	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);
+	rc = (jboolean)RectInRegion((HRGN)arg0, lparg1);
+	if (arg1) setRECTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "RectInRegion\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_Rectangle
+JNIEXPORT jboolean JNICALL OS_NATIVE(Rectangle)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "Rectangle\n")
+	rc = (jboolean)Rectangle((HDC)arg0, arg1, arg2, arg3, arg4);
+	NATIVE_EXIT(env, that, "Rectangle\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RedrawWindow
+JNIEXPORT jboolean JNICALL OS_NATIVE(RedrawWindow)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2, jint arg3)
+{
+	RECT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "RedrawWindow\n")
+	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);
+	rc = (jboolean)RedrawWindow((HWND)arg0, lparg1, (HRGN)arg2, arg3);
+	if (arg1) setRECTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "RedrawWindow\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RegCloseKey
+JNIEXPORT jint JNICALL OS_NATIVE(RegCloseKey)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "RegCloseKey\n")
+	rc = (jint)RegCloseKey((HKEY)arg0);
+	NATIVE_EXIT(env, that, "RegCloseKey\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RegEnumKeyExA
+JNIEXPORT jint JNICALL OS_NATIVE(RegEnumKeyExA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jbyteArray arg2, jintArray arg3, jintArray arg4, jbyteArray arg5, jintArray arg6, jobject arg7)
+{
+	jbyte *lparg2=NULL;
+	jint *lparg3=NULL;
+	jint *lparg4=NULL;
+	jbyte *lparg5=NULL;
+	jint *lparg6=NULL;
+	FILETIME _arg7, *lparg7=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "RegEnumKeyExA\n")
+	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);
+	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);
+	if (arg4) lparg4 = (*env)->GetIntArrayElements(env, arg4, NULL);
+	if (arg5) lparg5 = (*env)->GetByteArrayElements(env, arg5, NULL);
+	if (arg6) lparg6 = (*env)->GetIntArrayElements(env, arg6, NULL);
+	if (arg7) lparg7 = getFILETIMEFields(env, arg7, &_arg7);
+	rc = (jint)RegEnumKeyExA((HKEY)arg0, arg1, (LPSTR)lparg2, lparg3, lparg4, (LPSTR)lparg5, lparg6, lparg7);
+	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);
+	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	if (arg4) (*env)->ReleaseIntArrayElements(env, arg4, lparg4, 0);
+	if (arg5) (*env)->ReleaseByteArrayElements(env, arg5, lparg5, 0);
+	if (arg6) (*env)->ReleaseIntArrayElements(env, arg6, lparg6, 0);
+	if (arg7) setFILETIMEFields(env, arg7, lparg7);
+	NATIVE_EXIT(env, that, "RegEnumKeyExA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RegEnumKeyExW
+JNIEXPORT jint JNICALL OS_NATIVE(RegEnumKeyExW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jcharArray arg2, jintArray arg3, jintArray arg4, jcharArray arg5, jintArray arg6, jobject arg7)
+{
+	jchar *lparg2=NULL;
+	jint *lparg3=NULL;
+	jint *lparg4=NULL;
+	jchar *lparg5=NULL;
+	jint *lparg6=NULL;
+	FILETIME _arg7, *lparg7=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "RegEnumKeyExW\n")
+	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);
+	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);
+	if (arg4) lparg4 = (*env)->GetIntArrayElements(env, arg4, NULL);
+	if (arg5) lparg5 = (*env)->GetCharArrayElements(env, arg5, NULL);
+	if (arg6) lparg6 = (*env)->GetIntArrayElements(env, arg6, NULL);
+	if (arg7) lparg7 = getFILETIMEFields(env, arg7, &_arg7);
+	rc = (jint)RegEnumKeyExW((HKEY)arg0, arg1, (LPWSTR)lparg2, lparg3, lparg4, (LPWSTR)lparg5, lparg6, lparg7);
+	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);
+	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	if (arg4) (*env)->ReleaseIntArrayElements(env, arg4, lparg4, 0);
+	if (arg5) (*env)->ReleaseCharArrayElements(env, arg5, lparg5, 0);
+	if (arg6) (*env)->ReleaseIntArrayElements(env, arg6, lparg6, 0);
+	if (arg7) setFILETIMEFields(env, arg7, lparg7);
+	NATIVE_EXIT(env, that, "RegEnumKeyExW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RegOpenKeyExA
+JNIEXPORT jint JNICALL OS_NATIVE(RegOpenKeyExA)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2, jint arg3, jintArray arg4)
+{
+	jbyte *lparg1=NULL;
+	jint *lparg4=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "RegOpenKeyExA\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	if (arg4) lparg4 = (*env)->GetIntArrayElements(env, arg4, NULL);
+	rc = (jint)RegOpenKeyExA((HKEY)arg0, (LPSTR)lparg1, arg2, arg3, (PHKEY)lparg4);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	if (arg4) (*env)->ReleaseIntArrayElements(env, arg4, lparg4, 0);
+	NATIVE_EXIT(env, that, "RegOpenKeyExA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RegOpenKeyExW
+JNIEXPORT jint JNICALL OS_NATIVE(RegOpenKeyExW)
+	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2, jint arg3, jintArray arg4)
+{
+	jchar *lparg1=NULL;
+	jint *lparg4=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "RegOpenKeyExW\n")
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	if (arg4) lparg4 = (*env)->GetIntArrayElements(env, arg4, NULL);
+	rc = (jint)RegOpenKeyExW((HKEY)arg0, (LPWSTR)lparg1, arg2, arg3, (PHKEY)lparg4);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	if (arg4) (*env)->ReleaseIntArrayElements(env, arg4, lparg4, 0);
+	NATIVE_EXIT(env, that, "RegOpenKeyExW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RegQueryInfoKeyA
+JNIEXPORT jint JNICALL OS_NATIVE(RegQueryInfoKeyA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jint arg3, jintArray arg4, jintArray arg5, jintArray arg6, jintArray arg7, jintArray arg8, jintArray arg9, jintArray arg10, jint arg11)
+{
+	jint *lparg2=NULL;
+	jint *lparg4=NULL;
+	jint *lparg5=NULL;
+	jint *lparg6=NULL;
+	jint *lparg7=NULL;
+	jint *lparg8=NULL;
+	jint *lparg9=NULL;
+	jint *lparg10=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "RegQueryInfoKeyA\n")
+	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);
+	if (arg4) lparg4 = (*env)->GetIntArrayElements(env, arg4, NULL);
+	if (arg5) lparg5 = (*env)->GetIntArrayElements(env, arg5, NULL);
+	if (arg6) lparg6 = (*env)->GetIntArrayElements(env, arg6, NULL);
+	if (arg7) lparg7 = (*env)->GetIntArrayElements(env, arg7, NULL);
+	if (arg8) lparg8 = (*env)->GetIntArrayElements(env, arg8, NULL);
+	if (arg9) lparg9 = (*env)->GetIntArrayElements(env, arg9, NULL);
+	if (arg10) lparg10 = (*env)->GetIntArrayElements(env, arg10, NULL);
+	rc = (jint)RegQueryInfoKeyA((HKEY)arg0, (LPSTR)arg1, lparg2, (LPDWORD)arg3, lparg4, lparg5, lparg6, lparg7, lparg8, lparg9, lparg10, (PFILETIME)arg11);
+	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	if (arg4) (*env)->ReleaseIntArrayElements(env, arg4, lparg4, 0);
+	if (arg5) (*env)->ReleaseIntArrayElements(env, arg5, lparg5, 0);
+	if (arg6) (*env)->ReleaseIntArrayElements(env, arg6, lparg6, 0);
+	if (arg7) (*env)->ReleaseIntArrayElements(env, arg7, lparg7, 0);
+	if (arg8) (*env)->ReleaseIntArrayElements(env, arg8, lparg8, 0);
+	if (arg9) (*env)->ReleaseIntArrayElements(env, arg9, lparg9, 0);
+	if (arg10) (*env)->ReleaseIntArrayElements(env, arg10, lparg10, 0);
+	NATIVE_EXIT(env, that, "RegQueryInfoKeyA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RegQueryInfoKeyW
+JNIEXPORT jint JNICALL OS_NATIVE(RegQueryInfoKeyW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jint arg3, jintArray arg4, jintArray arg5, jintArray arg6, jintArray arg7, jintArray arg8, jintArray arg9, jintArray arg10, jint arg11)
+{
+	jint *lparg2=NULL;
+	jint *lparg4=NULL;
+	jint *lparg5=NULL;
+	jint *lparg6=NULL;
+	jint *lparg7=NULL;
+	jint *lparg8=NULL;
+	jint *lparg9=NULL;
+	jint *lparg10=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "RegQueryInfoKeyW\n")
+	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);
+	if (arg4) lparg4 = (*env)->GetIntArrayElements(env, arg4, NULL);
+	if (arg5) lparg5 = (*env)->GetIntArrayElements(env, arg5, NULL);
+	if (arg6) lparg6 = (*env)->GetIntArrayElements(env, arg6, NULL);
+	if (arg7) lparg7 = (*env)->GetIntArrayElements(env, arg7, NULL);
+	if (arg8) lparg8 = (*env)->GetIntArrayElements(env, arg8, NULL);
+	if (arg9) lparg9 = (*env)->GetIntArrayElements(env, arg9, NULL);
+	if (arg10) lparg10 = (*env)->GetIntArrayElements(env, arg10, NULL);
+	rc = (jint)RegQueryInfoKeyW((HKEY)arg0, (LPWSTR)arg1, lparg2, (LPDWORD)arg3, lparg4, lparg5, lparg6, lparg7, lparg8, lparg9, lparg10, (PFILETIME)arg11);
+	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	if (arg4) (*env)->ReleaseIntArrayElements(env, arg4, lparg4, 0);
+	if (arg5) (*env)->ReleaseIntArrayElements(env, arg5, lparg5, 0);
+	if (arg6) (*env)->ReleaseIntArrayElements(env, arg6, lparg6, 0);
+	if (arg7) (*env)->ReleaseIntArrayElements(env, arg7, lparg7, 0);
+	if (arg8) (*env)->ReleaseIntArrayElements(env, arg8, lparg8, 0);
+	if (arg9) (*env)->ReleaseIntArrayElements(env, arg9, lparg9, 0);
+	if (arg10) (*env)->ReleaseIntArrayElements(env, arg10, lparg10, 0);
+	NATIVE_EXIT(env, that, "RegQueryInfoKeyW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RegQueryValueExA
+JNIEXPORT jint JNICALL OS_NATIVE(RegQueryValueExA)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2, jintArray arg3, jbyteArray arg4, jintArray arg5)
+{
+	jbyte *lparg1=NULL;
+	jint *lparg3=NULL;
+	jbyte *lparg4=NULL;
+	jint *lparg5=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "RegQueryValueExA\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);
+	if (arg4) lparg4 = (*env)->GetByteArrayElements(env, arg4, NULL);
+	if (arg5) lparg5 = (*env)->GetIntArrayElements(env, arg5, NULL);
+	rc = (jint)RegQueryValueExA((HKEY)arg0, (LPSTR)lparg1, (LPDWORD)arg2, lparg3, (LPBYTE)lparg4, lparg5);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	if (arg4) (*env)->ReleaseByteArrayElements(env, arg4, lparg4, 0);
+	if (arg5) (*env)->ReleaseIntArrayElements(env, arg5, lparg5, 0);
+	NATIVE_EXIT(env, that, "RegQueryValueExA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RegQueryValueExW
+JNIEXPORT jint JNICALL OS_NATIVE(RegQueryValueExW)
+	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1, jint arg2, jintArray arg3, jcharArray arg4, jintArray arg5)
+{
+	jchar *lparg1=NULL;
+	jint *lparg3=NULL;
+	jchar *lparg4=NULL;
+	jint *lparg5=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "RegQueryValueExW\n")
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);
+	if (arg4) lparg4 = (*env)->GetCharArrayElements(env, arg4, NULL);
+	if (arg5) lparg5 = (*env)->GetIntArrayElements(env, arg5, NULL);
+	rc = (jint)RegQueryValueExW((HKEY)arg0, (LPWSTR)lparg1, (LPDWORD)arg2, lparg3, (LPBYTE)lparg4, lparg5);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	if (arg4) (*env)->ReleaseCharArrayElements(env, arg4, lparg4, 0);
+	if (arg5) (*env)->ReleaseIntArrayElements(env, arg5, lparg5, 0);
+	NATIVE_EXIT(env, that, "RegQueryValueExW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RegisterClassA
+JNIEXPORT jint JNICALL OS_NATIVE(RegisterClassA)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	WNDCLASS _arg0, *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "RegisterClassA\n")
+	if (arg0) lparg0 = getWNDCLASSFields(env, arg0, &_arg0);
+	rc = (jint)RegisterClassA(lparg0);
+	if (arg0) setWNDCLASSFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "RegisterClassA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RegisterClassW
+JNIEXPORT jint JNICALL OS_NATIVE(RegisterClassW)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	WNDCLASS _arg0, *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "RegisterClassW\n")
+	if (arg0) lparg0 = getWNDCLASSFields(env, arg0, &_arg0);
+	rc = (jint)RegisterClassW((LPWNDCLASSW)lparg0);
+	if (arg0) setWNDCLASSFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "RegisterClassW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RegisterClipboardFormatA
+JNIEXPORT jint JNICALL OS_NATIVE(RegisterClipboardFormatA)
+	(JNIEnv *env, jclass that, jbyteArray arg0)
+{
+	jbyte *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "RegisterClipboardFormatA\n")
+	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);
+	rc = (jint)RegisterClipboardFormatA((LPTSTR)lparg0);
+	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "RegisterClipboardFormatA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RegisterClipboardFormatW
+JNIEXPORT jint JNICALL OS_NATIVE(RegisterClipboardFormatW)
+	(JNIEnv *env, jclass that, jcharArray arg0)
+{
+	jchar *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "RegisterClipboardFormatW\n")
+	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);
+	rc = (jint)RegisterClipboardFormatW((LPWSTR)lparg0);
+	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "RegisterClipboardFormatW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ReleaseCapture
+JNIEXPORT jboolean JNICALL OS_NATIVE(ReleaseCapture)
+	(JNIEnv *env, jclass that)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ReleaseCapture\n")
+	rc = (jboolean)ReleaseCapture();
+	NATIVE_EXIT(env, that, "ReleaseCapture\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ReleaseDC
+JNIEXPORT jint JNICALL OS_NATIVE(ReleaseDC)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "ReleaseDC\n")
+	rc = (jint)ReleaseDC((HWND)arg0, (HDC)arg1);
+	NATIVE_EXIT(env, that, "ReleaseDC\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RemoveMenu
+JNIEXPORT jboolean JNICALL OS_NATIVE(RemoveMenu)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "RemoveMenu\n")
+	rc = (jboolean)RemoveMenu((HMENU)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "RemoveMenu\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_RoundRect
+JNIEXPORT jboolean JNICALL OS_NATIVE(RoundRect)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "RoundRect\n")
+	rc = (jboolean)RoundRect((HDC)arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+	NATIVE_EXIT(env, that, "RoundRect\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SHBrowseForFolderA
+JNIEXPORT jint JNICALL OS_NATIVE(SHBrowseForFolderA)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	BROWSEINFO _arg0, *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SHBrowseForFolderA\n")
+	if (arg0) lparg0 = getBROWSEINFOFields(env, arg0, &_arg0);
+	rc = (jint)SHBrowseForFolderA(lparg0);
+	if (arg0) setBROWSEINFOFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "SHBrowseForFolderA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SHBrowseForFolderW
+JNIEXPORT jint JNICALL OS_NATIVE(SHBrowseForFolderW)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	BROWSEINFO _arg0, *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SHBrowseForFolderW\n")
+	if (arg0) lparg0 = getBROWSEINFOFields(env, arg0, &_arg0);
+	rc = (jint)SHBrowseForFolderW((LPBROWSEINFOW)lparg0);
+	if (arg0) setBROWSEINFOFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "SHBrowseForFolderW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SHCreateMenuBar
+JNIEXPORT jboolean JNICALL OS_NATIVE(SHCreateMenuBar)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	SHMENUBARINFO _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SHCreateMenuBar\n")
+	if (arg0) lparg0 = getSHMENUBARINFOFields(env, arg0, &_arg0);
+	rc = (jboolean)SHCreateMenuBar((PSHMENUBARINFO)lparg0);
+	if (arg0) setSHMENUBARINFOFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "SHCreateMenuBar\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SHGetMalloc
+JNIEXPORT jint JNICALL OS_NATIVE(SHGetMalloc)
+	(JNIEnv *env, jclass that, jintArray arg0)
+{
+	jint *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SHGetMalloc\n")
+	if (arg0) lparg0 = (*env)->GetIntArrayElements(env, arg0, NULL);
+	rc = (jint)SHGetMalloc((LPMALLOC *)lparg0);
+	if (arg0) (*env)->ReleaseIntArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "SHGetMalloc\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SHGetPathFromIDListA
+JNIEXPORT jboolean JNICALL OS_NATIVE(SHGetPathFromIDListA)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1)
+{
+	jbyte *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SHGetPathFromIDListA\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	rc = (jboolean)SHGetPathFromIDListA((LPCITEMIDLIST)arg0, (LPSTR)lparg1);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "SHGetPathFromIDListA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SHGetPathFromIDListW
+JNIEXPORT jboolean JNICALL OS_NATIVE(SHGetPathFromIDListW)
+	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1)
+{
+	jchar *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SHGetPathFromIDListW\n")
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	rc = (jboolean)SHGetPathFromIDListW((LPCITEMIDLIST)arg0, (LPWSTR)lparg1);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "SHGetPathFromIDListW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SHHandleWMSettingChange
+JNIEXPORT jboolean JNICALL OS_NATIVE(SHHandleWMSettingChange)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	SHACTIVATEINFO _arg3, *lparg3=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SHHandleWMSettingChange\n")
+	if (arg3) lparg3 = getSHACTIVATEINFOFields(env, arg3, &_arg3);
+	rc = (jboolean)SHHandleWMSettingChange((HWND)arg0, arg1, arg2, lparg3);
+	if (arg3) setSHACTIVATEINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SHHandleWMSettingChange\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SHRecognizeGesture
+JNIEXPORT jint JNICALL OS_NATIVE(SHRecognizeGesture)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	SHRGINFO _arg0, *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SHRecognizeGesture\n")
+	if (arg0) lparg0 = getSHRGINFOFields(env, arg0, &_arg0);
+	rc = (jint)SHRecognizeGesture(lparg0);
+	if (arg0) setSHRGINFOFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "SHRecognizeGesture\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SHSendBackToFocusWindow
+JNIEXPORT void JNICALL OS_NATIVE(SHSendBackToFocusWindow)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	NATIVE_ENTER(env, that, "SHSendBackToFocusWindow\n")
+	SHSendBackToFocusWindow(arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "SHSendBackToFocusWindow\n")
+}
+#endif
+
+#ifndef NO_SHSetAppKeyWndAssoc
+JNIEXPORT jboolean JNICALL OS_NATIVE(SHSetAppKeyWndAssoc)
+	(JNIEnv *env, jclass that, jbyte arg0, jint arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SHSetAppKeyWndAssoc\n")
+	rc = (jboolean)SHSetAppKeyWndAssoc((BYTE)arg0, (HWND)arg1);
+	NATIVE_EXIT(env, that, "SHSetAppKeyWndAssoc\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SHSipPreference
+JNIEXPORT jboolean JNICALL OS_NATIVE(SHSipPreference)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SHSipPreference\n")
+	rc = (jboolean)SHSipPreference((HWND)arg0, arg1);
+	NATIVE_EXIT(env, that, "SHSipPreference\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ScreenToClient
+JNIEXPORT jboolean JNICALL OS_NATIVE(ScreenToClient)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	POINT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ScreenToClient\n")
+	if (arg1) lparg1 = getPOINTFields(env, arg1, &_arg1);
+	rc = (jboolean)ScreenToClient((HWND)arg0, lparg1);
+	if (arg1) setPOINTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "ScreenToClient\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ScrollWindowEx
+JNIEXPORT jint JNICALL OS_NATIVE(ScrollWindowEx)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3, jobject arg4, jint arg5, jobject arg6, jint arg7)
+{
+	RECT _arg3, *lparg3=NULL;
+	RECT _arg4, *lparg4=NULL;
+	RECT _arg6, *lparg6=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "ScrollWindowEx\n")
+	if (arg3) lparg3 = getRECTFields(env, arg3, &_arg3);
+	if (arg4) lparg4 = getRECTFields(env, arg4, &_arg4);
+	if (arg6) lparg6 = getRECTFields(env, arg6, &_arg6);
+	rc = (jint)ScrollWindowEx((HWND)arg0, arg1, arg2, lparg3, lparg4, (HRGN)arg5, lparg6, arg7);
+	if (arg3) setRECTFields(env, arg3, lparg3);
+	if (arg4) setRECTFields(env, arg4, lparg4);
+	if (arg6) setRECTFields(env, arg6, lparg6);
+	NATIVE_EXIT(env, that, "ScrollWindowEx\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SelectClipRgn
+JNIEXPORT jint JNICALL OS_NATIVE(SelectClipRgn)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SelectClipRgn\n")
+	rc = (jint)SelectClipRgn((HDC)arg0, (HRGN)arg1);
+	NATIVE_EXIT(env, that, "SelectClipRgn\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SelectObject
+JNIEXPORT jint JNICALL OS_NATIVE(SelectObject)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SelectObject\n")
+	rc = (jint)SelectObject((HDC)arg0, (HGDIOBJ)arg1);
+	NATIVE_EXIT(env, that, "SelectObject\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SelectPalette
+JNIEXPORT jint JNICALL OS_NATIVE(SelectPalette)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SelectPalette\n")
+	rc = (jint)SelectPalette((HDC)arg0, (HPALETTE)arg1, arg2);
+	NATIVE_EXIT(env, that, "SelectPalette\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__IIII
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIII)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__IIII\n")
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);
+	NATIVE_EXIT(env, that, "SendMessageA__IIII\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	LVCOLUMN _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2\n")
+	if (arg3) lparg3 = getLVCOLUMNFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setLVCOLUMNFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	LVHITTESTINFO _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2\n")
+	if (arg3) lparg3 = getLVHITTESTINFOFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setLVHITTESTINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_LVITEM_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_LVITEM_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	LVITEM _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_LVITEM_2\n")
+	if (arg3) lparg3 = getLVITEMFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setLVITEMFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_LVITEM_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	REBARBANDINFO _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2\n")
+	if (arg3) lparg3 = getREBARBANDINFOFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setREBARBANDINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_RECT_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_RECT_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	RECT _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_RECT_2\n")
+	if (arg3) lparg3 = getRECTFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setRECTFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_RECT_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	TBBUTTONINFO _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2\n")
+	if (arg3) lparg3 = getTBBUTTONINFOFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setTBBUTTONINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	TBBUTTON _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2\n")
+	if (arg3) lparg3 = getTBBUTTONFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setTBBUTTONFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TCITEM_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_TCITEM_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	TCITEM _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TCITEM_2\n")
+	if (arg3) lparg3 = getTCITEMFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setTCITEMFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TCITEM_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	TOOLINFO _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2\n")
+	if (arg3) lparg3 = getTOOLINFOFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setTOOLINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	TVHITTESTINFO _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2\n")
+	if (arg3) lparg3 = getTVHITTESTINFOFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setTVHITTESTINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	TVINSERTSTRUCT _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2\n")
+	if (arg3) lparg3 = getTVINSERTSTRUCTFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setTVINSERTSTRUCTFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVITEM_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__IIILorg_eclipse_swt_internal_win32_TVITEM_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	TVITEM _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TVITEM_2\n")
+	if (arg3) lparg3 = getTVITEMFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setTVITEMFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageA__IIILorg_eclipse_swt_internal_win32_TVITEM_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__III_3B
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__III_3B)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jbyteArray arg3)
+{
+	jbyte *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__III_3B\n")
+	if (arg3) lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "SendMessageA__III_3B\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__III_3I
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__III_3I)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jintArray arg3)
+{
+	jint *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__III_3I\n")
+	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "SendMessageA__III_3I\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__III_3S
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__III_3S)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jshortArray arg3)
+{
+	jshort *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__III_3S\n")
+	if (arg3) lparg3 = (*env)->GetShortArrayElements(env, arg3, NULL);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) (*env)->ReleaseShortArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "SendMessageA__III_3S\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__II_3II
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__II_3II)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jint arg3)
+{
+	jint *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__II_3II\n")
+	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)lparg2, (LPARAM)arg3);
+	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	NATIVE_EXIT(env, that, "SendMessageA__II_3II\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageA__II_3I_3I
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageA__II_3I_3I)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jintArray arg3)
+{
+	jint *lparg2=NULL;
+	jint *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageA__II_3I_3I\n")
+	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);
+	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);
+	rc = (jint)SendMessageA((HWND)arg0, arg1, (WPARAM)lparg2, (LPARAM)lparg3);
+	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "SendMessageA__II_3I_3I\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__IIII
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIII)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__IIII\n")
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)arg3);
+	NATIVE_EXIT(env, that, "SendMessageW__IIII\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	LVCOLUMN _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2\n")
+	if (arg3) lparg3 = getLVCOLUMNFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setLVCOLUMNFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	LVHITTESTINFO _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2\n")
+	if (arg3) lparg3 = getLVHITTESTINFOFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setLVHITTESTINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_LVITEM_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_LVITEM_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	LVITEM _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_LVITEM_2\n")
+	if (arg3) lparg3 = getLVITEMFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setLVITEMFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_LVITEM_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	REBARBANDINFO _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2\n")
+	if (arg3) lparg3 = getREBARBANDINFOFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setREBARBANDINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_RECT_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_RECT_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	RECT _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_RECT_2\n")
+	if (arg3) lparg3 = getRECTFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setRECTFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_RECT_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	TBBUTTONINFO _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2\n")
+	if (arg3) lparg3 = getTBBUTTONINFOFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setTBBUTTONINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	TBBUTTON _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2\n")
+	if (arg3) lparg3 = getTBBUTTONFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setTBBUTTONFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TCITEM_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_TCITEM_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	TCITEM _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TCITEM_2\n")
+	if (arg3) lparg3 = getTCITEMFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setTCITEMFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TCITEM_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	TOOLINFO _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2\n")
+	if (arg3) lparg3 = getTOOLINFOFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setTOOLINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	TVHITTESTINFO _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2\n")
+	if (arg3) lparg3 = getTVHITTESTINFOFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setTVHITTESTINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	TVINSERTSTRUCT _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2\n")
+	if (arg3) lparg3 = getTVINSERTSTRUCTFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setTVINSERTSTRUCTFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TVITEM_2
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__IIILorg_eclipse_swt_internal_win32_TVITEM_2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	TVITEM _arg3, *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TVITEM_2\n")
+	if (arg3) lparg3 = getTVITEMFields(env, arg3, &_arg3);
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) setTVITEMFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SendMessageW__IIILorg_eclipse_swt_internal_win32_TVITEM_2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__III_3C
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__III_3C)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jcharArray arg3)
+{
+	jchar *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__III_3C\n")
+	if (arg3) lparg3 = (*env)->GetCharArrayElements(env, arg3, NULL);
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) (*env)->ReleaseCharArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "SendMessageW__III_3C\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__III_3I
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__III_3I)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jintArray arg3)
+{
+	jint *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__III_3I\n")
+	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "SendMessageW__III_3I\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__III_3S
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__III_3S)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jshortArray arg3)
+{
+	jshort *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__III_3S\n")
+	if (arg3) lparg3 = (*env)->GetShortArrayElements(env, arg3, NULL);
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)arg2, (LPARAM)lparg3);
+	if (arg3) (*env)->ReleaseShortArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "SendMessageW__III_3S\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__II_3II
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__II_3II)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jint arg3)
+{
+	jint *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__II_3II\n")
+	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)lparg2, (LPARAM)arg3);
+	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	NATIVE_EXIT(env, that, "SendMessageW__II_3II\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetActiveWindow
+JNIEXPORT jint JNICALL OS_NATIVE(SetActiveWindow)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetActiveWindow\n")
+	rc = (jint)SetActiveWindow((HWND)arg0);
+	NATIVE_EXIT(env, that, "SetActiveWindow\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetBkColor
+JNIEXPORT jint JNICALL OS_NATIVE(SetBkColor)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetBkColor\n")
+	rc = (jint)SetBkColor((HDC)arg0, (COLORREF)arg1);
+	NATIVE_EXIT(env, that, "SetBkColor\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetBkMode
+JNIEXPORT jint JNICALL OS_NATIVE(SetBkMode)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetBkMode\n")
+	rc = (jint)SetBkMode((HDC)arg0, arg1);
+	NATIVE_EXIT(env, that, "SetBkMode\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetCapture
+JNIEXPORT jint JNICALL OS_NATIVE(SetCapture)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetCapture\n")
+	rc = (jint)SetCapture((HWND)arg0);
+	NATIVE_EXIT(env, that, "SetCapture\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetCaretPos
+JNIEXPORT jboolean JNICALL OS_NATIVE(SetCaretPos)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SetCaretPos\n")
+	rc = (jboolean)SetCaretPos(arg0, arg1);
+	NATIVE_EXIT(env, that, "SetCaretPos\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetClipboardData
+JNIEXPORT jint JNICALL OS_NATIVE(SetClipboardData)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetClipboardData\n")
+	rc = (jint)SetClipboardData(arg0, (HANDLE)arg1);
+	NATIVE_EXIT(env, that, "SetClipboardData\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetCursor
+JNIEXPORT jint JNICALL OS_NATIVE(SetCursor)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetCursor\n")
+	rc = (jint)SetCursor((HCURSOR)arg0);
+	NATIVE_EXIT(env, that, "SetCursor\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetCursorPos
+JNIEXPORT jboolean JNICALL OS_NATIVE(SetCursorPos)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SetCursorPos\n")
+	rc = (jboolean)SetCursorPos(arg0, arg1);
+	NATIVE_EXIT(env, that, "SetCursorPos\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetDIBColorTable
+JNIEXPORT jint JNICALL OS_NATIVE(SetDIBColorTable)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jbyteArray arg3)
+{
+	jbyte *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SetDIBColorTable\n")
+	if (arg3) lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL);
+	rc = (jint)SetDIBColorTable((HDC)arg0, arg1, arg2, (RGBQUAD *)lparg3);
+	if (arg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "SetDIBColorTable\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetErrorMode
+JNIEXPORT jint JNICALL OS_NATIVE(SetErrorMode)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetErrorMode\n")
+	rc = (jint)SetErrorMode(arg0);
+	NATIVE_EXIT(env, that, "SetErrorMode\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetFocus
+JNIEXPORT jint JNICALL OS_NATIVE(SetFocus)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetFocus\n")
+	rc = (jint)SetFocus((HWND)arg0);
+	NATIVE_EXIT(env, that, "SetFocus\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetForegroundWindow
+JNIEXPORT jboolean JNICALL OS_NATIVE(SetForegroundWindow)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SetForegroundWindow\n")
+	rc = (jboolean)SetForegroundWindow((HWND)arg0);
+	NATIVE_EXIT(env, that, "SetForegroundWindow\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetMenu
+JNIEXPORT jboolean JNICALL OS_NATIVE(SetMenu)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SetMenu\n")
+	rc = (jboolean)SetMenu((HWND)arg0, (HMENU)arg1);
+	NATIVE_EXIT(env, that, "SetMenu\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetMenuDefaultItem
+JNIEXPORT jboolean JNICALL OS_NATIVE(SetMenuDefaultItem)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SetMenuDefaultItem\n")
+	rc = (jboolean)SetMenuDefaultItem((HMENU)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "SetMenuDefaultItem\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetMenuItemInfoA
+JNIEXPORT jboolean JNICALL OS_NATIVE(SetMenuItemInfoA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2, jobject arg3)
+{
+	MENUITEMINFO _arg3, *lparg3=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SetMenuItemInfoA\n")
+	if (arg3) lparg3 = getMENUITEMINFOFields(env, arg3, &_arg3);
+	rc = (jboolean)SetMenuItemInfoA((HMENU)arg0, arg1, arg2, lparg3);
+	if (arg3) setMENUITEMINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SetMenuItemInfoA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetMenuItemInfoW
+JNIEXPORT jboolean JNICALL OS_NATIVE(SetMenuItemInfoW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2, jobject arg3)
+{
+	MENUITEMINFO _arg3, *lparg3=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SetMenuItemInfoW\n")
+	if (arg3) lparg3 = getMENUITEMINFOFields(env, arg3, &_arg3);
+	rc = (jboolean)SetMenuItemInfoW((HMENU)arg0, arg1, arg2, (LPMENUITEMINFOW)lparg3);
+	if (arg3) setMENUITEMINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "SetMenuItemInfoW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetPaletteEntries
+JNIEXPORT jint JNICALL OS_NATIVE(SetPaletteEntries)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jbyteArray arg3)
+{
+	jbyte *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SetPaletteEntries\n")
+	if (arg3) lparg3 = (*env)->GetByteArrayElements(env, arg3, NULL);
+	rc = (jint)SetPaletteEntries((HPALETTE)arg0, arg1, arg2, (PALETTEENTRY *)lparg3);
+	if (arg3) (*env)->ReleaseByteArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "SetPaletteEntries\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetParent
+JNIEXPORT jint JNICALL OS_NATIVE(SetParent)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetParent\n")
+	rc = (jint)SetParent((HWND)arg0, (HWND)arg1);
+	NATIVE_EXIT(env, that, "SetParent\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetPixel
+JNIEXPORT jint JNICALL OS_NATIVE(SetPixel)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetPixel\n")
+	rc = (jint)SetPixel((HDC)arg0, arg1, arg2, arg3);
+	NATIVE_EXIT(env, that, "SetPixel\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetROP2
+JNIEXPORT jint JNICALL OS_NATIVE(SetROP2)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetROP2\n")
+	rc = (jint)SetROP2((HDC)arg0, arg1);
+	NATIVE_EXIT(env, that, "SetROP2\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetRect
+JNIEXPORT jboolean JNICALL OS_NATIVE(SetRect)
+	(JNIEnv *env, jclass that, jobject arg0, jint arg1, jint arg2, jint arg3, jint arg4)
+{
+	RECT _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SetRect\n")
+	if (arg0) lparg0 = getRECTFields(env, arg0, &_arg0);
+	rc = (jboolean)SetRect(lparg0, arg1, arg2, arg3, arg4);
+	if (arg0) setRECTFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "SetRect\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetRectRgn
+JNIEXPORT jboolean JNICALL OS_NATIVE(SetRectRgn)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SetRectRgn\n")
+	rc = (jboolean)SetRectRgn((HRGN)arg0, arg1, arg2, arg3, arg4);
+	NATIVE_EXIT(env, that, "SetRectRgn\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetScrollInfo
+JNIEXPORT jboolean JNICALL OS_NATIVE(SetScrollInfo)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2, jboolean arg3)
+{
+	SCROLLINFO _arg2, *lparg2=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SetScrollInfo\n")
+	if (arg2) lparg2 = getSCROLLINFOFields(env, arg2, &_arg2);
+	rc = (jboolean)SetScrollInfo((HWND)arg0, arg1, lparg2, arg3);
+	if (arg2) setSCROLLINFOFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "SetScrollInfo\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetStretchBltMode
+JNIEXPORT jint JNICALL OS_NATIVE(SetStretchBltMode)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetStretchBltMode\n")
+	rc = (jint)SetStretchBltMode((HDC)arg0, arg1);
+	NATIVE_EXIT(env, that, "SetStretchBltMode\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetTextAlign
+JNIEXPORT jint JNICALL OS_NATIVE(SetTextAlign)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetTextAlign\n")
+	rc = (jint)SetTextAlign((HDC)arg0, arg1);
+	NATIVE_EXIT(env, that, "SetTextAlign\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetTextColor
+JNIEXPORT jint JNICALL OS_NATIVE(SetTextColor)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetTextColor\n")
+	rc = (jint)SetTextColor((HDC)arg0, (COLORREF)arg1);
+	NATIVE_EXIT(env, that, "SetTextColor\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetTimer
+JNIEXPORT jint JNICALL OS_NATIVE(SetTimer)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetTimer\n")
+	rc = (jint)SetTimer((HWND)arg0, arg1, arg2, (TIMERPROC)arg3);
+	NATIVE_EXIT(env, that, "SetTimer\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetWindowLongA
+JNIEXPORT jint JNICALL OS_NATIVE(SetWindowLongA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetWindowLongA\n")
+	rc = (jint)SetWindowLongA((HWND)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "SetWindowLongA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetWindowLongW
+JNIEXPORT jint JNICALL OS_NATIVE(SetWindowLongW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetWindowLongW\n")
+	rc = (jint)SetWindowLongW((HWND)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "SetWindowLongW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetWindowPlacement
+JNIEXPORT jboolean JNICALL OS_NATIVE(SetWindowPlacement)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	WINDOWPLACEMENT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SetWindowPlacement\n")
+	if (arg1) lparg1 = getWINDOWPLACEMENTFields(env, arg1, &_arg1);
+	rc = (jboolean)SetWindowPlacement((HWND)arg0, lparg1);
+	if (arg1) setWINDOWPLACEMENTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "SetWindowPlacement\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetWindowPos
+JNIEXPORT jboolean JNICALL OS_NATIVE(SetWindowPos)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SetWindowPos\n")
+	rc = (jboolean)SetWindowPos((HWND)arg0, (HWND)arg1, arg2, arg3, arg4, arg5, arg6);
+	NATIVE_EXIT(env, that, "SetWindowPos\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetWindowTextA
+JNIEXPORT jboolean JNICALL OS_NATIVE(SetWindowTextA)
+	(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1)
+{
+	jbyte *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SetWindowTextA\n")
+	if (arg1) lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL);
+	rc = (jboolean)SetWindowTextA((HWND)arg0, (LPSTR)lparg1);
+	if (arg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "SetWindowTextA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetWindowTextW
+JNIEXPORT jboolean JNICALL OS_NATIVE(SetWindowTextW)
+	(JNIEnv *env, jclass that, jint arg0, jcharArray arg1)
+{
+	jchar *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SetWindowTextW\n")
+	if (arg1) lparg1 = (*env)->GetCharArrayElements(env, arg1, NULL);
+	rc = (jboolean)SetWindowTextW((HWND)arg0, (LPWSTR)lparg1);
+	if (arg1) (*env)->ReleaseCharArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "SetWindowTextW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetWindowsHookExA
+JNIEXPORT jint JNICALL OS_NATIVE(SetWindowsHookExA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetWindowsHookExA\n")
+	rc = (jint)SetWindowsHookExA(arg0, (HOOKPROC)arg1, (HINSTANCE)arg2, arg3);
+	NATIVE_EXIT(env, that, "SetWindowsHookExA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetWindowsHookExW
+JNIEXPORT jint JNICALL OS_NATIVE(SetWindowsHookExW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetWindowsHookExW\n")
+	rc = (jint)SetWindowsHookExW(arg0, (HOOKPROC)arg1, (HINSTANCE)arg2, arg3);
+	NATIVE_EXIT(env, that, "SetWindowsHookExW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ShellExecuteExA
+JNIEXPORT jboolean JNICALL OS_NATIVE(ShellExecuteExA)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	SHELLEXECUTEINFO _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ShellExecuteExA\n")
+	if (arg0) lparg0 = getSHELLEXECUTEINFOFields(env, arg0, &_arg0);
+	rc = (jboolean)ShellExecuteExA(lparg0);
+	if (arg0) setSHELLEXECUTEINFOFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "ShellExecuteExA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ShellExecuteExW
+JNIEXPORT jboolean JNICALL OS_NATIVE(ShellExecuteExW)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	SHELLEXECUTEINFO _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ShellExecuteExW\n")
+	if (arg0) lparg0 = getSHELLEXECUTEINFOFields(env, arg0, &_arg0);
+	rc = (jboolean)ShellExecuteExW((LPSHELLEXECUTEINFOW)lparg0);
+	if (arg0) setSHELLEXECUTEINFOFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "ShellExecuteExW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ShowCaret
+JNIEXPORT jboolean JNICALL OS_NATIVE(ShowCaret)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ShowCaret\n")
+	rc = (jboolean)ShowCaret((HWND)arg0);
+	NATIVE_EXIT(env, that, "ShowCaret\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ShowOwnedPopups
+JNIEXPORT jboolean JNICALL OS_NATIVE(ShowOwnedPopups)
+	(JNIEnv *env, jclass that, jint arg0, jboolean arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ShowOwnedPopups\n")
+	rc = (jboolean)ShowOwnedPopups((HWND)arg0, arg1);
+	NATIVE_EXIT(env, that, "ShowOwnedPopups\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ShowScrollBar
+JNIEXPORT jboolean JNICALL OS_NATIVE(ShowScrollBar)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ShowScrollBar\n")
+	rc = (jboolean)ShowScrollBar((HWND)arg0, arg1, arg2);
+	NATIVE_EXIT(env, that, "ShowScrollBar\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ShowWindow
+JNIEXPORT jboolean JNICALL OS_NATIVE(ShowWindow)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ShowWindow\n")
+	rc = (jboolean)ShowWindow((HWND)arg0, arg1);
+	NATIVE_EXIT(env, that, "ShowWindow\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SipGetInfo
+JNIEXPORT jboolean JNICALL OS_NATIVE(SipGetInfo)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	SIPINFO _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SipGetInfo\n")
+	if (arg0) lparg0 = getSIPINFOFields(env, arg0, &_arg0);
+	rc = (jboolean)SipGetInfo(lparg0);
+	if (arg0) setSIPINFOFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "SipGetInfo\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_StartDocA
+JNIEXPORT jint JNICALL OS_NATIVE(StartDocA)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	DOCINFO _arg1, *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "StartDocA\n")
+	if (arg1) lparg1 = getDOCINFOFields(env, arg1, &_arg1);
+	rc = (jint)StartDocA((HDC)arg0, lparg1);
+	if (arg1) setDOCINFOFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "StartDocA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_StartDocW
+JNIEXPORT jint JNICALL OS_NATIVE(StartDocW)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	DOCINFO _arg1, *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "StartDocW\n")
+	if (arg1) lparg1 = getDOCINFOFields(env, arg1, &_arg1);
+	rc = (jint)StartDocW((HDC)arg0, (LPDOCINFOW)lparg1);
+	if (arg1) setDOCINFOFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "StartDocW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_StartPage
+JNIEXPORT jint JNICALL OS_NATIVE(StartPage)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "StartPage\n")
+	rc = (jint)StartPage((HDC)arg0);
+	NATIVE_EXIT(env, that, "StartPage\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_StretchBlt
+JNIEXPORT jboolean JNICALL OS_NATIVE(StretchBlt)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8, jint arg9, jint arg10)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "StretchBlt\n")
+	rc = (jboolean)StretchBlt((HDC)arg0, arg1, arg2, arg3, arg4, (HDC)arg5, arg6, arg7, arg8, arg9, arg10);
+	NATIVE_EXIT(env, that, "StretchBlt\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSA_2I
+JNIEXPORT jboolean JNICALL OS_NATIVE(SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSA_2I)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2, jint arg3)
+{
+	NONCLIENTMETRICSA _arg2, *lparg2=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSA_2I\n")
+	if (arg2) lparg2 = getNONCLIENTMETRICSAFields(env, arg2, &_arg2);
+	rc = (jboolean)SystemParametersInfoA(arg0, arg1, lparg2, arg3);
+	if (arg2) setNONCLIENTMETRICSAFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSA_2I\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_RECT_2I
+JNIEXPORT jboolean JNICALL OS_NATIVE(SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_RECT_2I)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2, jint arg3)
+{
+	RECT _arg2, *lparg2=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_RECT_2I\n")
+	if (arg2) lparg2 = getRECTFields(env, arg2, &_arg2);
+	rc = (jboolean)SystemParametersInfoA(arg0, arg1, lparg2, arg3);
+	if (arg2) setRECTFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_RECT_2I\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SystemParametersInfoA__II_3II
+JNIEXPORT jboolean JNICALL OS_NATIVE(SystemParametersInfoA__II_3II)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jint arg3)
+{
+	jint *lparg2=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SystemParametersInfoA__II_3II\n")
+	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);
+	rc = (jboolean)SystemParametersInfoA(arg0, arg1, lparg2, arg3);
+	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	NATIVE_EXIT(env, that, "SystemParametersInfoA__II_3II\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSW_2I
+JNIEXPORT jboolean JNICALL OS_NATIVE(SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSW_2I)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2, jint arg3)
+{
+	NONCLIENTMETRICSW _arg2, *lparg2=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSW_2I\n")
+	if (arg2) lparg2 = getNONCLIENTMETRICSWFields(env, arg2, &_arg2);
+	rc = (jboolean)SystemParametersInfoW(arg0, arg1, lparg2, arg3);
+	if (arg2) setNONCLIENTMETRICSWFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSW_2I\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_RECT_2I
+JNIEXPORT jboolean JNICALL OS_NATIVE(SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_RECT_2I)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2, jint arg3)
+{
+	RECT _arg2, *lparg2=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_RECT_2I\n")
+	if (arg2) lparg2 = getRECTFields(env, arg2, &_arg2);
+	rc = (jboolean)SystemParametersInfoW(arg0, arg1, lparg2, arg3);
+	if (arg2) setRECTFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_RECT_2I\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SystemParametersInfoW__II_3II
+JNIEXPORT jboolean JNICALL OS_NATIVE(SystemParametersInfoW__II_3II)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jint arg3)
+{
+	jint *lparg2=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SystemParametersInfoW__II_3II\n")
+	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);
+	rc = (jboolean)SystemParametersInfoW(arg0, arg1, lparg2, arg3);
+	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	NATIVE_EXIT(env, that, "SystemParametersInfoW__II_3II\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ToAscii
+JNIEXPORT jint JNICALL OS_NATIVE(ToAscii)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jbyteArray arg2, jshortArray arg3, jint arg4)
+{
+	jbyte *lparg2=NULL;
+	jshort *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "ToAscii\n")
+	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);
+	if (arg3) lparg3 = (*env)->GetShortArrayElements(env, arg3, NULL);
+	rc = (jint)ToAscii(arg0, arg1, (PBYTE)lparg2, (LPWORD)lparg3, arg4);
+	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);
+	if (arg3) (*env)->ReleaseShortArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "ToAscii\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ToUnicode
+JNIEXPORT jint JNICALL OS_NATIVE(ToUnicode)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jbyteArray arg2, jcharArray arg3, jint arg4, jint arg5)
+{
+	jbyte *lparg2=NULL;
+	jchar *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "ToUnicode\n")
+	if (arg2) lparg2 = (*env)->GetByteArrayElements(env, arg2, NULL);
+	if (arg3) lparg3 = (*env)->GetCharArrayElements(env, arg3, NULL);
+	rc = (jint)ToUnicode(arg0, arg1, (PBYTE)lparg2, (LPWSTR)lparg3, arg4, arg5);
+	if (arg2) (*env)->ReleaseByteArrayElements(env, arg2, lparg2, 0);
+	if (arg3) (*env)->ReleaseCharArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "ToUnicode\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_TrackMouseEvent
+JNIEXPORT jboolean JNICALL OS_NATIVE(TrackMouseEvent)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	TRACKMOUSEEVENT _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "TrackMouseEvent\n")
+	if (arg0) lparg0 = getTRACKMOUSEEVENTFields(env, arg0, &_arg0);
+	rc = (jboolean)TrackMouseEvent(lparg0);
+	if (arg0) setTRACKMOUSEEVENTFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "TrackMouseEvent\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_TrackPopupMenu
+JNIEXPORT jboolean JNICALL OS_NATIVE(TrackPopupMenu)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jobject arg6)
+{
+	RECT _arg6, *lparg6=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "TrackPopupMenu\n")
+	if (arg6) lparg6 = getRECTFields(env, arg6, &_arg6);
+	rc = (jboolean)TrackPopupMenu((HMENU)arg0, arg1, arg2, arg3, arg4, (HWND)arg5, lparg6);
+	if (arg6) setRECTFields(env, arg6, lparg6);
+	NATIVE_EXIT(env, that, "TrackPopupMenu\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_TranslateAcceleratorA
+JNIEXPORT jint JNICALL OS_NATIVE(TranslateAcceleratorA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)
+{
+	MSG _arg2, *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "TranslateAcceleratorA\n")
+	if (arg2) lparg2 = getMSGFields(env, arg2, &_arg2);
+	rc = (jint)TranslateAcceleratorA((HWND)arg0, (HACCEL)arg1, lparg2);
+	if (arg2) setMSGFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "TranslateAcceleratorA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_TranslateAcceleratorW
+JNIEXPORT jint JNICALL OS_NATIVE(TranslateAcceleratorW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jobject arg2)
+{
+	MSG _arg2, *lparg2=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "TranslateAcceleratorW\n")
+	if (arg2) lparg2 = getMSGFields(env, arg2, &_arg2);
+	rc = (jint)TranslateAcceleratorW((HWND)arg0, (HACCEL)arg1, lparg2);
+	if (arg2) setMSGFields(env, arg2, lparg2);
+	NATIVE_EXIT(env, that, "TranslateAcceleratorW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_TranslateCharsetInfo
+JNIEXPORT jboolean JNICALL OS_NATIVE(TranslateCharsetInfo)
+	(JNIEnv *env, jclass that, jint arg0, jintArray arg1, jint arg2)
+{
+	jint *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "TranslateCharsetInfo\n")
+	if (arg1) lparg1 = (*env)->GetIntArrayElements(env, arg1, NULL);
+	rc = (jboolean)TranslateCharsetInfo((DWORD *)arg0, (LPCHARSETINFO)lparg1, arg2);
+	if (arg1) (*env)->ReleaseIntArrayElements(env, arg1, lparg1, 0);
+	NATIVE_EXIT(env, that, "TranslateCharsetInfo\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_TranslateMDISysAccel
+JNIEXPORT jboolean JNICALL OS_NATIVE(TranslateMDISysAccel)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	MSG _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "TranslateMDISysAccel\n")
+	if (arg1) lparg1 = getMSGFields(env, arg1, &_arg1);
+	rc = (jboolean)TranslateMDISysAccel((HWND)arg0, (LPMSG)lparg1);
+	if (arg1) setMSGFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "TranslateMDISysAccel\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_TranslateMessage
+JNIEXPORT jboolean JNICALL OS_NATIVE(TranslateMessage)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	MSG _arg0, *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "TranslateMessage\n")
+	if (arg0) lparg0 = getMSGFields(env, arg0, &_arg0);
+	rc = (jboolean)TranslateMessage(lparg0);
+	if (arg0) setMSGFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "TranslateMessage\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_TransparentImage
+JNIEXPORT jboolean JNICALL OS_NATIVE(TransparentImage)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7, jint arg8, jint arg9, jint arg10)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "TransparentImage\n")
+	rc = (jboolean)TransparentImage((HDC)arg0, arg1, arg2, arg3, arg4, (HANDLE)arg5, arg6, arg7, arg8, arg9, (COLORREF)arg10);
+	NATIVE_EXIT(env, that, "TransparentImage\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_UnhookWindowsHookEx
+JNIEXPORT jboolean JNICALL OS_NATIVE(UnhookWindowsHookEx)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "UnhookWindowsHookEx\n")
+	rc = (jboolean)UnhookWindowsHookEx((HHOOK)arg0);
+	NATIVE_EXIT(env, that, "UnhookWindowsHookEx\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_UnregisterClassA
+JNIEXPORT jboolean JNICALL OS_NATIVE(UnregisterClassA)
+	(JNIEnv *env, jclass that, jbyteArray arg0, jint arg1)
+{
+	jbyte *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "UnregisterClassA\n")
+	if (arg0) lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL);
+	rc = (jboolean)UnregisterClassA((LPSTR)lparg0, (HINSTANCE)arg1);
+	if (arg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "UnregisterClassA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_UnregisterClassW
+JNIEXPORT jboolean JNICALL OS_NATIVE(UnregisterClassW)
+	(JNIEnv *env, jclass that, jcharArray arg0, jint arg1)
+{
+	jchar *lparg0=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "UnregisterClassW\n")
+	if (arg0) lparg0 = (*env)->GetCharArrayElements(env, arg0, NULL);
+	rc = (jboolean)UnregisterClassW((LPWSTR)lparg0, (HINSTANCE)arg1);
+	if (arg0) (*env)->ReleaseCharArrayElements(env, arg0, lparg0, 0);
+	NATIVE_EXIT(env, that, "UnregisterClassW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_UpdateWindow
+JNIEXPORT jboolean JNICALL OS_NATIVE(UpdateWindow)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "UpdateWindow\n")
+	rc = (jboolean)UpdateWindow((HWND)arg0);
+	NATIVE_EXIT(env, that, "UpdateWindow\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_ValidateRect
+JNIEXPORT jboolean JNICALL OS_NATIVE(ValidateRect)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	RECT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "ValidateRect\n")
+	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);
+	rc = (jboolean)ValidateRect((HWND)arg0, lparg1);
+	if (arg1) setRECTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "ValidateRect\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_VkKeyScanA
+JNIEXPORT jshort JNICALL OS_NATIVE(VkKeyScanA)
+	(JNIEnv *env, jclass that, jshort arg0)
+{
+	jshort rc;
+	NATIVE_ENTER(env, that, "VkKeyScanA\n")
+	rc = (jshort)VkKeyScanA((TCHAR)arg0);
+	NATIVE_EXIT(env, that, "VkKeyScanA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_VkKeyScanW
+JNIEXPORT jshort JNICALL OS_NATIVE(VkKeyScanW)
+	(JNIEnv *env, jclass that, jshort arg0)
+{
+	jshort rc;
+	NATIVE_ENTER(env, that, "VkKeyScanW\n")
+	rc = (jshort)VkKeyScanW((WCHAR)arg0);
+	NATIVE_EXIT(env, that, "VkKeyScanW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_WaitMessage
+JNIEXPORT jboolean JNICALL OS_NATIVE(WaitMessage)
+	(JNIEnv *env, jclass that)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "WaitMessage\n")
+	rc = (jboolean)WaitMessage();
+	NATIVE_EXIT(env, that, "WaitMessage\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_WideCharToMultiByte__II_3CIII_3B_3Z
+JNIEXPORT jint JNICALL OS_NATIVE(WideCharToMultiByte__II_3CIII_3B_3Z)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jcharArray arg2, jint arg3, jint arg4, jint arg5, jbyteArray arg6, jbooleanArray arg7)
+{
+	jchar *lparg2=NULL;
+	jbyte *lparg6=NULL;
+	jboolean *lparg7=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "WideCharToMultiByte__II_3CIII_3B_3Z\n")
+	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);
+	if (arg6) lparg6 = (*env)->GetByteArrayElements(env, arg6, NULL);
+	if (arg7) lparg7 = (*env)->GetBooleanArrayElements(env, arg7, NULL);
+	rc = (jint)WideCharToMultiByte(arg0, arg1, (LPCWSTR)lparg2, arg3, (LPSTR)arg4, arg5, (LPCSTR)lparg6, (LPBOOL)lparg7);
+	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);
+	if (arg6) (*env)->ReleaseByteArrayElements(env, arg6, lparg6, 0);
+	if (arg7) (*env)->ReleaseBooleanArrayElements(env, arg7, lparg7, 0);
+	NATIVE_EXIT(env, that, "WideCharToMultiByte__II_3CIII_3B_3Z\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_WideCharToMultiByte__II_3CI_3BI_3B_3Z
+JNIEXPORT jint JNICALL OS_NATIVE(WideCharToMultiByte__II_3CI_3BI_3B_3Z)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jcharArray arg2, jint arg3, jbyteArray arg4, jint arg5, jbyteArray arg6, jbooleanArray arg7)
+{
+	jchar *lparg2=NULL;
+	jbyte *lparg4=NULL;
+	jbyte *lparg6=NULL;
+	jboolean *lparg7=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "WideCharToMultiByte__II_3CI_3BI_3B_3Z\n")
+	if (arg2) lparg2 = (*env)->GetCharArrayElements(env, arg2, NULL);
+	if (arg4) lparg4 = (*env)->GetByteArrayElements(env, arg4, NULL);
+	if (arg6) lparg6 = (*env)->GetByteArrayElements(env, arg6, NULL);
+	if (arg7) lparg7 = (*env)->GetBooleanArrayElements(env, arg7, NULL);
+	rc = (jint)WideCharToMultiByte(arg0, arg1, (LPCWSTR)lparg2, arg3, (LPSTR)lparg4, arg5, (LPCSTR)lparg6, (LPBOOL)lparg7);
+	if (arg2) (*env)->ReleaseCharArrayElements(env, arg2, lparg2, 0);
+	if (arg4) (*env)->ReleaseByteArrayElements(env, arg4, lparg4, 0);
+	if (arg6) (*env)->ReleaseByteArrayElements(env, arg6, lparg6, 0);
+	if (arg7) (*env)->ReleaseBooleanArrayElements(env, arg7, lparg7, 0);
+	NATIVE_EXIT(env, that, "WideCharToMultiByte__II_3CI_3BI_3B_3Z\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_WindowFromDC
+JNIEXPORT jint JNICALL OS_NATIVE(WindowFromDC)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "WindowFromDC\n")
+	rc = (jint)WindowFromDC((HDC)arg0);
+	NATIVE_EXIT(env, that, "WindowFromDC\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_WindowFromPoint
+JNIEXPORT jint JNICALL OS_NATIVE(WindowFromPoint)
+	(JNIEnv *env, jclass that, jobject arg0)
+{
+	POINT _arg0, *lparg0=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "WindowFromPoint\n")
+	if (arg0) lparg0 = getPOINTFields(env, arg0, &_arg0);
+	rc = (jint)WindowFromPoint(*lparg0);
+	if (arg0) setPOINTFields(env, arg0, lparg0);
+	NATIVE_EXIT(env, that, "WindowFromPoint\n")
+	return rc;
+}
+#endif
+
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.h b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.h
index ceb0263..76538ae 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.h
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os.h
@@ -1,354 +1,354 @@
-/*******************************************************************************

- * Copyright (c) 2000, 2003 IBM Corporation and others.

- * All rights reserved. This program and the accompanying materials 

- * are made available under the terms of the Common Public License v1.0

- * which accompanies this distribution, and is available at

- * http://www.eclipse.org/legal/cpl-v10.html

- * 

- * Contributors:

- *     IBM Corporation - initial API and implementation

- *******************************************************************************/

-

-#ifndef INC_os_H

-#define INC_os_H

-

-#define WINVER 0x0500

-#define _WIN32_IE 0x0500

-

-#if _MSC_VER > 1000

-#pragma once

-#endif // _MSC_VER > 1000

-

-#define VC_EXTRALEAN

-

-#include <windows.h>

-#include <winuser.h>

-#include <commctrl.h>

-#include <commdlg.h>

-#include <oaidl.h>

-#include <shlobj.h>

-#include <ole2.h>

-#include <olectl.h>

-#include <objbase.h>

-#include <shlwapi.h>

-#include <shellapi.h>

-

-#ifndef _WIN32_WCE

-#include <initguid.h>

-#include <oleacc.h>

-#endif // _WIN32_WCE

-

-#if defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP)

-#include <aygshell.h>

-#endif // WIN32_PLATFORM_PSPC, WIN32_PLATFORM_WFSP

-

-#ifdef WIN32_PLATFORM_WFSP

-#include <tpcshell.h>

-#endif /* WIN32_PLATFORM_WFSP */

-

-/* Optional custom definitions to exclude some types */

-#include "defines.h"

-

-/* Structs excludes */

-#ifdef _WIN32_WCE

-#define NO_BROWSEINFO

-#define NO_CHOOSEFONT

-#define NO_DOCINFO

-#define NO_GCP_RESULTS

-#define NO_GRADIENT_RECT

-#define NO_HELPINFO

-#define NO_MENUINFO

-#define NO_NMREBARCHEVRON

-#define NO_NMTTDISPINFO

-#define NO_NMTTDISPINFOA

-#define NO_NMTTDISPINFOW

-#define NO_NONCLIENTMETRICS

-#define NO_NONCLIENTMETRICSA

-#define NO_NONCLIENTMETRICSW

-#define NO_PRINTDLG

-#define NO_TOOLINFO

-#define NO_TRACKMOUSEEVENT

-#define NO_TRIVERTEX

-#define NO_WINDOWPLACEMENT

-#define NO_DROPFILES

-#define NO_MONITORINFO

-#define NO_OLECMD

-#define NO_OLECMDTEXT

-

-/* OLE */

-#define NO_CAUUID

-#define NO_CONTROLINFO

-#define NO_COSERVERINFO

-#define NO_DISPPARAMS

-#define NO_DVTARGETDEVICE

-#define NO_EXCEPINFO

-#define NO_FORMATETC

-#define NO_FUNCDESC1

-#define NO_FUNCDESC2

-#define NO_GUID

-#define NO_LICINFO

-#define NO_OLEINPLACEFRAMEINFO

-#define NO_STATSTG

-#define NO_STGMEDIUM

-#define NO_TYPEATTR

-#define NO_VARDESC1

-#define NO_VARDESC2

-#endif /* _WIN32_WCE */

-

-#if !defined(WIN32_PLATFORM_PSPC) && !defined(WIN32_PLATFORM_WFSP)

-#define NO_SHMENUBARINFO

-#endif /* WIN32_PLATFORM_PSPC, WIN32_PLATFORM_WFSP */

-

-#ifndef WIN32_PLATFORM_PSPC

-#define NO_SHACTIVATEINFO

-#define NO_SHRGINFO

-#define NO_SIPINFO

-#endif /* WIN32_PLATFORM_PSPC */

-

-/* Functions excludes */

-#ifdef _WIN32_WCE

-#define NO_AbortDoc

-#define NO_ActivateKeyboardLayout

-#define NO_Arc

-#define NO_CallNextHookEx

-#define NO_CallWindowProcA

-#define NO_CharLowerA

-#define NO_CharUpperA

-#define NO_ChooseColorA

-#define NO_ChooseFontA

-#define NO_ChooseFontW

-#define NO_CopyImage

-#define NO_CreateAcceleratorTableA

-#define NO_CreateCursor

-#define NO_CreateDCA

-#define NO_CreateFontIndirectA__Lorg_eclipse_swt_internal_win32_LOGFONTA_2

-#define NO_CreateFontIndirectA__I

-#define NO_CreateWindowExA

-#define NO_DefFrameProcA

-#define NO_DefFrameProcW

-#define NO_DefMDIChildProcA

-#define NO_DefMDIChildProcW

-#define NO_DefWindowProcA

-#define NO_DestroyCursor

-#define NO_DispatchMessageA

-#define NO_DragDetect

-#define NO_DragFinish

-#define NO_DragQueryFileA

-#define NO_DragQueryFileW

-#define NO_DrawStateA

-#define NO_DrawStateW

-#define NO_DrawTextA

-#define NO_EnableScrollBar

-#define NO_EndDoc

-#define NO_EndPage

-#define NO_EnumDisplayMonitors

-#define NO_EnumFontFamiliesA

-#define NO_EnumSystemLanguageGroupsA

-#define NO_EnumSystemLanguageGroupsW

-#define NO_EnumSystemLocalesA

-#define NO_ExpandEnvironmentStringsW

-#define NO_ExpandEnvironmentStringsA

-#define NO_ExtTextOutA

-#define NO_ExtractIconExA

-#define NO_FindWindowA

-#define NO_GetCharABCWidthsA

-#define NO_GetCharABCWidthsW

-#define NO_GetCharWidthA

-#define NO_GetCharWidthW

-#define NO_GetCharacterPlacementA

-#define NO_GetCharacterPlacementW

-#define NO_GetClassInfoA

-#define NO_GetClipboardFormatNameA

-#define NO_GetDIBColorTable

-#define NO_GetDIBits

-#define NO_GetFontLanguageInfo

-#define NO_GetIconInfo

-#define NO_GetKeyboardLayout

-#define NO_GetKeyboardLayoutList

-#define NO_GetKeyboardState

-#define NO_GetKeyNameTextA

-#define NO_GetKeyNameTextW

-#define NO_GetLastActivePopup

-#define NO_GetLayout

-#define NO_GetLocaleInfoA

-#define NO_GetMenu

-#define NO_GetMenuDefaultItem

-#define NO_GetMenuInfo

-#define NO_GetMenuItemCount

-#define NO_GetMenuItemInfoA

-#define NO_GetMessageA

-#define NO_GetMessageTime

-#define NO_GetModuleHandleA

-#define NO_GetMonitorInfoA

-#define NO_GetMonitorInfoW

-#define NO_GetObjectA__IILorg_eclipse_swt_internal_win32_LOGPEN_2

-#define NO_GetObjectA__IILorg_eclipse_swt_internal_win32_LOGFONTA_2

-#define NO_GetObjectA__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2

-#define NO_GetObjectA__IILorg_eclipse_swt_internal_win32_DIBSECTION_2

-#define NO_GetObjectA__IILorg_eclipse_swt_internal_win32_BITMAP_2

-#define NO_GetOpenFileNameA

-#define NO_GetProfileStringA

-#define NO_GetProfileStringW

-#define NO_GetROP2

-#define NO_GetSaveFileNameA

-#define NO_GetTextCharset

-#define NO_GetTextExtentPoint32A

-#define NO_GetTextMetricsA

-#define NO_GetVersionExA

-#define NO_GetWindowLongA

-#define NO_GetWindowPlacement

-#define NO_GetWindowTextA

-#define NO_GetWindowTextLengthA

-#define NO_GradientFill

-#define NO_ImmGetCompositionFontA

-#define NO_ImmGetCompositionStringA

-#define NO_ImmSetCompositionFontA

-#define NO_InsertMenuA

-#define NO_InsertMenuItemA

-#define NO_InsertMenuItemW

-#define NO_InvalidateRgn

-#define NO_IsIconic

-#define NO_IsZoomed

-#define NO_LineTo

-#define NO_LoadBitmapA

-#define NO_LoadCursorA

-#define NO_LoadIconA

-#define NO_LoadImageA

-#define NO_LoadLibraryA

-#define NO_MapVirtualKeyA

-#define NO_MessageBoxA

-#define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_DROPFILES_2I

-#define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMREBARCHEVRON_2II

-#define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_HELPINFO_2II

-#define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_TRIVERTEX_2I

-#define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I

-#define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2II

-#define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2II

-#define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2I

-#define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2I

-#define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTA_2II

-#define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTA_2I

-#define NO_MoveToEx

-#define NO_OleInitialize

-#define NO_OleUninitialize

-#define NO_PeekMessageA

-#define NO_Pie

-#define NO_PostMessageA

-#define NO_PostThreadMessageA

-#define NO_PrintDlgA

-#define NO_PrintDlgW

-#define NO_RedrawWindow

-#define NO_RegEnumKeyExA

-#define NO_RegOpenKeyExA

-#define NO_RegQueryInfoKeyA

-#define NO_RegQueryValueExA

-#define NO_RegisterClassA

-#define NO_RegisterClipboardFormatA

-#define NO_SetLayout

-#define NO_SHBrowseForFolderA

-#define NO_SHBrowseForFolderW

-#define NO_SHGetPathFromIDListA

-#define NO_SHGetPathFromIDListW

-#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVITEM_2

-#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2

-#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2

-#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2

-#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TCITEM_2

-#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2

-#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2

-#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_RECT_2

-#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2

-#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_LVITEM_2

-#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2

-#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2

-#define NO_SendMessageA__IIII

-#define NO_SendMessageA__III_3S

-#define NO_SendMessageA__III_3I

-#define NO_SendMessageA__III_3B

-#define NO_SendMessageA__II_3II

-#define NO_SendMessageA__II_3I_3I

-#define NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2

-#define NO_SetDIBColorTable

-#define NO_SetErrorMode

-#define NO_SetMenu

-#define NO_SetMenuDefaultItem

-#define NO_SetMenuInfo

-#define NO_SetMenuItemInfoA

-#define NO_SetStretchBltMode

-#define NO_SetTextAlign

-#define NO_SetWindowLongA

-#define NO_SetWindowPlacement

-#define NO_SetWindowTextA

-#define NO_SetWindowsHookExA

-#define NO_SetWindowsHookExW

-#define NO_ShellExecuteExA

-#define NO_ShowOwnedPopups

-#define NO_ShowScrollBar

-#define NO_StartDocA

-#define NO_StartDocW

-#define NO_StartPage

-#define NO_SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_RECT_2I

-#define NO_SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSA_2I

-#define NO_SystemParametersInfoA__II_3II

-#define NO_SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSW_2I

-#define NO_ToAscii

-#define NO_ToUnicode

-#define NO_TrackMouseEvent

-#define NO_TranslateAcceleratorA

-#define NO_TranslateMDISysAccel

-#define NO_UnhookWindowsHookEx

-#define NO_UnregisterClassA

-#define NO_VkKeyScanA

-#define NO_VkKeyScanW

-#define NO_WaitMessage

-#define NO_WindowFromDC

-

-#define ChooseColorW ChooseColor

-#define CHOOSECOLORW CHOOSECOLOR

-#define LPCHOOSECOLORW LPCHOOSECOLOR

-#define FONTENUMPROCW FONTENUMPROC

-#define ShellExecuteExW ShellExecuteEx

-#define LPSHELLEXECUTEINFOW LPSHELLEXECUTEINFO

-#endif /* _WIN32_WCE */

-

-#ifndef WIN32_PLATFORM_HPC2000

-#define NO_CommandBar_1AddAdornments

-#define NO_CommandBar_1Create

-#define NO_CommandBar_1DrawMenuBar

-#define NO_CommandBar_1Height

-#define NO_CommandBar_1InsertMenubarEx

-#define NO_CommandBar_1Show

-#endif /* WIN32_PLATFORM_HPC2000 */

-

-#if !defined(WIN32_PLATFORM_PSPC) && !defined(WIN32_PLATFORM_WFSP)

-#define NO_SHCreateMenuBar

-#define NO_SHSetAppKeyWndAssoc

-#endif /* WIN32_PLATFORM_PSPC, WIN32_PLATFORM_WFSP */

-

-#ifdef WIN32_PLATFORM_WFSP

-#define NO_CommDlgExtendedError

-#define NO_ChooseColorW

-#endif /* WIN32_PLATFORM_WFSP */

-

-#ifndef WIN32_PLATFORM_PSPC

-#define NO_SHHandleWMSettingChange

-#define NO_SHRecognizeGesture

-#define NO_SHSipPreference

-#define NO_SipGetInfo

-#endif /* WIN32_PLATFORM_PSPC */

-

-#ifndef WIN32_PLATFORM_WFSP

-#define NO_SHSendBackToFocusWindow

-#endif /* WIN32_PLATFORM_WFSP */

-

-#ifndef _WIN32_WCE

-#define NO_CommandBar_1Destroy

-#define NO_TransparentImage

-#endif /* _WIN32_WCE */

-

-#define TrackMouseEvent _TrackMouseEvent

-

-#define NATIVE_ENTER(env,clazz,func)

-#define NATIVE_EXIT(env,clazz,func)

-

-#endif /* INC_os_H */

+/*******************************************************************************
+ * Copyright (c) 2000, 2003 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+#ifndef INC_os_H
+#define INC_os_H
+
+#define WINVER 0x0500
+#define _WIN32_IE 0x0500
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#define VC_EXTRALEAN
+
+#include <windows.h>
+#include <winuser.h>
+#include <commctrl.h>
+#include <commdlg.h>
+#include <oaidl.h>
+#include <shlobj.h>
+#include <ole2.h>
+#include <olectl.h>
+#include <objbase.h>
+#include <shlwapi.h>
+#include <shellapi.h>
+
+#ifndef _WIN32_WCE
+#include <initguid.h>
+#include <oleacc.h>
+#endif // _WIN32_WCE
+
+#if defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP)
+#include <aygshell.h>
+#endif // WIN32_PLATFORM_PSPC, WIN32_PLATFORM_WFSP
+
+#ifdef WIN32_PLATFORM_WFSP
+#include <tpcshell.h>
+#endif /* WIN32_PLATFORM_WFSP */
+
+/* Optional custom definitions to exclude some types */
+#include "defines.h"
+
+/* Structs excludes */
+#ifdef _WIN32_WCE
+#define NO_BROWSEINFO
+#define NO_CHOOSEFONT
+#define NO_DOCINFO
+#define NO_GCP_RESULTS
+#define NO_GRADIENT_RECT
+#define NO_HELPINFO
+#define NO_MENUINFO
+#define NO_NMREBARCHEVRON
+#define NO_NMTTDISPINFO
+#define NO_NMTTDISPINFOA
+#define NO_NMTTDISPINFOW
+#define NO_NONCLIENTMETRICS
+#define NO_NONCLIENTMETRICSA
+#define NO_NONCLIENTMETRICSW
+#define NO_PRINTDLG
+#define NO_TOOLINFO
+#define NO_TRACKMOUSEEVENT
+#define NO_TRIVERTEX
+#define NO_WINDOWPLACEMENT
+#define NO_DROPFILES
+#define NO_MONITORINFO
+#define NO_OLECMD
+#define NO_OLECMDTEXT
+
+/* OLE */
+#define NO_CAUUID
+#define NO_CONTROLINFO
+#define NO_COSERVERINFO
+#define NO_DISPPARAMS
+#define NO_DVTARGETDEVICE
+#define NO_EXCEPINFO
+#define NO_FORMATETC
+#define NO_FUNCDESC1
+#define NO_FUNCDESC2
+#define NO_GUID
+#define NO_LICINFO
+#define NO_OLEINPLACEFRAMEINFO
+#define NO_STATSTG
+#define NO_STGMEDIUM
+#define NO_TYPEATTR
+#define NO_VARDESC1
+#define NO_VARDESC2
+#endif /* _WIN32_WCE */
+
+#if !defined(WIN32_PLATFORM_PSPC) && !defined(WIN32_PLATFORM_WFSP)
+#define NO_SHMENUBARINFO
+#endif /* WIN32_PLATFORM_PSPC, WIN32_PLATFORM_WFSP */
+
+#ifndef WIN32_PLATFORM_PSPC
+#define NO_SHACTIVATEINFO
+#define NO_SHRGINFO
+#define NO_SIPINFO
+#endif /* WIN32_PLATFORM_PSPC */
+
+/* Functions excludes */
+#ifdef _WIN32_WCE
+#define NO_AbortDoc
+#define NO_ActivateKeyboardLayout
+#define NO_Arc
+#define NO_CallNextHookEx
+#define NO_CallWindowProcA
+#define NO_CharLowerA
+#define NO_CharUpperA
+#define NO_ChooseColorA
+#define NO_ChooseFontA
+#define NO_ChooseFontW
+#define NO_CopyImage
+#define NO_CreateAcceleratorTableA
+#define NO_CreateCursor
+#define NO_CreateDCA
+#define NO_CreateFontIndirectA__Lorg_eclipse_swt_internal_win32_LOGFONTA_2
+#define NO_CreateFontIndirectA__I
+#define NO_CreateWindowExA
+#define NO_DefFrameProcA
+#define NO_DefFrameProcW
+#define NO_DefMDIChildProcA
+#define NO_DefMDIChildProcW
+#define NO_DefWindowProcA
+#define NO_DestroyCursor
+#define NO_DispatchMessageA
+#define NO_DragDetect
+#define NO_DragFinish
+#define NO_DragQueryFileA
+#define NO_DragQueryFileW
+#define NO_DrawStateA
+#define NO_DrawStateW
+#define NO_DrawTextA
+#define NO_EnableScrollBar
+#define NO_EndDoc
+#define NO_EndPage
+#define NO_EnumDisplayMonitors
+#define NO_EnumFontFamiliesA
+#define NO_EnumSystemLanguageGroupsA
+#define NO_EnumSystemLanguageGroupsW
+#define NO_EnumSystemLocalesA
+#define NO_ExpandEnvironmentStringsW
+#define NO_ExpandEnvironmentStringsA
+#define NO_ExtTextOutA
+#define NO_ExtractIconExA
+#define NO_FindWindowA
+#define NO_GetCharABCWidthsA
+#define NO_GetCharABCWidthsW
+#define NO_GetCharWidthA
+#define NO_GetCharWidthW
+#define NO_GetCharacterPlacementA
+#define NO_GetCharacterPlacementW
+#define NO_GetClassInfoA
+#define NO_GetClipboardFormatNameA
+#define NO_GetDIBColorTable
+#define NO_GetDIBits
+#define NO_GetFontLanguageInfo
+#define NO_GetIconInfo
+#define NO_GetKeyboardLayout
+#define NO_GetKeyboardLayoutList
+#define NO_GetKeyboardState
+#define NO_GetKeyNameTextA
+#define NO_GetKeyNameTextW
+#define NO_GetLastActivePopup
+#define NO_GetLayout
+#define NO_GetLocaleInfoA
+#define NO_GetMenu
+#define NO_GetMenuDefaultItem
+#define NO_GetMenuInfo
+#define NO_GetMenuItemCount
+#define NO_GetMenuItemInfoA
+#define NO_GetMessageA
+#define NO_GetMessageTime
+#define NO_GetModuleHandleA
+#define NO_GetMonitorInfoA
+#define NO_GetMonitorInfoW
+#define NO_GetObjectA__IILorg_eclipse_swt_internal_win32_LOGPEN_2
+#define NO_GetObjectA__IILorg_eclipse_swt_internal_win32_LOGFONTA_2
+#define NO_GetObjectA__IILorg_eclipse_swt_internal_win32_LOGBRUSH_2
+#define NO_GetObjectA__IILorg_eclipse_swt_internal_win32_DIBSECTION_2
+#define NO_GetObjectA__IILorg_eclipse_swt_internal_win32_BITMAP_2
+#define NO_GetOpenFileNameA
+#define NO_GetProfileStringA
+#define NO_GetProfileStringW
+#define NO_GetROP2
+#define NO_GetSaveFileNameA
+#define NO_GetTextCharset
+#define NO_GetTextExtentPoint32A
+#define NO_GetTextMetricsA
+#define NO_GetVersionExA
+#define NO_GetWindowLongA
+#define NO_GetWindowPlacement
+#define NO_GetWindowTextA
+#define NO_GetWindowTextLengthA
+#define NO_GradientFill
+#define NO_ImmGetCompositionFontA
+#define NO_ImmGetCompositionStringA
+#define NO_ImmSetCompositionFontA
+#define NO_InsertMenuA
+#define NO_InsertMenuItemA
+#define NO_InsertMenuItemW
+#define NO_InvalidateRgn
+#define NO_IsIconic
+#define NO_IsZoomed
+#define NO_LineTo
+#define NO_LoadBitmapA
+#define NO_LoadCursorA
+#define NO_LoadIconA
+#define NO_LoadImageA
+#define NO_LoadLibraryA
+#define NO_MapVirtualKeyA
+#define NO_MessageBoxA
+#define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_DROPFILES_2I
+#define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMREBARCHEVRON_2II
+#define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_HELPINFO_2II
+#define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_TRIVERTEX_2I
+#define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_GRADIENT_1RECT_2I
+#define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2II
+#define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2II
+#define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOA_2I
+#define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_NMTTDISPINFOW_2I
+#define NO_MoveMemory__Lorg_eclipse_swt_internal_win32_LOGFONTA_2II
+#define NO_MoveMemory__ILorg_eclipse_swt_internal_win32_LOGFONTA_2I
+#define NO_MoveToEx
+#define NO_OleInitialize
+#define NO_OleUninitialize
+#define NO_PeekMessageA
+#define NO_Pie
+#define NO_PostMessageA
+#define NO_PostThreadMessageA
+#define NO_PrintDlgA
+#define NO_PrintDlgW
+#define NO_RedrawWindow
+#define NO_RegEnumKeyExA
+#define NO_RegOpenKeyExA
+#define NO_RegQueryInfoKeyA
+#define NO_RegQueryValueExA
+#define NO_RegisterClassA
+#define NO_RegisterClipboardFormatA
+#define NO_SetLayout
+#define NO_SHBrowseForFolderA
+#define NO_SHBrowseForFolderW
+#define NO_SHGetPathFromIDListA
+#define NO_SHGetPathFromIDListW
+#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVITEM_2
+#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVINSERTSTRUCT_2
+#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TVHITTESTINFO_2
+#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2
+#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TCITEM_2
+#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTONINFO_2
+#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_TBBUTTON_2
+#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_RECT_2
+#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_REBARBANDINFO_2
+#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_LVITEM_2
+#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_LVHITTESTINFO_2
+#define NO_SendMessageA__IIILorg_eclipse_swt_internal_win32_LVCOLUMN_2
+#define NO_SendMessageA__IIII
+#define NO_SendMessageA__III_3S
+#define NO_SendMessageA__III_3I
+#define NO_SendMessageA__III_3B
+#define NO_SendMessageA__II_3II
+#define NO_SendMessageA__II_3I_3I
+#define NO_SendMessageW__IIILorg_eclipse_swt_internal_win32_TOOLINFO_2
+#define NO_SetDIBColorTable
+#define NO_SetErrorMode
+#define NO_SetMenu
+#define NO_SetMenuDefaultItem
+#define NO_SetMenuInfo
+#define NO_SetMenuItemInfoA
+#define NO_SetStretchBltMode
+#define NO_SetTextAlign
+#define NO_SetWindowLongA
+#define NO_SetWindowPlacement
+#define NO_SetWindowTextA
+#define NO_SetWindowsHookExA
+#define NO_SetWindowsHookExW
+#define NO_ShellExecuteExA
+#define NO_ShowOwnedPopups
+#define NO_ShowScrollBar
+#define NO_StartDocA
+#define NO_StartDocW
+#define NO_StartPage
+#define NO_SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_RECT_2I
+#define NO_SystemParametersInfoA__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSA_2I
+#define NO_SystemParametersInfoA__II_3II
+#define NO_SystemParametersInfoW__IILorg_eclipse_swt_internal_win32_NONCLIENTMETRICSW_2I
+#define NO_ToAscii
+#define NO_ToUnicode
+#define NO_TrackMouseEvent
+#define NO_TranslateAcceleratorA
+#define NO_TranslateMDISysAccel
+#define NO_UnhookWindowsHookEx
+#define NO_UnregisterClassA
+#define NO_VkKeyScanA
+#define NO_VkKeyScanW
+#define NO_WaitMessage
+#define NO_WindowFromDC
+
+#define ChooseColorW ChooseColor
+#define CHOOSECOLORW CHOOSECOLOR
+#define LPCHOOSECOLORW LPCHOOSECOLOR
+#define FONTENUMPROCW FONTENUMPROC
+#define ShellExecuteExW ShellExecuteEx
+#define LPSHELLEXECUTEINFOW LPSHELLEXECUTEINFO
+#endif /* _WIN32_WCE */
+
+#ifndef WIN32_PLATFORM_HPC2000
+#define NO_CommandBar_1AddAdornments
+#define NO_CommandBar_1Create
+#define NO_CommandBar_1DrawMenuBar
+#define NO_CommandBar_1Height
+#define NO_CommandBar_1InsertMenubarEx
+#define NO_CommandBar_1Show
+#endif /* WIN32_PLATFORM_HPC2000 */
+
+#if !defined(WIN32_PLATFORM_PSPC) && !defined(WIN32_PLATFORM_WFSP)
+#define NO_SHCreateMenuBar
+#define NO_SHSetAppKeyWndAssoc
+#endif /* WIN32_PLATFORM_PSPC, WIN32_PLATFORM_WFSP */
+
+#ifdef WIN32_PLATFORM_WFSP
+#define NO_CommDlgExtendedError
+#define NO_ChooseColorW
+#endif /* WIN32_PLATFORM_WFSP */
+
+#ifndef WIN32_PLATFORM_PSPC
+#define NO_SHHandleWMSettingChange
+#define NO_SHRecognizeGesture
+#define NO_SHSipPreference
+#define NO_SipGetInfo
+#endif /* WIN32_PLATFORM_PSPC */
+
+#ifndef WIN32_PLATFORM_WFSP
+#define NO_SHSendBackToFocusWindow
+#endif /* WIN32_PLATFORM_WFSP */
+
+#ifndef _WIN32_WCE
+#define NO_CommandBar_1Destroy
+#define NO_TransparentImage
+#endif /* _WIN32_WCE */
+
+#define TrackMouseEvent _TrackMouseEvent
+
+#define NATIVE_ENTER(env,clazz,func)
+#define NATIVE_EXIT(env,clazz,func)
+
+#endif /* INC_os_H */
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_custom.c b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_custom.c
index 219ead7..7377dc3 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_custom.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_custom.c
@@ -1,417 +1,417 @@
-/*******************************************************************************

-* Copyright (c) 2000, 2003 IBM Corporation and others.

-* All rights reserved. This program and the accompanying materials

-* are made available under the terms of the Common Public License v1.0

-* which accompanies this distribution, and is available at

-* http://www.eclipse.org/legal/cpl-v10.html

-* 

-* Contributors:

-*     IBM Corporation - initial API and implementation

-*******************************************************************************/

-

-#include "swt.h"

-#include "os_structs.h"

-

-#define OS_NATIVE(func) Java_org_eclipse_swt_internal_win32_OS_##func

-

-__declspec(dllexport) HRESULT DllGetVersion(DLLVERSIONINFO *dvi);

-HRESULT DllGetVersion(DLLVERSIONINFO *dvi)

-{

-     dvi->dwMajorVersion = SWT_VERSION / 1000;

-     dvi->dwMinorVersion = SWT_VERSION % 1000;

-     dvi->dwBuildNumber = SWT_BUILD_NUM;

-     dvi->dwPlatformID = DLLVER_PLATFORM_WINDOWS;

-     return 1;

-}

-

-HINSTANCE g_hInstance = NULL;

-BOOL WINAPI DllMain(HANDLE hInstDLL, DWORD dwReason, LPVOID lpvReserved)

-{

-	if (dwReason == DLL_PROCESS_ATTACH) {

-		if (g_hInstance == NULL) g_hInstance = hInstDLL;

-	}

-	return TRUE;

-}

-

-#ifndef NO_GetLibraryHandle

-JNIEXPORT jint JNICALL OS_NATIVE(GetLibraryHandle)

-	(JNIEnv *env, jclass that)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetLibraryHandle\n")

-	rc = (jint)g_hInstance;

-	NATIVE_EXIT(env, that, "GetLibraryHandle\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_Call

-JNIEXPORT jint JNICALL OS_NATIVE(Call)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	DLLVERSIONINFO _arg1, *lparg1=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "Call\n")

-	if (arg1) lparg1 = getDLLVERSIONINFOFields(env, arg1, &_arg1);

-	rc = (jint)((DLLGETVERSIONPROC)arg0)(lparg1);

-	if (arg1) setDLLVERSIONINFOFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "Call\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_EnumDisplayMonitors

-JNIEXPORT jboolean JNICALL OS_NATIVE(EnumDisplayMonitors)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2, jint arg3)

-{

-	RECT _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "EnumDisplayMonitors\n")

-	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);

-	//rc = (jboolean)EnumDisplayMonitors((HDC)arg0, (LPCRECT)lparg1, (MONITORENUMPROC)arg2, (LPARAM)arg3);

-	{

-		/*

-		*  EnumDisplayMonitors is a Win2000 and Win98 specific call

-		*  If you link it into swt.dll a system modal entry point not found dialog will

-		*  appear as soon as swt.dll is loaded. Here we check for the entry point and

-		*  only do the call if it exists.

-		*/

-		HMODULE hm;

-		FARPROC fp;

-		if ((hm=GetModuleHandle("user32.dll")) && (fp=GetProcAddress(hm, "EnumDisplayMonitors"))) {

-			rc = (jboolean)(fp)((HDC)arg0, (LPCRECT)lparg1, (MONITORENUMPROC)arg2, (LPARAM)arg3);

-		}

-    }

-	if (arg1) setRECTFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "EnumDisplayMonitors\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_EnumSystemLanguageGroupsA

-JNIEXPORT jboolean JNICALL OS_NATIVE(EnumSystemLanguageGroupsA)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "EnumSystemLanguageGroupsA\n")

-	//rc = (jboolean)EnumSystemLanguageGroupsA((LANGUAGEGROUP_ENUMPROCA)arg0, arg1, (LONG_PTR)arg2);

-	{

-		/*

-		*  EnumSystemLanguageGroupsA is a Win2000 or later specific call

-		*  If you link it into swt.dll a system modal entry point not found dialog will

-		*  appear as soon as swt.dll is loaded. Here we check for the entry point and

-		*  only do the call if it exists.

-		*/

-		HMODULE hm;

-		FARPROC fp;

-		if ((hm=GetModuleHandle("kernel32.dll")) && (fp=GetProcAddress(hm, "EnumSystemLanguageGroupsA"))) {

-			rc = (jboolean)(fp)((LANGUAGEGROUP_ENUMPROCA)arg0, arg1, (LONG_PTR)arg2);

-		}

-	}

-	NATIVE_EXIT(env, that, "EnumSystemLanguageGroupsA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_EnumSystemLanguageGroupsW

-JNIEXPORT jboolean JNICALL OS_NATIVE(EnumSystemLanguageGroupsW)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "EnumSystemLanguageGroupsW\n")

-	//rc = (jboolean)EnumSystemLanguageGroupsW((LANGUAGEGROUP_ENUMPROCW)arg0, arg1, (LONG_PTR)arg2);

-	{

-		/*

-		*  EnumSystemLanguageGroupsW is a Win2000 or later specific call

-		*  If you link it into swt.dll a system modal entry point not found dialog will

-		*  appear as soon as swt.dll is loaded. Here we check for the entry point and

-		*  only do the call if it exists.

-		*/

-		HMODULE hm;

-		FARPROC fp;

-		if ((hm=GetModuleHandle("kernel32.dll")) && (fp=GetProcAddress(hm, "EnumSystemLanguageGroupsW"))) {

-			rc = (jboolean)(fp)((LANGUAGEGROUP_ENUMPROCW)arg0, arg1, (LONG_PTR)arg2);

-		}

-	}

-	NATIVE_EXIT(env, that, "EnumSystemLanguageGroupsW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetLayout

-JNIEXPORT jint JNICALL OS_NATIVE(GetLayout)

-	(JNIEnv *env, jclass that, jint arg0)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "GetLayout\n")

-	//rc = (jint)GetLayout((HDC)arg0);

-	{

-		/*

-		*  GetLayout is a Win2000 and Win98 specific call

-		*  If you link it into swt.dll a system modal entry point not found dialog will

-		*  appear as soon as swt.dll is loaded. Here we check for the entry point and

-		*  only do the call if it exists.

-		*/

-		HMODULE hm;

-		FARPROC fp;

-    	if ((hm=GetModuleHandle("gdi32.dll")) && (fp=GetProcAddress(hm, "GetLayout"))) {

-    		rc = (jint)(fp)((HDC)arg0);

-    	}

-    }

-	NATIVE_EXIT(env, that, "GetLayout\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetMenuInfo

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetMenuInfo)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	MENUINFO _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetMenuInfo\n")

-	if (arg1) lparg1 = getMENUINFOFields(env, arg1, &_arg1);

-	//rc = (jboolean)GetMenuInfo((HMENU)arg0, lparg1);

-	{

-		/*

-		*  GetMenuInfo is a Win2000 and Win98 specific call

-		*  If you link it into swt.dll a system modal entry point not found dialog will

-		*  appear as soon as swt.dll is loaded. Here we check for the entry point and

-		*  only do the call if it exists.

-		*/

-		HMODULE hm;

-		FARPROC fp;

-		if ((hm=GetModuleHandle("user32.dll")) && (fp=GetProcAddress(hm, "GetMenuInfo"))) {

-        	rc = (jboolean)(fp)((HMENU)arg0, lparg1);

-        }

-	}

-	if (arg1) setMENUINFOFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "GetMenuInfo\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetMonitorInfoA

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetMonitorInfoA)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	MONITORINFO _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetMonitorInfoA\n")

-	if (arg1) lparg1 = getMONITORINFOFields(env, arg1, &_arg1);

-	//rc = (jboolean)GetMonitorInfoA((HMONITOR)arg0, (LPMONITORINFO)lparg1);

-	{

-		/*

-		*  GetMonitorInfoA is a Win2000 and Win98 specific call

-		*  If you link it into swt.dll a system modal entry point not found dialog will

-		*  appear as soon as swt.dll is loaded. Here we check for the entry point and

-		*  only do the call if it exists.

-		*/

-		HMODULE hm;

-		FARPROC fp;

-		if ((hm=GetModuleHandle("user32.dll")) && (fp=GetProcAddress(hm, "GetMonitorInfoA"))) {

-			rc = (jboolean)(fp)((HMONITOR)arg0, (LPMONITORINFO)lparg1);

-		}

-	}

-	if (arg1) setMONITORINFOFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "GetMonitorInfoA\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GetMonitorInfoW

-JNIEXPORT jboolean JNICALL OS_NATIVE(GetMonitorInfoW)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	MONITORINFO _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GetMonitorInfoW\n")

-	if (arg1) lparg1 = getMONITORINFOFields(env, arg1, &_arg1);

-	//rc = (jboolean)GetMonitorInfoW((HMONITOR)arg0, (LPMONITORINFO)lparg1);

-	{

-		/*

-		*  GetMonitorInfoW is a Win2000 and Win98 specific call

-		*  If you link it into swt.dll a system modal entry point not found dialog will

-		*  appear as soon as swt.dll is loaded. Here we check for the entry point and

-		*  only do the call if it exists.

-		*/

-		HMODULE hm;

-		FARPROC fp;

-		if ((hm=GetModuleHandle("user32.dll")) && (fp=GetProcAddress(hm, "GetMonitorInfoW"))) {

-			rc = (jboolean)(fp)((HMONITOR)arg0, (LPMONITORINFO)lparg1);

-		}

-	}

-	if (arg1) setMONITORINFOFields(env, arg1, lparg1);

-	NATIVE_EXIT(env, that, "GetMonitorInfoW\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_GradientFill

-JNIEXPORT jboolean JNICALL OS_NATIVE(GradientFill)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "GradientFill\n")

-	//rc = (jboolean)GradientFill((HDC)arg0, (PTRIVERTEX)arg1, (ULONG)arg2, (PVOID)arg3, (ULONG)arg4, (ULONG)arg5);

-	{

-		/*

-		*  GradientFill is a Win2000 and Win98 specific call

-		*  If you link it into swt.dll, a system modal entry point not found dialog will

-		*  appear as soon as swt.dll is loaded. Here we check for the entry point and

-		*  only do the call if it exists.

-		*/

-		HMODULE hm;

-		FARPROC fp;

-		if (!(hm = GetModuleHandle("msimg32.dll"))) hm = LoadLibrary("msimg32.dll");

-		if (hm && (fp = GetProcAddress(hm, "GradientFill"))) {

-			rc = (jboolean)fp((HDC)arg0, (PTRIVERTEX)arg1, (ULONG)arg2, (PVOID)arg3, (ULONG)arg4, (ULONG)arg5);

-		}

-	}

-	NATIVE_EXIT(env, that, "GradientFill\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_IsPPC

-JNIEXPORT jboolean JNICALL OS_NATIVE(IsPPC)

-	(JNIEnv *env, jclass that)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "IsPPC\n")

-#ifdef WIN32_PLATFORM_PSPC

-	rc = (jboolean)TRUE;

-#else

-	rc = (jboolean)FALSE;

-#endif

-	NATIVE_EXIT(env, that, "IsPPC\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_IsSP

-JNIEXPORT jboolean JNICALL OS_NATIVE(IsSP)

-	(JNIEnv *env, jclass that)

-{

-	jboolean rc;

-	NATIVE_ENTER(env, that, "IsSP\n")

-#ifdef WIN32_PLATFORM_WFSP

-	rc = (jboolean)TRUE;

-#else

-	rc = (jboolean)FALSE;

-#endif

-	NATIVE_EXIT(env, that, "IsSP\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SendMessageW__II_3I_3I

-JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__II_3I_3I)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jintArray arg3)

-{

-	jint *lparg2=NULL;

-	jint *lparg3=NULL;

-	jint rc;

-	NATIVE_ENTER(env, that, "SendMessageW__II_3I_3I\n")

-	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);

-	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);

-#ifdef _WIN32_WCE

-	/*

-	* Bug on WinCE.  SendMessage can fail (return 0) when being passed references

-	* to parameters allocated from the heap. The workaround is to allocate

-	* the parameters on the stack and to copy them back to the java array.

-	* Observed on Pocket PC WinCE 3.0 with EM_GETSEL and CB_GETEDITSEL messages.

-	*/

-	switch (arg1) {

-		case EM_GETSEL:

-		case CB_GETEDITSEL: {

-			jint wParam = 0, lParam = 0;

-			jint *lpwParam = NULL, *lplParam = NULL;

-			if (lparg2 != NULL) lpwParam = &wParam;

-			if (lparg3 != NULL) lplParam = &lParam;

-			rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)lpwParam, (LPARAM)lplParam);

-			if (lparg2 != NULL) lparg2[0] = wParam;

-			if (lparg3 != NULL) lparg3[0] = lParam;

-			break;

-		}

-		default:

-			rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)lparg2, (LPARAM)lparg3);

-	}

-#else

-	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)lparg2, (LPARAM)lparg3);

-#endif

-	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);

-	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);

-	NATIVE_EXIT(env, that, "SendMessageW__II_3I_3I\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetLayout

-JNIEXPORT jint JNICALL OS_NATIVE(SetLayout)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "SetLayout\n")

-	//rc = (jint)SetLayout((HDC)arg0, (DWORD)arg1);

-	{

-		/*

-		*  SetLayout is a Win2000 and Win98 specific call

-		*  If you link it into swt.dll a system modal entry point not found dialog will

-		*  appear as soon as swt.dll is loaded. Here we check for the entry point and

-		*  only do the call if it exists.

-		*/

-		HMODULE hm;

-		FARPROC fp;

-		if ((hm=GetModuleHandle("gdi32.dll")) && (fp=GetProcAddress(hm, "SetLayout"))) {

-			rc = (jint)(fp)((HDC)arg0, (DWORD)arg1);

-		}

-	}

-	NATIVE_EXIT(env, that, "SetLayout\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_SetMenuInfo

-JNIEXPORT jboolean JNICALL OS_NATIVE(SetMenuInfo)

-	(JNIEnv *env, jclass that, jint arg0, jobject arg1)

-{

-	MENUINFO _arg1, *lparg1=NULL;

-	jboolean rc;

-	NATIVE_ENTER(env, that, "SetMenuInfo\n")

-	if (arg1) lparg1 = getMENUINFOFields(env, arg1, &_arg1);

-	//rc = (jboolean)SetMenuInfo((HMENU)arg0, lparg1);

-	{

-		/*

-		*  SetMenuInfo is a Win2000 and Win98 specific call

-		*  If you link it into swt.dll a system modal entry point not found dialog will

-		*  appear as soon as swt.dll is loaded. Here we check for the entry point and

-		*  only do the call if it exists.

-		*/

-		HMODULE hm;

-		FARPROC fp;

-		if ((hm=GetModuleHandle("user32.dll")) && (fp=GetProcAddress(hm, "SetMenuInfo"))) {

-			rc = (jboolean)(fp)((HMENU)arg0, lparg1);

-		}

-	}

-	NATIVE_EXIT(env, that, "SetMenuInfo\n")

-	return rc;

-}

-#endif

-

-#ifndef NO_VtblCall

-JNIEXPORT jint JNICALL OS_NATIVE(VtblCall)

-	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)

-{

-	jint rc;

-	NATIVE_ENTER(env, that, "VtblCall\n")

-	typedef jint (STDMETHODCALLTYPE *P_OLE_FN_2)(jint, jint);

-	{

-		P_OLE_FN_2 fn;

-		fn = (P_OLE_FN_2)(*(int **)arg1)[arg0];

-		rc = fn(arg1, arg2);

-    }

-	NATIVE_EXIT(env, that, "VtblCall\n")

-	return rc;

-}

-#endif

+/*******************************************************************************
+* Copyright (c) 2000, 2003 IBM Corporation and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Common Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/cpl-v10.html
+* 
+* Contributors:
+*     IBM Corporation - initial API and implementation
+*******************************************************************************/
+
+#include "swt.h"
+#include "os_structs.h"
+
+#define OS_NATIVE(func) Java_org_eclipse_swt_internal_win32_OS_##func
+
+__declspec(dllexport) HRESULT DllGetVersion(DLLVERSIONINFO *dvi);
+HRESULT DllGetVersion(DLLVERSIONINFO *dvi)
+{
+     dvi->dwMajorVersion = SWT_VERSION / 1000;
+     dvi->dwMinorVersion = SWT_VERSION % 1000;
+     dvi->dwBuildNumber = SWT_BUILD_NUM;
+     dvi->dwPlatformID = DLLVER_PLATFORM_WINDOWS;
+     return 1;
+}
+
+HINSTANCE g_hInstance = NULL;
+BOOL WINAPI DllMain(HANDLE hInstDLL, DWORD dwReason, LPVOID lpvReserved)
+{
+	if (dwReason == DLL_PROCESS_ATTACH) {
+		if (g_hInstance == NULL) g_hInstance = hInstDLL;
+	}
+	return TRUE;
+}
+
+#ifndef NO_GetLibraryHandle
+JNIEXPORT jint JNICALL OS_NATIVE(GetLibraryHandle)
+	(JNIEnv *env, jclass that)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetLibraryHandle\n")
+	rc = (jint)g_hInstance;
+	NATIVE_EXIT(env, that, "GetLibraryHandle\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_Call
+JNIEXPORT jint JNICALL OS_NATIVE(Call)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	DLLVERSIONINFO _arg1, *lparg1=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "Call\n")
+	if (arg1) lparg1 = getDLLVERSIONINFOFields(env, arg1, &_arg1);
+	rc = (jint)((DLLGETVERSIONPROC)arg0)(lparg1);
+	if (arg1) setDLLVERSIONINFOFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "Call\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_EnumDisplayMonitors
+JNIEXPORT jboolean JNICALL OS_NATIVE(EnumDisplayMonitors)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1, jint arg2, jint arg3)
+{
+	RECT _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "EnumDisplayMonitors\n")
+	if (arg1) lparg1 = getRECTFields(env, arg1, &_arg1);
+	//rc = (jboolean)EnumDisplayMonitors((HDC)arg0, (LPCRECT)lparg1, (MONITORENUMPROC)arg2, (LPARAM)arg3);
+	{
+		/*
+		*  EnumDisplayMonitors is a Win2000 and Win98 specific call
+		*  If you link it into swt.dll a system modal entry point not found dialog will
+		*  appear as soon as swt.dll is loaded. Here we check for the entry point and
+		*  only do the call if it exists.
+		*/
+		HMODULE hm;
+		FARPROC fp;
+		if ((hm=GetModuleHandle("user32.dll")) && (fp=GetProcAddress(hm, "EnumDisplayMonitors"))) {
+			rc = (jboolean)(fp)((HDC)arg0, (LPCRECT)lparg1, (MONITORENUMPROC)arg2, (LPARAM)arg3);
+		}
+    }
+	if (arg1) setRECTFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "EnumDisplayMonitors\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_EnumSystemLanguageGroupsA
+JNIEXPORT jboolean JNICALL OS_NATIVE(EnumSystemLanguageGroupsA)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "EnumSystemLanguageGroupsA\n")
+	//rc = (jboolean)EnumSystemLanguageGroupsA((LANGUAGEGROUP_ENUMPROCA)arg0, arg1, (LONG_PTR)arg2);
+	{
+		/*
+		*  EnumSystemLanguageGroupsA is a Win2000 or later specific call
+		*  If you link it into swt.dll a system modal entry point not found dialog will
+		*  appear as soon as swt.dll is loaded. Here we check for the entry point and
+		*  only do the call if it exists.
+		*/
+		HMODULE hm;
+		FARPROC fp;
+		if ((hm=GetModuleHandle("kernel32.dll")) && (fp=GetProcAddress(hm, "EnumSystemLanguageGroupsA"))) {
+			rc = (jboolean)(fp)((LANGUAGEGROUP_ENUMPROCA)arg0, arg1, (LONG_PTR)arg2);
+		}
+	}
+	NATIVE_EXIT(env, that, "EnumSystemLanguageGroupsA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_EnumSystemLanguageGroupsW
+JNIEXPORT jboolean JNICALL OS_NATIVE(EnumSystemLanguageGroupsW)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "EnumSystemLanguageGroupsW\n")
+	//rc = (jboolean)EnumSystemLanguageGroupsW((LANGUAGEGROUP_ENUMPROCW)arg0, arg1, (LONG_PTR)arg2);
+	{
+		/*
+		*  EnumSystemLanguageGroupsW is a Win2000 or later specific call
+		*  If you link it into swt.dll a system modal entry point not found dialog will
+		*  appear as soon as swt.dll is loaded. Here we check for the entry point and
+		*  only do the call if it exists.
+		*/
+		HMODULE hm;
+		FARPROC fp;
+		if ((hm=GetModuleHandle("kernel32.dll")) && (fp=GetProcAddress(hm, "EnumSystemLanguageGroupsW"))) {
+			rc = (jboolean)(fp)((LANGUAGEGROUP_ENUMPROCW)arg0, arg1, (LONG_PTR)arg2);
+		}
+	}
+	NATIVE_EXIT(env, that, "EnumSystemLanguageGroupsW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetLayout
+JNIEXPORT jint JNICALL OS_NATIVE(GetLayout)
+	(JNIEnv *env, jclass that, jint arg0)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "GetLayout\n")
+	//rc = (jint)GetLayout((HDC)arg0);
+	{
+		/*
+		*  GetLayout is a Win2000 and Win98 specific call
+		*  If you link it into swt.dll a system modal entry point not found dialog will
+		*  appear as soon as swt.dll is loaded. Here we check for the entry point and
+		*  only do the call if it exists.
+		*/
+		HMODULE hm;
+		FARPROC fp;
+    	if ((hm=GetModuleHandle("gdi32.dll")) && (fp=GetProcAddress(hm, "GetLayout"))) {
+    		rc = (jint)(fp)((HDC)arg0);
+    	}
+    }
+	NATIVE_EXIT(env, that, "GetLayout\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetMenuInfo
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetMenuInfo)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	MENUINFO _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetMenuInfo\n")
+	if (arg1) lparg1 = getMENUINFOFields(env, arg1, &_arg1);
+	//rc = (jboolean)GetMenuInfo((HMENU)arg0, lparg1);
+	{
+		/*
+		*  GetMenuInfo is a Win2000 and Win98 specific call
+		*  If you link it into swt.dll a system modal entry point not found dialog will
+		*  appear as soon as swt.dll is loaded. Here we check for the entry point and
+		*  only do the call if it exists.
+		*/
+		HMODULE hm;
+		FARPROC fp;
+		if ((hm=GetModuleHandle("user32.dll")) && (fp=GetProcAddress(hm, "GetMenuInfo"))) {
+        	rc = (jboolean)(fp)((HMENU)arg0, lparg1);
+        }
+	}
+	if (arg1) setMENUINFOFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "GetMenuInfo\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetMonitorInfoA
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetMonitorInfoA)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	MONITORINFO _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetMonitorInfoA\n")
+	if (arg1) lparg1 = getMONITORINFOFields(env, arg1, &_arg1);
+	//rc = (jboolean)GetMonitorInfoA((HMONITOR)arg0, (LPMONITORINFO)lparg1);
+	{
+		/*
+		*  GetMonitorInfoA is a Win2000 and Win98 specific call
+		*  If you link it into swt.dll a system modal entry point not found dialog will
+		*  appear as soon as swt.dll is loaded. Here we check for the entry point and
+		*  only do the call if it exists.
+		*/
+		HMODULE hm;
+		FARPROC fp;
+		if ((hm=GetModuleHandle("user32.dll")) && (fp=GetProcAddress(hm, "GetMonitorInfoA"))) {
+			rc = (jboolean)(fp)((HMONITOR)arg0, (LPMONITORINFO)lparg1);
+		}
+	}
+	if (arg1) setMONITORINFOFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "GetMonitorInfoA\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GetMonitorInfoW
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetMonitorInfoW)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	MONITORINFO _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetMonitorInfoW\n")
+	if (arg1) lparg1 = getMONITORINFOFields(env, arg1, &_arg1);
+	//rc = (jboolean)GetMonitorInfoW((HMONITOR)arg0, (LPMONITORINFO)lparg1);
+	{
+		/*
+		*  GetMonitorInfoW is a Win2000 and Win98 specific call
+		*  If you link it into swt.dll a system modal entry point not found dialog will
+		*  appear as soon as swt.dll is loaded. Here we check for the entry point and
+		*  only do the call if it exists.
+		*/
+		HMODULE hm;
+		FARPROC fp;
+		if ((hm=GetModuleHandle("user32.dll")) && (fp=GetProcAddress(hm, "GetMonitorInfoW"))) {
+			rc = (jboolean)(fp)((HMONITOR)arg0, (LPMONITORINFO)lparg1);
+		}
+	}
+	if (arg1) setMONITORINFOFields(env, arg1, lparg1);
+	NATIVE_EXIT(env, that, "GetMonitorInfoW\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_GradientFill
+JNIEXPORT jboolean JNICALL OS_NATIVE(GradientFill)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GradientFill\n")
+	//rc = (jboolean)GradientFill((HDC)arg0, (PTRIVERTEX)arg1, (ULONG)arg2, (PVOID)arg3, (ULONG)arg4, (ULONG)arg5);
+	{
+		/*
+		*  GradientFill is a Win2000 and Win98 specific call
+		*  If you link it into swt.dll, a system modal entry point not found dialog will
+		*  appear as soon as swt.dll is loaded. Here we check for the entry point and
+		*  only do the call if it exists.
+		*/
+		HMODULE hm;
+		FARPROC fp;
+		if (!(hm = GetModuleHandle("msimg32.dll"))) hm = LoadLibrary("msimg32.dll");
+		if (hm && (fp = GetProcAddress(hm, "GradientFill"))) {
+			rc = (jboolean)fp((HDC)arg0, (PTRIVERTEX)arg1, (ULONG)arg2, (PVOID)arg3, (ULONG)arg4, (ULONG)arg5);
+		}
+	}
+	NATIVE_EXIT(env, that, "GradientFill\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_IsPPC
+JNIEXPORT jboolean JNICALL OS_NATIVE(IsPPC)
+	(JNIEnv *env, jclass that)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "IsPPC\n")
+#ifdef WIN32_PLATFORM_PSPC
+	rc = (jboolean)TRUE;
+#else
+	rc = (jboolean)FALSE;
+#endif
+	NATIVE_EXIT(env, that, "IsPPC\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_IsSP
+JNIEXPORT jboolean JNICALL OS_NATIVE(IsSP)
+	(JNIEnv *env, jclass that)
+{
+	jboolean rc;
+	NATIVE_ENTER(env, that, "IsSP\n")
+#ifdef WIN32_PLATFORM_WFSP
+	rc = (jboolean)TRUE;
+#else
+	rc = (jboolean)FALSE;
+#endif
+	NATIVE_EXIT(env, that, "IsSP\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SendMessageW__II_3I_3I
+JNIEXPORT jint JNICALL OS_NATIVE(SendMessageW__II_3I_3I)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jintArray arg2, jintArray arg3)
+{
+	jint *lparg2=NULL;
+	jint *lparg3=NULL;
+	jint rc;
+	NATIVE_ENTER(env, that, "SendMessageW__II_3I_3I\n")
+	if (arg2) lparg2 = (*env)->GetIntArrayElements(env, arg2, NULL);
+	if (arg3) lparg3 = (*env)->GetIntArrayElements(env, arg3, NULL);
+#ifdef _WIN32_WCE
+	/*
+	* Bug on WinCE.  SendMessage can fail (return 0) when being passed references
+	* to parameters allocated from the heap. The workaround is to allocate
+	* the parameters on the stack and to copy them back to the java array.
+	* Observed on Pocket PC WinCE 3.0 with EM_GETSEL and CB_GETEDITSEL messages.
+	*/
+	switch (arg1) {
+		case EM_GETSEL:
+		case CB_GETEDITSEL: {
+			jint wParam = 0, lParam = 0;
+			jint *lpwParam = NULL, *lplParam = NULL;
+			if (lparg2 != NULL) lpwParam = &wParam;
+			if (lparg3 != NULL) lplParam = &lParam;
+			rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)lpwParam, (LPARAM)lplParam);
+			if (lparg2 != NULL) lparg2[0] = wParam;
+			if (lparg3 != NULL) lparg3[0] = lParam;
+			break;
+		}
+		default:
+			rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)lparg2, (LPARAM)lparg3);
+	}
+#else
+	rc = (jint)SendMessageW((HWND)arg0, arg1, (WPARAM)lparg2, (LPARAM)lparg3);
+#endif
+	if (arg2) (*env)->ReleaseIntArrayElements(env, arg2, lparg2, 0);
+	if (arg3) (*env)->ReleaseIntArrayElements(env, arg3, lparg3, 0);
+	NATIVE_EXIT(env, that, "SendMessageW__II_3I_3I\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetLayout
+JNIEXPORT jint JNICALL OS_NATIVE(SetLayout)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "SetLayout\n")
+	//rc = (jint)SetLayout((HDC)arg0, (DWORD)arg1);
+	{
+		/*
+		*  SetLayout is a Win2000 and Win98 specific call
+		*  If you link it into swt.dll a system modal entry point not found dialog will
+		*  appear as soon as swt.dll is loaded. Here we check for the entry point and
+		*  only do the call if it exists.
+		*/
+		HMODULE hm;
+		FARPROC fp;
+		if ((hm=GetModuleHandle("gdi32.dll")) && (fp=GetProcAddress(hm, "SetLayout"))) {
+			rc = (jint)(fp)((HDC)arg0, (DWORD)arg1);
+		}
+	}
+	NATIVE_EXIT(env, that, "SetLayout\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_SetMenuInfo
+JNIEXPORT jboolean JNICALL OS_NATIVE(SetMenuInfo)
+	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
+{
+	MENUINFO _arg1, *lparg1=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "SetMenuInfo\n")
+	if (arg1) lparg1 = getMENUINFOFields(env, arg1, &_arg1);
+	//rc = (jboolean)SetMenuInfo((HMENU)arg0, lparg1);
+	{
+		/*
+		*  SetMenuInfo is a Win2000 and Win98 specific call
+		*  If you link it into swt.dll a system modal entry point not found dialog will
+		*  appear as soon as swt.dll is loaded. Here we check for the entry point and
+		*  only do the call if it exists.
+		*/
+		HMODULE hm;
+		FARPROC fp;
+		if ((hm=GetModuleHandle("user32.dll")) && (fp=GetProcAddress(hm, "SetMenuInfo"))) {
+			rc = (jboolean)(fp)((HMENU)arg0, lparg1);
+		}
+	}
+	NATIVE_EXIT(env, that, "SetMenuInfo\n")
+	return rc;
+}
+#endif
+
+#ifndef NO_VtblCall
+JNIEXPORT jint JNICALL OS_NATIVE(VtblCall)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2)
+{
+	jint rc;
+	NATIVE_ENTER(env, that, "VtblCall\n")
+	typedef jint (STDMETHODCALLTYPE *P_OLE_FN_2)(jint, jint);
+	{
+		P_OLE_FN_2 fn;
+		fn = (P_OLE_FN_2)(*(int **)arg1)[arg0];
+		rc = fn(arg1, arg2);
+    }
+	NATIVE_EXIT(env, that, "VtblCall\n")
+	return rc;
+}
+#endif
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c
index 0161ddd..89c97a3 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c
@@ -1,4277 +1,4277 @@
-/*******************************************************************************

-* Copyright (c) 2000, 2003 IBM Corporation and others.

-* All rights reserved. This program and the accompanying materials

-* are made available under the terms of the Common Public License v1.0

-* which accompanies this distribution, and is available at

-* http://www.eclipse.org/legal/cpl-v10.html

-* 

-* Contributors:

-*     IBM Corporation - initial API and implementation

-*******************************************************************************/

-

-#include "swt.h"

-#include "os_structs.h"

-

-#ifndef NO_ACCEL

-typedef struct ACCEL_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID fVirt, key, cmd;

-} ACCEL_FID_CACHE;

-

-ACCEL_FID_CACHE ACCELFc;

-

-void cacheACCELFields(JNIEnv *env, jobject lpObject)

-{

-	if (ACCELFc.cached) return;

-	ACCELFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	ACCELFc.fVirt = (*env)->GetFieldID(env, ACCELFc.clazz, "fVirt", "B");

-	ACCELFc.key = (*env)->GetFieldID(env, ACCELFc.clazz, "key", "S");

-	ACCELFc.cmd = (*env)->GetFieldID(env, ACCELFc.clazz, "cmd", "S");

-	ACCELFc.cached = 1;

-}

-

-ACCEL *getACCELFields(JNIEnv *env, jobject lpObject, ACCEL *lpStruct)

-{

-	if (!ACCELFc.cached) cacheACCELFields(env, lpObject);

-	lpStruct->fVirt = (*env)->GetByteField(env, lpObject, ACCELFc.fVirt);

-	lpStruct->key = (*env)->GetShortField(env, lpObject, ACCELFc.key);

-	lpStruct->cmd = (*env)->GetShortField(env, lpObject, ACCELFc.cmd);

-	return lpStruct;

-}

-

-void setACCELFields(JNIEnv *env, jobject lpObject, ACCEL *lpStruct)

-{

-	if (!ACCELFc.cached) cacheACCELFields(env, lpObject);

-	(*env)->SetByteField(env, lpObject, ACCELFc.fVirt, (jbyte)lpStruct->fVirt);

-	(*env)->SetShortField(env, lpObject, ACCELFc.key, (jshort)lpStruct->key);

-	(*env)->SetShortField(env, lpObject, ACCELFc.cmd, (jshort)lpStruct->cmd);

-}

-#endif

-

-#ifndef NO_BITMAP

-typedef struct BITMAP_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID bmType, bmWidth, bmHeight, bmWidthBytes, bmPlanes, bmBitsPixel, bmBits;

-} BITMAP_FID_CACHE;

-

-BITMAP_FID_CACHE BITMAPFc;

-

-void cacheBITMAPFields(JNIEnv *env, jobject lpObject)

-{

-	if (BITMAPFc.cached) return;

-	BITMAPFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	BITMAPFc.bmType = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmType", "I");

-	BITMAPFc.bmWidth = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmWidth", "I");

-	BITMAPFc.bmHeight = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmHeight", "I");

-	BITMAPFc.bmWidthBytes = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmWidthBytes", "I");

-	BITMAPFc.bmPlanes = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmPlanes", "S");

-	BITMAPFc.bmBitsPixel = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmBitsPixel", "S");

-	BITMAPFc.bmBits = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmBits", "I");

-	BITMAPFc.cached = 1;

-}

-

-BITMAP *getBITMAPFields(JNIEnv *env, jobject lpObject, BITMAP *lpStruct)

-{

-	if (!BITMAPFc.cached) cacheBITMAPFields(env, lpObject);

-	lpStruct->bmType = (*env)->GetIntField(env, lpObject, BITMAPFc.bmType);

-	lpStruct->bmWidth = (*env)->GetIntField(env, lpObject, BITMAPFc.bmWidth);

-	lpStruct->bmHeight = (*env)->GetIntField(env, lpObject, BITMAPFc.bmHeight);

-	lpStruct->bmWidthBytes = (*env)->GetIntField(env, lpObject, BITMAPFc.bmWidthBytes);

-	lpStruct->bmPlanes = (*env)->GetShortField(env, lpObject, BITMAPFc.bmPlanes);

-	lpStruct->bmBitsPixel = (*env)->GetShortField(env, lpObject, BITMAPFc.bmBitsPixel);

-	lpStruct->bmBits = (LPVOID)(*env)->GetIntField(env, lpObject, BITMAPFc.bmBits);

-	return lpStruct;

-}

-

-void setBITMAPFields(JNIEnv *env, jobject lpObject, BITMAP *lpStruct)

-{

-	if (!BITMAPFc.cached) cacheBITMAPFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, BITMAPFc.bmType, (jint)lpStruct->bmType);

-	(*env)->SetIntField(env, lpObject, BITMAPFc.bmWidth, (jint)lpStruct->bmWidth);

-	(*env)->SetIntField(env, lpObject, BITMAPFc.bmHeight, (jint)lpStruct->bmHeight);

-	(*env)->SetIntField(env, lpObject, BITMAPFc.bmWidthBytes, (jint)lpStruct->bmWidthBytes);

-	(*env)->SetShortField(env, lpObject, BITMAPFc.bmPlanes, (jshort)lpStruct->bmPlanes);

-	(*env)->SetShortField(env, lpObject, BITMAPFc.bmBitsPixel, (jshort)lpStruct->bmBitsPixel);

-	(*env)->SetIntField(env, lpObject, BITMAPFc.bmBits, (jint)lpStruct->bmBits);

-}

-#endif

-

-#ifndef NO_BITMAPINFOHEADER

-typedef struct BITMAPINFOHEADER_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID biSize, biWidth, biHeight, biPlanes, biBitCount, biCompression, biSizeImage, biXPelsPerMeter, biYPelsPerMeter, biClrUsed, biClrImportant;

-} BITMAPINFOHEADER_FID_CACHE;

-

-BITMAPINFOHEADER_FID_CACHE BITMAPINFOHEADERFc;

-

-void cacheBITMAPINFOHEADERFields(JNIEnv *env, jobject lpObject)

-{

-	if (BITMAPINFOHEADERFc.cached) return;

-	BITMAPINFOHEADERFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	BITMAPINFOHEADERFc.biSize = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biSize", "I");

-	BITMAPINFOHEADERFc.biWidth = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biWidth", "I");

-	BITMAPINFOHEADERFc.biHeight = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biHeight", "I");

-	BITMAPINFOHEADERFc.biPlanes = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biPlanes", "S");

-	BITMAPINFOHEADERFc.biBitCount = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biBitCount", "S");

-	BITMAPINFOHEADERFc.biCompression = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biCompression", "I");

-	BITMAPINFOHEADERFc.biSizeImage = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biSizeImage", "I");

-	BITMAPINFOHEADERFc.biXPelsPerMeter = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biXPelsPerMeter", "I");

-	BITMAPINFOHEADERFc.biYPelsPerMeter = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biYPelsPerMeter", "I");

-	BITMAPINFOHEADERFc.biClrUsed = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biClrUsed", "I");

-	BITMAPINFOHEADERFc.biClrImportant = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biClrImportant", "I");

-	BITMAPINFOHEADERFc.cached = 1;

-}

-

-BITMAPINFOHEADER *getBITMAPINFOHEADERFields(JNIEnv *env, jobject lpObject, BITMAPINFOHEADER *lpStruct)

-{

-	if (!BITMAPINFOHEADERFc.cached) cacheBITMAPINFOHEADERFields(env, lpObject);

-	lpStruct->biSize = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biSize);

-	lpStruct->biWidth = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biWidth);

-	lpStruct->biHeight = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biHeight);

-	lpStruct->biPlanes = (*env)->GetShortField(env, lpObject, BITMAPINFOHEADERFc.biPlanes);

-	lpStruct->biBitCount = (*env)->GetShortField(env, lpObject, BITMAPINFOHEADERFc.biBitCount);

-	lpStruct->biCompression = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biCompression);

-	lpStruct->biSizeImage = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biSizeImage);

-	lpStruct->biXPelsPerMeter = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biXPelsPerMeter);

-	lpStruct->biYPelsPerMeter = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biYPelsPerMeter);

-	lpStruct->biClrUsed = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biClrUsed);

-	lpStruct->biClrImportant = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biClrImportant);

-	return lpStruct;

-}

-

-void setBITMAPINFOHEADERFields(JNIEnv *env, jobject lpObject, BITMAPINFOHEADER *lpStruct)

-{

-	if (!BITMAPINFOHEADERFc.cached) cacheBITMAPINFOHEADERFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biSize, (jint)lpStruct->biSize);

-	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biWidth, (jint)lpStruct->biWidth);

-	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biHeight, (jint)lpStruct->biHeight);

-	(*env)->SetShortField(env, lpObject, BITMAPINFOHEADERFc.biPlanes, (jshort)lpStruct->biPlanes);

-	(*env)->SetShortField(env, lpObject, BITMAPINFOHEADERFc.biBitCount, (jshort)lpStruct->biBitCount);

-	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biCompression, (jint)lpStruct->biCompression);

-	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biSizeImage, (jint)lpStruct->biSizeImage);

-	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biXPelsPerMeter, (jint)lpStruct->biXPelsPerMeter);

-	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biYPelsPerMeter, (jint)lpStruct->biYPelsPerMeter);

-	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biClrUsed, (jint)lpStruct->biClrUsed);

-	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biClrImportant, (jint)lpStruct->biClrImportant);

-}

-#endif

-

-#ifndef NO_BROWSEINFO

-typedef struct BROWSEINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID hwndOwner, pidlRoot, pszDisplayName, lpszTitle, ulFlags, lpfn, lParam, iImage;

-} BROWSEINFO_FID_CACHE;

-

-BROWSEINFO_FID_CACHE BROWSEINFOFc;

-

-void cacheBROWSEINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (BROWSEINFOFc.cached) return;

-	BROWSEINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	BROWSEINFOFc.hwndOwner = (*env)->GetFieldID(env, BROWSEINFOFc.clazz, "hwndOwner", "I");

-	BROWSEINFOFc.pidlRoot = (*env)->GetFieldID(env, BROWSEINFOFc.clazz, "pidlRoot", "I");

-	BROWSEINFOFc.pszDisplayName = (*env)->GetFieldID(env, BROWSEINFOFc.clazz, "pszDisplayName", "I");

-	BROWSEINFOFc.lpszTitle = (*env)->GetFieldID(env, BROWSEINFOFc.clazz, "lpszTitle", "I");

-	BROWSEINFOFc.ulFlags = (*env)->GetFieldID(env, BROWSEINFOFc.clazz, "ulFlags", "I");

-	BROWSEINFOFc.lpfn = (*env)->GetFieldID(env, BROWSEINFOFc.clazz, "lpfn", "I");

-	BROWSEINFOFc.lParam = (*env)->GetFieldID(env, BROWSEINFOFc.clazz, "lParam", "I");

-	BROWSEINFOFc.iImage = (*env)->GetFieldID(env, BROWSEINFOFc.clazz, "iImage", "I");

-	BROWSEINFOFc.cached = 1;

-}

-

-BROWSEINFO *getBROWSEINFOFields(JNIEnv *env, jobject lpObject, BROWSEINFO *lpStruct)

-{

-	if (!BROWSEINFOFc.cached) cacheBROWSEINFOFields(env, lpObject);

-	lpStruct->hwndOwner = (HWND)(*env)->GetIntField(env, lpObject, BROWSEINFOFc.hwndOwner);

-	lpStruct->pidlRoot = (LPCITEMIDLIST)(*env)->GetIntField(env, lpObject, BROWSEINFOFc.pidlRoot);

-	lpStruct->pszDisplayName = (LPTSTR)(*env)->GetIntField(env, lpObject, BROWSEINFOFc.pszDisplayName);

-	lpStruct->lpszTitle = (LPCTSTR)(*env)->GetIntField(env, lpObject, BROWSEINFOFc.lpszTitle);

-	lpStruct->ulFlags = (*env)->GetIntField(env, lpObject, BROWSEINFOFc.ulFlags);

-	lpStruct->lpfn = (BFFCALLBACK)(*env)->GetIntField(env, lpObject, BROWSEINFOFc.lpfn);

-	lpStruct->lParam = (*env)->GetIntField(env, lpObject, BROWSEINFOFc.lParam);

-	lpStruct->iImage = (*env)->GetIntField(env, lpObject, BROWSEINFOFc.iImage);

-	return lpStruct;

-}

-

-void setBROWSEINFOFields(JNIEnv *env, jobject lpObject, BROWSEINFO *lpStruct)

-{

-	if (!BROWSEINFOFc.cached) cacheBROWSEINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, BROWSEINFOFc.hwndOwner, (jint)lpStruct->hwndOwner);

-	(*env)->SetIntField(env, lpObject, BROWSEINFOFc.pidlRoot, (jint)lpStruct->pidlRoot);

-	(*env)->SetIntField(env, lpObject, BROWSEINFOFc.pszDisplayName, (jint)lpStruct->pszDisplayName);

-	(*env)->SetIntField(env, lpObject, BROWSEINFOFc.lpszTitle, (jint)lpStruct->lpszTitle);

-	(*env)->SetIntField(env, lpObject, BROWSEINFOFc.ulFlags, (jint)lpStruct->ulFlags);

-	(*env)->SetIntField(env, lpObject, BROWSEINFOFc.lpfn, (jint)lpStruct->lpfn);

-	(*env)->SetIntField(env, lpObject, BROWSEINFOFc.lParam, (jint)lpStruct->lParam);

-	(*env)->SetIntField(env, lpObject, BROWSEINFOFc.iImage, (jint)lpStruct->iImage);

-}

-#endif

-

-#ifndef NO_CHOOSECOLOR

-typedef struct CHOOSECOLOR_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID lStructSize, hwndOwner, hInstance, rgbResult, lpCustColors, Flags, lCustData, lpfnHook, lpTemplateName;

-} CHOOSECOLOR_FID_CACHE;

-

-CHOOSECOLOR_FID_CACHE CHOOSECOLORFc;

-

-void cacheCHOOSECOLORFields(JNIEnv *env, jobject lpObject)

-{

-	if (CHOOSECOLORFc.cached) return;

-	CHOOSECOLORFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	CHOOSECOLORFc.lStructSize = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "lStructSize", "I");

-	CHOOSECOLORFc.hwndOwner = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "hwndOwner", "I");

-	CHOOSECOLORFc.hInstance = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "hInstance", "I");

-	CHOOSECOLORFc.rgbResult = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "rgbResult", "I");

-	CHOOSECOLORFc.lpCustColors = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "lpCustColors", "I");

-	CHOOSECOLORFc.Flags = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "Flags", "I");

-	CHOOSECOLORFc.lCustData = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "lCustData", "I");

-	CHOOSECOLORFc.lpfnHook = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "lpfnHook", "I");

-	CHOOSECOLORFc.lpTemplateName = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "lpTemplateName", "I");

-	CHOOSECOLORFc.cached = 1;

-}

-

-CHOOSECOLOR *getCHOOSECOLORFields(JNIEnv *env, jobject lpObject, CHOOSECOLOR *lpStruct)

-{

-	if (!CHOOSECOLORFc.cached) cacheCHOOSECOLORFields(env, lpObject);

-	lpStruct->lStructSize = (*env)->GetIntField(env, lpObject, CHOOSECOLORFc.lStructSize);

-	lpStruct->hwndOwner = (HWND)(*env)->GetIntField(env, lpObject, CHOOSECOLORFc.hwndOwner);

-	lpStruct->hInstance = (HANDLE)(*env)->GetIntField(env, lpObject, CHOOSECOLORFc.hInstance);

-	lpStruct->rgbResult = (*env)->GetIntField(env, lpObject, CHOOSECOLORFc.rgbResult);

-	lpStruct->lpCustColors = (COLORREF *)(*env)->GetIntField(env, lpObject, CHOOSECOLORFc.lpCustColors);

-	lpStruct->Flags = (*env)->GetIntField(env, lpObject, CHOOSECOLORFc.Flags);

-	lpStruct->lCustData = (*env)->GetIntField(env, lpObject, CHOOSECOLORFc.lCustData);

-	lpStruct->lpfnHook = (LPCCHOOKPROC)(*env)->GetIntField(env, lpObject, CHOOSECOLORFc.lpfnHook);

-	lpStruct->lpTemplateName = (LPCTSTR)(*env)->GetIntField(env, lpObject, CHOOSECOLORFc.lpTemplateName);

-	return lpStruct;

-}

-

-void setCHOOSECOLORFields(JNIEnv *env, jobject lpObject, CHOOSECOLOR *lpStruct)

-{

-	if (!CHOOSECOLORFc.cached) cacheCHOOSECOLORFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.lStructSize, (jint)lpStruct->lStructSize);

-	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.hwndOwner, (jint)lpStruct->hwndOwner);

-	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.hInstance, (jint)lpStruct->hInstance);

-	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.rgbResult, (jint)lpStruct->rgbResult);

-	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.lpCustColors, (jint)lpStruct->lpCustColors);

-	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.Flags, (jint)lpStruct->Flags);

-	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.lCustData, (jint)lpStruct->lCustData);

-	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.lpfnHook, (jint)lpStruct->lpfnHook);

-	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.lpTemplateName, (jint)lpStruct->lpTemplateName);

-}

-#endif

-

-#ifndef NO_CHOOSEFONT

-typedef struct CHOOSEFONT_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID lStructSize, hwndOwner, hDC, lpLogFont, iPointSize, Flags, rgbColors, lCustData, lpfnHook, lpTemplateName, hInstance, lpszStyle, nFontType, nSizeMin, nSizeMax;

-} CHOOSEFONT_FID_CACHE;

-

-CHOOSEFONT_FID_CACHE CHOOSEFONTFc;

-

-void cacheCHOOSEFONTFields(JNIEnv *env, jobject lpObject)

-{

-	if (CHOOSEFONTFc.cached) return;

-	CHOOSEFONTFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	CHOOSEFONTFc.lStructSize = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lStructSize", "I");

-	CHOOSEFONTFc.hwndOwner = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "hwndOwner", "I");

-	CHOOSEFONTFc.hDC = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "hDC", "I");

-	CHOOSEFONTFc.lpLogFont = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lpLogFont", "I");

-	CHOOSEFONTFc.iPointSize = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "iPointSize", "I");

-	CHOOSEFONTFc.Flags = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "Flags", "I");

-	CHOOSEFONTFc.rgbColors = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "rgbColors", "I");

-	CHOOSEFONTFc.lCustData = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lCustData", "I");

-	CHOOSEFONTFc.lpfnHook = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lpfnHook", "I");

-	CHOOSEFONTFc.lpTemplateName = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lpTemplateName", "I");

-	CHOOSEFONTFc.hInstance = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "hInstance", "I");

-	CHOOSEFONTFc.lpszStyle = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lpszStyle", "I");

-	CHOOSEFONTFc.nFontType = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "nFontType", "S");

-	CHOOSEFONTFc.nSizeMin = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "nSizeMin", "I");

-	CHOOSEFONTFc.nSizeMax = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "nSizeMax", "I");

-	CHOOSEFONTFc.cached = 1;

-}

-

-CHOOSEFONT *getCHOOSEFONTFields(JNIEnv *env, jobject lpObject, CHOOSEFONT *lpStruct)

-{

-	if (!CHOOSEFONTFc.cached) cacheCHOOSEFONTFields(env, lpObject);

-	lpStruct->lStructSize = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.lStructSize);

-	lpStruct->hwndOwner = (HWND)(*env)->GetIntField(env, lpObject, CHOOSEFONTFc.hwndOwner);

-	lpStruct->hDC = (HDC)(*env)->GetIntField(env, lpObject, CHOOSEFONTFc.hDC);

-	lpStruct->lpLogFont = (LPLOGFONT)(*env)->GetIntField(env, lpObject, CHOOSEFONTFc.lpLogFont);

-	lpStruct->iPointSize = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.iPointSize);

-	lpStruct->Flags = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.Flags);

-	lpStruct->rgbColors = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.rgbColors);

-	lpStruct->lCustData = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.lCustData);

-	lpStruct->lpfnHook = (LPCFHOOKPROC)(*env)->GetIntField(env, lpObject, CHOOSEFONTFc.lpfnHook);

-	lpStruct->lpTemplateName = (LPCTSTR)(*env)->GetIntField(env, lpObject, CHOOSEFONTFc.lpTemplateName);

-	lpStruct->hInstance = (HINSTANCE)(*env)->GetIntField(env, lpObject, CHOOSEFONTFc.hInstance);

-	lpStruct->lpszStyle = (LPTSTR)(*env)->GetIntField(env, lpObject, CHOOSEFONTFc.lpszStyle);

-	lpStruct->nFontType = (*env)->GetShortField(env, lpObject, CHOOSEFONTFc.nFontType);

-	lpStruct->nSizeMin = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.nSizeMin);

-	lpStruct->nSizeMax = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.nSizeMax);

-	return lpStruct;

-}

-

-void setCHOOSEFONTFields(JNIEnv *env, jobject lpObject, CHOOSEFONT *lpStruct)

-{

-	if (!CHOOSEFONTFc.cached) cacheCHOOSEFONTFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.lStructSize, (jint)lpStruct->lStructSize);

-	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.hwndOwner, (jint)lpStruct->hwndOwner);

-	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.hDC, (jint)lpStruct->hDC);

-	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.lpLogFont, (jint)lpStruct->lpLogFont);

-	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.iPointSize, (jint)lpStruct->iPointSize);

-	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.Flags, (jint)lpStruct->Flags);

-	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.rgbColors, (jint)lpStruct->rgbColors);

-	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.lCustData, (jint)lpStruct->lCustData);

-	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.lpfnHook, (jint)lpStruct->lpfnHook);

-	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.lpTemplateName, (jint)lpStruct->lpTemplateName);

-	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.hInstance, (jint)lpStruct->hInstance);

-	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.lpszStyle, (jint)lpStruct->lpszStyle);

-	(*env)->SetShortField(env, lpObject, CHOOSEFONTFc.nFontType, (jshort)lpStruct->nFontType);

-	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.nSizeMin, (jint)lpStruct->nSizeMin);

-	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.nSizeMax, (jint)lpStruct->nSizeMax);

-}

-#endif

-

-#ifndef NO_COMPOSITIONFORM

-typedef struct COMPOSITIONFORM_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID dwStyle, x, y, left, top, right, bottom;

-} COMPOSITIONFORM_FID_CACHE;

-

-COMPOSITIONFORM_FID_CACHE COMPOSITIONFORMFc;

-

-void cacheCOMPOSITIONFORMFields(JNIEnv *env, jobject lpObject)

-{

-	if (COMPOSITIONFORMFc.cached) return;

-	COMPOSITIONFORMFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	COMPOSITIONFORMFc.dwStyle = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "dwStyle", "I");

-	COMPOSITIONFORMFc.x = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "x", "I");

-	COMPOSITIONFORMFc.y = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "y", "I");

-	COMPOSITIONFORMFc.left = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "left", "I");

-	COMPOSITIONFORMFc.top = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "top", "I");

-	COMPOSITIONFORMFc.right = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "right", "I");

-	COMPOSITIONFORMFc.bottom = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "bottom", "I");

-	COMPOSITIONFORMFc.cached = 1;

-}

-

-COMPOSITIONFORM *getCOMPOSITIONFORMFields(JNIEnv *env, jobject lpObject, COMPOSITIONFORM *lpStruct)

-{

-	if (!COMPOSITIONFORMFc.cached) cacheCOMPOSITIONFORMFields(env, lpObject);

-	lpStruct->dwStyle = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.dwStyle);

-	lpStruct->ptCurrentPos.y = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.x);

-	lpStruct->ptCurrentPos.x = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.y);

-	lpStruct->rcArea.left = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.left);

-	lpStruct->rcArea.top = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.top);

-	lpStruct->rcArea.right = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.right);

-	lpStruct->rcArea.bottom = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.bottom);

-	return lpStruct;

-}

-

-void setCOMPOSITIONFORMFields(JNIEnv *env, jobject lpObject, COMPOSITIONFORM *lpStruct)

-{

-	if (!COMPOSITIONFORMFc.cached) cacheCOMPOSITIONFORMFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.dwStyle, (jint)lpStruct->dwStyle);

-	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.x, (jint)lpStruct->ptCurrentPos.y);

-	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.y, (jint)lpStruct->ptCurrentPos.x);

-	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.left, (jint)lpStruct->rcArea.left);

-	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.top, (jint)lpStruct->rcArea.top);

-	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.right, (jint)lpStruct->rcArea.right);

-	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.bottom, (jint)lpStruct->rcArea.bottom);

-}

-#endif

-

-#ifndef NO_CREATESTRUCT

-typedef struct CREATESTRUCT_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID lpCreateParams, hInstance, hMenu, hwndParent, cy, cx, y, x, style, lpszName, lpszClass, dwExStyle;

-} CREATESTRUCT_FID_CACHE;

-

-CREATESTRUCT_FID_CACHE CREATESTRUCTFc;

-

-void cacheCREATESTRUCTFields(JNIEnv *env, jobject lpObject)

-{

-	if (CREATESTRUCTFc.cached) return;

-	CREATESTRUCTFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	CREATESTRUCTFc.lpCreateParams = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "lpCreateParams", "I");

-	CREATESTRUCTFc.hInstance = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "hInstance", "I");

-	CREATESTRUCTFc.hMenu = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "hMenu", "I");

-	CREATESTRUCTFc.hwndParent = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "hwndParent", "I");

-	CREATESTRUCTFc.cy = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "cy", "I");

-	CREATESTRUCTFc.cx = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "cx", "I");

-	CREATESTRUCTFc.y = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "y", "I");

-	CREATESTRUCTFc.x = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "x", "I");

-	CREATESTRUCTFc.style = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "style", "I");

-	CREATESTRUCTFc.lpszName = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "lpszName", "I");

-	CREATESTRUCTFc.lpszClass = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "lpszClass", "I");

-	CREATESTRUCTFc.dwExStyle = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "dwExStyle", "I");

-	CREATESTRUCTFc.cached = 1;

-}

-

-CREATESTRUCT *getCREATESTRUCTFields(JNIEnv *env, jobject lpObject, CREATESTRUCT *lpStruct)

-{

-	if (!CREATESTRUCTFc.cached) cacheCREATESTRUCTFields(env, lpObject);

-	lpStruct->lpCreateParams = (LPVOID)(*env)->GetIntField(env, lpObject, CREATESTRUCTFc.lpCreateParams);

-	lpStruct->hInstance = (HINSTANCE)(*env)->GetIntField(env, lpObject, CREATESTRUCTFc.hInstance);

-	lpStruct->hMenu = (HMENU)(*env)->GetIntField(env, lpObject, CREATESTRUCTFc.hMenu);

-	lpStruct->hwndParent = (HWND)(*env)->GetIntField(env, lpObject, CREATESTRUCTFc.hwndParent);

-	lpStruct->cy = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.cy);

-	lpStruct->cx = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.cx);

-	lpStruct->y = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.y);

-	lpStruct->x = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.x);

-	lpStruct->style = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.style);

-	lpStruct->lpszName = (LPCTSTR)(*env)->GetIntField(env, lpObject, CREATESTRUCTFc.lpszName);

-	lpStruct->lpszClass = (LPCTSTR)(*env)->GetIntField(env, lpObject, CREATESTRUCTFc.lpszClass);

-	lpStruct->dwExStyle = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.dwExStyle);

-	return lpStruct;

-}

-

-void setCREATESTRUCTFields(JNIEnv *env, jobject lpObject, CREATESTRUCT *lpStruct)

-{

-	if (!CREATESTRUCTFc.cached) cacheCREATESTRUCTFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.lpCreateParams, (jint)lpStruct->lpCreateParams);

-	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.hInstance, (jint)lpStruct->hInstance);

-	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.hMenu, (jint)lpStruct->hMenu);

-	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.hwndParent, (jint)lpStruct->hwndParent);

-	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.cy, (jint)lpStruct->cy);

-	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.cx, (jint)lpStruct->cx);

-	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.y, (jint)lpStruct->y);

-	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.x, (jint)lpStruct->x);

-	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.style, (jint)lpStruct->style);

-	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.lpszName, (jint)lpStruct->lpszName);

-	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.lpszClass, (jint)lpStruct->lpszClass);

-	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.dwExStyle, (jint)lpStruct->dwExStyle);

-}

-#endif

-

-#ifndef NO_DIBSECTION

-typedef struct DIBSECTION_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID biSize, biWidth, biHeight, biPlanes, biBitCount, biCompression, biSizeImage, biXPelsPerMeter, biYPelsPerMeter, biClrUsed, biClrImportant, dsBitfields0, dsBitfields1, dsBitfields2, dshSection, dsOffset;

-} DIBSECTION_FID_CACHE;

-

-DIBSECTION_FID_CACHE DIBSECTIONFc;

-

-void cacheDIBSECTIONFields(JNIEnv *env, jobject lpObject)

-{

-	if (DIBSECTIONFc.cached) return;

-	cacheBITMAPFields(env, lpObject);

-	DIBSECTIONFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	DIBSECTIONFc.biSize = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biSize", "I");

-	DIBSECTIONFc.biWidth = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biWidth", "I");

-	DIBSECTIONFc.biHeight = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biHeight", "I");

-	DIBSECTIONFc.biPlanes = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biPlanes", "S");

-	DIBSECTIONFc.biBitCount = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biBitCount", "S");

-	DIBSECTIONFc.biCompression = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biCompression", "I");

-	DIBSECTIONFc.biSizeImage = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biSizeImage", "I");

-	DIBSECTIONFc.biXPelsPerMeter = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biXPelsPerMeter", "I");

-	DIBSECTIONFc.biYPelsPerMeter = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biYPelsPerMeter", "I");

-	DIBSECTIONFc.biClrUsed = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biClrUsed", "I");

-	DIBSECTIONFc.biClrImportant = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biClrImportant", "I");

-	DIBSECTIONFc.dsBitfields0 = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "dsBitfields0", "I");

-	DIBSECTIONFc.dsBitfields1 = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "dsBitfields1", "I");

-	DIBSECTIONFc.dsBitfields2 = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "dsBitfields2", "I");

-	DIBSECTIONFc.dshSection = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "dshSection", "I");

-	DIBSECTIONFc.dsOffset = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "dsOffset", "I");

-	DIBSECTIONFc.cached = 1;

-}

-

-DIBSECTION *getDIBSECTIONFields(JNIEnv *env, jobject lpObject, DIBSECTION *lpStruct)

-{

-	if (!DIBSECTIONFc.cached) cacheDIBSECTIONFields(env, lpObject);

-	getBITMAPFields(env, lpObject, (BITMAP *)lpStruct);

-	lpStruct->dsBmih.biSize = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biSize);

-	lpStruct->dsBmih.biWidth = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biWidth);

-	lpStruct->dsBmih.biHeight = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biHeight);

-	lpStruct->dsBmih.biPlanes = (*env)->GetShortField(env, lpObject, DIBSECTIONFc.biPlanes);

-	lpStruct->dsBmih.biBitCount = (*env)->GetShortField(env, lpObject, DIBSECTIONFc.biBitCount);

-	lpStruct->dsBmih.biCompression = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biCompression);

-	lpStruct->dsBmih.biSizeImage = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biSizeImage);

-	lpStruct->dsBmih.biXPelsPerMeter = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biXPelsPerMeter);

-	lpStruct->dsBmih.biYPelsPerMeter = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biYPelsPerMeter);

-	lpStruct->dsBmih.biClrUsed = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biClrUsed);

-	lpStruct->dsBmih.biClrImportant = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biClrImportant);

-	lpStruct->dsBitfields[0] = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.dsBitfields0);

-	lpStruct->dsBitfields[1] = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.dsBitfields1);

-	lpStruct->dsBitfields[2] = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.dsBitfields2);

-	lpStruct->dshSection = (HANDLE)(*env)->GetIntField(env, lpObject, DIBSECTIONFc.dshSection);

-	lpStruct->dsOffset = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.dsOffset);

-	return lpStruct;

-}

-

-void setDIBSECTIONFields(JNIEnv *env, jobject lpObject, DIBSECTION *lpStruct)

-{

-	if (!DIBSECTIONFc.cached) cacheDIBSECTIONFields(env, lpObject);

-	setBITMAPFields(env, lpObject, (BITMAP *)lpStruct);

-	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biSize, (jint)lpStruct->dsBmih.biSize);

-	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biWidth, (jint)lpStruct->dsBmih.biWidth);

-	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biHeight, (jint)lpStruct->dsBmih.biHeight);

-	(*env)->SetShortField(env, lpObject, DIBSECTIONFc.biPlanes, (jshort)lpStruct->dsBmih.biPlanes);

-	(*env)->SetShortField(env, lpObject, DIBSECTIONFc.biBitCount, (jshort)lpStruct->dsBmih.biBitCount);

-	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biCompression, (jint)lpStruct->dsBmih.biCompression);

-	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biSizeImage, (jint)lpStruct->dsBmih.biSizeImage);

-	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biXPelsPerMeter, (jint)lpStruct->dsBmih.biXPelsPerMeter);

-	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biYPelsPerMeter, (jint)lpStruct->dsBmih.biYPelsPerMeter);

-	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biClrUsed, (jint)lpStruct->dsBmih.biClrUsed);

-	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biClrImportant, (jint)lpStruct->dsBmih.biClrImportant);

-	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.dsBitfields0, (jint)lpStruct->dsBitfields[0]);

-	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.dsBitfields1, (jint)lpStruct->dsBitfields[1]);

-	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.dsBitfields2, (jint)lpStruct->dsBitfields[2]);

-	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.dshSection, (jint)lpStruct->dshSection);

-	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.dsOffset, (jint)lpStruct->dsOffset);

-}

-#endif

-

-#ifndef NO_DLLVERSIONINFO

-typedef struct DLLVERSIONINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, dwMajorVersion, dwMinorVersion, dwBuildNumber, dwPlatformID;

-} DLLVERSIONINFO_FID_CACHE;

-

-DLLVERSIONINFO_FID_CACHE DLLVERSIONINFOFc;

-

-void cacheDLLVERSIONINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (DLLVERSIONINFOFc.cached) return;

-	DLLVERSIONINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	DLLVERSIONINFOFc.cbSize = (*env)->GetFieldID(env, DLLVERSIONINFOFc.clazz, "cbSize", "I");

-	DLLVERSIONINFOFc.dwMajorVersion = (*env)->GetFieldID(env, DLLVERSIONINFOFc.clazz, "dwMajorVersion", "I");

-	DLLVERSIONINFOFc.dwMinorVersion = (*env)->GetFieldID(env, DLLVERSIONINFOFc.clazz, "dwMinorVersion", "I");

-	DLLVERSIONINFOFc.dwBuildNumber = (*env)->GetFieldID(env, DLLVERSIONINFOFc.clazz, "dwBuildNumber", "I");

-	DLLVERSIONINFOFc.dwPlatformID = (*env)->GetFieldID(env, DLLVERSIONINFOFc.clazz, "dwPlatformID", "I");

-	DLLVERSIONINFOFc.cached = 1;

-}

-

-DLLVERSIONINFO *getDLLVERSIONINFOFields(JNIEnv *env, jobject lpObject, DLLVERSIONINFO *lpStruct)

-{

-	if (!DLLVERSIONINFOFc.cached) cacheDLLVERSIONINFOFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, DLLVERSIONINFOFc.cbSize);

-	lpStruct->dwMajorVersion = (*env)->GetIntField(env, lpObject, DLLVERSIONINFOFc.dwMajorVersion);

-	lpStruct->dwMinorVersion = (*env)->GetIntField(env, lpObject, DLLVERSIONINFOFc.dwMinorVersion);

-	lpStruct->dwBuildNumber = (*env)->GetIntField(env, lpObject, DLLVERSIONINFOFc.dwBuildNumber);

-	lpStruct->dwPlatformID = (*env)->GetIntField(env, lpObject, DLLVERSIONINFOFc.dwPlatformID);

-	return lpStruct;

-}

-

-void setDLLVERSIONINFOFields(JNIEnv *env, jobject lpObject, DLLVERSIONINFO *lpStruct)

-{

-	if (!DLLVERSIONINFOFc.cached) cacheDLLVERSIONINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, DLLVERSIONINFOFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, DLLVERSIONINFOFc.dwMajorVersion, (jint)lpStruct->dwMajorVersion);

-	(*env)->SetIntField(env, lpObject, DLLVERSIONINFOFc.dwMinorVersion, (jint)lpStruct->dwMinorVersion);

-	(*env)->SetIntField(env, lpObject, DLLVERSIONINFOFc.dwBuildNumber, (jint)lpStruct->dwBuildNumber);

-	(*env)->SetIntField(env, lpObject, DLLVERSIONINFOFc.dwPlatformID, (jint)lpStruct->dwPlatformID);

-}

-#endif

-

-#ifndef NO_DOCINFO

-typedef struct DOCINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, lpszDocName, lpszOutput, lpszDatatype, fwType;

-} DOCINFO_FID_CACHE;

-

-DOCINFO_FID_CACHE DOCINFOFc;

-

-void cacheDOCINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (DOCINFOFc.cached) return;

-	DOCINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	DOCINFOFc.cbSize = (*env)->GetFieldID(env, DOCINFOFc.clazz, "cbSize", "I");

-	DOCINFOFc.lpszDocName = (*env)->GetFieldID(env, DOCINFOFc.clazz, "lpszDocName", "I");

-	DOCINFOFc.lpszOutput = (*env)->GetFieldID(env, DOCINFOFc.clazz, "lpszOutput", "I");

-	DOCINFOFc.lpszDatatype = (*env)->GetFieldID(env, DOCINFOFc.clazz, "lpszDatatype", "I");

-	DOCINFOFc.fwType = (*env)->GetFieldID(env, DOCINFOFc.clazz, "fwType", "I");

-	DOCINFOFc.cached = 1;

-}

-

-DOCINFO *getDOCINFOFields(JNIEnv *env, jobject lpObject, DOCINFO *lpStruct)

-{

-	if (!DOCINFOFc.cached) cacheDOCINFOFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, DOCINFOFc.cbSize);

-	lpStruct->lpszDocName = (LPCTSTR)(*env)->GetIntField(env, lpObject, DOCINFOFc.lpszDocName);

-	lpStruct->lpszOutput = (LPCTSTR)(*env)->GetIntField(env, lpObject, DOCINFOFc.lpszOutput);

-	lpStruct->lpszDatatype = (LPCTSTR)(*env)->GetIntField(env, lpObject, DOCINFOFc.lpszDatatype);

-	lpStruct->fwType = (*env)->GetIntField(env, lpObject, DOCINFOFc.fwType);

-	return lpStruct;

-}

-

-void setDOCINFOFields(JNIEnv *env, jobject lpObject, DOCINFO *lpStruct)

-{

-	if (!DOCINFOFc.cached) cacheDOCINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, DOCINFOFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, DOCINFOFc.lpszDocName, (jint)lpStruct->lpszDocName);

-	(*env)->SetIntField(env, lpObject, DOCINFOFc.lpszOutput, (jint)lpStruct->lpszOutput);

-	(*env)->SetIntField(env, lpObject, DOCINFOFc.lpszDatatype, (jint)lpStruct->lpszDatatype);

-	(*env)->SetIntField(env, lpObject, DOCINFOFc.fwType, (jint)lpStruct->fwType);

-}

-#endif

-

-#ifndef NO_DRAWITEMSTRUCT

-typedef struct DRAWITEMSTRUCT_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID CtlType, CtlID, itemID, itemAction, itemState, hwndItem, hDC, left, top, bottom, right, itemData;

-} DRAWITEMSTRUCT_FID_CACHE;

-

-DRAWITEMSTRUCT_FID_CACHE DRAWITEMSTRUCTFc;

-

-void cacheDRAWITEMSTRUCTFields(JNIEnv *env, jobject lpObject)

-{

-	if (DRAWITEMSTRUCTFc.cached) return;

-	DRAWITEMSTRUCTFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	DRAWITEMSTRUCTFc.CtlType = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "CtlType", "I");

-	DRAWITEMSTRUCTFc.CtlID = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "CtlID", "I");

-	DRAWITEMSTRUCTFc.itemID = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "itemID", "I");

-	DRAWITEMSTRUCTFc.itemAction = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "itemAction", "I");

-	DRAWITEMSTRUCTFc.itemState = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "itemState", "I");

-	DRAWITEMSTRUCTFc.hwndItem = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "hwndItem", "I");

-	DRAWITEMSTRUCTFc.hDC = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "hDC", "I");

-	DRAWITEMSTRUCTFc.left = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "left", "I");

-	DRAWITEMSTRUCTFc.top = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "top", "I");

-	DRAWITEMSTRUCTFc.bottom = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "bottom", "I");

-	DRAWITEMSTRUCTFc.right = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "right", "I");

-	DRAWITEMSTRUCTFc.itemData = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "itemData", "I");

-	DRAWITEMSTRUCTFc.cached = 1;

-}

-

-DRAWITEMSTRUCT *getDRAWITEMSTRUCTFields(JNIEnv *env, jobject lpObject, DRAWITEMSTRUCT *lpStruct)

-{

-	if (!DRAWITEMSTRUCTFc.cached) cacheDRAWITEMSTRUCTFields(env, lpObject);

-	lpStruct->CtlType = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.CtlType);

-	lpStruct->CtlID = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.CtlID);

-	lpStruct->itemID = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemID);

-	lpStruct->itemAction = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemAction);

-	lpStruct->itemState = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemState);

-	lpStruct->hwndItem = (HWND)(*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.hwndItem);

-	lpStruct->hDC = (HDC)(*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.hDC);

-	lpStruct->rcItem.left = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.left);

-	lpStruct->rcItem.top = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.top);

-	lpStruct->rcItem.bottom = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.bottom);

-	lpStruct->rcItem.right = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.right);

-	lpStruct->itemData = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemData);

-	return lpStruct;

-}

-

-void setDRAWITEMSTRUCTFields(JNIEnv *env, jobject lpObject, DRAWITEMSTRUCT *lpStruct)

-{

-	if (!DRAWITEMSTRUCTFc.cached) cacheDRAWITEMSTRUCTFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.CtlType, (jint)lpStruct->CtlType);

-	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.CtlID, (jint)lpStruct->CtlID);

-	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemID, (jint)lpStruct->itemID);

-	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemAction, (jint)lpStruct->itemAction);

-	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemState, (jint)lpStruct->itemState);

-	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.hwndItem, (jint)lpStruct->hwndItem);

-	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.hDC, (jint)lpStruct->hDC);

-	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.left, (jint)lpStruct->rcItem.left);

-	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.top, (jint)lpStruct->rcItem.top);

-	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.bottom, (jint)lpStruct->rcItem.bottom);

-	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.right, (jint)lpStruct->rcItem.right);

-	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemData, (jint)lpStruct->itemData);

-}

-#endif

-

-#ifndef NO_DROPFILES

-typedef struct DROPFILES_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID pFiles, pt_x, pt_y, fNC, fWide;

-} DROPFILES_FID_CACHE;

-

-DROPFILES_FID_CACHE DROPFILESFc;

-

-void cacheDROPFILESFields(JNIEnv *env, jobject lpObject)

-{

-	if (DROPFILESFc.cached) return;

-	DROPFILESFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	DROPFILESFc.pFiles = (*env)->GetFieldID(env, DROPFILESFc.clazz, "pFiles", "I");

-	DROPFILESFc.pt_x = (*env)->GetFieldID(env, DROPFILESFc.clazz, "pt_x", "I");

-	DROPFILESFc.pt_y = (*env)->GetFieldID(env, DROPFILESFc.clazz, "pt_y", "I");

-	DROPFILESFc.fNC = (*env)->GetFieldID(env, DROPFILESFc.clazz, "fNC", "I");

-	DROPFILESFc.fWide = (*env)->GetFieldID(env, DROPFILESFc.clazz, "fWide", "I");

-	DROPFILESFc.cached = 1;

-}

-

-DROPFILES *getDROPFILESFields(JNIEnv *env, jobject lpObject, DROPFILES *lpStruct)

-{

-	if (!DROPFILESFc.cached) cacheDROPFILESFields(env, lpObject);

-	lpStruct->pFiles = (*env)->GetIntField(env, lpObject, DROPFILESFc.pFiles);

-	lpStruct->pt.x = (*env)->GetIntField(env, lpObject, DROPFILESFc.pt_x);

-	lpStruct->pt.y = (*env)->GetIntField(env, lpObject, DROPFILESFc.pt_y);

-	lpStruct->fNC = (*env)->GetIntField(env, lpObject, DROPFILESFc.fNC);

-	lpStruct->fWide = (*env)->GetIntField(env, lpObject, DROPFILESFc.fWide);

-	return lpStruct;

-}

-

-void setDROPFILESFields(JNIEnv *env, jobject lpObject, DROPFILES *lpStruct)

-{

-	if (!DROPFILESFc.cached) cacheDROPFILESFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, DROPFILESFc.pFiles, (jint)lpStruct->pFiles);

-	(*env)->SetIntField(env, lpObject, DROPFILESFc.pt_x, (jint)lpStruct->pt.x);

-	(*env)->SetIntField(env, lpObject, DROPFILESFc.pt_y, (jint)lpStruct->pt.y);

-	(*env)->SetIntField(env, lpObject, DROPFILESFc.fNC, (jint)lpStruct->fNC);

-	(*env)->SetIntField(env, lpObject, DROPFILESFc.fWide, (jint)lpStruct->fWide);

-}

-#endif

-

-#ifndef NO_FILETIME

-typedef struct FILETIME_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID dwLowDateTime, dwHighDateTime;

-} FILETIME_FID_CACHE;

-

-FILETIME_FID_CACHE FILETIMEFc;

-

-void cacheFILETIMEFields(JNIEnv *env, jobject lpObject)

-{

-	if (FILETIMEFc.cached) return;

-	FILETIMEFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	FILETIMEFc.dwLowDateTime = (*env)->GetFieldID(env, FILETIMEFc.clazz, "dwLowDateTime", "I");

-	FILETIMEFc.dwHighDateTime = (*env)->GetFieldID(env, FILETIMEFc.clazz, "dwHighDateTime", "I");

-	FILETIMEFc.cached = 1;

-}

-

-FILETIME *getFILETIMEFields(JNIEnv *env, jobject lpObject, FILETIME *lpStruct)

-{

-	if (!FILETIMEFc.cached) cacheFILETIMEFields(env, lpObject);

-	lpStruct->dwLowDateTime = (*env)->GetIntField(env, lpObject, FILETIMEFc.dwLowDateTime);

-	lpStruct->dwHighDateTime = (*env)->GetIntField(env, lpObject, FILETIMEFc.dwHighDateTime);

-	return lpStruct;

-}

-

-void setFILETIMEFields(JNIEnv *env, jobject lpObject, FILETIME *lpStruct)

-{

-	if (!FILETIMEFc.cached) cacheFILETIMEFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, FILETIMEFc.dwLowDateTime, (jint)lpStruct->dwLowDateTime);

-	(*env)->SetIntField(env, lpObject, FILETIMEFc.dwHighDateTime, (jint)lpStruct->dwHighDateTime);

-}

-#endif

-

-#ifndef NO_GCP_RESULTS

-typedef struct GCP_RESULTS_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID lStructSize, lpOutString, lpOrder, lpDx, lpCaretPos, lpClass, lpGlyphs, nGlyphs, nMaxFit;

-} GCP_RESULTS_FID_CACHE;

-

-GCP_RESULTS_FID_CACHE GCP_RESULTSFc;

-

-void cacheGCP_RESULTSFields(JNIEnv *env, jobject lpObject)

-{

-	if (GCP_RESULTSFc.cached) return;

-	GCP_RESULTSFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	GCP_RESULTSFc.lStructSize = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lStructSize", "I");

-	GCP_RESULTSFc.lpOutString = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpOutString", "I");

-	GCP_RESULTSFc.lpOrder = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpOrder", "I");

-	GCP_RESULTSFc.lpDx = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpDx", "I");

-	GCP_RESULTSFc.lpCaretPos = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpCaretPos", "I");

-	GCP_RESULTSFc.lpClass = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpClass", "I");

-	GCP_RESULTSFc.lpGlyphs = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpGlyphs", "I");

-	GCP_RESULTSFc.nGlyphs = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "nGlyphs", "I");

-	GCP_RESULTSFc.nMaxFit = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "nMaxFit", "I");

-	GCP_RESULTSFc.cached = 1;

-}

-

-GCP_RESULTS *getGCP_RESULTSFields(JNIEnv *env, jobject lpObject, GCP_RESULTS *lpStruct)

-{

-	if (!GCP_RESULTSFc.cached) cacheGCP_RESULTSFields(env, lpObject);

-	lpStruct->lStructSize = (*env)->GetIntField(env, lpObject, GCP_RESULTSFc.lStructSize);

-	lpStruct->lpOutString = (LPTSTR)(*env)->GetIntField(env, lpObject, GCP_RESULTSFc.lpOutString);

-	lpStruct->lpOrder = (UINT  *)(*env)->GetIntField(env, lpObject, GCP_RESULTSFc.lpOrder);

-	lpStruct->lpDx = (int  *)(*env)->GetIntField(env, lpObject, GCP_RESULTSFc.lpDx);

-	lpStruct->lpCaretPos = (int  *)(*env)->GetIntField(env, lpObject, GCP_RESULTSFc.lpCaretPos);

-	lpStruct->lpClass = (LPSTR)(*env)->GetIntField(env, lpObject, GCP_RESULTSFc.lpClass);

-	lpStruct->lpGlyphs = (LPWSTR)(*env)->GetIntField(env, lpObject, GCP_RESULTSFc.lpGlyphs);

-	lpStruct->nGlyphs = (*env)->GetIntField(env, lpObject, GCP_RESULTSFc.nGlyphs);

-	lpStruct->nMaxFit = (*env)->GetIntField(env, lpObject, GCP_RESULTSFc.nMaxFit);

-	return lpStruct;

-}

-

-void setGCP_RESULTSFields(JNIEnv *env, jobject lpObject, GCP_RESULTS *lpStruct)

-{

-	if (!GCP_RESULTSFc.cached) cacheGCP_RESULTSFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.lStructSize, (jint)lpStruct->lStructSize);

-	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.lpOutString, (jint)lpStruct->lpOutString);

-	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.lpOrder, (jint)lpStruct->lpOrder);

-	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.lpDx, (jint)lpStruct->lpDx);

-	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.lpCaretPos, (jint)lpStruct->lpCaretPos);

-	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.lpClass, (jint)lpStruct->lpClass);

-	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.lpGlyphs, (jint)lpStruct->lpGlyphs);

-	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.nGlyphs, (jint)lpStruct->nGlyphs);

-	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.nMaxFit, (jint)lpStruct->nMaxFit);

-}

-#endif

-

-#ifndef NO_GRADIENT_RECT

-typedef struct GRADIENT_RECT_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID UpperLeft, LowerRight;

-} GRADIENT_RECT_FID_CACHE;

-

-GRADIENT_RECT_FID_CACHE GRADIENT_RECTFc;

-

-void cacheGRADIENT_RECTFields(JNIEnv *env, jobject lpObject)

-{

-	if (GRADIENT_RECTFc.cached) return;

-	GRADIENT_RECTFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	GRADIENT_RECTFc.UpperLeft = (*env)->GetFieldID(env, GRADIENT_RECTFc.clazz, "UpperLeft", "I");

-	GRADIENT_RECTFc.LowerRight = (*env)->GetFieldID(env, GRADIENT_RECTFc.clazz, "LowerRight", "I");

-	GRADIENT_RECTFc.cached = 1;

-}

-

-GRADIENT_RECT *getGRADIENT_RECTFields(JNIEnv *env, jobject lpObject, GRADIENT_RECT *lpStruct)

-{

-	if (!GRADIENT_RECTFc.cached) cacheGRADIENT_RECTFields(env, lpObject);

-	lpStruct->UpperLeft = (*env)->GetIntField(env, lpObject, GRADIENT_RECTFc.UpperLeft);

-	lpStruct->LowerRight = (*env)->GetIntField(env, lpObject, GRADIENT_RECTFc.LowerRight);

-	return lpStruct;

-}

-

-void setGRADIENT_RECTFields(JNIEnv *env, jobject lpObject, GRADIENT_RECT *lpStruct)

-{

-	if (!GRADIENT_RECTFc.cached) cacheGRADIENT_RECTFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, GRADIENT_RECTFc.UpperLeft, (jint)lpStruct->UpperLeft);

-	(*env)->SetIntField(env, lpObject, GRADIENT_RECTFc.LowerRight, (jint)lpStruct->LowerRight);

-}

-#endif

-

-#ifndef NO_HDITEM

-typedef struct HDITEM_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID mask, cxy, pszText, hbm, cchTextMax, fmt, lParam, iImage, iOrder;

-} HDITEM_FID_CACHE;

-

-HDITEM_FID_CACHE HDITEMFc;

-

-void cacheHDITEMFields(JNIEnv *env, jobject lpObject)

-{

-	if (HDITEMFc.cached) return;

-	HDITEMFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	HDITEMFc.mask = (*env)->GetFieldID(env, HDITEMFc.clazz, "mask", "I");

-	HDITEMFc.cxy = (*env)->GetFieldID(env, HDITEMFc.clazz, "cxy", "I");

-	HDITEMFc.pszText = (*env)->GetFieldID(env, HDITEMFc.clazz, "pszText", "I");

-	HDITEMFc.hbm = (*env)->GetFieldID(env, HDITEMFc.clazz, "hbm", "I");

-	HDITEMFc.cchTextMax = (*env)->GetFieldID(env, HDITEMFc.clazz, "cchTextMax", "I");

-	HDITEMFc.fmt = (*env)->GetFieldID(env, HDITEMFc.clazz, "fmt", "I");

-	HDITEMFc.lParam = (*env)->GetFieldID(env, HDITEMFc.clazz, "lParam", "I");

-	HDITEMFc.iImage = (*env)->GetFieldID(env, HDITEMFc.clazz, "iImage", "I");

-	HDITEMFc.iOrder = (*env)->GetFieldID(env, HDITEMFc.clazz, "iOrder", "I");

-	HDITEMFc.cached = 1;

-}

-

-HDITEM *getHDITEMFields(JNIEnv *env, jobject lpObject, HDITEM *lpStruct)

-{

-	if (!HDITEMFc.cached) cacheHDITEMFields(env, lpObject);

-	lpStruct->mask = (*env)->GetIntField(env, lpObject, HDITEMFc.mask);

-	lpStruct->cxy = (*env)->GetIntField(env, lpObject, HDITEMFc.cxy);

-	lpStruct->pszText = (LPTSTR)(*env)->GetIntField(env, lpObject, HDITEMFc.pszText);

-	lpStruct->hbm = (HBITMAP)(*env)->GetIntField(env, lpObject, HDITEMFc.hbm);

-	lpStruct->cchTextMax = (*env)->GetIntField(env, lpObject, HDITEMFc.cchTextMax);

-	lpStruct->fmt = (*env)->GetIntField(env, lpObject, HDITEMFc.fmt);

-	lpStruct->lParam = (*env)->GetIntField(env, lpObject, HDITEMFc.lParam);

-	lpStruct->iImage = (*env)->GetIntField(env, lpObject, HDITEMFc.iImage);

-	lpStruct->iOrder = (*env)->GetIntField(env, lpObject, HDITEMFc.iOrder);

-	return lpStruct;

-}

-

-void setHDITEMFields(JNIEnv *env, jobject lpObject, HDITEM *lpStruct)

-{

-	if (!HDITEMFc.cached) cacheHDITEMFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, HDITEMFc.mask, (jint)lpStruct->mask);

-	(*env)->SetIntField(env, lpObject, HDITEMFc.cxy, (jint)lpStruct->cxy);

-	(*env)->SetIntField(env, lpObject, HDITEMFc.pszText, (jint)lpStruct->pszText);

-	(*env)->SetIntField(env, lpObject, HDITEMFc.hbm, (jint)lpStruct->hbm);

-	(*env)->SetIntField(env, lpObject, HDITEMFc.cchTextMax, (jint)lpStruct->cchTextMax);

-	(*env)->SetIntField(env, lpObject, HDITEMFc.fmt, (jint)lpStruct->fmt);

-	(*env)->SetIntField(env, lpObject, HDITEMFc.lParam, (jint)lpStruct->lParam);

-	(*env)->SetIntField(env, lpObject, HDITEMFc.iImage, (jint)lpStruct->iImage);

-	(*env)->SetIntField(env, lpObject, HDITEMFc.iOrder, (jint)lpStruct->iOrder);

-}

-#endif

-

-#ifndef NO_HELPINFO

-typedef struct HELPINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, iContextType, iCtrlId, hItemHandle, dwContextId, x, y;

-} HELPINFO_FID_CACHE;

-

-HELPINFO_FID_CACHE HELPINFOFc;

-

-void cacheHELPINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (HELPINFOFc.cached) return;

-	HELPINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	HELPINFOFc.cbSize = (*env)->GetFieldID(env, HELPINFOFc.clazz, "cbSize", "I");

-	HELPINFOFc.iContextType = (*env)->GetFieldID(env, HELPINFOFc.clazz, "iContextType", "I");

-	HELPINFOFc.iCtrlId = (*env)->GetFieldID(env, HELPINFOFc.clazz, "iCtrlId", "I");

-	HELPINFOFc.hItemHandle = (*env)->GetFieldID(env, HELPINFOFc.clazz, "hItemHandle", "I");

-	HELPINFOFc.dwContextId = (*env)->GetFieldID(env, HELPINFOFc.clazz, "dwContextId", "I");

-	HELPINFOFc.x = (*env)->GetFieldID(env, HELPINFOFc.clazz, "x", "I");

-	HELPINFOFc.y = (*env)->GetFieldID(env, HELPINFOFc.clazz, "y", "I");

-	HELPINFOFc.cached = 1;

-}

-

-HELPINFO *getHELPINFOFields(JNIEnv *env, jobject lpObject, HELPINFO *lpStruct)

-{

-	if (!HELPINFOFc.cached) cacheHELPINFOFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, HELPINFOFc.cbSize);

-	lpStruct->iContextType = (*env)->GetIntField(env, lpObject, HELPINFOFc.iContextType);

-	lpStruct->iCtrlId = (*env)->GetIntField(env, lpObject, HELPINFOFc.iCtrlId);

-	lpStruct->hItemHandle = (HANDLE)(*env)->GetIntField(env, lpObject, HELPINFOFc.hItemHandle);

-	lpStruct->dwContextId = (*env)->GetIntField(env, lpObject, HELPINFOFc.dwContextId);

-	lpStruct->MousePos.x = (*env)->GetIntField(env, lpObject, HELPINFOFc.x);

-	lpStruct->MousePos.y = (*env)->GetIntField(env, lpObject, HELPINFOFc.y);

-	return lpStruct;

-}

-

-void setHELPINFOFields(JNIEnv *env, jobject lpObject, HELPINFO *lpStruct)

-{

-	if (!HELPINFOFc.cached) cacheHELPINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, HELPINFOFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, HELPINFOFc.iContextType, (jint)lpStruct->iContextType);

-	(*env)->SetIntField(env, lpObject, HELPINFOFc.iCtrlId, (jint)lpStruct->iCtrlId);

-	(*env)->SetIntField(env, lpObject, HELPINFOFc.hItemHandle, (jint)lpStruct->hItemHandle);

-	(*env)->SetIntField(env, lpObject, HELPINFOFc.dwContextId, (jint)lpStruct->dwContextId);

-	(*env)->SetIntField(env, lpObject, HELPINFOFc.x, (jint)lpStruct->MousePos.x);

-	(*env)->SetIntField(env, lpObject, HELPINFOFc.y, (jint)lpStruct->MousePos.y);

-}

-#endif

-

-#ifndef NO_ICONINFO

-typedef struct ICONINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID fIcon, xHotspot, yHotspot, hbmMask, hbmColor;

-} ICONINFO_FID_CACHE;

-

-ICONINFO_FID_CACHE ICONINFOFc;

-

-void cacheICONINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (ICONINFOFc.cached) return;

-	ICONINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	ICONINFOFc.fIcon = (*env)->GetFieldID(env, ICONINFOFc.clazz, "fIcon", "Z");

-	ICONINFOFc.xHotspot = (*env)->GetFieldID(env, ICONINFOFc.clazz, "xHotspot", "I");

-	ICONINFOFc.yHotspot = (*env)->GetFieldID(env, ICONINFOFc.clazz, "yHotspot", "I");

-	ICONINFOFc.hbmMask = (*env)->GetFieldID(env, ICONINFOFc.clazz, "hbmMask", "I");

-	ICONINFOFc.hbmColor = (*env)->GetFieldID(env, ICONINFOFc.clazz, "hbmColor", "I");

-	ICONINFOFc.cached = 1;

-}

-

-ICONINFO *getICONINFOFields(JNIEnv *env, jobject lpObject, ICONINFO *lpStruct)

-{

-	if (!ICONINFOFc.cached) cacheICONINFOFields(env, lpObject);

-	lpStruct->fIcon = (*env)->GetBooleanField(env, lpObject, ICONINFOFc.fIcon);

-	lpStruct->xHotspot = (*env)->GetIntField(env, lpObject, ICONINFOFc.xHotspot);

-	lpStruct->yHotspot = (*env)->GetIntField(env, lpObject, ICONINFOFc.yHotspot);

-	lpStruct->hbmMask = (HBITMAP)(*env)->GetIntField(env, lpObject, ICONINFOFc.hbmMask);

-	lpStruct->hbmColor = (HBITMAP)(*env)->GetIntField(env, lpObject, ICONINFOFc.hbmColor);

-	return lpStruct;

-}

-

-void setICONINFOFields(JNIEnv *env, jobject lpObject, ICONINFO *lpStruct)

-{

-	if (!ICONINFOFc.cached) cacheICONINFOFields(env, lpObject);

-	(*env)->SetBooleanField(env, lpObject, ICONINFOFc.fIcon, (jboolean)lpStruct->fIcon);

-	(*env)->SetIntField(env, lpObject, ICONINFOFc.xHotspot, (jint)lpStruct->xHotspot);

-	(*env)->SetIntField(env, lpObject, ICONINFOFc.yHotspot, (jint)lpStruct->yHotspot);

-	(*env)->SetIntField(env, lpObject, ICONINFOFc.hbmMask, (jint)lpStruct->hbmMask);

-	(*env)->SetIntField(env, lpObject, ICONINFOFc.hbmColor, (jint)lpStruct->hbmColor);

-}

-#endif

-

-#ifndef NO_INITCOMMONCONTROLSEX

-typedef struct INITCOMMONCONTROLSEX_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID dwSize, dwICC;

-} INITCOMMONCONTROLSEX_FID_CACHE;

-

-INITCOMMONCONTROLSEX_FID_CACHE INITCOMMONCONTROLSEXFc;

-

-void cacheINITCOMMONCONTROLSEXFields(JNIEnv *env, jobject lpObject)

-{

-	if (INITCOMMONCONTROLSEXFc.cached) return;

-	INITCOMMONCONTROLSEXFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	INITCOMMONCONTROLSEXFc.dwSize = (*env)->GetFieldID(env, INITCOMMONCONTROLSEXFc.clazz, "dwSize", "I");

-	INITCOMMONCONTROLSEXFc.dwICC = (*env)->GetFieldID(env, INITCOMMONCONTROLSEXFc.clazz, "dwICC", "I");

-	INITCOMMONCONTROLSEXFc.cached = 1;

-}

-

-INITCOMMONCONTROLSEX *getINITCOMMONCONTROLSEXFields(JNIEnv *env, jobject lpObject, INITCOMMONCONTROLSEX *lpStruct)

-{

-	if (!INITCOMMONCONTROLSEXFc.cached) cacheINITCOMMONCONTROLSEXFields(env, lpObject);

-	lpStruct->dwSize = (*env)->GetIntField(env, lpObject, INITCOMMONCONTROLSEXFc.dwSize);

-	lpStruct->dwICC = (*env)->GetIntField(env, lpObject, INITCOMMONCONTROLSEXFc.dwICC);

-	return lpStruct;

-}

-

-void setINITCOMMONCONTROLSEXFields(JNIEnv *env, jobject lpObject, INITCOMMONCONTROLSEX *lpStruct)

-{

-	if (!INITCOMMONCONTROLSEXFc.cached) cacheINITCOMMONCONTROLSEXFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, INITCOMMONCONTROLSEXFc.dwSize, (jint)lpStruct->dwSize);

-	(*env)->SetIntField(env, lpObject, INITCOMMONCONTROLSEXFc.dwICC, (jint)lpStruct->dwICC);

-}

-#endif

-

-#ifndef NO_LOGBRUSH

-typedef struct LOGBRUSH_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID lbStyle, lbColor, lbHatch;

-} LOGBRUSH_FID_CACHE;

-

-LOGBRUSH_FID_CACHE LOGBRUSHFc;

-

-void cacheLOGBRUSHFields(JNIEnv *env, jobject lpObject)

-{

-	if (LOGBRUSHFc.cached) return;

-	LOGBRUSHFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	LOGBRUSHFc.lbStyle = (*env)->GetFieldID(env, LOGBRUSHFc.clazz, "lbStyle", "I");

-	LOGBRUSHFc.lbColor = (*env)->GetFieldID(env, LOGBRUSHFc.clazz, "lbColor", "I");

-	LOGBRUSHFc.lbHatch = (*env)->GetFieldID(env, LOGBRUSHFc.clazz, "lbHatch", "I");

-	LOGBRUSHFc.cached = 1;

-}

-

-LOGBRUSH *getLOGBRUSHFields(JNIEnv *env, jobject lpObject, LOGBRUSH *lpStruct)

-{

-	if (!LOGBRUSHFc.cached) cacheLOGBRUSHFields(env, lpObject);

-	lpStruct->lbStyle = (*env)->GetIntField(env, lpObject, LOGBRUSHFc.lbStyle);

-	lpStruct->lbColor = (*env)->GetIntField(env, lpObject, LOGBRUSHFc.lbColor);

-	lpStruct->lbHatch = (*env)->GetIntField(env, lpObject, LOGBRUSHFc.lbHatch);

-	return lpStruct;

-}

-

-void setLOGBRUSHFields(JNIEnv *env, jobject lpObject, LOGBRUSH *lpStruct)

-{

-	if (!LOGBRUSHFc.cached) cacheLOGBRUSHFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, LOGBRUSHFc.lbStyle, (jint)lpStruct->lbStyle);

-	(*env)->SetIntField(env, lpObject, LOGBRUSHFc.lbColor, (jint)lpStruct->lbColor);

-	(*env)->SetIntField(env, lpObject, LOGBRUSHFc.lbHatch, (jint)lpStruct->lbHatch);

-}

-#endif

-

-#ifndef NO_LOGFONT

-typedef struct LOGFONT_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID lfHeight, lfWidth, lfEscapement, lfOrientation, lfWeight, lfItalic, lfUnderline, lfStrikeOut, lfCharSet, lfOutPrecision, lfClipPrecision, lfQuality, lfPitchAndFamily;

-} LOGFONT_FID_CACHE;

-

-LOGFONT_FID_CACHE LOGFONTFc;

-

-void cacheLOGFONTFields(JNIEnv *env, jobject lpObject)

-{

-	if (LOGFONTFc.cached) return;

-	LOGFONTFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	LOGFONTFc.lfHeight = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfHeight", "I");

-	LOGFONTFc.lfWidth = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfWidth", "I");

-	LOGFONTFc.lfEscapement = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfEscapement", "I");

-	LOGFONTFc.lfOrientation = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfOrientation", "I");

-	LOGFONTFc.lfWeight = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfWeight", "I");

-	LOGFONTFc.lfItalic = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfItalic", "B");

-	LOGFONTFc.lfUnderline = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfUnderline", "B");

-	LOGFONTFc.lfStrikeOut = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfStrikeOut", "B");

-	LOGFONTFc.lfCharSet = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfCharSet", "B");

-	LOGFONTFc.lfOutPrecision = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfOutPrecision", "B");

-	LOGFONTFc.lfClipPrecision = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfClipPrecision", "B");

-	LOGFONTFc.lfQuality = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfQuality", "B");

-	LOGFONTFc.lfPitchAndFamily = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfPitchAndFamily", "B");

-	LOGFONTFc.cached = 1;

-}

-

-LOGFONT *getLOGFONTFields(JNIEnv *env, jobject lpObject, LOGFONT *lpStruct)

-{

-	if (!LOGFONTFc.cached) cacheLOGFONTFields(env, lpObject);

-	lpStruct->lfHeight = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfHeight);

-	lpStruct->lfWidth = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfWidth);

-	lpStruct->lfEscapement = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfEscapement);

-	lpStruct->lfOrientation = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfOrientation);

-	lpStruct->lfWeight = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfWeight);

-	lpStruct->lfItalic = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfItalic);

-	lpStruct->lfUnderline = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfUnderline);

-	lpStruct->lfStrikeOut = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfStrikeOut);

-	lpStruct->lfCharSet = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfCharSet);

-	lpStruct->lfOutPrecision = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfOutPrecision);

-	lpStruct->lfClipPrecision = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfClipPrecision);

-	lpStruct->lfQuality = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfQuality);

-	lpStruct->lfPitchAndFamily = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfPitchAndFamily);

-	return lpStruct;

-}

-

-void setLOGFONTFields(JNIEnv *env, jobject lpObject, LOGFONT *lpStruct)

-{

-	if (!LOGFONTFc.cached) cacheLOGFONTFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfHeight, (jint)lpStruct->lfHeight);

-	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfWidth, (jint)lpStruct->lfWidth);

-	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfEscapement, (jint)lpStruct->lfEscapement);

-	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfOrientation, (jint)lpStruct->lfOrientation);

-	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfWeight, (jint)lpStruct->lfWeight);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfItalic, (jbyte)lpStruct->lfItalic);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfUnderline, (jbyte)lpStruct->lfUnderline);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfStrikeOut, (jbyte)lpStruct->lfStrikeOut);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfCharSet, (jbyte)lpStruct->lfCharSet);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfOutPrecision, (jbyte)lpStruct->lfOutPrecision);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfClipPrecision, (jbyte)lpStruct->lfClipPrecision);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfQuality, (jbyte)lpStruct->lfQuality);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfPitchAndFamily, (jbyte)lpStruct->lfPitchAndFamily);

-}

-#endif

-

-#ifndef NO_LOGFONTA

-typedef struct LOGFONTA_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID lfFaceName;

-} LOGFONTA_FID_CACHE;

-

-LOGFONTA_FID_CACHE LOGFONTAFc;

-

-void cacheLOGFONTAFields(JNIEnv *env, jobject lpObject)

-{

-	if (LOGFONTAFc.cached) return;

-	cacheLOGFONTFields(env, lpObject);

-	LOGFONTAFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	LOGFONTAFc.lfFaceName = (*env)->GetFieldID(env, LOGFONTAFc.clazz, "lfFaceName", "[B");

-	LOGFONTAFc.cached = 1;

-}

-

-LOGFONTA *getLOGFONTAFields(JNIEnv *env, jobject lpObject, LOGFONTA *lpStruct)

-{

-	if (!LOGFONTAFc.cached) cacheLOGFONTAFields(env, lpObject);

-	lpStruct->lfHeight = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfHeight);

-	lpStruct->lfWidth = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfWidth);

-	lpStruct->lfEscapement = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfEscapement);

-	lpStruct->lfOrientation = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfOrientation);

-	lpStruct->lfWeight = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfWeight);

-	lpStruct->lfItalic = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfItalic);

-	lpStruct->lfUnderline = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfUnderline);

-	lpStruct->lfStrikeOut = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfStrikeOut);

-	lpStruct->lfCharSet = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfCharSet);

-	lpStruct->lfOutPrecision = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfOutPrecision);

-	lpStruct->lfClipPrecision = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfClipPrecision);

-	lpStruct->lfQuality = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfQuality);

-	lpStruct->lfPitchAndFamily = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfPitchAndFamily);

-	{

-	jbyteArray lpObject1 = (*env)->GetObjectField(env, lpObject, LOGFONTAFc.lfFaceName);

-	(*env)->GetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->lfFaceName), (void *)lpStruct->lfFaceName);

-	}

-	return lpStruct;

-}

-

-void setLOGFONTAFields(JNIEnv *env, jobject lpObject, LOGFONTA *lpStruct)

-{

-	if (!LOGFONTAFc.cached) cacheLOGFONTAFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfHeight, (jint)lpStruct->lfHeight);

-	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfWidth, (jint)lpStruct->lfWidth);

-	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfEscapement, (jint)lpStruct->lfEscapement);

-	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfOrientation, (jint)lpStruct->lfOrientation);

-	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfWeight, (jint)lpStruct->lfWeight);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfItalic, (jbyte)lpStruct->lfItalic);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfUnderline, (jbyte)lpStruct->lfUnderline);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfStrikeOut, (jbyte)lpStruct->lfStrikeOut);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfCharSet, (jbyte)lpStruct->lfCharSet);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfOutPrecision, (jbyte)lpStruct->lfOutPrecision);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfClipPrecision, (jbyte)lpStruct->lfClipPrecision);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfQuality, (jbyte)lpStruct->lfQuality);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfPitchAndFamily, (jbyte)lpStruct->lfPitchAndFamily);

-	{

-	jbyteArray lpObject1 = (*env)->GetObjectField(env, lpObject, LOGFONTAFc.lfFaceName);

-	(*env)->SetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->lfFaceName), (void *)lpStruct->lfFaceName);

-	}

-}

-#endif

-

-#ifndef NO_LOGFONTW

-typedef struct LOGFONTW_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID lfFaceName;

-} LOGFONTW_FID_CACHE;

-

-LOGFONTW_FID_CACHE LOGFONTWFc;

-

-void cacheLOGFONTWFields(JNIEnv *env, jobject lpObject)

-{

-	if (LOGFONTWFc.cached) return;

-	cacheLOGFONTFields(env, lpObject);

-	LOGFONTWFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	LOGFONTWFc.lfFaceName = (*env)->GetFieldID(env, LOGFONTWFc.clazz, "lfFaceName", "[C");

-	LOGFONTWFc.cached = 1;

-}

-

-LOGFONTW *getLOGFONTWFields(JNIEnv *env, jobject lpObject, LOGFONTW *lpStruct)

-{

-	if (!LOGFONTWFc.cached) cacheLOGFONTWFields(env, lpObject);

-	lpStruct->lfHeight = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfHeight);

-	lpStruct->lfWidth = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfWidth);

-	lpStruct->lfEscapement = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfEscapement);

-	lpStruct->lfOrientation = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfOrientation);

-	lpStruct->lfWeight = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfWeight);

-	lpStruct->lfItalic = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfItalic);

-	lpStruct->lfUnderline = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfUnderline);

-	lpStruct->lfStrikeOut = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfStrikeOut);

-	lpStruct->lfCharSet = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfCharSet);

-	lpStruct->lfOutPrecision = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfOutPrecision);

-	lpStruct->lfClipPrecision = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfClipPrecision);

-	lpStruct->lfQuality = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfQuality);

-	lpStruct->lfPitchAndFamily = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfPitchAndFamily);

-	{

-	jcharArray lpObject1 = (*env)->GetObjectField(env, lpObject, LOGFONTWFc.lfFaceName);

-	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->lfFaceName) / 2, (void *)lpStruct->lfFaceName);

-	}

-	return lpStruct;

-}

-

-void setLOGFONTWFields(JNIEnv *env, jobject lpObject, LOGFONTW *lpStruct)

-{

-	if (!LOGFONTWFc.cached) cacheLOGFONTWFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfHeight, (jint)lpStruct->lfHeight);

-	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfWidth, (jint)lpStruct->lfWidth);

-	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfEscapement, (jint)lpStruct->lfEscapement);

-	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfOrientation, (jint)lpStruct->lfOrientation);

-	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfWeight, (jint)lpStruct->lfWeight);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfItalic, (jbyte)lpStruct->lfItalic);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfUnderline, (jbyte)lpStruct->lfUnderline);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfStrikeOut, (jbyte)lpStruct->lfStrikeOut);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfCharSet, (jbyte)lpStruct->lfCharSet);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfOutPrecision, (jbyte)lpStruct->lfOutPrecision);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfClipPrecision, (jbyte)lpStruct->lfClipPrecision);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfQuality, (jbyte)lpStruct->lfQuality);

-	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfPitchAndFamily, (jbyte)lpStruct->lfPitchAndFamily);

-	{

-	jcharArray lpObject1 = (*env)->GetObjectField(env, lpObject, LOGFONTWFc.lfFaceName);

-	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->lfFaceName) / 2, (void *)lpStruct->lfFaceName);

-	}

-}

-#endif

-

-#ifndef NO_LOGPEN

-typedef struct LOGPEN_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID lopnStyle, x, y, lopnColor;

-} LOGPEN_FID_CACHE;

-

-LOGPEN_FID_CACHE LOGPENFc;

-

-void cacheLOGPENFields(JNIEnv *env, jobject lpObject)

-{

-	if (LOGPENFc.cached) return;

-	LOGPENFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	LOGPENFc.lopnStyle = (*env)->GetFieldID(env, LOGPENFc.clazz, "lopnStyle", "I");

-	LOGPENFc.x = (*env)->GetFieldID(env, LOGPENFc.clazz, "x", "I");

-	LOGPENFc.y = (*env)->GetFieldID(env, LOGPENFc.clazz, "y", "I");

-	LOGPENFc.lopnColor = (*env)->GetFieldID(env, LOGPENFc.clazz, "lopnColor", "I");

-	LOGPENFc.cached = 1;

-}

-

-LOGPEN *getLOGPENFields(JNIEnv *env, jobject lpObject, LOGPEN *lpStruct)

-{

-	if (!LOGPENFc.cached) cacheLOGPENFields(env, lpObject);

-	lpStruct->lopnStyle = (*env)->GetIntField(env, lpObject, LOGPENFc.lopnStyle);

-	lpStruct->lopnWidth.x = (*env)->GetIntField(env, lpObject, LOGPENFc.x);

-	lpStruct->lopnWidth.y = (*env)->GetIntField(env, lpObject, LOGPENFc.y);

-	lpStruct->lopnColor = (*env)->GetIntField(env, lpObject, LOGPENFc.lopnColor);

-	return lpStruct;

-}

-

-void setLOGPENFields(JNIEnv *env, jobject lpObject, LOGPEN *lpStruct)

-{

-	if (!LOGPENFc.cached) cacheLOGPENFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, LOGPENFc.lopnStyle, (jint)lpStruct->lopnStyle);

-	(*env)->SetIntField(env, lpObject, LOGPENFc.x, (jint)lpStruct->lopnWidth.x);

-	(*env)->SetIntField(env, lpObject, LOGPENFc.y, (jint)lpStruct->lopnWidth.y);

-	(*env)->SetIntField(env, lpObject, LOGPENFc.lopnColor, (jint)lpStruct->lopnColor);

-}

-#endif

-

-#ifndef NO_LVCOLUMN

-typedef struct LVCOLUMN_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID mask, fmt, cx, pszText, cchTextMax, iSubItem, iImage, iOrder;

-} LVCOLUMN_FID_CACHE;

-

-LVCOLUMN_FID_CACHE LVCOLUMNFc;

-

-void cacheLVCOLUMNFields(JNIEnv *env, jobject lpObject)

-{

-	if (LVCOLUMNFc.cached) return;

-	LVCOLUMNFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	LVCOLUMNFc.mask = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "mask", "I");

-	LVCOLUMNFc.fmt = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "fmt", "I");

-	LVCOLUMNFc.cx = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "cx", "I");

-	LVCOLUMNFc.pszText = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "pszText", "I");

-	LVCOLUMNFc.cchTextMax = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "cchTextMax", "I");

-	LVCOLUMNFc.iSubItem = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "iSubItem", "I");

-	LVCOLUMNFc.iImage = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "iImage", "I");

-	LVCOLUMNFc.iOrder = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "iOrder", "I");

-	LVCOLUMNFc.cached = 1;

-}

-

-LVCOLUMN *getLVCOLUMNFields(JNIEnv *env, jobject lpObject, LVCOLUMN *lpStruct)

-{

-	if (!LVCOLUMNFc.cached) cacheLVCOLUMNFields(env, lpObject);

-	lpStruct->mask = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.mask);

-	lpStruct->fmt = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.fmt);

-	lpStruct->cx = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.cx);

-	lpStruct->pszText = (LPTSTR)(*env)->GetIntField(env, lpObject, LVCOLUMNFc.pszText);

-	lpStruct->cchTextMax = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.cchTextMax);

-	lpStruct->iSubItem = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.iSubItem);

-	lpStruct->iImage = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.iImage);

-	lpStruct->iOrder = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.iOrder);

-	return lpStruct;

-}

-

-void setLVCOLUMNFields(JNIEnv *env, jobject lpObject, LVCOLUMN *lpStruct)

-{

-	if (!LVCOLUMNFc.cached) cacheLVCOLUMNFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.mask, (jint)lpStruct->mask);

-	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.fmt, (jint)lpStruct->fmt);

-	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.cx, (jint)lpStruct->cx);

-	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.pszText, (jint)lpStruct->pszText);

-	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.cchTextMax, (jint)lpStruct->cchTextMax);

-	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.iSubItem, (jint)lpStruct->iSubItem);

-	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.iImage, (jint)lpStruct->iImage);

-	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.iOrder, (jint)lpStruct->iOrder);

-}

-#endif

-

-#ifndef NO_LVHITTESTINFO

-typedef struct LVHITTESTINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID x, y, flags, iItem, iSubItem;

-} LVHITTESTINFO_FID_CACHE;

-

-LVHITTESTINFO_FID_CACHE LVHITTESTINFOFc;

-

-void cacheLVHITTESTINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (LVHITTESTINFOFc.cached) return;

-	LVHITTESTINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	LVHITTESTINFOFc.x = (*env)->GetFieldID(env, LVHITTESTINFOFc.clazz, "x", "I");

-	LVHITTESTINFOFc.y = (*env)->GetFieldID(env, LVHITTESTINFOFc.clazz, "y", "I");

-	LVHITTESTINFOFc.flags = (*env)->GetFieldID(env, LVHITTESTINFOFc.clazz, "flags", "I");

-	LVHITTESTINFOFc.iItem = (*env)->GetFieldID(env, LVHITTESTINFOFc.clazz, "iItem", "I");

-	LVHITTESTINFOFc.iSubItem = (*env)->GetFieldID(env, LVHITTESTINFOFc.clazz, "iSubItem", "I");

-	LVHITTESTINFOFc.cached = 1;

-}

-

-LVHITTESTINFO *getLVHITTESTINFOFields(JNIEnv *env, jobject lpObject, LVHITTESTINFO *lpStruct)

-{

-	if (!LVHITTESTINFOFc.cached) cacheLVHITTESTINFOFields(env, lpObject);

-	lpStruct->pt.x = (*env)->GetIntField(env, lpObject, LVHITTESTINFOFc.x);

-	lpStruct->pt.y = (*env)->GetIntField(env, lpObject, LVHITTESTINFOFc.y);

-	lpStruct->flags = (*env)->GetIntField(env, lpObject, LVHITTESTINFOFc.flags);

-	lpStruct->iItem = (*env)->GetIntField(env, lpObject, LVHITTESTINFOFc.iItem);

-	lpStruct->iSubItem = (*env)->GetIntField(env, lpObject, LVHITTESTINFOFc.iSubItem);

-	return lpStruct;

-}

-

-void setLVHITTESTINFOFields(JNIEnv *env, jobject lpObject, LVHITTESTINFO *lpStruct)

-{

-	if (!LVHITTESTINFOFc.cached) cacheLVHITTESTINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, LVHITTESTINFOFc.x, (jint)lpStruct->pt.x);

-	(*env)->SetIntField(env, lpObject, LVHITTESTINFOFc.y, (jint)lpStruct->pt.y);

-	(*env)->SetIntField(env, lpObject, LVHITTESTINFOFc.flags, (jint)lpStruct->flags);

-	(*env)->SetIntField(env, lpObject, LVHITTESTINFOFc.iItem, (jint)lpStruct->iItem);

-	(*env)->SetIntField(env, lpObject, LVHITTESTINFOFc.iSubItem, (jint)lpStruct->iSubItem);

-}

-#endif

-

-#ifndef NO_LVITEM

-typedef struct LVITEM_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID mask, iItem, iSubItem, state, stateMask, pszText, cchTextMax, iImage, lParam, iIndent;

-} LVITEM_FID_CACHE;

-

-LVITEM_FID_CACHE LVITEMFc;

-

-void cacheLVITEMFields(JNIEnv *env, jobject lpObject)

-{

-	if (LVITEMFc.cached) return;

-	LVITEMFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	LVITEMFc.mask = (*env)->GetFieldID(env, LVITEMFc.clazz, "mask", "I");

-	LVITEMFc.iItem = (*env)->GetFieldID(env, LVITEMFc.clazz, "iItem", "I");

-	LVITEMFc.iSubItem = (*env)->GetFieldID(env, LVITEMFc.clazz, "iSubItem", "I");

-	LVITEMFc.state = (*env)->GetFieldID(env, LVITEMFc.clazz, "state", "I");

-	LVITEMFc.stateMask = (*env)->GetFieldID(env, LVITEMFc.clazz, "stateMask", "I");

-	LVITEMFc.pszText = (*env)->GetFieldID(env, LVITEMFc.clazz, "pszText", "I");

-	LVITEMFc.cchTextMax = (*env)->GetFieldID(env, LVITEMFc.clazz, "cchTextMax", "I");

-	LVITEMFc.iImage = (*env)->GetFieldID(env, LVITEMFc.clazz, "iImage", "I");

-	LVITEMFc.lParam = (*env)->GetFieldID(env, LVITEMFc.clazz, "lParam", "I");

-	LVITEMFc.iIndent = (*env)->GetFieldID(env, LVITEMFc.clazz, "iIndent", "I");

-	LVITEMFc.cached = 1;

-}

-

-LVITEM *getLVITEMFields(JNIEnv *env, jobject lpObject, LVITEM *lpStruct)

-{

-	if (!LVITEMFc.cached) cacheLVITEMFields(env, lpObject);

-	lpStruct->mask = (*env)->GetIntField(env, lpObject, LVITEMFc.mask);

-	lpStruct->iItem = (*env)->GetIntField(env, lpObject, LVITEMFc.iItem);

-	lpStruct->iSubItem = (*env)->GetIntField(env, lpObject, LVITEMFc.iSubItem);

-	lpStruct->state = (*env)->GetIntField(env, lpObject, LVITEMFc.state);

-	lpStruct->stateMask = (*env)->GetIntField(env, lpObject, LVITEMFc.stateMask);

-	lpStruct->pszText = (LPTSTR)(*env)->GetIntField(env, lpObject, LVITEMFc.pszText);

-	lpStruct->cchTextMax = (*env)->GetIntField(env, lpObject, LVITEMFc.cchTextMax);

-	lpStruct->iImage = (*env)->GetIntField(env, lpObject, LVITEMFc.iImage);

-	lpStruct->lParam = (*env)->GetIntField(env, lpObject, LVITEMFc.lParam);

-	lpStruct->iIndent = (*env)->GetIntField(env, lpObject, LVITEMFc.iIndent);

-	return lpStruct;

-}

-

-void setLVITEMFields(JNIEnv *env, jobject lpObject, LVITEM *lpStruct)

-{

-	if (!LVITEMFc.cached) cacheLVITEMFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, LVITEMFc.mask, (jint)lpStruct->mask);

-	(*env)->SetIntField(env, lpObject, LVITEMFc.iItem, (jint)lpStruct->iItem);

-	(*env)->SetIntField(env, lpObject, LVITEMFc.iSubItem, (jint)lpStruct->iSubItem);

-	(*env)->SetIntField(env, lpObject, LVITEMFc.state, (jint)lpStruct->state);

-	(*env)->SetIntField(env, lpObject, LVITEMFc.stateMask, (jint)lpStruct->stateMask);

-	(*env)->SetIntField(env, lpObject, LVITEMFc.pszText, (jint)lpStruct->pszText);

-	(*env)->SetIntField(env, lpObject, LVITEMFc.cchTextMax, (jint)lpStruct->cchTextMax);

-	(*env)->SetIntField(env, lpObject, LVITEMFc.iImage, (jint)lpStruct->iImage);

-	(*env)->SetIntField(env, lpObject, LVITEMFc.lParam, (jint)lpStruct->lParam);

-	(*env)->SetIntField(env, lpObject, LVITEMFc.iIndent, (jint)lpStruct->iIndent);

-}

-#endif

-

-#ifndef NO_MEASUREITEMSTRUCT

-typedef struct MEASUREITEMSTRUCT_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID CtlType, CtlID, itemID, itemWidth, itemHeight, itemData;

-} MEASUREITEMSTRUCT_FID_CACHE;

-

-MEASUREITEMSTRUCT_FID_CACHE MEASUREITEMSTRUCTFc;

-

-void cacheMEASUREITEMSTRUCTFields(JNIEnv *env, jobject lpObject)

-{

-	if (MEASUREITEMSTRUCTFc.cached) return;

-	MEASUREITEMSTRUCTFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	MEASUREITEMSTRUCTFc.CtlType = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "CtlType", "I");

-	MEASUREITEMSTRUCTFc.CtlID = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "CtlID", "I");

-	MEASUREITEMSTRUCTFc.itemID = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "itemID", "I");

-	MEASUREITEMSTRUCTFc.itemWidth = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "itemWidth", "I");

-	MEASUREITEMSTRUCTFc.itemHeight = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "itemHeight", "I");

-	MEASUREITEMSTRUCTFc.itemData = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "itemData", "I");

-	MEASUREITEMSTRUCTFc.cached = 1;

-}

-

-MEASUREITEMSTRUCT *getMEASUREITEMSTRUCTFields(JNIEnv *env, jobject lpObject, MEASUREITEMSTRUCT *lpStruct)

-{

-	if (!MEASUREITEMSTRUCTFc.cached) cacheMEASUREITEMSTRUCTFields(env, lpObject);

-	lpStruct->CtlType = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.CtlType);

-	lpStruct->CtlID = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.CtlID);

-	lpStruct->itemID = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemID);

-	lpStruct->itemWidth = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemWidth);

-	lpStruct->itemHeight = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemHeight);

-	lpStruct->itemData = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemData);

-	return lpStruct;

-}

-

-void setMEASUREITEMSTRUCTFields(JNIEnv *env, jobject lpObject, MEASUREITEMSTRUCT *lpStruct)

-{

-	if (!MEASUREITEMSTRUCTFc.cached) cacheMEASUREITEMSTRUCTFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.CtlType, (jint)lpStruct->CtlType);

-	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.CtlID, (jint)lpStruct->CtlID);

-	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemID, (jint)lpStruct->itemID);

-	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemWidth, (jint)lpStruct->itemWidth);

-	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemHeight, (jint)lpStruct->itemHeight);

-	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemData, (jint)lpStruct->itemData);

-}

-#endif

-

-#ifndef NO_MENUINFO

-typedef struct MENUINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, fMask, dwStyle, cyMax, hbrBack, dwContextHelpID, dwMenuData;

-} MENUINFO_FID_CACHE;

-

-MENUINFO_FID_CACHE MENUINFOFc;

-

-void cacheMENUINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (MENUINFOFc.cached) return;

-	MENUINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	MENUINFOFc.cbSize = (*env)->GetFieldID(env, MENUINFOFc.clazz, "cbSize", "I");

-	MENUINFOFc.fMask = (*env)->GetFieldID(env, MENUINFOFc.clazz, "fMask", "I");

-	MENUINFOFc.dwStyle = (*env)->GetFieldID(env, MENUINFOFc.clazz, "dwStyle", "I");

-	MENUINFOFc.cyMax = (*env)->GetFieldID(env, MENUINFOFc.clazz, "cyMax", "I");

-	MENUINFOFc.hbrBack = (*env)->GetFieldID(env, MENUINFOFc.clazz, "hbrBack", "I");

-	MENUINFOFc.dwContextHelpID = (*env)->GetFieldID(env, MENUINFOFc.clazz, "dwContextHelpID", "I");

-	MENUINFOFc.dwMenuData = (*env)->GetFieldID(env, MENUINFOFc.clazz, "dwMenuData", "I");

-	MENUINFOFc.cached = 1;

-}

-

-MENUINFO *getMENUINFOFields(JNIEnv *env, jobject lpObject, MENUINFO *lpStruct)

-{

-	if (!MENUINFOFc.cached) cacheMENUINFOFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, MENUINFOFc.cbSize);

-	lpStruct->fMask = (*env)->GetIntField(env, lpObject, MENUINFOFc.fMask);

-	lpStruct->dwStyle = (*env)->GetIntField(env, lpObject, MENUINFOFc.dwStyle);

-	lpStruct->cyMax = (*env)->GetIntField(env, lpObject, MENUINFOFc.cyMax);

-	lpStruct->hbrBack = (HBRUSH)(*env)->GetIntField(env, lpObject, MENUINFOFc.hbrBack);

-	lpStruct->dwContextHelpID = (*env)->GetIntField(env, lpObject, MENUINFOFc.dwContextHelpID);

-	lpStruct->dwMenuData = (*env)->GetIntField(env, lpObject, MENUINFOFc.dwMenuData);

-	return lpStruct;

-}

-

-void setMENUINFOFields(JNIEnv *env, jobject lpObject, MENUINFO *lpStruct)

-{

-	if (!MENUINFOFc.cached) cacheMENUINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, MENUINFOFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, MENUINFOFc.fMask, (jint)lpStruct->fMask);

-	(*env)->SetIntField(env, lpObject, MENUINFOFc.dwStyle, (jint)lpStruct->dwStyle);

-	(*env)->SetIntField(env, lpObject, MENUINFOFc.cyMax, (jint)lpStruct->cyMax);

-	(*env)->SetIntField(env, lpObject, MENUINFOFc.hbrBack, (jint)lpStruct->hbrBack);

-	(*env)->SetIntField(env, lpObject, MENUINFOFc.dwContextHelpID, (jint)lpStruct->dwContextHelpID);

-	(*env)->SetIntField(env, lpObject, MENUINFOFc.dwMenuData, (jint)lpStruct->dwMenuData);

-}

-#endif

-

-#ifndef NO_MENUITEMINFO

-typedef struct MENUITEMINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, fMask, fType, fState, wID, hSubMenu, hbmpChecked, hbmpUnchecked, dwItemData, dwTypeData, cch, hbmpItem;

-} MENUITEMINFO_FID_CACHE;

-

-MENUITEMINFO_FID_CACHE MENUITEMINFOFc;

-

-void cacheMENUITEMINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (MENUITEMINFOFc.cached) return;

-	MENUITEMINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	MENUITEMINFOFc.cbSize = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "cbSize", "I");

-	MENUITEMINFOFc.fMask = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "fMask", "I");

-	MENUITEMINFOFc.fType = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "fType", "I");

-	MENUITEMINFOFc.fState = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "fState", "I");

-	MENUITEMINFOFc.wID = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "wID", "I");

-	MENUITEMINFOFc.hSubMenu = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "hSubMenu", "I");

-	MENUITEMINFOFc.hbmpChecked = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "hbmpChecked", "I");

-	MENUITEMINFOFc.hbmpUnchecked = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "hbmpUnchecked", "I");

-	MENUITEMINFOFc.dwItemData = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "dwItemData", "I");

-	MENUITEMINFOFc.dwTypeData = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "dwTypeData", "I");

-	MENUITEMINFOFc.cch = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "cch", "I");

-	MENUITEMINFOFc.hbmpItem = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "hbmpItem", "I");

-	MENUITEMINFOFc.cached = 1;

-}

-

-MENUITEMINFO *getMENUITEMINFOFields(JNIEnv *env, jobject lpObject, MENUITEMINFO *lpStruct)

-{

-	if (!MENUITEMINFOFc.cached) cacheMENUITEMINFOFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.cbSize);

-	lpStruct->fMask = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.fMask);

-	lpStruct->fType = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.fType);

-	lpStruct->fState = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.fState);

-	lpStruct->wID = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.wID);

-	lpStruct->hSubMenu = (HMENU)(*env)->GetIntField(env, lpObject, MENUITEMINFOFc.hSubMenu);

-	lpStruct->hbmpChecked = (HBITMAP)(*env)->GetIntField(env, lpObject, MENUITEMINFOFc.hbmpChecked);

-	lpStruct->hbmpUnchecked = (HBITMAP)(*env)->GetIntField(env, lpObject, MENUITEMINFOFc.hbmpUnchecked);

-	lpStruct->dwItemData = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.dwItemData);

-	lpStruct->dwTypeData = (LPTSTR)(*env)->GetIntField(env, lpObject, MENUITEMINFOFc.dwTypeData);

-	lpStruct->cch = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.cch);

-#ifndef _WIN32_WCE

-	lpStruct->hbmpItem = (HBITMAP)(*env)->GetIntField(env, lpObject, MENUITEMINFOFc.hbmpItem);

-#endif

-	return lpStruct;

-}

-

-void setMENUITEMINFOFields(JNIEnv *env, jobject lpObject, MENUITEMINFO *lpStruct)

-{

-	if (!MENUITEMINFOFc.cached) cacheMENUITEMINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.fMask, (jint)lpStruct->fMask);

-	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.fType, (jint)lpStruct->fType);

-	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.fState, (jint)lpStruct->fState);

-	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.wID, (jint)lpStruct->wID);

-	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.hSubMenu, (jint)lpStruct->hSubMenu);

-	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.hbmpChecked, (jint)lpStruct->hbmpChecked);

-	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.hbmpUnchecked, (jint)lpStruct->hbmpUnchecked);

-	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.dwItemData, (jint)lpStruct->dwItemData);

-	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.dwTypeData, (jint)lpStruct->dwTypeData);

-	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.cch, (jint)lpStruct->cch);

-#ifndef _WIN32_WCE

-	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.hbmpItem, (jint)lpStruct->hbmpItem);

-#endif

-}

-#endif

-

-#ifndef NO_MONITORINFO

-typedef struct MONITORINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, rcMonitor_left, rcMonitor_top, rcMonitor_right, rcMonitor_bottom, rcWork_left, rcWork_top, rcWork_right, rcWork_bottom, dwFlags;

-} MONITORINFO_FID_CACHE;

-

-MONITORINFO_FID_CACHE MONITORINFOFc;

-

-void cacheMONITORINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (MONITORINFOFc.cached) return;

-	MONITORINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	MONITORINFOFc.cbSize = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "cbSize", "I");

-	MONITORINFOFc.rcMonitor_left = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcMonitor_left", "I");

-	MONITORINFOFc.rcMonitor_top = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcMonitor_top", "I");

-	MONITORINFOFc.rcMonitor_right = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcMonitor_right", "I");

-	MONITORINFOFc.rcMonitor_bottom = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcMonitor_bottom", "I");

-	MONITORINFOFc.rcWork_left = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcWork_left", "I");

-	MONITORINFOFc.rcWork_top = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcWork_top", "I");

-	MONITORINFOFc.rcWork_right = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcWork_right", "I");

-	MONITORINFOFc.rcWork_bottom = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcWork_bottom", "I");

-	MONITORINFOFc.dwFlags = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "dwFlags", "I");

-	MONITORINFOFc.cached = 1;

-}

-

-MONITORINFO *getMONITORINFOFields(JNIEnv *env, jobject lpObject, MONITORINFO *lpStruct)

-{

-	if (!MONITORINFOFc.cached) cacheMONITORINFOFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, MONITORINFOFc.cbSize);

-	lpStruct->rcMonitor.left = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcMonitor_left);

-	lpStruct->rcMonitor.top = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcMonitor_top);

-	lpStruct->rcMonitor.right = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcMonitor_right);

-	lpStruct->rcMonitor.bottom = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcMonitor_bottom);

-	lpStruct->rcWork.left = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcWork_left);

-	lpStruct->rcWork.top = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcWork_top);

-	lpStruct->rcWork.right = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcWork_right);

-	lpStruct->rcWork.bottom = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcWork_bottom);

-	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, MONITORINFOFc.dwFlags);

-	return lpStruct;

-}

-

-void setMONITORINFOFields(JNIEnv *env, jobject lpObject, MONITORINFO *lpStruct)

-{

-	if (!MONITORINFOFc.cached) cacheMONITORINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, MONITORINFOFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcMonitor_left, (jint)lpStruct->rcMonitor.left);

-	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcMonitor_top, (jint)lpStruct->rcMonitor.top);

-	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcMonitor_right, (jint)lpStruct->rcMonitor.right);

-	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcMonitor_bottom, (jint)lpStruct->rcMonitor.bottom);

-	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcWork_left, (jint)lpStruct->rcWork.left);

-	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcWork_top, (jint)lpStruct->rcWork.top);

-	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcWork_right, (jint)lpStruct->rcWork.right);

-	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcWork_bottom, (jint)lpStruct->rcWork.bottom);

-	(*env)->SetIntField(env, lpObject, MONITORINFOFc.dwFlags, (jint)lpStruct->dwFlags);

-}

-#endif

-

-#ifndef NO_MSG

-typedef struct MSG_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID hwnd, message, wParam, lParam, time, x, y;

-} MSG_FID_CACHE;

-

-MSG_FID_CACHE MSGFc;

-

-void cacheMSGFields(JNIEnv *env, jobject lpObject)

-{

-	if (MSGFc.cached) return;

-	MSGFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	MSGFc.hwnd = (*env)->GetFieldID(env, MSGFc.clazz, "hwnd", "I");

-	MSGFc.message = (*env)->GetFieldID(env, MSGFc.clazz, "message", "I");

-	MSGFc.wParam = (*env)->GetFieldID(env, MSGFc.clazz, "wParam", "I");

-	MSGFc.lParam = (*env)->GetFieldID(env, MSGFc.clazz, "lParam", "I");

-	MSGFc.time = (*env)->GetFieldID(env, MSGFc.clazz, "time", "I");

-	MSGFc.x = (*env)->GetFieldID(env, MSGFc.clazz, "x", "I");

-	MSGFc.y = (*env)->GetFieldID(env, MSGFc.clazz, "y", "I");

-	MSGFc.cached = 1;

-}

-

-MSG *getMSGFields(JNIEnv *env, jobject lpObject, MSG *lpStruct)

-{

-	if (!MSGFc.cached) cacheMSGFields(env, lpObject);

-	lpStruct->hwnd = (HWND)(*env)->GetIntField(env, lpObject, MSGFc.hwnd);

-	lpStruct->message = (*env)->GetIntField(env, lpObject, MSGFc.message);

-	lpStruct->wParam = (*env)->GetIntField(env, lpObject, MSGFc.wParam);

-	lpStruct->lParam = (*env)->GetIntField(env, lpObject, MSGFc.lParam);

-	lpStruct->time = (*env)->GetIntField(env, lpObject, MSGFc.time);

-	lpStruct->pt.x = (*env)->GetIntField(env, lpObject, MSGFc.x);

-	lpStruct->pt.y = (*env)->GetIntField(env, lpObject, MSGFc.y);

-	return lpStruct;

-}

-

-void setMSGFields(JNIEnv *env, jobject lpObject, MSG *lpStruct)

-{

-	if (!MSGFc.cached) cacheMSGFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, MSGFc.hwnd, (jint)lpStruct->hwnd);

-	(*env)->SetIntField(env, lpObject, MSGFc.message, (jint)lpStruct->message);

-	(*env)->SetIntField(env, lpObject, MSGFc.wParam, (jint)lpStruct->wParam);

-	(*env)->SetIntField(env, lpObject, MSGFc.lParam, (jint)lpStruct->lParam);

-	(*env)->SetIntField(env, lpObject, MSGFc.time, (jint)lpStruct->time);

-	(*env)->SetIntField(env, lpObject, MSGFc.x, (jint)lpStruct->pt.x);

-	(*env)->SetIntField(env, lpObject, MSGFc.y, (jint)lpStruct->pt.y);

-}

-#endif

-

-#ifndef NO_NMHDR

-typedef struct NMHDR_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID hwndFrom, idFrom, code;

-} NMHDR_FID_CACHE;

-

-NMHDR_FID_CACHE NMHDRFc;

-

-void cacheNMHDRFields(JNIEnv *env, jobject lpObject)

-{

-	if (NMHDRFc.cached) return;

-	NMHDRFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	NMHDRFc.hwndFrom = (*env)->GetFieldID(env, NMHDRFc.clazz, "hwndFrom", "I");

-	NMHDRFc.idFrom = (*env)->GetFieldID(env, NMHDRFc.clazz, "idFrom", "I");

-	NMHDRFc.code = (*env)->GetFieldID(env, NMHDRFc.clazz, "code", "I");

-	NMHDRFc.cached = 1;

-}

-

-NMHDR *getNMHDRFields(JNIEnv *env, jobject lpObject, NMHDR *lpStruct)

-{

-	if (!NMHDRFc.cached) cacheNMHDRFields(env, lpObject);

-	lpStruct->hwndFrom = (HWND)(*env)->GetIntField(env, lpObject, NMHDRFc.hwndFrom);

-	lpStruct->idFrom = (*env)->GetIntField(env, lpObject, NMHDRFc.idFrom);

-	lpStruct->code = (*env)->GetIntField(env, lpObject, NMHDRFc.code);

-	return lpStruct;

-}

-

-void setNMHDRFields(JNIEnv *env, jobject lpObject, NMHDR *lpStruct)

-{

-	if (!NMHDRFc.cached) cacheNMHDRFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, NMHDRFc.hwndFrom, (jint)lpStruct->hwndFrom);

-	(*env)->SetIntField(env, lpObject, NMHDRFc.idFrom, (jint)lpStruct->idFrom);

-	(*env)->SetIntField(env, lpObject, NMHDRFc.code, (jint)lpStruct->code);

-}

-#endif

-

-#ifndef NO_NMCUSTOMDRAW

-typedef struct NMCUSTOMDRAW_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID dwDrawStage, hdc, left, top, right, bottom, dwItemSpec, uItemState, lItemlParam;

-} NMCUSTOMDRAW_FID_CACHE;

-

-NMCUSTOMDRAW_FID_CACHE NMCUSTOMDRAWFc;

-

-void cacheNMCUSTOMDRAWFields(JNIEnv *env, jobject lpObject)

-{

-	if (NMCUSTOMDRAWFc.cached) return;

-	cacheNMHDRFields(env, lpObject);

-	NMCUSTOMDRAWFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	NMCUSTOMDRAWFc.dwDrawStage = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "dwDrawStage", "I");

-	NMCUSTOMDRAWFc.hdc = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "hdc", "I");

-	NMCUSTOMDRAWFc.left = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "left", "I");

-	NMCUSTOMDRAWFc.top = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "top", "I");

-	NMCUSTOMDRAWFc.right = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "right", "I");

-	NMCUSTOMDRAWFc.bottom = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "bottom", "I");

-	NMCUSTOMDRAWFc.dwItemSpec = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "dwItemSpec", "I");

-	NMCUSTOMDRAWFc.uItemState = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "uItemState", "I");

-	NMCUSTOMDRAWFc.lItemlParam = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "lItemlParam", "I");

-	NMCUSTOMDRAWFc.cached = 1;

-}

-

-NMCUSTOMDRAW *getNMCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMCUSTOMDRAW *lpStruct)

-{

-	if (!NMCUSTOMDRAWFc.cached) cacheNMCUSTOMDRAWFields(env, lpObject);

-	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);

-	lpStruct->dwDrawStage = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.dwDrawStage);

-	lpStruct->hdc = (HDC)(*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.hdc);

-	lpStruct->rc.left = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.left);

-	lpStruct->rc.top = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.top);

-	lpStruct->rc.right = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.right);

-	lpStruct->rc.bottom = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.bottom);

-	lpStruct->dwItemSpec = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.dwItemSpec);

-	lpStruct->uItemState = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.uItemState);

-	lpStruct->lItemlParam = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.lItemlParam);

-	return lpStruct;

-}

-

-void setNMCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMCUSTOMDRAW *lpStruct)

-{

-	if (!NMCUSTOMDRAWFc.cached) cacheNMCUSTOMDRAWFields(env, lpObject);

-	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);

-	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.dwDrawStage, (jint)lpStruct->dwDrawStage);

-	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.hdc, (jint)lpStruct->hdc);

-	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.left, (jint)lpStruct->rc.left);

-	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.top, (jint)lpStruct->rc.top);

-	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.right, (jint)lpStruct->rc.right);

-	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.bottom, (jint)lpStruct->rc.bottom);

-	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.dwItemSpec, (jint)lpStruct->dwItemSpec);

-	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.uItemState, (jint)lpStruct->uItemState);

-	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.lItemlParam, (jint)lpStruct->lItemlParam);

-}

-#endif

-

-#ifndef NO_NMHEADER

-typedef struct NMHEADER_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID iItem, iButton, pitem;

-} NMHEADER_FID_CACHE;

-

-NMHEADER_FID_CACHE NMHEADERFc;

-

-void cacheNMHEADERFields(JNIEnv *env, jobject lpObject)

-{

-	if (NMHEADERFc.cached) return;

-	cacheNMHDRFields(env, lpObject);

-	NMHEADERFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	NMHEADERFc.iItem = (*env)->GetFieldID(env, NMHEADERFc.clazz, "iItem", "I");

-	NMHEADERFc.iButton = (*env)->GetFieldID(env, NMHEADERFc.clazz, "iButton", "I");

-	NMHEADERFc.pitem = (*env)->GetFieldID(env, NMHEADERFc.clazz, "pitem", "I");

-	NMHEADERFc.cached = 1;

-}

-

-NMHEADER *getNMHEADERFields(JNIEnv *env, jobject lpObject, NMHEADER *lpStruct)

-{

-	if (!NMHEADERFc.cached) cacheNMHEADERFields(env, lpObject);

-	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);

-	lpStruct->iItem = (*env)->GetIntField(env, lpObject, NMHEADERFc.iItem);

-	lpStruct->iButton = (*env)->GetIntField(env, lpObject, NMHEADERFc.iButton);

-	lpStruct->pitem = (HDITEM FAR *)(*env)->GetIntField(env, lpObject, NMHEADERFc.pitem);

-	return lpStruct;

-}

-

-void setNMHEADERFields(JNIEnv *env, jobject lpObject, NMHEADER *lpStruct)

-{

-	if (!NMHEADERFc.cached) cacheNMHEADERFields(env, lpObject);

-	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);

-	(*env)->SetIntField(env, lpObject, NMHEADERFc.iItem, (jint)lpStruct->iItem);

-	(*env)->SetIntField(env, lpObject, NMHEADERFc.iButton, (jint)lpStruct->iButton);

-	(*env)->SetIntField(env, lpObject, NMHEADERFc.pitem, (jint)lpStruct->pitem);

-}

-#endif

-

-#ifndef NO_NMLISTVIEW

-typedef struct NMLISTVIEW_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID iItem, iSubItem, uNewState, uOldState, uChanged, x, y, lParam;

-} NMLISTVIEW_FID_CACHE;

-

-NMLISTVIEW_FID_CACHE NMLISTVIEWFc;

-

-void cacheNMLISTVIEWFields(JNIEnv *env, jobject lpObject)

-{

-	if (NMLISTVIEWFc.cached) return;

-	cacheNMHDRFields(env, lpObject);

-	NMLISTVIEWFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	NMLISTVIEWFc.iItem = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "iItem", "I");

-	NMLISTVIEWFc.iSubItem = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "iSubItem", "I");

-	NMLISTVIEWFc.uNewState = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "uNewState", "I");

-	NMLISTVIEWFc.uOldState = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "uOldState", "I");

-	NMLISTVIEWFc.uChanged = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "uChanged", "I");

-	NMLISTVIEWFc.x = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "x", "I");

-	NMLISTVIEWFc.y = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "y", "I");

-	NMLISTVIEWFc.lParam = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "lParam", "I");

-	NMLISTVIEWFc.cached = 1;

-}

-

-NMLISTVIEW *getNMLISTVIEWFields(JNIEnv *env, jobject lpObject, NMLISTVIEW *lpStruct)

-{

-	if (!NMLISTVIEWFc.cached) cacheNMLISTVIEWFields(env, lpObject);

-	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);

-	lpStruct->iItem = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.iItem);

-	lpStruct->iSubItem = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.iSubItem);

-	lpStruct->uNewState = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.uNewState);

-	lpStruct->uOldState = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.uOldState);

-	lpStruct->uChanged = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.uChanged);

-	lpStruct->ptAction.x = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.x);

-	lpStruct->ptAction.y = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.y);

-	lpStruct->lParam = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.lParam);

-	return lpStruct;

-}

-

-void setNMLISTVIEWFields(JNIEnv *env, jobject lpObject, NMLISTVIEW *lpStruct)

-{

-	if (!NMLISTVIEWFc.cached) cacheNMLISTVIEWFields(env, lpObject);

-	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);

-	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.iItem, (jint)lpStruct->iItem);

-	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.iSubItem, (jint)lpStruct->iSubItem);

-	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.uNewState, (jint)lpStruct->uNewState);

-	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.uOldState, (jint)lpStruct->uOldState);

-	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.uChanged, (jint)lpStruct->uChanged);

-	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.x, (jint)lpStruct->ptAction.x);

-	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.y, (jint)lpStruct->ptAction.y);

-	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.lParam, (jint)lpStruct->lParam);

-}

-#endif

-

-#ifndef NO_NMLVCUSTOMDRAW

-typedef struct NMLVCUSTOMDRAW_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID clrText, clrTextBk, iSubItem;

-} NMLVCUSTOMDRAW_FID_CACHE;

-

-NMLVCUSTOMDRAW_FID_CACHE NMLVCUSTOMDRAWFc;

-

-void cacheNMLVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject)

-{

-	if (NMLVCUSTOMDRAWFc.cached) return;

-	cacheNMCUSTOMDRAWFields(env, lpObject);

-	NMLVCUSTOMDRAWFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	NMLVCUSTOMDRAWFc.clrText = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "clrText", "I");

-	NMLVCUSTOMDRAWFc.clrTextBk = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "clrTextBk", "I");

-	NMLVCUSTOMDRAWFc.iSubItem = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "iSubItem", "I");

-	NMLVCUSTOMDRAWFc.cached = 1;

-}

-

-NMLVCUSTOMDRAW *getNMLVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMLVCUSTOMDRAW *lpStruct)

-{

-	if (!NMLVCUSTOMDRAWFc.cached) cacheNMLVCUSTOMDRAWFields(env, lpObject);

-	getNMCUSTOMDRAWFields(env, lpObject, (NMCUSTOMDRAW *)lpStruct);

-	lpStruct->clrText = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.clrText);

-	lpStruct->clrTextBk = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.clrTextBk);

-	lpStruct->iSubItem = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.iSubItem);

-	return lpStruct;

-}

-

-void setNMLVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMLVCUSTOMDRAW *lpStruct)

-{

-	if (!NMLVCUSTOMDRAWFc.cached) cacheNMLVCUSTOMDRAWFields(env, lpObject);

-	setNMCUSTOMDRAWFields(env, lpObject, (NMCUSTOMDRAW *)lpStruct);

-	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.clrText, (jint)lpStruct->clrText);

-	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.clrTextBk, (jint)lpStruct->clrTextBk);

-	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.iSubItem, (jint)lpStruct->iSubItem);

-}

-#endif

-

-#ifndef NO_NMREBARCHEVRON

-typedef struct NMREBARCHEVRON_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID uBand, wID, lParam, left, top, right, bottom, lParamNM;

-} NMREBARCHEVRON_FID_CACHE;

-

-NMREBARCHEVRON_FID_CACHE NMREBARCHEVRONFc;

-

-void cacheNMREBARCHEVRONFields(JNIEnv *env, jobject lpObject)

-{

-	if (NMREBARCHEVRONFc.cached) return;

-	cacheNMHDRFields(env, lpObject);

-	NMREBARCHEVRONFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	NMREBARCHEVRONFc.uBand = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "uBand", "I");

-	NMREBARCHEVRONFc.wID = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "wID", "I");

-	NMREBARCHEVRONFc.lParam = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "lParam", "I");

-	NMREBARCHEVRONFc.left = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "left", "I");

-	NMREBARCHEVRONFc.top = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "top", "I");

-	NMREBARCHEVRONFc.right = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "right", "I");

-	NMREBARCHEVRONFc.bottom = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "bottom", "I");

-	NMREBARCHEVRONFc.lParamNM = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "lParamNM", "I");

-	NMREBARCHEVRONFc.cached = 1;

-}

-

-NMREBARCHEVRON *getNMREBARCHEVRONFields(JNIEnv *env, jobject lpObject, NMREBARCHEVRON *lpStruct)

-{

-	if (!NMREBARCHEVRONFc.cached) cacheNMREBARCHEVRONFields(env, lpObject);

-	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);

-	lpStruct->uBand = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.uBand);

-	lpStruct->wID = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.wID);

-	lpStruct->lParam = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.lParam);

-	lpStruct->rc.left = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.left);

-	lpStruct->rc.top = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.top);

-	lpStruct->rc.right = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.right);

-	lpStruct->rc.bottom = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.bottom);

-	lpStruct->lParamNM = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.lParamNM);

-	return lpStruct;

-}

-

-void setNMREBARCHEVRONFields(JNIEnv *env, jobject lpObject, NMREBARCHEVRON *lpStruct)

-{

-	if (!NMREBARCHEVRONFc.cached) cacheNMREBARCHEVRONFields(env, lpObject);

-	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);

-	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.uBand, (jint)lpStruct->uBand);

-	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.wID, (jint)lpStruct->wID);

-	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.lParam, (jint)lpStruct->lParam);

-	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.left, (jint)lpStruct->rc.left);

-	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.top, (jint)lpStruct->rc.top);

-	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.right, (jint)lpStruct->rc.right);

-	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.bottom, (jint)lpStruct->rc.bottom);

-	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.lParamNM, (jint)lpStruct->lParamNM);

-}

-#endif

-

-#ifndef NO_NMTOOLBAR

-typedef struct NMTOOLBAR_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID iItem, iBitmap, idCommand, fsState, fsStyle, dwData, iString, cchText, pszText, left, top, right, bottom;

-} NMTOOLBAR_FID_CACHE;

-

-NMTOOLBAR_FID_CACHE NMTOOLBARFc;

-

-void cacheNMTOOLBARFields(JNIEnv *env, jobject lpObject)

-{

-	if (NMTOOLBARFc.cached) return;

-	cacheNMHDRFields(env, lpObject);

-	NMTOOLBARFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	NMTOOLBARFc.iItem = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "iItem", "I");

-	NMTOOLBARFc.iBitmap = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "iBitmap", "I");

-	NMTOOLBARFc.idCommand = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "idCommand", "I");

-	NMTOOLBARFc.fsState = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "fsState", "B");

-	NMTOOLBARFc.fsStyle = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "fsStyle", "B");

-	NMTOOLBARFc.dwData = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "dwData", "I");

-	NMTOOLBARFc.iString = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "iString", "I");

-	NMTOOLBARFc.cchText = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "cchText", "I");

-	NMTOOLBARFc.pszText = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "pszText", "I");

-	NMTOOLBARFc.left = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "left", "I");

-	NMTOOLBARFc.top = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "top", "I");

-	NMTOOLBARFc.right = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "right", "I");

-	NMTOOLBARFc.bottom = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "bottom", "I");

-	NMTOOLBARFc.cached = 1;

-}

-

-NMTOOLBAR *getNMTOOLBARFields(JNIEnv *env, jobject lpObject, NMTOOLBAR *lpStruct)

-{

-	if (!NMTOOLBARFc.cached) cacheNMTOOLBARFields(env, lpObject);

-	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);

-	lpStruct->iItem = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.iItem);

-	lpStruct->tbButton.iBitmap = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.iBitmap);

-	lpStruct->tbButton.idCommand = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.idCommand);

-	lpStruct->tbButton.fsState = (*env)->GetByteField(env, lpObject, NMTOOLBARFc.fsState);

-	lpStruct->tbButton.fsStyle = (*env)->GetByteField(env, lpObject, NMTOOLBARFc.fsStyle);

-	lpStruct->tbButton.dwData = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.dwData);

-	lpStruct->tbButton.iString = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.iString);

-	lpStruct->cchText = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.cchText);

-	lpStruct->pszText = (LPTSTR)(*env)->GetIntField(env, lpObject, NMTOOLBARFc.pszText);

-#ifndef _WIN32_WCE

-	lpStruct->rcButton.left = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.left);

-#endif

-#ifndef _WIN32_WCE

-	lpStruct->rcButton.top = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.top);

-#endif

-#ifndef _WIN32_WCE

-	lpStruct->rcButton.right = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.right);

-#endif

-#ifndef _WIN32_WCE

-	lpStruct->rcButton.bottom = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.bottom);

-#endif

-	return lpStruct;

-}

-

-void setNMTOOLBARFields(JNIEnv *env, jobject lpObject, NMTOOLBAR *lpStruct)

-{

-	if (!NMTOOLBARFc.cached) cacheNMTOOLBARFields(env, lpObject);

-	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);

-	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.iItem, (jint)lpStruct->iItem);

-	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.iBitmap, (jint)lpStruct->tbButton.iBitmap);

-	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.idCommand, (jint)lpStruct->tbButton.idCommand);

-	(*env)->SetByteField(env, lpObject, NMTOOLBARFc.fsState, (jbyte)lpStruct->tbButton.fsState);

-	(*env)->SetByteField(env, lpObject, NMTOOLBARFc.fsStyle, (jbyte)lpStruct->tbButton.fsStyle);

-	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.dwData, (jint)lpStruct->tbButton.dwData);

-	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.iString, (jint)lpStruct->tbButton.iString);

-	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.cchText, (jint)lpStruct->cchText);

-	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.pszText, (jint)lpStruct->pszText);

-#ifndef _WIN32_WCE

-	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.left, (jint)lpStruct->rcButton.left);

-#endif

-#ifndef _WIN32_WCE

-	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.top, (jint)lpStruct->rcButton.top);

-#endif

-#ifndef _WIN32_WCE

-	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.right, (jint)lpStruct->rcButton.right);

-#endif

-#ifndef _WIN32_WCE

-	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.bottom, (jint)lpStruct->rcButton.bottom);

-#endif

-}

-#endif

-

-#ifndef NO_NMTTDISPINFO

-typedef struct NMTTDISPINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID lpszText, hinst, uFlags, lParam;

-} NMTTDISPINFO_FID_CACHE;

-

-NMTTDISPINFO_FID_CACHE NMTTDISPINFOFc;

-

-void cacheNMTTDISPINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (NMTTDISPINFOFc.cached) return;

-	cacheNMHDRFields(env, lpObject);

-	NMTTDISPINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	NMTTDISPINFOFc.lpszText = (*env)->GetFieldID(env, NMTTDISPINFOFc.clazz, "lpszText", "I");

-	NMTTDISPINFOFc.hinst = (*env)->GetFieldID(env, NMTTDISPINFOFc.clazz, "hinst", "I");

-	NMTTDISPINFOFc.uFlags = (*env)->GetFieldID(env, NMTTDISPINFOFc.clazz, "uFlags", "I");

-	NMTTDISPINFOFc.lParam = (*env)->GetFieldID(env, NMTTDISPINFOFc.clazz, "lParam", "I");

-	NMTTDISPINFOFc.cached = 1;

-}

-

-NMTTDISPINFO *getNMTTDISPINFOFields(JNIEnv *env, jobject lpObject, NMTTDISPINFO *lpStruct)

-{

-	if (!NMTTDISPINFOFc.cached) cacheNMTTDISPINFOFields(env, lpObject);

-	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);

-	lpStruct->lpszText = (void *)(*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.lpszText);

-	lpStruct->hinst = (HINSTANCE)(*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.hinst);

-	lpStruct->uFlags = (*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.uFlags);

-	lpStruct->lParam = (*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.lParam);

-	return lpStruct;

-}

-

-void setNMTTDISPINFOFields(JNIEnv *env, jobject lpObject, NMTTDISPINFO *lpStruct)

-{

-	if (!NMTTDISPINFOFc.cached) cacheNMTTDISPINFOFields(env, lpObject);

-	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);

-	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.lpszText, (jint)lpStruct->lpszText);

-	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.hinst, (jint)lpStruct->hinst);

-	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.uFlags, (jint)lpStruct->uFlags);

-	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.lParam, (jint)lpStruct->lParam);

-}

-#endif

-

-#ifndef NO_NMTTDISPINFOA

-typedef struct NMTTDISPINFOA_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID szText;

-} NMTTDISPINFOA_FID_CACHE;

-

-NMTTDISPINFOA_FID_CACHE NMTTDISPINFOAFc;

-

-void cacheNMTTDISPINFOAFields(JNIEnv *env, jobject lpObject)

-{

-	if (NMTTDISPINFOAFc.cached) return;

-	cacheNMTTDISPINFOFields(env, lpObject);

-	NMTTDISPINFOAFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	NMTTDISPINFOAFc.szText = (*env)->GetFieldID(env, NMTTDISPINFOAFc.clazz, "szText", "[B");

-	NMTTDISPINFOAFc.cached = 1;

-}

-

-NMTTDISPINFOA *getNMTTDISPINFOAFields(JNIEnv *env, jobject lpObject, NMTTDISPINFOA *lpStruct)

-{

-	if (!NMTTDISPINFOAFc.cached) cacheNMTTDISPINFOAFields(env, lpObject);

-	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);

-	lpStruct->lpszText = (void *)(*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.lpszText);

-	lpStruct->hinst = (HINSTANCE)(*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.hinst);

-	lpStruct->uFlags = (*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.uFlags);

-	lpStruct->lParam = (*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.lParam);

-	{

-	jbyteArray lpObject1 = (*env)->GetObjectField(env, lpObject, NMTTDISPINFOAFc.szText);

-	(*env)->GetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szText), (void *)lpStruct->szText);

-	}

-	return lpStruct;

-}

-

-void setNMTTDISPINFOAFields(JNIEnv *env, jobject lpObject, NMTTDISPINFOA *lpStruct)

-{

-	if (!NMTTDISPINFOAFc.cached) cacheNMTTDISPINFOAFields(env, lpObject);

-	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);

-	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.lpszText, (jint)lpStruct->lpszText);

-	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.hinst, (jint)lpStruct->hinst);

-	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.uFlags, (jint)lpStruct->uFlags);

-	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.lParam, (jint)lpStruct->lParam);

-	{

-	jbyteArray lpObject1 = (*env)->GetObjectField(env, lpObject, NMTTDISPINFOAFc.szText);

-	(*env)->SetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szText), (void *)lpStruct->szText);

-	}

-}

-#endif

-

-#ifndef NO_NMTTDISPINFOW

-typedef struct NMTTDISPINFOW_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID szText;

-} NMTTDISPINFOW_FID_CACHE;

-

-NMTTDISPINFOW_FID_CACHE NMTTDISPINFOWFc;

-

-void cacheNMTTDISPINFOWFields(JNIEnv *env, jobject lpObject)

-{

-	if (NMTTDISPINFOWFc.cached) return;

-	cacheNMTTDISPINFOFields(env, lpObject);

-	NMTTDISPINFOWFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	NMTTDISPINFOWFc.szText = (*env)->GetFieldID(env, NMTTDISPINFOWFc.clazz, "szText", "[C");

-	NMTTDISPINFOWFc.cached = 1;

-}

-

-NMTTDISPINFOW *getNMTTDISPINFOWFields(JNIEnv *env, jobject lpObject, NMTTDISPINFOW *lpStruct)

-{

-	if (!NMTTDISPINFOWFc.cached) cacheNMTTDISPINFOWFields(env, lpObject);

-	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);

-	lpStruct->lpszText = (void *)(*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.lpszText);

-	lpStruct->hinst = (HINSTANCE)(*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.hinst);

-	lpStruct->uFlags = (*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.uFlags);

-	lpStruct->lParam = (*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.lParam);

-	{

-	jcharArray lpObject1 = (*env)->GetObjectField(env, lpObject, NMTTDISPINFOWFc.szText);

-	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szText) / 2, (void *)lpStruct->szText);

-	}

-	return lpStruct;

-}

-

-void setNMTTDISPINFOWFields(JNIEnv *env, jobject lpObject, NMTTDISPINFOW *lpStruct)

-{

-	if (!NMTTDISPINFOWFc.cached) cacheNMTTDISPINFOWFields(env, lpObject);

-	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);

-	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.lpszText, (jint)lpStruct->lpszText);

-	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.hinst, (jint)lpStruct->hinst);

-	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.uFlags, (jint)lpStruct->uFlags);

-	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.lParam, (jint)lpStruct->lParam);

-	{

-	jcharArray lpObject1 = (*env)->GetObjectField(env, lpObject, NMTTDISPINFOWFc.szText);

-	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szText) / 2, (void *)lpStruct->szText);

-	}

-}

-#endif

-

-#ifndef NO_NMTVCUSTOMDRAW

-typedef struct NMTVCUSTOMDRAW_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID clrText, clrTextBk, iLevel;

-} NMTVCUSTOMDRAW_FID_CACHE;

-

-NMTVCUSTOMDRAW_FID_CACHE NMTVCUSTOMDRAWFc;

-

-void cacheNMTVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject)

-{

-	if (NMTVCUSTOMDRAWFc.cached) return;

-	cacheNMCUSTOMDRAWFields(env, lpObject);

-	NMTVCUSTOMDRAWFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	NMTVCUSTOMDRAWFc.clrText = (*env)->GetFieldID(env, NMTVCUSTOMDRAWFc.clazz, "clrText", "I");

-	NMTVCUSTOMDRAWFc.clrTextBk = (*env)->GetFieldID(env, NMTVCUSTOMDRAWFc.clazz, "clrTextBk", "I");

-	NMTVCUSTOMDRAWFc.iLevel = (*env)->GetFieldID(env, NMTVCUSTOMDRAWFc.clazz, "iLevel", "I");

-	NMTVCUSTOMDRAWFc.cached = 1;

-}

-

-NMTVCUSTOMDRAW *getNMTVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMTVCUSTOMDRAW *lpStruct)

-{

-	if (!NMTVCUSTOMDRAWFc.cached) cacheNMTVCUSTOMDRAWFields(env, lpObject);

-	getNMCUSTOMDRAWFields(env, lpObject, (NMCUSTOMDRAW *)lpStruct);

-	lpStruct->clrText = (*env)->GetIntField(env, lpObject, NMTVCUSTOMDRAWFc.clrText);

-	lpStruct->clrTextBk = (*env)->GetIntField(env, lpObject, NMTVCUSTOMDRAWFc.clrTextBk);

-#ifndef _WIN32_WCE

-	lpStruct->iLevel = (*env)->GetIntField(env, lpObject, NMTVCUSTOMDRAWFc.iLevel);

-#endif

-	return lpStruct;

-}

-

-void setNMTVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMTVCUSTOMDRAW *lpStruct)

-{

-	if (!NMTVCUSTOMDRAWFc.cached) cacheNMTVCUSTOMDRAWFields(env, lpObject);

-	setNMCUSTOMDRAWFields(env, lpObject, (NMCUSTOMDRAW *)lpStruct);

-	(*env)->SetIntField(env, lpObject, NMTVCUSTOMDRAWFc.clrText, (jint)lpStruct->clrText);

-	(*env)->SetIntField(env, lpObject, NMTVCUSTOMDRAWFc.clrTextBk, (jint)lpStruct->clrTextBk);

-#ifndef _WIN32_WCE

-	(*env)->SetIntField(env, lpObject, NMTVCUSTOMDRAWFc.iLevel, (jint)lpStruct->iLevel);

-#endif

-}

-#endif

-

-#ifndef NO_NONCLIENTMETRICS

-typedef struct NONCLIENTMETRICS_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, iBorderWidth, iScrollWidth, iScrollHeight, iCaptionWidth, iCaptionHeight, iSmCaptionWidth, iSmCaptionHeight, iMenuWidth, iMenuHeight;

-} NONCLIENTMETRICS_FID_CACHE;

-

-NONCLIENTMETRICS_FID_CACHE NONCLIENTMETRICSFc;

-

-void cacheNONCLIENTMETRICSFields(JNIEnv *env, jobject lpObject)

-{

-	if (NONCLIENTMETRICSFc.cached) return;

-	NONCLIENTMETRICSFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	NONCLIENTMETRICSFc.cbSize = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "cbSize", "I");

-	NONCLIENTMETRICSFc.iBorderWidth = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iBorderWidth", "I");

-	NONCLIENTMETRICSFc.iScrollWidth = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iScrollWidth", "I");

-	NONCLIENTMETRICSFc.iScrollHeight = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iScrollHeight", "I");

-	NONCLIENTMETRICSFc.iCaptionWidth = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iCaptionWidth", "I");

-	NONCLIENTMETRICSFc.iCaptionHeight = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iCaptionHeight", "I");

-	NONCLIENTMETRICSFc.iSmCaptionWidth = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iSmCaptionWidth", "I");

-	NONCLIENTMETRICSFc.iSmCaptionHeight = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iSmCaptionHeight", "I");

-	NONCLIENTMETRICSFc.iMenuWidth = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iMenuWidth", "I");

-	NONCLIENTMETRICSFc.iMenuHeight = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iMenuHeight", "I");

-	NONCLIENTMETRICSFc.cached = 1;

-}

-

-NONCLIENTMETRICS *getNONCLIENTMETRICSFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICS *lpStruct)

-{

-	if (!NONCLIENTMETRICSFc.cached) cacheNONCLIENTMETRICSFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.cbSize);

-	lpStruct->iBorderWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iBorderWidth);

-	lpStruct->iScrollWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollWidth);

-	lpStruct->iScrollHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollHeight);

-	lpStruct->iCaptionWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionWidth);

-	lpStruct->iCaptionHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionHeight);

-	lpStruct->iSmCaptionWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionWidth);

-	lpStruct->iSmCaptionHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionHeight);

-	lpStruct->iMenuWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuWidth);

-	lpStruct->iMenuHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuHeight);

-	return lpStruct;

-}

-

-void setNONCLIENTMETRICSFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICS *lpStruct)

-{

-	if (!NONCLIENTMETRICSFc.cached) cacheNONCLIENTMETRICSFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iBorderWidth, (jint)lpStruct->iBorderWidth);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollWidth, (jint)lpStruct->iScrollWidth);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollHeight, (jint)lpStruct->iScrollHeight);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionWidth, (jint)lpStruct->iCaptionWidth);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionHeight, (jint)lpStruct->iCaptionHeight);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionWidth, (jint)lpStruct->iSmCaptionWidth);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionHeight, (jint)lpStruct->iSmCaptionHeight);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuWidth, (jint)lpStruct->iMenuWidth);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuHeight, (jint)lpStruct->iMenuHeight);

-}

-#endif

-

-#ifndef NO_NONCLIENTMETRICSA

-typedef struct NONCLIENTMETRICSA_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID lfCaptionFont, lfSmCaptionFont, lfMenuFont, lfStatusFont, lfMessageFont;

-} NONCLIENTMETRICSA_FID_CACHE;

-

-NONCLIENTMETRICSA_FID_CACHE NONCLIENTMETRICSAFc;

-

-void cacheNONCLIENTMETRICSAFields(JNIEnv *env, jobject lpObject)

-{

-	if (NONCLIENTMETRICSAFc.cached) return;

-	cacheNONCLIENTMETRICSFields(env, lpObject);

-	NONCLIENTMETRICSAFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	NONCLIENTMETRICSAFc.lfCaptionFont = (*env)->GetFieldID(env, NONCLIENTMETRICSAFc.clazz, "lfCaptionFont", "Lorg/eclipse/swt/internal/win32/LOGFONTA;");

-	NONCLIENTMETRICSAFc.lfSmCaptionFont = (*env)->GetFieldID(env, NONCLIENTMETRICSAFc.clazz, "lfSmCaptionFont", "Lorg/eclipse/swt/internal/win32/LOGFONTA;");

-	NONCLIENTMETRICSAFc.lfMenuFont = (*env)->GetFieldID(env, NONCLIENTMETRICSAFc.clazz, "lfMenuFont", "Lorg/eclipse/swt/internal/win32/LOGFONTA;");

-	NONCLIENTMETRICSAFc.lfStatusFont = (*env)->GetFieldID(env, NONCLIENTMETRICSAFc.clazz, "lfStatusFont", "Lorg/eclipse/swt/internal/win32/LOGFONTA;");

-	NONCLIENTMETRICSAFc.lfMessageFont = (*env)->GetFieldID(env, NONCLIENTMETRICSAFc.clazz, "lfMessageFont", "Lorg/eclipse/swt/internal/win32/LOGFONTA;");

-	NONCLIENTMETRICSAFc.cached = 1;

-}

-

-NONCLIENTMETRICSA *getNONCLIENTMETRICSAFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICSA *lpStruct)

-{

-	if (!NONCLIENTMETRICSAFc.cached) cacheNONCLIENTMETRICSAFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.cbSize);

-	lpStruct->iBorderWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iBorderWidth);

-	lpStruct->iScrollWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollWidth);

-	lpStruct->iScrollHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollHeight);

-	lpStruct->iCaptionWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionWidth);

-	lpStruct->iCaptionHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionHeight);

-	lpStruct->iSmCaptionWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionWidth);

-	lpStruct->iSmCaptionHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionHeight);

-	lpStruct->iMenuWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuWidth);

-	lpStruct->iMenuHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuHeight);

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfCaptionFont);

-	getLOGFONTAFields(env, lpObject1, &lpStruct->lfCaptionFont);

-	}

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfSmCaptionFont);

-	getLOGFONTAFields(env, lpObject1, &lpStruct->lfSmCaptionFont);

-	}

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfMenuFont);

-	getLOGFONTAFields(env, lpObject1, &lpStruct->lfMenuFont);

-	}

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfStatusFont);

-	getLOGFONTAFields(env, lpObject1, &lpStruct->lfStatusFont);

-	}

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfMessageFont);

-	getLOGFONTAFields(env, lpObject1, &lpStruct->lfMessageFont);

-	}

-	return lpStruct;

-}

-

-void setNONCLIENTMETRICSAFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICSA *lpStruct)

-{

-	if (!NONCLIENTMETRICSAFc.cached) cacheNONCLIENTMETRICSAFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iBorderWidth, (jint)lpStruct->iBorderWidth);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollWidth, (jint)lpStruct->iScrollWidth);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollHeight, (jint)lpStruct->iScrollHeight);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionWidth, (jint)lpStruct->iCaptionWidth);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionHeight, (jint)lpStruct->iCaptionHeight);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionWidth, (jint)lpStruct->iSmCaptionWidth);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionHeight, (jint)lpStruct->iSmCaptionHeight);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuWidth, (jint)lpStruct->iMenuWidth);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuHeight, (jint)lpStruct->iMenuHeight);

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfCaptionFont);

-	setLOGFONTAFields(env, lpObject1, &lpStruct->lfCaptionFont);

-	}

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfSmCaptionFont);

-	setLOGFONTAFields(env, lpObject1, &lpStruct->lfSmCaptionFont);

-	}

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfMenuFont);

-	setLOGFONTAFields(env, lpObject1, &lpStruct->lfMenuFont);

-	}

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfStatusFont);

-	setLOGFONTAFields(env, lpObject1, &lpStruct->lfStatusFont);

-	}

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfMessageFont);

-	setLOGFONTAFields(env, lpObject1, &lpStruct->lfMessageFont);

-	}

-}

-#endif

-

-#ifndef NO_NONCLIENTMETRICSW

-typedef struct NONCLIENTMETRICSW_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID lfCaptionFont, lfSmCaptionFont, lfMenuFont, lfStatusFont, lfMessageFont;

-} NONCLIENTMETRICSW_FID_CACHE;

-

-NONCLIENTMETRICSW_FID_CACHE NONCLIENTMETRICSWFc;

-

-void cacheNONCLIENTMETRICSWFields(JNIEnv *env, jobject lpObject)

-{

-	if (NONCLIENTMETRICSWFc.cached) return;

-	cacheNONCLIENTMETRICSFields(env, lpObject);

-	NONCLIENTMETRICSWFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	NONCLIENTMETRICSWFc.lfCaptionFont = (*env)->GetFieldID(env, NONCLIENTMETRICSWFc.clazz, "lfCaptionFont", "Lorg/eclipse/swt/internal/win32/LOGFONTW;");

-	NONCLIENTMETRICSWFc.lfSmCaptionFont = (*env)->GetFieldID(env, NONCLIENTMETRICSWFc.clazz, "lfSmCaptionFont", "Lorg/eclipse/swt/internal/win32/LOGFONTW;");

-	NONCLIENTMETRICSWFc.lfMenuFont = (*env)->GetFieldID(env, NONCLIENTMETRICSWFc.clazz, "lfMenuFont", "Lorg/eclipse/swt/internal/win32/LOGFONTW;");

-	NONCLIENTMETRICSWFc.lfStatusFont = (*env)->GetFieldID(env, NONCLIENTMETRICSWFc.clazz, "lfStatusFont", "Lorg/eclipse/swt/internal/win32/LOGFONTW;");

-	NONCLIENTMETRICSWFc.lfMessageFont = (*env)->GetFieldID(env, NONCLIENTMETRICSWFc.clazz, "lfMessageFont", "Lorg/eclipse/swt/internal/win32/LOGFONTW;");

-	NONCLIENTMETRICSWFc.cached = 1;

-}

-

-NONCLIENTMETRICSW *getNONCLIENTMETRICSWFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICSW *lpStruct)

-{

-	if (!NONCLIENTMETRICSWFc.cached) cacheNONCLIENTMETRICSWFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.cbSize);

-	lpStruct->iBorderWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iBorderWidth);

-	lpStruct->iScrollWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollWidth);

-	lpStruct->iScrollHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollHeight);

-	lpStruct->iCaptionWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionWidth);

-	lpStruct->iCaptionHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionHeight);

-	lpStruct->iSmCaptionWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionWidth);

-	lpStruct->iSmCaptionHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionHeight);

-	lpStruct->iMenuWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuWidth);

-	lpStruct->iMenuHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuHeight);

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfCaptionFont);

-	getLOGFONTWFields(env, lpObject1, &lpStruct->lfCaptionFont);

-	}

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfSmCaptionFont);

-	getLOGFONTWFields(env, lpObject1, &lpStruct->lfSmCaptionFont);

-	}

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfMenuFont);

-	getLOGFONTWFields(env, lpObject1, &lpStruct->lfMenuFont);

-	}

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfStatusFont);

-	getLOGFONTWFields(env, lpObject1, &lpStruct->lfStatusFont);

-	}

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfMessageFont);

-	getLOGFONTWFields(env, lpObject1, &lpStruct->lfMessageFont);

-	}

-	return lpStruct;

-}

-

-void setNONCLIENTMETRICSWFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICSW *lpStruct)

-{

-	if (!NONCLIENTMETRICSWFc.cached) cacheNONCLIENTMETRICSWFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iBorderWidth, (jint)lpStruct->iBorderWidth);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollWidth, (jint)lpStruct->iScrollWidth);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollHeight, (jint)lpStruct->iScrollHeight);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionWidth, (jint)lpStruct->iCaptionWidth);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionHeight, (jint)lpStruct->iCaptionHeight);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionWidth, (jint)lpStruct->iSmCaptionWidth);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionHeight, (jint)lpStruct->iSmCaptionHeight);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuWidth, (jint)lpStruct->iMenuWidth);

-	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuHeight, (jint)lpStruct->iMenuHeight);

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfCaptionFont);

-	setLOGFONTWFields(env, lpObject1, &lpStruct->lfCaptionFont);

-	}

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfSmCaptionFont);

-	setLOGFONTWFields(env, lpObject1, &lpStruct->lfSmCaptionFont);

-	}

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfMenuFont);

-	setLOGFONTWFields(env, lpObject1, &lpStruct->lfMenuFont);

-	}

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfStatusFont);

-	setLOGFONTWFields(env, lpObject1, &lpStruct->lfStatusFont);

-	}

-	{

-	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfMessageFont);

-	setLOGFONTWFields(env, lpObject1, &lpStruct->lfMessageFont);

-	}

-}

-#endif

-

-#ifndef NO_OPENFILENAME

-typedef struct OPENFILENAME_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID lStructSize, hwndOwner, hInstance, lpstrFilter, lpstrCustomFilter, nMaxCustFilter, nFilterIndex, lpstrFile, nMaxFile, lpstrFileTitle, nMaxFileTitle, lpstrInitialDir, lpstrTitle, Flags, nFileOffset, nFileExtension, lpstrDefExt, lCustData, lpfnHook, lpTemplateName;

-} OPENFILENAME_FID_CACHE;

-

-OPENFILENAME_FID_CACHE OPENFILENAMEFc;

-

-void cacheOPENFILENAMEFields(JNIEnv *env, jobject lpObject)

-{

-	if (OPENFILENAMEFc.cached) return;

-	OPENFILENAMEFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	OPENFILENAMEFc.lStructSize = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lStructSize", "I");

-	OPENFILENAMEFc.hwndOwner = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "hwndOwner", "I");

-	OPENFILENAMEFc.hInstance = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "hInstance", "I");

-	OPENFILENAMEFc.lpstrFilter = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrFilter", "I");

-	OPENFILENAMEFc.lpstrCustomFilter = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrCustomFilter", "I");

-	OPENFILENAMEFc.nMaxCustFilter = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nMaxCustFilter", "I");

-	OPENFILENAMEFc.nFilterIndex = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nFilterIndex", "I");

-	OPENFILENAMEFc.lpstrFile = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrFile", "I");

-	OPENFILENAMEFc.nMaxFile = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nMaxFile", "I");

-	OPENFILENAMEFc.lpstrFileTitle = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrFileTitle", "I");

-	OPENFILENAMEFc.nMaxFileTitle = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nMaxFileTitle", "I");

-	OPENFILENAMEFc.lpstrInitialDir = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrInitialDir", "I");

-	OPENFILENAMEFc.lpstrTitle = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrTitle", "I");

-	OPENFILENAMEFc.Flags = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "Flags", "I");

-	OPENFILENAMEFc.nFileOffset = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nFileOffset", "S");

-	OPENFILENAMEFc.nFileExtension = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nFileExtension", "S");

-	OPENFILENAMEFc.lpstrDefExt = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrDefExt", "I");

-	OPENFILENAMEFc.lCustData = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lCustData", "I");

-	OPENFILENAMEFc.lpfnHook = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpfnHook", "I");

-	OPENFILENAMEFc.lpTemplateName = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpTemplateName", "I");

-	OPENFILENAMEFc.cached = 1;

-}

-

-OPENFILENAME *getOPENFILENAMEFields(JNIEnv *env, jobject lpObject, OPENFILENAME *lpStruct)

-{

-	if (!OPENFILENAMEFc.cached) cacheOPENFILENAMEFields(env, lpObject);

-	lpStruct->lStructSize = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lStructSize);

-	lpStruct->hwndOwner = (HWND)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.hwndOwner);

-	lpStruct->hInstance = (HINSTANCE)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.hInstance);

-	lpStruct->lpstrFilter = (LPCTSTR)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpstrFilter);

-	lpStruct->lpstrCustomFilter = (LPTSTR)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpstrCustomFilter);

-	lpStruct->nMaxCustFilter = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.nMaxCustFilter);

-	lpStruct->nFilterIndex = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.nFilterIndex);

-	lpStruct->lpstrFile = (LPTSTR)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpstrFile);

-	lpStruct->nMaxFile = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.nMaxFile);

-	lpStruct->lpstrFileTitle = (LPTSTR)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpstrFileTitle);

-	lpStruct->nMaxFileTitle = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.nMaxFileTitle);

-	lpStruct->lpstrInitialDir = (LPCTSTR)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpstrInitialDir);

-	lpStruct->lpstrTitle = (LPCTSTR)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpstrTitle);

-	lpStruct->Flags = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.Flags);

-	lpStruct->nFileOffset = (*env)->GetShortField(env, lpObject, OPENFILENAMEFc.nFileOffset);

-	lpStruct->nFileExtension = (*env)->GetShortField(env, lpObject, OPENFILENAMEFc.nFileExtension);

-	lpStruct->lpstrDefExt = (LPCTSTR)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpstrDefExt);

-	lpStruct->lCustData = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lCustData);

-	lpStruct->lpfnHook = (LPOFNHOOKPROC)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpfnHook);

-	lpStruct->lpTemplateName = (LPCTSTR)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpTemplateName);

-	return lpStruct;

-}

-

-void setOPENFILENAMEFields(JNIEnv *env, jobject lpObject, OPENFILENAME *lpStruct)

-{

-	if (!OPENFILENAMEFc.cached) cacheOPENFILENAMEFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lStructSize, (jint)lpStruct->lStructSize);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.hwndOwner, (jint)lpStruct->hwndOwner);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.hInstance, (jint)lpStruct->hInstance);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpstrFilter, (jint)lpStruct->lpstrFilter);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpstrCustomFilter, (jint)lpStruct->lpstrCustomFilter);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.nMaxCustFilter, (jint)lpStruct->nMaxCustFilter);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.nFilterIndex, (jint)lpStruct->nFilterIndex);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpstrFile, (jint)lpStruct->lpstrFile);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.nMaxFile, (jint)lpStruct->nMaxFile);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpstrFileTitle, (jint)lpStruct->lpstrFileTitle);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.nMaxFileTitle, (jint)lpStruct->nMaxFileTitle);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpstrInitialDir, (jint)lpStruct->lpstrInitialDir);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpstrTitle, (jint)lpStruct->lpstrTitle);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.Flags, (jint)lpStruct->Flags);

-	(*env)->SetShortField(env, lpObject, OPENFILENAMEFc.nFileOffset, (jshort)lpStruct->nFileOffset);

-	(*env)->SetShortField(env, lpObject, OPENFILENAMEFc.nFileExtension, (jshort)lpStruct->nFileExtension);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpstrDefExt, (jint)lpStruct->lpstrDefExt);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lCustData, (jint)lpStruct->lCustData);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpfnHook, (jint)lpStruct->lpfnHook);

-	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpTemplateName, (jint)lpStruct->lpTemplateName);

-}

-#endif

-

-#ifndef NO_OSVERSIONINFO

-typedef struct OSVERSIONINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID dwOSVersionInfoSize, dwMajorVersion, dwMinorVersion, dwBuildNumber, dwPlatformId;

-} OSVERSIONINFO_FID_CACHE;

-

-OSVERSIONINFO_FID_CACHE OSVERSIONINFOFc;

-

-void cacheOSVERSIONINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (OSVERSIONINFOFc.cached) return;

-	OSVERSIONINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	OSVERSIONINFOFc.dwOSVersionInfoSize = (*env)->GetFieldID(env, OSVERSIONINFOFc.clazz, "dwOSVersionInfoSize", "I");

-	OSVERSIONINFOFc.dwMajorVersion = (*env)->GetFieldID(env, OSVERSIONINFOFc.clazz, "dwMajorVersion", "I");

-	OSVERSIONINFOFc.dwMinorVersion = (*env)->GetFieldID(env, OSVERSIONINFOFc.clazz, "dwMinorVersion", "I");

-	OSVERSIONINFOFc.dwBuildNumber = (*env)->GetFieldID(env, OSVERSIONINFOFc.clazz, "dwBuildNumber", "I");

-	OSVERSIONINFOFc.dwPlatformId = (*env)->GetFieldID(env, OSVERSIONINFOFc.clazz, "dwPlatformId", "I");

-	OSVERSIONINFOFc.cached = 1;

-}

-

-OSVERSIONINFO *getOSVERSIONINFOFields(JNIEnv *env, jobject lpObject, OSVERSIONINFO *lpStruct)

-{

-	if (!OSVERSIONINFOFc.cached) cacheOSVERSIONINFOFields(env, lpObject);

-	lpStruct->dwOSVersionInfoSize = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwOSVersionInfoSize);

-	lpStruct->dwMajorVersion = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwMajorVersion);

-	lpStruct->dwMinorVersion = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwMinorVersion);

-	lpStruct->dwBuildNumber = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwBuildNumber);

-	lpStruct->dwPlatformId = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwPlatformId);

-	return lpStruct;

-}

-

-void setOSVERSIONINFOFields(JNIEnv *env, jobject lpObject, OSVERSIONINFO *lpStruct)

-{

-	if (!OSVERSIONINFOFc.cached) cacheOSVERSIONINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwOSVersionInfoSize, (jint)lpStruct->dwOSVersionInfoSize);

-	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwMajorVersion, (jint)lpStruct->dwMajorVersion);

-	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwMinorVersion, (jint)lpStruct->dwMinorVersion);

-	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwBuildNumber, (jint)lpStruct->dwBuildNumber);

-	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwPlatformId, (jint)lpStruct->dwPlatformId);

-}

-#endif

-

-#ifndef NO_OSVERSIONINFOA

-typedef struct OSVERSIONINFOA_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID szCSDVersion;

-} OSVERSIONINFOA_FID_CACHE;

-

-OSVERSIONINFOA_FID_CACHE OSVERSIONINFOAFc;

-

-void cacheOSVERSIONINFOAFields(JNIEnv *env, jobject lpObject)

-{

-	if (OSVERSIONINFOAFc.cached) return;

-	cacheOSVERSIONINFOFields(env, lpObject);

-	OSVERSIONINFOAFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	OSVERSIONINFOAFc.szCSDVersion = (*env)->GetFieldID(env, OSVERSIONINFOAFc.clazz, "szCSDVersion", "[B");

-	OSVERSIONINFOAFc.cached = 1;

-}

-

-OSVERSIONINFOA *getOSVERSIONINFOAFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOA *lpStruct)

-{

-	if (!OSVERSIONINFOAFc.cached) cacheOSVERSIONINFOAFields(env, lpObject);

-	lpStruct->dwOSVersionInfoSize = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwOSVersionInfoSize);

-	lpStruct->dwMajorVersion = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwMajorVersion);

-	lpStruct->dwMinorVersion = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwMinorVersion);

-	lpStruct->dwBuildNumber = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwBuildNumber);

-	lpStruct->dwPlatformId = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwPlatformId);

-	{

-	jbyteArray lpObject1 = (*env)->GetObjectField(env, lpObject, OSVERSIONINFOAFc.szCSDVersion);

-	(*env)->GetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szCSDVersion), (void *)lpStruct->szCSDVersion);

-	}

-	return lpStruct;

-}

-

-void setOSVERSIONINFOAFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOA *lpStruct)

-{

-	if (!OSVERSIONINFOAFc.cached) cacheOSVERSIONINFOAFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwOSVersionInfoSize, (jint)lpStruct->dwOSVersionInfoSize);

-	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwMajorVersion, (jint)lpStruct->dwMajorVersion);

-	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwMinorVersion, (jint)lpStruct->dwMinorVersion);

-	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwBuildNumber, (jint)lpStruct->dwBuildNumber);

-	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwPlatformId, (jint)lpStruct->dwPlatformId);

-	{

-	jbyteArray lpObject1 = (*env)->GetObjectField(env, lpObject, OSVERSIONINFOAFc.szCSDVersion);

-	(*env)->SetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szCSDVersion), (void *)lpStruct->szCSDVersion);

-	}

-}

-#endif

-

-#ifndef NO_OSVERSIONINFOW

-typedef struct OSVERSIONINFOW_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID szCSDVersion;

-} OSVERSIONINFOW_FID_CACHE;

-

-OSVERSIONINFOW_FID_CACHE OSVERSIONINFOWFc;

-

-void cacheOSVERSIONINFOWFields(JNIEnv *env, jobject lpObject)

-{

-	if (OSVERSIONINFOWFc.cached) return;

-	cacheOSVERSIONINFOFields(env, lpObject);

-	OSVERSIONINFOWFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	OSVERSIONINFOWFc.szCSDVersion = (*env)->GetFieldID(env, OSVERSIONINFOWFc.clazz, "szCSDVersion", "[C");

-	OSVERSIONINFOWFc.cached = 1;

-}

-

-OSVERSIONINFOW *getOSVERSIONINFOWFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOW *lpStruct)

-{

-	if (!OSVERSIONINFOWFc.cached) cacheOSVERSIONINFOWFields(env, lpObject);

-	lpStruct->dwOSVersionInfoSize = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwOSVersionInfoSize);

-	lpStruct->dwMajorVersion = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwMajorVersion);

-	lpStruct->dwMinorVersion = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwMinorVersion);

-	lpStruct->dwBuildNumber = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwBuildNumber);

-	lpStruct->dwPlatformId = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwPlatformId);

-	{

-	jcharArray lpObject1 = (*env)->GetObjectField(env, lpObject, OSVERSIONINFOWFc.szCSDVersion);

-	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szCSDVersion) / 2, (void *)lpStruct->szCSDVersion);

-	}

-	return lpStruct;

-}

-

-void setOSVERSIONINFOWFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOW *lpStruct)

-{

-	if (!OSVERSIONINFOWFc.cached) cacheOSVERSIONINFOWFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwOSVersionInfoSize, (jint)lpStruct->dwOSVersionInfoSize);

-	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwMajorVersion, (jint)lpStruct->dwMajorVersion);

-	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwMinorVersion, (jint)lpStruct->dwMinorVersion);

-	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwBuildNumber, (jint)lpStruct->dwBuildNumber);

-	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwPlatformId, (jint)lpStruct->dwPlatformId);

-	{

-	jcharArray lpObject1 = (*env)->GetObjectField(env, lpObject, OSVERSIONINFOWFc.szCSDVersion);

-	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szCSDVersion) / 2, (void *)lpStruct->szCSDVersion);

-	}

-}

-#endif

-

-#ifndef NO_PAINTSTRUCT

-typedef struct PAINTSTRUCT_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID hdc, fErase, left, top, right, bottom, fRestore, fIncUpdate, rgbReserved;

-} PAINTSTRUCT_FID_CACHE;

-

-PAINTSTRUCT_FID_CACHE PAINTSTRUCTFc;

-

-void cachePAINTSTRUCTFields(JNIEnv *env, jobject lpObject)

-{

-	if (PAINTSTRUCTFc.cached) return;

-	PAINTSTRUCTFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	PAINTSTRUCTFc.hdc = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "hdc", "I");

-	PAINTSTRUCTFc.fErase = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "fErase", "Z");

-	PAINTSTRUCTFc.left = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "left", "I");

-	PAINTSTRUCTFc.top = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "top", "I");

-	PAINTSTRUCTFc.right = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "right", "I");

-	PAINTSTRUCTFc.bottom = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "bottom", "I");

-	PAINTSTRUCTFc.fRestore = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "fRestore", "Z");

-	PAINTSTRUCTFc.fIncUpdate = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "fIncUpdate", "Z");

-	PAINTSTRUCTFc.rgbReserved = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "rgbReserved", "[B");

-	PAINTSTRUCTFc.cached = 1;

-}

-

-PAINTSTRUCT *getPAINTSTRUCTFields(JNIEnv *env, jobject lpObject, PAINTSTRUCT *lpStruct)

-{

-	if (!PAINTSTRUCTFc.cached) cachePAINTSTRUCTFields(env, lpObject);

-	lpStruct->hdc = (HDC)(*env)->GetIntField(env, lpObject, PAINTSTRUCTFc.hdc);

-	lpStruct->fErase = (*env)->GetBooleanField(env, lpObject, PAINTSTRUCTFc.fErase);

-	lpStruct->rcPaint.left = (*env)->GetIntField(env, lpObject, PAINTSTRUCTFc.left);

-	lpStruct->rcPaint.top = (*env)->GetIntField(env, lpObject, PAINTSTRUCTFc.top);

-	lpStruct->rcPaint.right = (*env)->GetIntField(env, lpObject, PAINTSTRUCTFc.right);

-	lpStruct->rcPaint.bottom = (*env)->GetIntField(env, lpObject, PAINTSTRUCTFc.bottom);

-	lpStruct->fRestore = (*env)->GetBooleanField(env, lpObject, PAINTSTRUCTFc.fRestore);

-	lpStruct->fIncUpdate = (*env)->GetBooleanField(env, lpObject, PAINTSTRUCTFc.fIncUpdate);

-	{

-	jbyteArray lpObject1 = (*env)->GetObjectField(env, lpObject, PAINTSTRUCTFc.rgbReserved);

-	(*env)->GetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->rgbReserved), (void *)lpStruct->rgbReserved);

-	}

-	return lpStruct;

-}

-

-void setPAINTSTRUCTFields(JNIEnv *env, jobject lpObject, PAINTSTRUCT *lpStruct)

-{

-	if (!PAINTSTRUCTFc.cached) cachePAINTSTRUCTFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, PAINTSTRUCTFc.hdc, (jint)lpStruct->hdc);

-	(*env)->SetBooleanField(env, lpObject, PAINTSTRUCTFc.fErase, (jboolean)lpStruct->fErase);

-	(*env)->SetIntField(env, lpObject, PAINTSTRUCTFc.left, (jint)lpStruct->rcPaint.left);

-	(*env)->SetIntField(env, lpObject, PAINTSTRUCTFc.top, (jint)lpStruct->rcPaint.top);

-	(*env)->SetIntField(env, lpObject, PAINTSTRUCTFc.right, (jint)lpStruct->rcPaint.right);

-	(*env)->SetIntField(env, lpObject, PAINTSTRUCTFc.bottom, (jint)lpStruct->rcPaint.bottom);

-	(*env)->SetBooleanField(env, lpObject, PAINTSTRUCTFc.fRestore, (jboolean)lpStruct->fRestore);

-	(*env)->SetBooleanField(env, lpObject, PAINTSTRUCTFc.fIncUpdate, (jboolean)lpStruct->fIncUpdate);

-	{

-	jbyteArray lpObject1 = (*env)->GetObjectField(env, lpObject, PAINTSTRUCTFc.rgbReserved);

-	(*env)->SetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->rgbReserved), (void *)lpStruct->rgbReserved);

-	}

-}

-#endif

-

-#ifndef NO_POINT

-typedef struct POINT_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID x, y;

-} POINT_FID_CACHE;

-

-POINT_FID_CACHE POINTFc;

-

-void cachePOINTFields(JNIEnv *env, jobject lpObject)

-{

-	if (POINTFc.cached) return;

-	POINTFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	POINTFc.x = (*env)->GetFieldID(env, POINTFc.clazz, "x", "I");

-	POINTFc.y = (*env)->GetFieldID(env, POINTFc.clazz, "y", "I");

-	POINTFc.cached = 1;

-}

-

-POINT *getPOINTFields(JNIEnv *env, jobject lpObject, POINT *lpStruct)

-{

-	if (!POINTFc.cached) cachePOINTFields(env, lpObject);

-	lpStruct->x = (*env)->GetIntField(env, lpObject, POINTFc.x);

-	lpStruct->y = (*env)->GetIntField(env, lpObject, POINTFc.y);

-	return lpStruct;

-}

-

-void setPOINTFields(JNIEnv *env, jobject lpObject, POINT *lpStruct)

-{

-	if (!POINTFc.cached) cachePOINTFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, POINTFc.x, (jint)lpStruct->x);

-	(*env)->SetIntField(env, lpObject, POINTFc.y, (jint)lpStruct->y);

-}

-#endif

-

-#ifndef NO_PRINTDLG

-typedef struct PRINTDLG_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID lStructSize, hwndOwner, hDevMode, hDevNames, hDC, Flags, nFromPage, nToPage, nMinPage, nMaxPage, nCopies, hInstance, lCustData, lpfnPrintHook, lpfnSetupHook, lpPrintTemplateName, lpSetupTemplateName, hPrintTemplate, hSetupTemplate;

-} PRINTDLG_FID_CACHE;

-

-PRINTDLG_FID_CACHE PRINTDLGFc;

-

-void cachePRINTDLGFields(JNIEnv *env, jobject lpObject)

-{

-	if (PRINTDLGFc.cached) return;

-	PRINTDLGFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	PRINTDLGFc.lStructSize = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lStructSize", "I");

-	PRINTDLGFc.hwndOwner = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hwndOwner", "I");

-	PRINTDLGFc.hDevMode = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hDevMode", "I");

-	PRINTDLGFc.hDevNames = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hDevNames", "I");

-	PRINTDLGFc.hDC = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hDC", "I");

-	PRINTDLGFc.Flags = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "Flags", "I");

-	PRINTDLGFc.nFromPage = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "nFromPage", "S");

-	PRINTDLGFc.nToPage = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "nToPage", "S");

-	PRINTDLGFc.nMinPage = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "nMinPage", "S");

-	PRINTDLGFc.nMaxPage = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "nMaxPage", "S");

-	PRINTDLGFc.nCopies = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "nCopies", "S");

-	PRINTDLGFc.hInstance = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hInstance", "I");

-	PRINTDLGFc.lCustData = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lCustData", "I");

-	PRINTDLGFc.lpfnPrintHook = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lpfnPrintHook", "I");

-	PRINTDLGFc.lpfnSetupHook = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lpfnSetupHook", "I");

-	PRINTDLGFc.lpPrintTemplateName = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lpPrintTemplateName", "I");

-	PRINTDLGFc.lpSetupTemplateName = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lpSetupTemplateName", "I");

-	PRINTDLGFc.hPrintTemplate = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hPrintTemplate", "I");

-	PRINTDLGFc.hSetupTemplate = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hSetupTemplate", "I");

-	PRINTDLGFc.cached = 1;

-}

-

-PRINTDLG *getPRINTDLGFields(JNIEnv *env, jobject lpObject, PRINTDLG *lpStruct)

-{

-	if (!PRINTDLGFc.cached) cachePRINTDLGFields(env, lpObject);

-	lpStruct->lStructSize = (*env)->GetIntField(env, lpObject, PRINTDLGFc.lStructSize);

-	lpStruct->hwndOwner = (HWND)(*env)->GetIntField(env, lpObject, PRINTDLGFc.hwndOwner);

-	lpStruct->hDevMode = (HGLOBAL)(*env)->GetIntField(env, lpObject, PRINTDLGFc.hDevMode);

-	lpStruct->hDevNames = (HGLOBAL)(*env)->GetIntField(env, lpObject, PRINTDLGFc.hDevNames);

-	lpStruct->hDC = (HDC)(*env)->GetIntField(env, lpObject, PRINTDLGFc.hDC);

-	lpStruct->Flags = (*env)->GetIntField(env, lpObject, PRINTDLGFc.Flags);

-	lpStruct->nFromPage = (*env)->GetShortField(env, lpObject, PRINTDLGFc.nFromPage);

-	lpStruct->nToPage = (*env)->GetShortField(env, lpObject, PRINTDLGFc.nToPage);

-	lpStruct->nMinPage = (*env)->GetShortField(env, lpObject, PRINTDLGFc.nMinPage);

-	lpStruct->nMaxPage = (*env)->GetShortField(env, lpObject, PRINTDLGFc.nMaxPage);

-	lpStruct->nCopies = (*env)->GetShortField(env, lpObject, PRINTDLGFc.nCopies);

-	lpStruct->hInstance = (HINSTANCE)(*env)->GetIntField(env, lpObject, PRINTDLGFc.hInstance);

-	lpStruct->lCustData = (*env)->GetIntField(env, lpObject, PRINTDLGFc.lCustData);

-	lpStruct->lpfnPrintHook = (LPPRINTHOOKPROC)(*env)->GetIntField(env, lpObject, PRINTDLGFc.lpfnPrintHook);

-	lpStruct->lpfnSetupHook = (LPPRINTHOOKPROC)(*env)->GetIntField(env, lpObject, PRINTDLGFc.lpfnSetupHook);

-	lpStruct->lpPrintTemplateName = (LPCTSTR)(*env)->GetIntField(env, lpObject, PRINTDLGFc.lpPrintTemplateName);

-	lpStruct->lpSetupTemplateName = (LPCTSTR)(*env)->GetIntField(env, lpObject, PRINTDLGFc.lpSetupTemplateName);

-	lpStruct->hPrintTemplate = (HGLOBAL)(*env)->GetIntField(env, lpObject, PRINTDLGFc.hPrintTemplate);

-	lpStruct->hSetupTemplate = (HGLOBAL)(*env)->GetIntField(env, lpObject, PRINTDLGFc.hSetupTemplate);

-	return lpStruct;

-}

-

-void setPRINTDLGFields(JNIEnv *env, jobject lpObject, PRINTDLG *lpStruct)

-{

-	if (!PRINTDLGFc.cached) cachePRINTDLGFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, PRINTDLGFc.lStructSize, (jint)lpStruct->lStructSize);

-	(*env)->SetIntField(env, lpObject, PRINTDLGFc.hwndOwner, (jint)lpStruct->hwndOwner);

-	(*env)->SetIntField(env, lpObject, PRINTDLGFc.hDevMode, (jint)lpStruct->hDevMode);

-	(*env)->SetIntField(env, lpObject, PRINTDLGFc.hDevNames, (jint)lpStruct->hDevNames);

-	(*env)->SetIntField(env, lpObject, PRINTDLGFc.hDC, (jint)lpStruct->hDC);

-	(*env)->SetIntField(env, lpObject, PRINTDLGFc.Flags, (jint)lpStruct->Flags);

-	(*env)->SetShortField(env, lpObject, PRINTDLGFc.nFromPage, (jshort)lpStruct->nFromPage);

-	(*env)->SetShortField(env, lpObject, PRINTDLGFc.nToPage, (jshort)lpStruct->nToPage);

-	(*env)->SetShortField(env, lpObject, PRINTDLGFc.nMinPage, (jshort)lpStruct->nMinPage);

-	(*env)->SetShortField(env, lpObject, PRINTDLGFc.nMaxPage, (jshort)lpStruct->nMaxPage);

-	(*env)->SetShortField(env, lpObject, PRINTDLGFc.nCopies, (jshort)lpStruct->nCopies);

-	(*env)->SetIntField(env, lpObject, PRINTDLGFc.hInstance, (jint)lpStruct->hInstance);

-	(*env)->SetIntField(env, lpObject, PRINTDLGFc.lCustData, (jint)lpStruct->lCustData);

-	(*env)->SetIntField(env, lpObject, PRINTDLGFc.lpfnPrintHook, (jint)lpStruct->lpfnPrintHook);

-	(*env)->SetIntField(env, lpObject, PRINTDLGFc.lpfnSetupHook, (jint)lpStruct->lpfnSetupHook);

-	(*env)->SetIntField(env, lpObject, PRINTDLGFc.lpPrintTemplateName, (jint)lpStruct->lpPrintTemplateName);

-	(*env)->SetIntField(env, lpObject, PRINTDLGFc.lpSetupTemplateName, (jint)lpStruct->lpSetupTemplateName);

-	(*env)->SetIntField(env, lpObject, PRINTDLGFc.hPrintTemplate, (jint)lpStruct->hPrintTemplate);

-	(*env)->SetIntField(env, lpObject, PRINTDLGFc.hSetupTemplate, (jint)lpStruct->hSetupTemplate);

-}

-#endif

-

-#ifndef NO_REBARBANDINFO

-typedef struct REBARBANDINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, fMask, fStyle, clrFore, clrBack, lpText, cch, iImage, hwndChild, cxMinChild, cyMinChild, cx, hbmBack, wID, cyChild, cyMaxChild, cyIntegral, cxIdeal, lParam, cxHeader;

-} REBARBANDINFO_FID_CACHE;

-

-REBARBANDINFO_FID_CACHE REBARBANDINFOFc;

-

-void cacheREBARBANDINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (REBARBANDINFOFc.cached) return;

-	REBARBANDINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	REBARBANDINFOFc.cbSize = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cbSize", "I");

-	REBARBANDINFOFc.fMask = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "fMask", "I");

-	REBARBANDINFOFc.fStyle = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "fStyle", "I");

-	REBARBANDINFOFc.clrFore = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "clrFore", "I");

-	REBARBANDINFOFc.clrBack = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "clrBack", "I");

-	REBARBANDINFOFc.lpText = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "lpText", "I");

-	REBARBANDINFOFc.cch = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cch", "I");

-	REBARBANDINFOFc.iImage = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "iImage", "I");

-	REBARBANDINFOFc.hwndChild = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "hwndChild", "I");

-	REBARBANDINFOFc.cxMinChild = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cxMinChild", "I");

-	REBARBANDINFOFc.cyMinChild = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cyMinChild", "I");

-	REBARBANDINFOFc.cx = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cx", "I");

-	REBARBANDINFOFc.hbmBack = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "hbmBack", "I");

-	REBARBANDINFOFc.wID = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "wID", "I");

-	REBARBANDINFOFc.cyChild = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cyChild", "I");

-	REBARBANDINFOFc.cyMaxChild = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cyMaxChild", "I");

-	REBARBANDINFOFc.cyIntegral = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cyIntegral", "I");

-	REBARBANDINFOFc.cxIdeal = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cxIdeal", "I");

-	REBARBANDINFOFc.lParam = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "lParam", "I");

-	REBARBANDINFOFc.cxHeader = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cxHeader", "I");

-	REBARBANDINFOFc.cached = 1;

-}

-

-REBARBANDINFO *getREBARBANDINFOFields(JNIEnv *env, jobject lpObject, REBARBANDINFO *lpStruct)

-{

-	if (!REBARBANDINFOFc.cached) cacheREBARBANDINFOFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cbSize);

-	lpStruct->fMask = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.fMask);

-	lpStruct->fStyle = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.fStyle);

-	lpStruct->clrFore = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.clrFore);

-	lpStruct->clrBack = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.clrBack);

-	lpStruct->lpText = (LPTSTR)(*env)->GetIntField(env, lpObject, REBARBANDINFOFc.lpText);

-	lpStruct->cch = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cch);

-	lpStruct->iImage = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.iImage);

-	lpStruct->hwndChild = (HWND)(*env)->GetIntField(env, lpObject, REBARBANDINFOFc.hwndChild);

-	lpStruct->cxMinChild = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cxMinChild);

-	lpStruct->cyMinChild = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cyMinChild);

-	lpStruct->cx = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cx);

-	lpStruct->hbmBack = (HBITMAP)(*env)->GetIntField(env, lpObject, REBARBANDINFOFc.hbmBack);

-	lpStruct->wID = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.wID);

-	lpStruct->cyChild = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cyChild);

-	lpStruct->cyMaxChild = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cyMaxChild);

-	lpStruct->cyIntegral = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cyIntegral);

-	lpStruct->cxIdeal = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cxIdeal);

-	lpStruct->lParam = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.lParam);

-#ifndef _WIN32_WCE

-	lpStruct->cxHeader = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cxHeader);

-#endif

-	return lpStruct;

-}

-

-void setREBARBANDINFOFields(JNIEnv *env, jobject lpObject, REBARBANDINFO *lpStruct)

-{

-	if (!REBARBANDINFOFc.cached) cacheREBARBANDINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.fMask, (jint)lpStruct->fMask);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.fStyle, (jint)lpStruct->fStyle);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.clrFore, (jint)lpStruct->clrFore);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.clrBack, (jint)lpStruct->clrBack);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.lpText, (jint)lpStruct->lpText);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cch, (jint)lpStruct->cch);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.iImage, (jint)lpStruct->iImage);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.hwndChild, (jint)lpStruct->hwndChild);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cxMinChild, (jint)lpStruct->cxMinChild);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cyMinChild, (jint)lpStruct->cyMinChild);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cx, (jint)lpStruct->cx);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.hbmBack, (jint)lpStruct->hbmBack);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.wID, (jint)lpStruct->wID);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cyChild, (jint)lpStruct->cyChild);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cyMaxChild, (jint)lpStruct->cyMaxChild);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cyIntegral, (jint)lpStruct->cyIntegral);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cxIdeal, (jint)lpStruct->cxIdeal);

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.lParam, (jint)lpStruct->lParam);

-#ifndef _WIN32_WCE

-	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cxHeader, (jint)lpStruct->cxHeader);

-#endif

-}

-#endif

-

-#ifndef NO_RECT

-typedef struct RECT_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID left, top, right, bottom;

-} RECT_FID_CACHE;

-

-RECT_FID_CACHE RECTFc;

-

-void cacheRECTFields(JNIEnv *env, jobject lpObject)

-{

-	if (RECTFc.cached) return;

-	RECTFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	RECTFc.left = (*env)->GetFieldID(env, RECTFc.clazz, "left", "I");

-	RECTFc.top = (*env)->GetFieldID(env, RECTFc.clazz, "top", "I");

-	RECTFc.right = (*env)->GetFieldID(env, RECTFc.clazz, "right", "I");

-	RECTFc.bottom = (*env)->GetFieldID(env, RECTFc.clazz, "bottom", "I");

-	RECTFc.cached = 1;

-}

-

-RECT *getRECTFields(JNIEnv *env, jobject lpObject, RECT *lpStruct)

-{

-	if (!RECTFc.cached) cacheRECTFields(env, lpObject);

-	lpStruct->left = (*env)->GetIntField(env, lpObject, RECTFc.left);

-	lpStruct->top = (*env)->GetIntField(env, lpObject, RECTFc.top);

-	lpStruct->right = (*env)->GetIntField(env, lpObject, RECTFc.right);

-	lpStruct->bottom = (*env)->GetIntField(env, lpObject, RECTFc.bottom);

-	return lpStruct;

-}

-

-void setRECTFields(JNIEnv *env, jobject lpObject, RECT *lpStruct)

-{

-	if (!RECTFc.cached) cacheRECTFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, RECTFc.left, (jint)lpStruct->left);

-	(*env)->SetIntField(env, lpObject, RECTFc.top, (jint)lpStruct->top);

-	(*env)->SetIntField(env, lpObject, RECTFc.right, (jint)lpStruct->right);

-	(*env)->SetIntField(env, lpObject, RECTFc.bottom, (jint)lpStruct->bottom);

-}

-#endif

-

-#ifndef NO_SCROLLINFO

-typedef struct SCROLLINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, fMask, nMin, nMax, nPage, nPos, nTrackPos;

-} SCROLLINFO_FID_CACHE;

-

-SCROLLINFO_FID_CACHE SCROLLINFOFc;

-

-void cacheSCROLLINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (SCROLLINFOFc.cached) return;

-	SCROLLINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	SCROLLINFOFc.cbSize = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "cbSize", "I");

-	SCROLLINFOFc.fMask = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "fMask", "I");

-	SCROLLINFOFc.nMin = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "nMin", "I");

-	SCROLLINFOFc.nMax = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "nMax", "I");

-	SCROLLINFOFc.nPage = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "nPage", "I");

-	SCROLLINFOFc.nPos = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "nPos", "I");

-	SCROLLINFOFc.nTrackPos = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "nTrackPos", "I");

-	SCROLLINFOFc.cached = 1;

-}

-

-SCROLLINFO *getSCROLLINFOFields(JNIEnv *env, jobject lpObject, SCROLLINFO *lpStruct)

-{

-	if (!SCROLLINFOFc.cached) cacheSCROLLINFOFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.cbSize);

-	lpStruct->fMask = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.fMask);

-	lpStruct->nMin = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.nMin);

-	lpStruct->nMax = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.nMax);

-	lpStruct->nPage = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.nPage);

-	lpStruct->nPos = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.nPos);

-	lpStruct->nTrackPos = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.nTrackPos);

-	return lpStruct;

-}

-

-void setSCROLLINFOFields(JNIEnv *env, jobject lpObject, SCROLLINFO *lpStruct)

-{

-	if (!SCROLLINFOFc.cached) cacheSCROLLINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.fMask, (jint)lpStruct->fMask);

-	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.nMin, (jint)lpStruct->nMin);

-	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.nMax, (jint)lpStruct->nMax);

-	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.nPage, (jint)lpStruct->nPage);

-	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.nPos, (jint)lpStruct->nPos);

-	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.nTrackPos, (jint)lpStruct->nTrackPos);

-}

-#endif

-

-#ifndef NO_SHACTIVATEINFO

-typedef struct SHACTIVATEINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, hwndLastFocus, fSipUp, fSipOnDeactivation, fActive, fReserved;

-} SHACTIVATEINFO_FID_CACHE;

-

-SHACTIVATEINFO_FID_CACHE SHACTIVATEINFOFc;

-

-void cacheSHACTIVATEINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (SHACTIVATEINFOFc.cached) return;

-	SHACTIVATEINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	SHACTIVATEINFOFc.cbSize = (*env)->GetFieldID(env, SHACTIVATEINFOFc.clazz, "cbSize", "I");

-	SHACTIVATEINFOFc.hwndLastFocus = (*env)->GetFieldID(env, SHACTIVATEINFOFc.clazz, "hwndLastFocus", "I");

-	SHACTIVATEINFOFc.fSipUp = (*env)->GetFieldID(env, SHACTIVATEINFOFc.clazz, "fSipUp", "I");

-	SHACTIVATEINFOFc.fSipOnDeactivation = (*env)->GetFieldID(env, SHACTIVATEINFOFc.clazz, "fSipOnDeactivation", "I");

-	SHACTIVATEINFOFc.fActive = (*env)->GetFieldID(env, SHACTIVATEINFOFc.clazz, "fActive", "I");

-	SHACTIVATEINFOFc.fReserved = (*env)->GetFieldID(env, SHACTIVATEINFOFc.clazz, "fReserved", "I");

-	SHACTIVATEINFOFc.cached = 1;

-}

-

-SHACTIVATEINFO *getSHACTIVATEINFOFields(JNIEnv *env, jobject lpObject, SHACTIVATEINFO *lpStruct)

-{

-	if (!SHACTIVATEINFOFc.cached) cacheSHACTIVATEINFOFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, SHACTIVATEINFOFc.cbSize);

-	lpStruct->hwndLastFocus = (HWND)(*env)->GetIntField(env, lpObject, SHACTIVATEINFOFc.hwndLastFocus);

-	lpStruct->fSipUp = (*env)->GetIntField(env, lpObject, SHACTIVATEINFOFc.fSipUp);

-	lpStruct->fSipOnDeactivation = (*env)->GetIntField(env, lpObject, SHACTIVATEINFOFc.fSipOnDeactivation);

-	lpStruct->fActive = (*env)->GetIntField(env, lpObject, SHACTIVATEINFOFc.fActive);

-	lpStruct->fReserved = (*env)->GetIntField(env, lpObject, SHACTIVATEINFOFc.fReserved);

-	return lpStruct;

-}

-

-void setSHACTIVATEINFOFields(JNIEnv *env, jobject lpObject, SHACTIVATEINFO *lpStruct)

-{

-	if (!SHACTIVATEINFOFc.cached) cacheSHACTIVATEINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, SHACTIVATEINFOFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, SHACTIVATEINFOFc.hwndLastFocus, (jint)lpStruct->hwndLastFocus);

-	(*env)->SetIntField(env, lpObject, SHACTIVATEINFOFc.fSipUp, (jint)lpStruct->fSipUp);

-	(*env)->SetIntField(env, lpObject, SHACTIVATEINFOFc.fSipOnDeactivation, (jint)lpStruct->fSipOnDeactivation);

-	(*env)->SetIntField(env, lpObject, SHACTIVATEINFOFc.fActive, (jint)lpStruct->fActive);

-	(*env)->SetIntField(env, lpObject, SHACTIVATEINFOFc.fReserved, (jint)lpStruct->fReserved);

-}

-#endif

-

-#ifndef NO_SHELLEXECUTEINFO

-typedef struct SHELLEXECUTEINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, fMask, hwnd, lpVerb, lpFile, lpParameters, lpDirectory, nShow, hInstApp, lpIDList, lpClass, hkeyClass, dwHotKey, hIcon, hProcess;

-} SHELLEXECUTEINFO_FID_CACHE;

-

-SHELLEXECUTEINFO_FID_CACHE SHELLEXECUTEINFOFc;

-

-void cacheSHELLEXECUTEINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (SHELLEXECUTEINFOFc.cached) return;

-	SHELLEXECUTEINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	SHELLEXECUTEINFOFc.cbSize = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "cbSize", "I");

-	SHELLEXECUTEINFOFc.fMask = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "fMask", "I");

-	SHELLEXECUTEINFOFc.hwnd = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "hwnd", "I");

-	SHELLEXECUTEINFOFc.lpVerb = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpVerb", "I");

-	SHELLEXECUTEINFOFc.lpFile = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpFile", "I");

-	SHELLEXECUTEINFOFc.lpParameters = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpParameters", "I");

-	SHELLEXECUTEINFOFc.lpDirectory = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpDirectory", "I");

-	SHELLEXECUTEINFOFc.nShow = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "nShow", "I");

-	SHELLEXECUTEINFOFc.hInstApp = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "hInstApp", "I");

-	SHELLEXECUTEINFOFc.lpIDList = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpIDList", "I");

-	SHELLEXECUTEINFOFc.lpClass = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpClass", "I");

-	SHELLEXECUTEINFOFc.hkeyClass = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "hkeyClass", "I");

-	SHELLEXECUTEINFOFc.dwHotKey = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "dwHotKey", "I");

-	SHELLEXECUTEINFOFc.hIcon = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "hIcon", "I");

-	SHELLEXECUTEINFOFc.hProcess = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "hProcess", "I");

-	SHELLEXECUTEINFOFc.cached = 1;

-}

-

-SHELLEXECUTEINFO *getSHELLEXECUTEINFOFields(JNIEnv *env, jobject lpObject, SHELLEXECUTEINFO *lpStruct)

-{

-	if (!SHELLEXECUTEINFOFc.cached) cacheSHELLEXECUTEINFOFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.cbSize);

-	lpStruct->fMask = (*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.fMask);

-	lpStruct->hwnd = (HWND)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.hwnd);

-	lpStruct->lpVerb = (LPCTSTR)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpVerb);

-	lpStruct->lpFile = (LPCTSTR)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpFile);

-	lpStruct->lpParameters = (LPCTSTR)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpParameters);

-	lpStruct->lpDirectory = (LPCTSTR)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpDirectory);

-	lpStruct->nShow = (*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.nShow);

-	lpStruct->hInstApp = (HINSTANCE)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.hInstApp);

-	lpStruct->lpIDList = (LPVOID)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpIDList);

-	lpStruct->lpClass = (LPCTSTR)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpClass);

-	lpStruct->hkeyClass = (HKEY)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.hkeyClass);

-	lpStruct->dwHotKey = (*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.dwHotKey);

-	lpStruct->hIcon = (HANDLE)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.hIcon);

-	lpStruct->hProcess = (HANDLE)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.hProcess);

-	return lpStruct;

-}

-

-void setSHELLEXECUTEINFOFields(JNIEnv *env, jobject lpObject, SHELLEXECUTEINFO *lpStruct)

-{

-	if (!SHELLEXECUTEINFOFc.cached) cacheSHELLEXECUTEINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.fMask, (jint)lpStruct->fMask);

-	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.hwnd, (jint)lpStruct->hwnd);

-	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpVerb, (jint)lpStruct->lpVerb);

-	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpFile, (jint)lpStruct->lpFile);

-	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpParameters, (jint)lpStruct->lpParameters);

-	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpDirectory, (jint)lpStruct->lpDirectory);

-	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.nShow, (jint)lpStruct->nShow);

-	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.hInstApp, (jint)lpStruct->hInstApp);

-	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpIDList, (jint)lpStruct->lpIDList);

-	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpClass, (jint)lpStruct->lpClass);

-	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.hkeyClass, (jint)lpStruct->hkeyClass);

-	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.dwHotKey, (jint)lpStruct->dwHotKey);

-	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.hIcon, (jint)lpStruct->hIcon);

-	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.hProcess, (jint)lpStruct->hProcess);

-}

-#endif

-

-#ifndef NO_SHMENUBARINFO

-typedef struct SHMENUBARINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, hwndParent, dwFlags, nToolBarId, hInstRes, nBmpId, cBmpImages, hwndMB;

-} SHMENUBARINFO_FID_CACHE;

-

-SHMENUBARINFO_FID_CACHE SHMENUBARINFOFc;

-

-void cacheSHMENUBARINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (SHMENUBARINFOFc.cached) return;

-	SHMENUBARINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	SHMENUBARINFOFc.cbSize = (*env)->GetFieldID(env, SHMENUBARINFOFc.clazz, "cbSize", "I");

-	SHMENUBARINFOFc.hwndParent = (*env)->GetFieldID(env, SHMENUBARINFOFc.clazz, "hwndParent", "I");

-	SHMENUBARINFOFc.dwFlags = (*env)->GetFieldID(env, SHMENUBARINFOFc.clazz, "dwFlags", "I");

-	SHMENUBARINFOFc.nToolBarId = (*env)->GetFieldID(env, SHMENUBARINFOFc.clazz, "nToolBarId", "I");

-	SHMENUBARINFOFc.hInstRes = (*env)->GetFieldID(env, SHMENUBARINFOFc.clazz, "hInstRes", "I");

-	SHMENUBARINFOFc.nBmpId = (*env)->GetFieldID(env, SHMENUBARINFOFc.clazz, "nBmpId", "I");

-	SHMENUBARINFOFc.cBmpImages = (*env)->GetFieldID(env, SHMENUBARINFOFc.clazz, "cBmpImages", "I");

-	SHMENUBARINFOFc.hwndMB = (*env)->GetFieldID(env, SHMENUBARINFOFc.clazz, "hwndMB", "I");

-	SHMENUBARINFOFc.cached = 1;

-}

-

-SHMENUBARINFO *getSHMENUBARINFOFields(JNIEnv *env, jobject lpObject, SHMENUBARINFO *lpStruct)

-{

-	if (!SHMENUBARINFOFc.cached) cacheSHMENUBARINFOFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, SHMENUBARINFOFc.cbSize);

-	lpStruct->hwndParent = (HWND)(*env)->GetIntField(env, lpObject, SHMENUBARINFOFc.hwndParent);

-	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, SHMENUBARINFOFc.dwFlags);

-	lpStruct->nToolBarId = (*env)->GetIntField(env, lpObject, SHMENUBARINFOFc.nToolBarId);

-	lpStruct->hInstRes = (HINSTANCE)(*env)->GetIntField(env, lpObject, SHMENUBARINFOFc.hInstRes);

-	lpStruct->nBmpId = (*env)->GetIntField(env, lpObject, SHMENUBARINFOFc.nBmpId);

-	lpStruct->cBmpImages = (*env)->GetIntField(env, lpObject, SHMENUBARINFOFc.cBmpImages);

-	lpStruct->hwndMB = (HWND)(*env)->GetIntField(env, lpObject, SHMENUBARINFOFc.hwndMB);

-	return lpStruct;

-}

-

-void setSHMENUBARINFOFields(JNIEnv *env, jobject lpObject, SHMENUBARINFO *lpStruct)

-{

-	if (!SHMENUBARINFOFc.cached) cacheSHMENUBARINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, SHMENUBARINFOFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, SHMENUBARINFOFc.hwndParent, (jint)lpStruct->hwndParent);

-	(*env)->SetIntField(env, lpObject, SHMENUBARINFOFc.dwFlags, (jint)lpStruct->dwFlags);

-	(*env)->SetIntField(env, lpObject, SHMENUBARINFOFc.nToolBarId, (jint)lpStruct->nToolBarId);

-	(*env)->SetIntField(env, lpObject, SHMENUBARINFOFc.hInstRes, (jint)lpStruct->hInstRes);

-	(*env)->SetIntField(env, lpObject, SHMENUBARINFOFc.nBmpId, (jint)lpStruct->nBmpId);

-	(*env)->SetIntField(env, lpObject, SHMENUBARINFOFc.cBmpImages, (jint)lpStruct->cBmpImages);

-	(*env)->SetIntField(env, lpObject, SHMENUBARINFOFc.hwndMB, (jint)lpStruct->hwndMB);

-}

-#endif

-

-#ifndef NO_SHRGINFO

-typedef struct SHRGINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, hwndClient, ptDown_x, ptDown_y, dwFlags;

-} SHRGINFO_FID_CACHE;

-

-SHRGINFO_FID_CACHE SHRGINFOFc;

-

-void cacheSHRGINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (SHRGINFOFc.cached) return;

-	SHRGINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	SHRGINFOFc.cbSize = (*env)->GetFieldID(env, SHRGINFOFc.clazz, "cbSize", "I");

-	SHRGINFOFc.hwndClient = (*env)->GetFieldID(env, SHRGINFOFc.clazz, "hwndClient", "I");

-	SHRGINFOFc.ptDown_x = (*env)->GetFieldID(env, SHRGINFOFc.clazz, "ptDown_x", "I");

-	SHRGINFOFc.ptDown_y = (*env)->GetFieldID(env, SHRGINFOFc.clazz, "ptDown_y", "I");

-	SHRGINFOFc.dwFlags = (*env)->GetFieldID(env, SHRGINFOFc.clazz, "dwFlags", "I");

-	SHRGINFOFc.cached = 1;

-}

-

-SHRGINFO *getSHRGINFOFields(JNIEnv *env, jobject lpObject, SHRGINFO *lpStruct)

-{

-	if (!SHRGINFOFc.cached) cacheSHRGINFOFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, SHRGINFOFc.cbSize);

-	lpStruct->hwndClient = (HWND)(*env)->GetIntField(env, lpObject, SHRGINFOFc.hwndClient);

-	lpStruct->ptDown.x = (*env)->GetIntField(env, lpObject, SHRGINFOFc.ptDown_x);

-	lpStruct->ptDown.y = (*env)->GetIntField(env, lpObject, SHRGINFOFc.ptDown_y);

-	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, SHRGINFOFc.dwFlags);

-	return lpStruct;

-}

-

-void setSHRGINFOFields(JNIEnv *env, jobject lpObject, SHRGINFO *lpStruct)

-{

-	if (!SHRGINFOFc.cached) cacheSHRGINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, SHRGINFOFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, SHRGINFOFc.hwndClient, (jint)lpStruct->hwndClient);

-	(*env)->SetIntField(env, lpObject, SHRGINFOFc.ptDown_x, (jint)lpStruct->ptDown.x);

-	(*env)->SetIntField(env, lpObject, SHRGINFOFc.ptDown_y, (jint)lpStruct->ptDown.y);

-	(*env)->SetIntField(env, lpObject, SHRGINFOFc.dwFlags, (jint)lpStruct->dwFlags);

-}

-#endif

-

-#ifndef NO_SIPINFO

-typedef struct SIPINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, fdwFlags, rcVisibleDesktop_left, rcVisibleDesktop_top, rcVisibleDesktop_right, rcVisibleDesktop_bottom, rcSipRect_left, rcSipRect_top, rcSipRect_right, rcSipRect_bottom, dwImDataSize, pvImData;

-} SIPINFO_FID_CACHE;

-

-SIPINFO_FID_CACHE SIPINFOFc;

-

-void cacheSIPINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (SIPINFOFc.cached) return;

-	SIPINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	SIPINFOFc.cbSize = (*env)->GetFieldID(env, SIPINFOFc.clazz, "cbSize", "I");

-	SIPINFOFc.fdwFlags = (*env)->GetFieldID(env, SIPINFOFc.clazz, "fdwFlags", "I");

-	SIPINFOFc.rcVisibleDesktop_left = (*env)->GetFieldID(env, SIPINFOFc.clazz, "rcVisibleDesktop_left", "I");

-	SIPINFOFc.rcVisibleDesktop_top = (*env)->GetFieldID(env, SIPINFOFc.clazz, "rcVisibleDesktop_top", "I");

-	SIPINFOFc.rcVisibleDesktop_right = (*env)->GetFieldID(env, SIPINFOFc.clazz, "rcVisibleDesktop_right", "I");

-	SIPINFOFc.rcVisibleDesktop_bottom = (*env)->GetFieldID(env, SIPINFOFc.clazz, "rcVisibleDesktop_bottom", "I");

-	SIPINFOFc.rcSipRect_left = (*env)->GetFieldID(env, SIPINFOFc.clazz, "rcSipRect_left", "I");

-	SIPINFOFc.rcSipRect_top = (*env)->GetFieldID(env, SIPINFOFc.clazz, "rcSipRect_top", "I");

-	SIPINFOFc.rcSipRect_right = (*env)->GetFieldID(env, SIPINFOFc.clazz, "rcSipRect_right", "I");

-	SIPINFOFc.rcSipRect_bottom = (*env)->GetFieldID(env, SIPINFOFc.clazz, "rcSipRect_bottom", "I");

-	SIPINFOFc.dwImDataSize = (*env)->GetFieldID(env, SIPINFOFc.clazz, "dwImDataSize", "I");

-	SIPINFOFc.pvImData = (*env)->GetFieldID(env, SIPINFOFc.clazz, "pvImData", "I");

-	SIPINFOFc.cached = 1;

-}

-

-SIPINFO *getSIPINFOFields(JNIEnv *env, jobject lpObject, SIPINFO *lpStruct)

-{

-	if (!SIPINFOFc.cached) cacheSIPINFOFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, SIPINFOFc.cbSize);

-	lpStruct->fdwFlags = (*env)->GetIntField(env, lpObject, SIPINFOFc.fdwFlags);

-	lpStruct->rcVisibleDesktop.left = (*env)->GetIntField(env, lpObject, SIPINFOFc.rcVisibleDesktop_left);

-	lpStruct->rcVisibleDesktop.top = (*env)->GetIntField(env, lpObject, SIPINFOFc.rcVisibleDesktop_top);

-	lpStruct->rcVisibleDesktop.right = (*env)->GetIntField(env, lpObject, SIPINFOFc.rcVisibleDesktop_right);

-	lpStruct->rcVisibleDesktop.bottom = (*env)->GetIntField(env, lpObject, SIPINFOFc.rcVisibleDesktop_bottom);

-	lpStruct->rcSipRect.left = (*env)->GetIntField(env, lpObject, SIPINFOFc.rcSipRect_left);

-	lpStruct->rcSipRect.top = (*env)->GetIntField(env, lpObject, SIPINFOFc.rcSipRect_top);

-	lpStruct->rcSipRect.right = (*env)->GetIntField(env, lpObject, SIPINFOFc.rcSipRect_right);

-	lpStruct->rcSipRect.bottom = (*env)->GetIntField(env, lpObject, SIPINFOFc.rcSipRect_bottom);

-	lpStruct->dwImDataSize = (*env)->GetIntField(env, lpObject, SIPINFOFc.dwImDataSize);

-	lpStruct->pvImData = (void *)(*env)->GetIntField(env, lpObject, SIPINFOFc.pvImData);

-	return lpStruct;

-}

-

-void setSIPINFOFields(JNIEnv *env, jobject lpObject, SIPINFO *lpStruct)

-{

-	if (!SIPINFOFc.cached) cacheSIPINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, SIPINFOFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, SIPINFOFc.fdwFlags, (jint)lpStruct->fdwFlags);

-	(*env)->SetIntField(env, lpObject, SIPINFOFc.rcVisibleDesktop_left, (jint)lpStruct->rcVisibleDesktop.left);

-	(*env)->SetIntField(env, lpObject, SIPINFOFc.rcVisibleDesktop_top, (jint)lpStruct->rcVisibleDesktop.top);

-	(*env)->SetIntField(env, lpObject, SIPINFOFc.rcVisibleDesktop_right, (jint)lpStruct->rcVisibleDesktop.right);

-	(*env)->SetIntField(env, lpObject, SIPINFOFc.rcVisibleDesktop_bottom, (jint)lpStruct->rcVisibleDesktop.bottom);

-	(*env)->SetIntField(env, lpObject, SIPINFOFc.rcSipRect_left, (jint)lpStruct->rcSipRect.left);

-	(*env)->SetIntField(env, lpObject, SIPINFOFc.rcSipRect_top, (jint)lpStruct->rcSipRect.top);

-	(*env)->SetIntField(env, lpObject, SIPINFOFc.rcSipRect_right, (jint)lpStruct->rcSipRect.right);

-	(*env)->SetIntField(env, lpObject, SIPINFOFc.rcSipRect_bottom, (jint)lpStruct->rcSipRect.bottom);

-	(*env)->SetIntField(env, lpObject, SIPINFOFc.dwImDataSize, (jint)lpStruct->dwImDataSize);

-	(*env)->SetIntField(env, lpObject, SIPINFOFc.pvImData, (jint)lpStruct->pvImData);

-}

-#endif

-

-#ifndef NO_SIZE

-typedef struct SIZE_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cx, cy;

-} SIZE_FID_CACHE;

-

-SIZE_FID_CACHE SIZEFc;

-

-void cacheSIZEFields(JNIEnv *env, jobject lpObject)

-{

-	if (SIZEFc.cached) return;

-	SIZEFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	SIZEFc.cx = (*env)->GetFieldID(env, SIZEFc.clazz, "cx", "I");

-	SIZEFc.cy = (*env)->GetFieldID(env, SIZEFc.clazz, "cy", "I");

-	SIZEFc.cached = 1;

-}

-

-SIZE *getSIZEFields(JNIEnv *env, jobject lpObject, SIZE *lpStruct)

-{

-	if (!SIZEFc.cached) cacheSIZEFields(env, lpObject);

-	lpStruct->cx = (*env)->GetIntField(env, lpObject, SIZEFc.cx);

-	lpStruct->cy = (*env)->GetIntField(env, lpObject, SIZEFc.cy);

-	return lpStruct;

-}

-

-void setSIZEFields(JNIEnv *env, jobject lpObject, SIZE *lpStruct)

-{

-	if (!SIZEFc.cached) cacheSIZEFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, SIZEFc.cx, (jint)lpStruct->cx);

-	(*env)->SetIntField(env, lpObject, SIZEFc.cy, (jint)lpStruct->cy);

-}

-#endif

-

-#ifndef NO_TBBUTTON

-typedef struct TBBUTTON_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID iBitmap, idCommand, fsState, fsStyle, dwData, iString;

-} TBBUTTON_FID_CACHE;

-

-TBBUTTON_FID_CACHE TBBUTTONFc;

-

-void cacheTBBUTTONFields(JNIEnv *env, jobject lpObject)

-{

-	if (TBBUTTONFc.cached) return;

-	TBBUTTONFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	TBBUTTONFc.iBitmap = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "iBitmap", "I");

-	TBBUTTONFc.idCommand = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "idCommand", "I");

-	TBBUTTONFc.fsState = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "fsState", "B");

-	TBBUTTONFc.fsStyle = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "fsStyle", "B");

-	TBBUTTONFc.dwData = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "dwData", "I");

-	TBBUTTONFc.iString = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "iString", "I");

-	TBBUTTONFc.cached = 1;

-}

-

-TBBUTTON *getTBBUTTONFields(JNIEnv *env, jobject lpObject, TBBUTTON *lpStruct)

-{

-	if (!TBBUTTONFc.cached) cacheTBBUTTONFields(env, lpObject);

-	lpStruct->iBitmap = (*env)->GetIntField(env, lpObject, TBBUTTONFc.iBitmap);

-	lpStruct->idCommand = (*env)->GetIntField(env, lpObject, TBBUTTONFc.idCommand);

-	lpStruct->fsState = (*env)->GetByteField(env, lpObject, TBBUTTONFc.fsState);

-	lpStruct->fsStyle = (*env)->GetByteField(env, lpObject, TBBUTTONFc.fsStyle);

-	lpStruct->dwData = (*env)->GetIntField(env, lpObject, TBBUTTONFc.dwData);

-	lpStruct->iString = (*env)->GetIntField(env, lpObject, TBBUTTONFc.iString);

-	return lpStruct;

-}

-

-void setTBBUTTONFields(JNIEnv *env, jobject lpObject, TBBUTTON *lpStruct)

-{

-	if (!TBBUTTONFc.cached) cacheTBBUTTONFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, TBBUTTONFc.iBitmap, (jint)lpStruct->iBitmap);

-	(*env)->SetIntField(env, lpObject, TBBUTTONFc.idCommand, (jint)lpStruct->idCommand);

-	(*env)->SetByteField(env, lpObject, TBBUTTONFc.fsState, (jbyte)lpStruct->fsState);

-	(*env)->SetByteField(env, lpObject, TBBUTTONFc.fsStyle, (jbyte)lpStruct->fsStyle);

-	(*env)->SetIntField(env, lpObject, TBBUTTONFc.dwData, (jint)lpStruct->dwData);

-	(*env)->SetIntField(env, lpObject, TBBUTTONFc.iString, (jint)lpStruct->iString);

-}

-#endif

-

-#ifndef NO_TBBUTTONINFO

-typedef struct TBBUTTONINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, dwMask, idCommand, iImage, fsState, fsStyle, cx, lParam, pszText, cchText;

-} TBBUTTONINFO_FID_CACHE;

-

-TBBUTTONINFO_FID_CACHE TBBUTTONINFOFc;

-

-void cacheTBBUTTONINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (TBBUTTONINFOFc.cached) return;

-	TBBUTTONINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	TBBUTTONINFOFc.cbSize = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "cbSize", "I");

-	TBBUTTONINFOFc.dwMask = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "dwMask", "I");

-	TBBUTTONINFOFc.idCommand = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "idCommand", "I");

-	TBBUTTONINFOFc.iImage = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "iImage", "I");

-	TBBUTTONINFOFc.fsState = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "fsState", "B");

-	TBBUTTONINFOFc.fsStyle = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "fsStyle", "B");

-	TBBUTTONINFOFc.cx = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "cx", "S");

-	TBBUTTONINFOFc.lParam = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "lParam", "I");

-	TBBUTTONINFOFc.pszText = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "pszText", "I");

-	TBBUTTONINFOFc.cchText = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "cchText", "I");

-	TBBUTTONINFOFc.cached = 1;

-}

-

-TBBUTTONINFO *getTBBUTTONINFOFields(JNIEnv *env, jobject lpObject, TBBUTTONINFO *lpStruct)

-{

-	if (!TBBUTTONINFOFc.cached) cacheTBBUTTONINFOFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.cbSize);

-	lpStruct->dwMask = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.dwMask);

-	lpStruct->idCommand = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.idCommand);

-	lpStruct->iImage = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.iImage);

-	lpStruct->fsState = (*env)->GetByteField(env, lpObject, TBBUTTONINFOFc.fsState);

-	lpStruct->fsStyle = (*env)->GetByteField(env, lpObject, TBBUTTONINFOFc.fsStyle);

-	lpStruct->cx = (*env)->GetShortField(env, lpObject, TBBUTTONINFOFc.cx);

-	lpStruct->lParam = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.lParam);

-	lpStruct->pszText = (LPTSTR)(*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.pszText);

-	lpStruct->cchText = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.cchText);

-	return lpStruct;

-}

-

-void setTBBUTTONINFOFields(JNIEnv *env, jobject lpObject, TBBUTTONINFO *lpStruct)

-{

-	if (!TBBUTTONINFOFc.cached) cacheTBBUTTONINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.dwMask, (jint)lpStruct->dwMask);

-	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.idCommand, (jint)lpStruct->idCommand);

-	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.iImage, (jint)lpStruct->iImage);

-	(*env)->SetByteField(env, lpObject, TBBUTTONINFOFc.fsState, (jbyte)lpStruct->fsState);

-	(*env)->SetByteField(env, lpObject, TBBUTTONINFOFc.fsStyle, (jbyte)lpStruct->fsStyle);

-	(*env)->SetShortField(env, lpObject, TBBUTTONINFOFc.cx, (jshort)lpStruct->cx);

-	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.lParam, (jint)lpStruct->lParam);

-	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.pszText, (jint)lpStruct->pszText);

-	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.cchText, (jint)lpStruct->cchText);

-}

-#endif

-

-#ifndef NO_TCITEM

-typedef struct TCITEM_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID mask, dwState, dwStateMask, pszText, cchTextMax, iImage, lParam;

-} TCITEM_FID_CACHE;

-

-TCITEM_FID_CACHE TCITEMFc;

-

-void cacheTCITEMFields(JNIEnv *env, jobject lpObject)

-{

-	if (TCITEMFc.cached) return;

-	TCITEMFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	TCITEMFc.mask = (*env)->GetFieldID(env, TCITEMFc.clazz, "mask", "I");

-	TCITEMFc.dwState = (*env)->GetFieldID(env, TCITEMFc.clazz, "dwState", "I");

-	TCITEMFc.dwStateMask = (*env)->GetFieldID(env, TCITEMFc.clazz, "dwStateMask", "I");

-	TCITEMFc.pszText = (*env)->GetFieldID(env, TCITEMFc.clazz, "pszText", "I");

-	TCITEMFc.cchTextMax = (*env)->GetFieldID(env, TCITEMFc.clazz, "cchTextMax", "I");

-	TCITEMFc.iImage = (*env)->GetFieldID(env, TCITEMFc.clazz, "iImage", "I");

-	TCITEMFc.lParam = (*env)->GetFieldID(env, TCITEMFc.clazz, "lParam", "I");

-	TCITEMFc.cached = 1;

-}

-

-TCITEM *getTCITEMFields(JNIEnv *env, jobject lpObject, TCITEM *lpStruct)

-{

-	if (!TCITEMFc.cached) cacheTCITEMFields(env, lpObject);

-	lpStruct->mask = (*env)->GetIntField(env, lpObject, TCITEMFc.mask);

-	lpStruct->dwState = (*env)->GetIntField(env, lpObject, TCITEMFc.dwState);

-	lpStruct->dwStateMask = (*env)->GetIntField(env, lpObject, TCITEMFc.dwStateMask);

-	lpStruct->pszText = (LPTSTR)(*env)->GetIntField(env, lpObject, TCITEMFc.pszText);

-	lpStruct->cchTextMax = (*env)->GetIntField(env, lpObject, TCITEMFc.cchTextMax);

-	lpStruct->iImage = (*env)->GetIntField(env, lpObject, TCITEMFc.iImage);

-	lpStruct->lParam = (*env)->GetIntField(env, lpObject, TCITEMFc.lParam);

-	return lpStruct;

-}

-

-void setTCITEMFields(JNIEnv *env, jobject lpObject, TCITEM *lpStruct)

-{

-	if (!TCITEMFc.cached) cacheTCITEMFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, TCITEMFc.mask, (jint)lpStruct->mask);

-	(*env)->SetIntField(env, lpObject, TCITEMFc.dwState, (jint)lpStruct->dwState);

-	(*env)->SetIntField(env, lpObject, TCITEMFc.dwStateMask, (jint)lpStruct->dwStateMask);

-	(*env)->SetIntField(env, lpObject, TCITEMFc.pszText, (jint)lpStruct->pszText);

-	(*env)->SetIntField(env, lpObject, TCITEMFc.cchTextMax, (jint)lpStruct->cchTextMax);

-	(*env)->SetIntField(env, lpObject, TCITEMFc.iImage, (jint)lpStruct->iImage);

-	(*env)->SetIntField(env, lpObject, TCITEMFc.lParam, (jint)lpStruct->lParam);

-}

-#endif

-

-#ifndef NO_TEXTMETRIC

-typedef struct TEXTMETRIC_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID tmHeight, tmAscent, tmDescent, tmInternalLeading, tmExternalLeading, tmAveCharWidth, tmMaxCharWidth, tmWeight, tmOverhang, tmDigitizedAspectX, tmDigitizedAspectY, tmItalic, tmUnderlined, tmStruckOut, tmPitchAndFamily, tmCharSet;

-} TEXTMETRIC_FID_CACHE;

-

-TEXTMETRIC_FID_CACHE TEXTMETRICFc;

-

-void cacheTEXTMETRICFields(JNIEnv *env, jobject lpObject)

-{

-	if (TEXTMETRICFc.cached) return;

-	TEXTMETRICFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	TEXTMETRICFc.tmHeight = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmHeight", "I");

-	TEXTMETRICFc.tmAscent = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmAscent", "I");

-	TEXTMETRICFc.tmDescent = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmDescent", "I");

-	TEXTMETRICFc.tmInternalLeading = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmInternalLeading", "I");

-	TEXTMETRICFc.tmExternalLeading = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmExternalLeading", "I");

-	TEXTMETRICFc.tmAveCharWidth = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmAveCharWidth", "I");

-	TEXTMETRICFc.tmMaxCharWidth = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmMaxCharWidth", "I");

-	TEXTMETRICFc.tmWeight = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmWeight", "I");

-	TEXTMETRICFc.tmOverhang = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmOverhang", "I");

-	TEXTMETRICFc.tmDigitizedAspectX = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmDigitizedAspectX", "I");

-	TEXTMETRICFc.tmDigitizedAspectY = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmDigitizedAspectY", "I");

-	TEXTMETRICFc.tmItalic = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmItalic", "B");

-	TEXTMETRICFc.tmUnderlined = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmUnderlined", "B");

-	TEXTMETRICFc.tmStruckOut = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmStruckOut", "B");

-	TEXTMETRICFc.tmPitchAndFamily = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmPitchAndFamily", "B");

-	TEXTMETRICFc.tmCharSet = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmCharSet", "B");

-	TEXTMETRICFc.cached = 1;

-}

-

-TEXTMETRIC *getTEXTMETRICFields(JNIEnv *env, jobject lpObject, TEXTMETRIC *lpStruct)

-{

-	if (!TEXTMETRICFc.cached) cacheTEXTMETRICFields(env, lpObject);

-	lpStruct->tmHeight = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmHeight);

-	lpStruct->tmAscent = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmAscent);

-	lpStruct->tmDescent = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDescent);

-	lpStruct->tmInternalLeading = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmInternalLeading);

-	lpStruct->tmExternalLeading = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmExternalLeading);

-	lpStruct->tmAveCharWidth = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmAveCharWidth);

-	lpStruct->tmMaxCharWidth = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmMaxCharWidth);

-	lpStruct->tmWeight = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmWeight);

-	lpStruct->tmOverhang = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmOverhang);

-	lpStruct->tmDigitizedAspectX = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectX);

-	lpStruct->tmDigitizedAspectY = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectY);

-	lpStruct->tmItalic = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmItalic);

-	lpStruct->tmUnderlined = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmUnderlined);

-	lpStruct->tmStruckOut = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmStruckOut);

-	lpStruct->tmPitchAndFamily = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmPitchAndFamily);

-	lpStruct->tmCharSet = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmCharSet);

-	return lpStruct;

-}

-

-void setTEXTMETRICFields(JNIEnv *env, jobject lpObject, TEXTMETRIC *lpStruct)

-{

-	if (!TEXTMETRICFc.cached) cacheTEXTMETRICFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmHeight, (jint)lpStruct->tmHeight);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmAscent, (jint)lpStruct->tmAscent);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDescent, (jint)lpStruct->tmDescent);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmInternalLeading, (jint)lpStruct->tmInternalLeading);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmExternalLeading, (jint)lpStruct->tmExternalLeading);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmAveCharWidth, (jint)lpStruct->tmAveCharWidth);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmMaxCharWidth, (jint)lpStruct->tmMaxCharWidth);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmWeight, (jint)lpStruct->tmWeight);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmOverhang, (jint)lpStruct->tmOverhang);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectX, (jint)lpStruct->tmDigitizedAspectX);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectY, (jint)lpStruct->tmDigitizedAspectY);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmItalic, (jbyte)lpStruct->tmItalic);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmUnderlined, (jbyte)lpStruct->tmUnderlined);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmStruckOut, (jbyte)lpStruct->tmStruckOut);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmPitchAndFamily, (jbyte)lpStruct->tmPitchAndFamily);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmCharSet, (jbyte)lpStruct->tmCharSet);

-}

-#endif

-

-#ifndef NO_TEXTMETRICA

-typedef struct TEXTMETRICA_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID tmFirstChar, tmLastChar, tmDefaultChar, tmBreakChar;

-} TEXTMETRICA_FID_CACHE;

-

-TEXTMETRICA_FID_CACHE TEXTMETRICAFc;

-

-void cacheTEXTMETRICAFields(JNIEnv *env, jobject lpObject)

-{

-	if (TEXTMETRICAFc.cached) return;

-	cacheTEXTMETRICFields(env, lpObject);

-	TEXTMETRICAFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	TEXTMETRICAFc.tmFirstChar = (*env)->GetFieldID(env, TEXTMETRICAFc.clazz, "tmFirstChar", "B");

-	TEXTMETRICAFc.tmLastChar = (*env)->GetFieldID(env, TEXTMETRICAFc.clazz, "tmLastChar", "B");

-	TEXTMETRICAFc.tmDefaultChar = (*env)->GetFieldID(env, TEXTMETRICAFc.clazz, "tmDefaultChar", "B");

-	TEXTMETRICAFc.tmBreakChar = (*env)->GetFieldID(env, TEXTMETRICAFc.clazz, "tmBreakChar", "B");

-	TEXTMETRICAFc.cached = 1;

-}

-

-TEXTMETRICA *getTEXTMETRICAFields(JNIEnv *env, jobject lpObject, TEXTMETRICA *lpStruct)

-{

-	if (!TEXTMETRICAFc.cached) cacheTEXTMETRICAFields(env, lpObject);

-	lpStruct->tmHeight = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmHeight);

-	lpStruct->tmAscent = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmAscent);

-	lpStruct->tmDescent = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDescent);

-	lpStruct->tmInternalLeading = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmInternalLeading);

-	lpStruct->tmExternalLeading = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmExternalLeading);

-	lpStruct->tmAveCharWidth = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmAveCharWidth);

-	lpStruct->tmMaxCharWidth = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmMaxCharWidth);

-	lpStruct->tmWeight = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmWeight);

-	lpStruct->tmOverhang = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmOverhang);

-	lpStruct->tmDigitizedAspectX = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectX);

-	lpStruct->tmDigitizedAspectY = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectY);

-	lpStruct->tmItalic = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmItalic);

-	lpStruct->tmUnderlined = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmUnderlined);

-	lpStruct->tmStruckOut = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmStruckOut);

-	lpStruct->tmPitchAndFamily = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmPitchAndFamily);

-	lpStruct->tmCharSet = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmCharSet);

-	lpStruct->tmFirstChar = (*env)->GetByteField(env, lpObject, TEXTMETRICAFc.tmFirstChar);

-	lpStruct->tmLastChar = (*env)->GetByteField(env, lpObject, TEXTMETRICAFc.tmLastChar);

-	lpStruct->tmDefaultChar = (*env)->GetByteField(env, lpObject, TEXTMETRICAFc.tmDefaultChar);

-	lpStruct->tmBreakChar = (*env)->GetByteField(env, lpObject, TEXTMETRICAFc.tmBreakChar);

-	return lpStruct;

-}

-

-void setTEXTMETRICAFields(JNIEnv *env, jobject lpObject, TEXTMETRICA *lpStruct)

-{

-	if (!TEXTMETRICAFc.cached) cacheTEXTMETRICAFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmHeight, (jint)lpStruct->tmHeight);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmAscent, (jint)lpStruct->tmAscent);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDescent, (jint)lpStruct->tmDescent);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmInternalLeading, (jint)lpStruct->tmInternalLeading);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmExternalLeading, (jint)lpStruct->tmExternalLeading);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmAveCharWidth, (jint)lpStruct->tmAveCharWidth);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmMaxCharWidth, (jint)lpStruct->tmMaxCharWidth);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmWeight, (jint)lpStruct->tmWeight);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmOverhang, (jint)lpStruct->tmOverhang);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectX, (jint)lpStruct->tmDigitizedAspectX);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectY, (jint)lpStruct->tmDigitizedAspectY);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmItalic, (jbyte)lpStruct->tmItalic);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmUnderlined, (jbyte)lpStruct->tmUnderlined);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmStruckOut, (jbyte)lpStruct->tmStruckOut);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmPitchAndFamily, (jbyte)lpStruct->tmPitchAndFamily);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmCharSet, (jbyte)lpStruct->tmCharSet);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICAFc.tmFirstChar, (jbyte)lpStruct->tmFirstChar);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICAFc.tmLastChar, (jbyte)lpStruct->tmLastChar);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICAFc.tmDefaultChar, (jbyte)lpStruct->tmDefaultChar);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICAFc.tmBreakChar, (jbyte)lpStruct->tmBreakChar);

-}

-#endif

-

-#ifndef NO_TEXTMETRICW

-typedef struct TEXTMETRICW_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID tmFirstChar, tmLastChar, tmDefaultChar, tmBreakChar;

-} TEXTMETRICW_FID_CACHE;

-

-TEXTMETRICW_FID_CACHE TEXTMETRICWFc;

-

-void cacheTEXTMETRICWFields(JNIEnv *env, jobject lpObject)

-{

-	if (TEXTMETRICWFc.cached) return;

-	cacheTEXTMETRICFields(env, lpObject);

-	TEXTMETRICWFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	TEXTMETRICWFc.tmFirstChar = (*env)->GetFieldID(env, TEXTMETRICWFc.clazz, "tmFirstChar", "C");

-	TEXTMETRICWFc.tmLastChar = (*env)->GetFieldID(env, TEXTMETRICWFc.clazz, "tmLastChar", "C");

-	TEXTMETRICWFc.tmDefaultChar = (*env)->GetFieldID(env, TEXTMETRICWFc.clazz, "tmDefaultChar", "C");

-	TEXTMETRICWFc.tmBreakChar = (*env)->GetFieldID(env, TEXTMETRICWFc.clazz, "tmBreakChar", "C");

-	TEXTMETRICWFc.cached = 1;

-}

-

-TEXTMETRICW *getTEXTMETRICWFields(JNIEnv *env, jobject lpObject, TEXTMETRICW *lpStruct)

-{

-	if (!TEXTMETRICWFc.cached) cacheTEXTMETRICWFields(env, lpObject);

-	lpStruct->tmHeight = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmHeight);

-	lpStruct->tmAscent = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmAscent);

-	lpStruct->tmDescent = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDescent);

-	lpStruct->tmInternalLeading = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmInternalLeading);

-	lpStruct->tmExternalLeading = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmExternalLeading);

-	lpStruct->tmAveCharWidth = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmAveCharWidth);

-	lpStruct->tmMaxCharWidth = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmMaxCharWidth);

-	lpStruct->tmWeight = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmWeight);

-	lpStruct->tmOverhang = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmOverhang);

-	lpStruct->tmDigitizedAspectX = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectX);

-	lpStruct->tmDigitizedAspectY = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectY);

-	lpStruct->tmItalic = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmItalic);

-	lpStruct->tmUnderlined = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmUnderlined);

-	lpStruct->tmStruckOut = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmStruckOut);

-	lpStruct->tmPitchAndFamily = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmPitchAndFamily);

-	lpStruct->tmCharSet = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmCharSet);

-	lpStruct->tmFirstChar = (*env)->GetCharField(env, lpObject, TEXTMETRICWFc.tmFirstChar);

-	lpStruct->tmLastChar = (*env)->GetCharField(env, lpObject, TEXTMETRICWFc.tmLastChar);

-	lpStruct->tmDefaultChar = (*env)->GetCharField(env, lpObject, TEXTMETRICWFc.tmDefaultChar);

-	lpStruct->tmBreakChar = (*env)->GetCharField(env, lpObject, TEXTMETRICWFc.tmBreakChar);

-	return lpStruct;

-}

-

-void setTEXTMETRICWFields(JNIEnv *env, jobject lpObject, TEXTMETRICW *lpStruct)

-{

-	if (!TEXTMETRICWFc.cached) cacheTEXTMETRICWFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmHeight, (jint)lpStruct->tmHeight);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmAscent, (jint)lpStruct->tmAscent);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDescent, (jint)lpStruct->tmDescent);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmInternalLeading, (jint)lpStruct->tmInternalLeading);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmExternalLeading, (jint)lpStruct->tmExternalLeading);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmAveCharWidth, (jint)lpStruct->tmAveCharWidth);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmMaxCharWidth, (jint)lpStruct->tmMaxCharWidth);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmWeight, (jint)lpStruct->tmWeight);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmOverhang, (jint)lpStruct->tmOverhang);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectX, (jint)lpStruct->tmDigitizedAspectX);

-	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectY, (jint)lpStruct->tmDigitizedAspectY);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmItalic, (jbyte)lpStruct->tmItalic);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmUnderlined, (jbyte)lpStruct->tmUnderlined);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmStruckOut, (jbyte)lpStruct->tmStruckOut);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmPitchAndFamily, (jbyte)lpStruct->tmPitchAndFamily);

-	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmCharSet, (jbyte)lpStruct->tmCharSet);

-	(*env)->SetCharField(env, lpObject, TEXTMETRICWFc.tmFirstChar, (jchar)lpStruct->tmFirstChar);

-	(*env)->SetCharField(env, lpObject, TEXTMETRICWFc.tmLastChar, (jchar)lpStruct->tmLastChar);

-	(*env)->SetCharField(env, lpObject, TEXTMETRICWFc.tmDefaultChar, (jchar)lpStruct->tmDefaultChar);

-	(*env)->SetCharField(env, lpObject, TEXTMETRICWFc.tmBreakChar, (jchar)lpStruct->tmBreakChar);

-}

-#endif

-

-#ifndef NO_TOOLINFO

-typedef struct TOOLINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, uFlags, hwnd, uId, left, top, right, bottom, hinst, lpszText, lParam;

-} TOOLINFO_FID_CACHE;

-

-TOOLINFO_FID_CACHE TOOLINFOFc;

-

-void cacheTOOLINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (TOOLINFOFc.cached) return;

-	TOOLINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	TOOLINFOFc.cbSize = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "cbSize", "I");

-	TOOLINFOFc.uFlags = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "uFlags", "I");

-	TOOLINFOFc.hwnd = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "hwnd", "I");

-	TOOLINFOFc.uId = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "uId", "I");

-	TOOLINFOFc.left = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "left", "I");

-	TOOLINFOFc.top = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "top", "I");

-	TOOLINFOFc.right = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "right", "I");

-	TOOLINFOFc.bottom = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "bottom", "I");

-	TOOLINFOFc.hinst = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "hinst", "I");

-	TOOLINFOFc.lpszText = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "lpszText", "I");

-	TOOLINFOFc.lParam = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "lParam", "I");

-	TOOLINFOFc.cached = 1;

-}

-

-TOOLINFO *getTOOLINFOFields(JNIEnv *env, jobject lpObject, TOOLINFO *lpStruct)

-{

-	if (!TOOLINFOFc.cached) cacheTOOLINFOFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, TOOLINFOFc.cbSize);

-	lpStruct->uFlags = (*env)->GetIntField(env, lpObject, TOOLINFOFc.uFlags);

-	lpStruct->hwnd = (HWND)(*env)->GetIntField(env, lpObject, TOOLINFOFc.hwnd);

-	lpStruct->uId = (*env)->GetIntField(env, lpObject, TOOLINFOFc.uId);

-	lpStruct->rect.left = (*env)->GetIntField(env, lpObject, TOOLINFOFc.left);

-	lpStruct->rect.top = (*env)->GetIntField(env, lpObject, TOOLINFOFc.top);

-	lpStruct->rect.right = (*env)->GetIntField(env, lpObject, TOOLINFOFc.right);

-	lpStruct->rect.bottom = (*env)->GetIntField(env, lpObject, TOOLINFOFc.bottom);

-	lpStruct->hinst = (HINSTANCE)(*env)->GetIntField(env, lpObject, TOOLINFOFc.hinst);

-	lpStruct->lpszText = (LPTSTR)(*env)->GetIntField(env, lpObject, TOOLINFOFc.lpszText);

-	lpStruct->lParam = (*env)->GetIntField(env, lpObject, TOOLINFOFc.lParam);

-	return lpStruct;

-}

-

-void setTOOLINFOFields(JNIEnv *env, jobject lpObject, TOOLINFO *lpStruct)

-{

-	if (!TOOLINFOFc.cached) cacheTOOLINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, TOOLINFOFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, TOOLINFOFc.uFlags, (jint)lpStruct->uFlags);

-	(*env)->SetIntField(env, lpObject, TOOLINFOFc.hwnd, (jint)lpStruct->hwnd);

-	(*env)->SetIntField(env, lpObject, TOOLINFOFc.uId, (jint)lpStruct->uId);

-	(*env)->SetIntField(env, lpObject, TOOLINFOFc.left, (jint)lpStruct->rect.left);

-	(*env)->SetIntField(env, lpObject, TOOLINFOFc.top, (jint)lpStruct->rect.top);

-	(*env)->SetIntField(env, lpObject, TOOLINFOFc.right, (jint)lpStruct->rect.right);

-	(*env)->SetIntField(env, lpObject, TOOLINFOFc.bottom, (jint)lpStruct->rect.bottom);

-	(*env)->SetIntField(env, lpObject, TOOLINFOFc.hinst, (jint)lpStruct->hinst);

-	(*env)->SetIntField(env, lpObject, TOOLINFOFc.lpszText, (jint)lpStruct->lpszText);

-	(*env)->SetIntField(env, lpObject, TOOLINFOFc.lParam, (jint)lpStruct->lParam);

-}

-#endif

-

-#ifndef NO_TRACKMOUSEEVENT

-typedef struct TRACKMOUSEEVENT_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID cbSize, dwFlags, hwndTrack, dwHoverTime;

-} TRACKMOUSEEVENT_FID_CACHE;

-

-TRACKMOUSEEVENT_FID_CACHE TRACKMOUSEEVENTFc;

-

-void cacheTRACKMOUSEEVENTFields(JNIEnv *env, jobject lpObject)

-{

-	if (TRACKMOUSEEVENTFc.cached) return;

-	TRACKMOUSEEVENTFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	TRACKMOUSEEVENTFc.cbSize = (*env)->GetFieldID(env, TRACKMOUSEEVENTFc.clazz, "cbSize", "I");

-	TRACKMOUSEEVENTFc.dwFlags = (*env)->GetFieldID(env, TRACKMOUSEEVENTFc.clazz, "dwFlags", "I");

-	TRACKMOUSEEVENTFc.hwndTrack = (*env)->GetFieldID(env, TRACKMOUSEEVENTFc.clazz, "hwndTrack", "I");

-	TRACKMOUSEEVENTFc.dwHoverTime = (*env)->GetFieldID(env, TRACKMOUSEEVENTFc.clazz, "dwHoverTime", "I");

-	TRACKMOUSEEVENTFc.cached = 1;

-}

-

-TRACKMOUSEEVENT *getTRACKMOUSEEVENTFields(JNIEnv *env, jobject lpObject, TRACKMOUSEEVENT *lpStruct)

-{

-	if (!TRACKMOUSEEVENTFc.cached) cacheTRACKMOUSEEVENTFields(env, lpObject);

-	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, TRACKMOUSEEVENTFc.cbSize);

-	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, TRACKMOUSEEVENTFc.dwFlags);

-	lpStruct->hwndTrack = (HWND)(*env)->GetIntField(env, lpObject, TRACKMOUSEEVENTFc.hwndTrack);

-	lpStruct->dwHoverTime = (*env)->GetIntField(env, lpObject, TRACKMOUSEEVENTFc.dwHoverTime);

-	return lpStruct;

-}

-

-void setTRACKMOUSEEVENTFields(JNIEnv *env, jobject lpObject, TRACKMOUSEEVENT *lpStruct)

-{

-	if (!TRACKMOUSEEVENTFc.cached) cacheTRACKMOUSEEVENTFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, TRACKMOUSEEVENTFc.cbSize, (jint)lpStruct->cbSize);

-	(*env)->SetIntField(env, lpObject, TRACKMOUSEEVENTFc.dwFlags, (jint)lpStruct->dwFlags);

-	(*env)->SetIntField(env, lpObject, TRACKMOUSEEVENTFc.hwndTrack, (jint)lpStruct->hwndTrack);

-	(*env)->SetIntField(env, lpObject, TRACKMOUSEEVENTFc.dwHoverTime, (jint)lpStruct->dwHoverTime);

-}

-#endif

-

-#ifndef NO_TRIVERTEX

-typedef struct TRIVERTEX_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID x, y, Red, Green, Blue, Alpha;

-} TRIVERTEX_FID_CACHE;

-

-TRIVERTEX_FID_CACHE TRIVERTEXFc;

-

-void cacheTRIVERTEXFields(JNIEnv *env, jobject lpObject)

-{

-	if (TRIVERTEXFc.cached) return;

-	TRIVERTEXFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	TRIVERTEXFc.x = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "x", "I");

-	TRIVERTEXFc.y = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "y", "I");

-	TRIVERTEXFc.Red = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "Red", "S");

-	TRIVERTEXFc.Green = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "Green", "S");

-	TRIVERTEXFc.Blue = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "Blue", "S");

-	TRIVERTEXFc.Alpha = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "Alpha", "S");

-	TRIVERTEXFc.cached = 1;

-}

-

-TRIVERTEX *getTRIVERTEXFields(JNIEnv *env, jobject lpObject, TRIVERTEX *lpStruct)

-{

-	if (!TRIVERTEXFc.cached) cacheTRIVERTEXFields(env, lpObject);

-	lpStruct->x = (*env)->GetIntField(env, lpObject, TRIVERTEXFc.x);

-	lpStruct->y = (*env)->GetIntField(env, lpObject, TRIVERTEXFc.y);

-	lpStruct->Red = (*env)->GetShortField(env, lpObject, TRIVERTEXFc.Red);

-	lpStruct->Green = (*env)->GetShortField(env, lpObject, TRIVERTEXFc.Green);

-	lpStruct->Blue = (*env)->GetShortField(env, lpObject, TRIVERTEXFc.Blue);

-	lpStruct->Alpha = (*env)->GetShortField(env, lpObject, TRIVERTEXFc.Alpha);

-	return lpStruct;

-}

-

-void setTRIVERTEXFields(JNIEnv *env, jobject lpObject, TRIVERTEX *lpStruct)

-{

-	if (!TRIVERTEXFc.cached) cacheTRIVERTEXFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, TRIVERTEXFc.x, (jint)lpStruct->x);

-	(*env)->SetIntField(env, lpObject, TRIVERTEXFc.y, (jint)lpStruct->y);

-	(*env)->SetShortField(env, lpObject, TRIVERTEXFc.Red, (jshort)lpStruct->Red);

-	(*env)->SetShortField(env, lpObject, TRIVERTEXFc.Green, (jshort)lpStruct->Green);

-	(*env)->SetShortField(env, lpObject, TRIVERTEXFc.Blue, (jshort)lpStruct->Blue);

-	(*env)->SetShortField(env, lpObject, TRIVERTEXFc.Alpha, (jshort)lpStruct->Alpha);

-}

-#endif

-

-#ifndef NO_TVHITTESTINFO

-typedef struct TVHITTESTINFO_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID x, y, flags, hItem;

-} TVHITTESTINFO_FID_CACHE;

-

-TVHITTESTINFO_FID_CACHE TVHITTESTINFOFc;

-

-void cacheTVHITTESTINFOFields(JNIEnv *env, jobject lpObject)

-{

-	if (TVHITTESTINFOFc.cached) return;

-	TVHITTESTINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	TVHITTESTINFOFc.x = (*env)->GetFieldID(env, TVHITTESTINFOFc.clazz, "x", "I");

-	TVHITTESTINFOFc.y = (*env)->GetFieldID(env, TVHITTESTINFOFc.clazz, "y", "I");

-	TVHITTESTINFOFc.flags = (*env)->GetFieldID(env, TVHITTESTINFOFc.clazz, "flags", "I");

-	TVHITTESTINFOFc.hItem = (*env)->GetFieldID(env, TVHITTESTINFOFc.clazz, "hItem", "I");

-	TVHITTESTINFOFc.cached = 1;

-}

-

-TVHITTESTINFO *getTVHITTESTINFOFields(JNIEnv *env, jobject lpObject, TVHITTESTINFO *lpStruct)

-{

-	if (!TVHITTESTINFOFc.cached) cacheTVHITTESTINFOFields(env, lpObject);

-	lpStruct->pt.x = (*env)->GetIntField(env, lpObject, TVHITTESTINFOFc.x);

-	lpStruct->pt.y = (*env)->GetIntField(env, lpObject, TVHITTESTINFOFc.y);

-	lpStruct->flags = (*env)->GetIntField(env, lpObject, TVHITTESTINFOFc.flags);

-	lpStruct->hItem = (HTREEITEM)(*env)->GetIntField(env, lpObject, TVHITTESTINFOFc.hItem);

-	return lpStruct;

-}

-

-void setTVHITTESTINFOFields(JNIEnv *env, jobject lpObject, TVHITTESTINFO *lpStruct)

-{

-	if (!TVHITTESTINFOFc.cached) cacheTVHITTESTINFOFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, TVHITTESTINFOFc.x, (jint)lpStruct->pt.x);

-	(*env)->SetIntField(env, lpObject, TVHITTESTINFOFc.y, (jint)lpStruct->pt.y);

-	(*env)->SetIntField(env, lpObject, TVHITTESTINFOFc.flags, (jint)lpStruct->flags);

-	(*env)->SetIntField(env, lpObject, TVHITTESTINFOFc.hItem, (jint)lpStruct->hItem);

-}

-#endif

-

-#ifndef NO_TVINSERTSTRUCT

-typedef struct TVINSERTSTRUCT_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID hParent, hInsertAfter, mask, hItem, state, stateMask, pszText, cchTextMax, iImage, iSelectedImage, cChildren, lParam;

-} TVINSERTSTRUCT_FID_CACHE;

-

-TVINSERTSTRUCT_FID_CACHE TVINSERTSTRUCTFc;

-

-void cacheTVINSERTSTRUCTFields(JNIEnv *env, jobject lpObject)

-{

-	if (TVINSERTSTRUCTFc.cached) return;

-	TVINSERTSTRUCTFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	TVINSERTSTRUCTFc.hParent = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "hParent", "I");

-	TVINSERTSTRUCTFc.hInsertAfter = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "hInsertAfter", "I");

-	TVINSERTSTRUCTFc.mask = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "mask", "I");

-	TVINSERTSTRUCTFc.hItem = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "hItem", "I");

-	TVINSERTSTRUCTFc.state = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "state", "I");

-	TVINSERTSTRUCTFc.stateMask = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "stateMask", "I");

-	TVINSERTSTRUCTFc.pszText = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "pszText", "I");

-	TVINSERTSTRUCTFc.cchTextMax = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "cchTextMax", "I");

-	TVINSERTSTRUCTFc.iImage = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "iImage", "I");

-	TVINSERTSTRUCTFc.iSelectedImage = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "iSelectedImage", "I");

-	TVINSERTSTRUCTFc.cChildren = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "cChildren", "I");

-	TVINSERTSTRUCTFc.lParam = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "lParam", "I");

-	TVINSERTSTRUCTFc.cached = 1;

-}

-

-TVINSERTSTRUCT *getTVINSERTSTRUCTFields(JNIEnv *env, jobject lpObject, TVINSERTSTRUCT *lpStruct)

-{

-	if (!TVINSERTSTRUCTFc.cached) cacheTVINSERTSTRUCTFields(env, lpObject);

-	lpStruct->hParent = (HTREEITEM)(*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.hParent);

-	lpStruct->hInsertAfter = (HTREEITEM)(*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.hInsertAfter);

-	lpStruct->item.mask = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.mask);

-	lpStruct->item.hItem = (HTREEITEM)(*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.hItem);

-	lpStruct->item.state = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.state);

-	lpStruct->item.stateMask = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.stateMask);

-	lpStruct->item.pszText = (LPTSTR)(*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.pszText);

-	lpStruct->item.cchTextMax = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.cchTextMax);

-	lpStruct->item.iImage = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.iImage);

-	lpStruct->item.iSelectedImage = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.iSelectedImage);

-	lpStruct->item.cChildren = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.cChildren);

-	lpStruct->item.lParam = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.lParam);

-	return lpStruct;

-}

-

-void setTVINSERTSTRUCTFields(JNIEnv *env, jobject lpObject, TVINSERTSTRUCT *lpStruct)

-{

-	if (!TVINSERTSTRUCTFc.cached) cacheTVINSERTSTRUCTFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.hParent, (jint)lpStruct->hParent);

-	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.hInsertAfter, (jint)lpStruct->hInsertAfter);

-	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.mask, (jint)lpStruct->item.mask);

-	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.hItem, (jint)lpStruct->item.hItem);

-	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.state, (jint)lpStruct->item.state);

-	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.stateMask, (jint)lpStruct->item.stateMask);

-	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.pszText, (jint)lpStruct->item.pszText);

-	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.cchTextMax, (jint)lpStruct->item.cchTextMax);

-	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.iImage, (jint)lpStruct->item.iImage);

-	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.iSelectedImage, (jint)lpStruct->item.iSelectedImage);

-	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.cChildren, (jint)lpStruct->item.cChildren);

-	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.lParam, (jint)lpStruct->item.lParam);

-}

-#endif

-

-#ifndef NO_TVITEM

-typedef struct TVITEM_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID mask, hItem, state, stateMask, pszText, cchTextMax, iImage, iSelectedImage, cChildren, lParam;

-} TVITEM_FID_CACHE;

-

-TVITEM_FID_CACHE TVITEMFc;

-

-void cacheTVITEMFields(JNIEnv *env, jobject lpObject)

-{

-	if (TVITEMFc.cached) return;

-	TVITEMFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	TVITEMFc.mask = (*env)->GetFieldID(env, TVITEMFc.clazz, "mask", "I");

-	TVITEMFc.hItem = (*env)->GetFieldID(env, TVITEMFc.clazz, "hItem", "I");

-	TVITEMFc.state = (*env)->GetFieldID(env, TVITEMFc.clazz, "state", "I");

-	TVITEMFc.stateMask = (*env)->GetFieldID(env, TVITEMFc.clazz, "stateMask", "I");

-	TVITEMFc.pszText = (*env)->GetFieldID(env, TVITEMFc.clazz, "pszText", "I");

-	TVITEMFc.cchTextMax = (*env)->GetFieldID(env, TVITEMFc.clazz, "cchTextMax", "I");

-	TVITEMFc.iImage = (*env)->GetFieldID(env, TVITEMFc.clazz, "iImage", "I");

-	TVITEMFc.iSelectedImage = (*env)->GetFieldID(env, TVITEMFc.clazz, "iSelectedImage", "I");

-	TVITEMFc.cChildren = (*env)->GetFieldID(env, TVITEMFc.clazz, "cChildren", "I");

-	TVITEMFc.lParam = (*env)->GetFieldID(env, TVITEMFc.clazz, "lParam", "I");

-	TVITEMFc.cached = 1;

-}

-

-TVITEM *getTVITEMFields(JNIEnv *env, jobject lpObject, TVITEM *lpStruct)

-{

-	if (!TVITEMFc.cached) cacheTVITEMFields(env, lpObject);

-	lpStruct->mask = (*env)->GetIntField(env, lpObject, TVITEMFc.mask);

-	lpStruct->hItem = (HTREEITEM)(*env)->GetIntField(env, lpObject, TVITEMFc.hItem);

-	lpStruct->state = (*env)->GetIntField(env, lpObject, TVITEMFc.state);

-	lpStruct->stateMask = (*env)->GetIntField(env, lpObject, TVITEMFc.stateMask);

-	lpStruct->pszText = (LPTSTR)(*env)->GetIntField(env, lpObject, TVITEMFc.pszText);

-	lpStruct->cchTextMax = (*env)->GetIntField(env, lpObject, TVITEMFc.cchTextMax);

-	lpStruct->iImage = (*env)->GetIntField(env, lpObject, TVITEMFc.iImage);

-	lpStruct->iSelectedImage = (*env)->GetIntField(env, lpObject, TVITEMFc.iSelectedImage);

-	lpStruct->cChildren = (*env)->GetIntField(env, lpObject, TVITEMFc.cChildren);

-	lpStruct->lParam = (*env)->GetIntField(env, lpObject, TVITEMFc.lParam);

-	return lpStruct;

-}

-

-void setTVITEMFields(JNIEnv *env, jobject lpObject, TVITEM *lpStruct)

-{

-	if (!TVITEMFc.cached) cacheTVITEMFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, TVITEMFc.mask, (jint)lpStruct->mask);

-	(*env)->SetIntField(env, lpObject, TVITEMFc.hItem, (jint)lpStruct->hItem);

-	(*env)->SetIntField(env, lpObject, TVITEMFc.state, (jint)lpStruct->state);

-	(*env)->SetIntField(env, lpObject, TVITEMFc.stateMask, (jint)lpStruct->stateMask);

-	(*env)->SetIntField(env, lpObject, TVITEMFc.pszText, (jint)lpStruct->pszText);

-	(*env)->SetIntField(env, lpObject, TVITEMFc.cchTextMax, (jint)lpStruct->cchTextMax);

-	(*env)->SetIntField(env, lpObject, TVITEMFc.iImage, (jint)lpStruct->iImage);

-	(*env)->SetIntField(env, lpObject, TVITEMFc.iSelectedImage, (jint)lpStruct->iSelectedImage);

-	(*env)->SetIntField(env, lpObject, TVITEMFc.cChildren, (jint)lpStruct->cChildren);

-	(*env)->SetIntField(env, lpObject, TVITEMFc.lParam, (jint)lpStruct->lParam);

-}

-#endif

-

-#ifndef NO_WINDOWPLACEMENT

-typedef struct WINDOWPLACEMENT_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID length, flags, showCmd, ptMinPosition_x, ptMinPosition_y, ptMaxPosition_x, ptMaxPosition_y, left, top, right, bottom;

-} WINDOWPLACEMENT_FID_CACHE;

-

-WINDOWPLACEMENT_FID_CACHE WINDOWPLACEMENTFc;

-

-void cacheWINDOWPLACEMENTFields(JNIEnv *env, jobject lpObject)

-{

-	if (WINDOWPLACEMENTFc.cached) return;

-	WINDOWPLACEMENTFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	WINDOWPLACEMENTFc.length = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "length", "I");

-	WINDOWPLACEMENTFc.flags = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "flags", "I");

-	WINDOWPLACEMENTFc.showCmd = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "showCmd", "I");

-	WINDOWPLACEMENTFc.ptMinPosition_x = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "ptMinPosition_x", "I");

-	WINDOWPLACEMENTFc.ptMinPosition_y = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "ptMinPosition_y", "I");

-	WINDOWPLACEMENTFc.ptMaxPosition_x = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "ptMaxPosition_x", "I");

-	WINDOWPLACEMENTFc.ptMaxPosition_y = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "ptMaxPosition_y", "I");

-	WINDOWPLACEMENTFc.left = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "left", "I");

-	WINDOWPLACEMENTFc.top = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "top", "I");

-	WINDOWPLACEMENTFc.right = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "right", "I");

-	WINDOWPLACEMENTFc.bottom = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "bottom", "I");

-	WINDOWPLACEMENTFc.cached = 1;

-}

-

-WINDOWPLACEMENT *getWINDOWPLACEMENTFields(JNIEnv *env, jobject lpObject, WINDOWPLACEMENT *lpStruct)

-{

-	if (!WINDOWPLACEMENTFc.cached) cacheWINDOWPLACEMENTFields(env, lpObject);

-	lpStruct->length = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.length);

-	lpStruct->flags = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.flags);

-	lpStruct->showCmd = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.showCmd);

-	lpStruct->ptMinPosition.x = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMinPosition_x);

-	lpStruct->ptMinPosition.y = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMinPosition_y);

-	lpStruct->ptMaxPosition.x = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMaxPosition_x);

-	lpStruct->ptMaxPosition.y = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMaxPosition_y);

-	lpStruct->rcNormalPosition.left = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.left);

-	lpStruct->rcNormalPosition.top = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.top);

-	lpStruct->rcNormalPosition.right = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.right);

-	lpStruct->rcNormalPosition.bottom = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.bottom);

-	return lpStruct;

-}

-

-void setWINDOWPLACEMENTFields(JNIEnv *env, jobject lpObject, WINDOWPLACEMENT *lpStruct)

-{

-	if (!WINDOWPLACEMENTFc.cached) cacheWINDOWPLACEMENTFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.length, (jint)lpStruct->length);

-	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.flags, (jint)lpStruct->flags);

-	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.showCmd, (jint)lpStruct->showCmd);

-	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMinPosition_x, (jint)lpStruct->ptMinPosition.x);

-	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMinPosition_y, (jint)lpStruct->ptMinPosition.y);

-	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMaxPosition_x, (jint)lpStruct->ptMaxPosition.x);

-	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMaxPosition_y, (jint)lpStruct->ptMaxPosition.y);

-	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.left, (jint)lpStruct->rcNormalPosition.left);

-	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.top, (jint)lpStruct->rcNormalPosition.top);

-	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.right, (jint)lpStruct->rcNormalPosition.right);

-	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.bottom, (jint)lpStruct->rcNormalPosition.bottom);

-}

-#endif

-

-#ifndef NO_WINDOWPOS

-typedef struct WINDOWPOS_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID hwnd, hwndInsertAfter, x, y, cx, cy, flags;

-} WINDOWPOS_FID_CACHE;

-

-WINDOWPOS_FID_CACHE WINDOWPOSFc;

-

-void cacheWINDOWPOSFields(JNIEnv *env, jobject lpObject)

-{

-	if (WINDOWPOSFc.cached) return;

-	WINDOWPOSFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	WINDOWPOSFc.hwnd = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "hwnd", "I");

-	WINDOWPOSFc.hwndInsertAfter = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "hwndInsertAfter", "I");

-	WINDOWPOSFc.x = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "x", "I");

-	WINDOWPOSFc.y = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "y", "I");

-	WINDOWPOSFc.cx = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "cx", "I");

-	WINDOWPOSFc.cy = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "cy", "I");

-	WINDOWPOSFc.flags = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "flags", "I");

-	WINDOWPOSFc.cached = 1;

-}

-

-WINDOWPOS *getWINDOWPOSFields(JNIEnv *env, jobject lpObject, WINDOWPOS *lpStruct)

-{

-	if (!WINDOWPOSFc.cached) cacheWINDOWPOSFields(env, lpObject);

-	lpStruct->hwnd = (HWND)(*env)->GetIntField(env, lpObject, WINDOWPOSFc.hwnd);

-	lpStruct->hwndInsertAfter = (HWND)(*env)->GetIntField(env, lpObject, WINDOWPOSFc.hwndInsertAfter);

-	lpStruct->x = (*env)->GetIntField(env, lpObject, WINDOWPOSFc.x);

-	lpStruct->y = (*env)->GetIntField(env, lpObject, WINDOWPOSFc.y);

-	lpStruct->cx = (*env)->GetIntField(env, lpObject, WINDOWPOSFc.cx);

-	lpStruct->cy = (*env)->GetIntField(env, lpObject, WINDOWPOSFc.cy);

-	lpStruct->flags = (*env)->GetIntField(env, lpObject, WINDOWPOSFc.flags);

-	return lpStruct;

-}

-

-void setWINDOWPOSFields(JNIEnv *env, jobject lpObject, WINDOWPOS *lpStruct)

-{

-	if (!WINDOWPOSFc.cached) cacheWINDOWPOSFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.hwnd, (jint)lpStruct->hwnd);

-	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.hwndInsertAfter, (jint)lpStruct->hwndInsertAfter);

-	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.x, (jint)lpStruct->x);

-	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.y, (jint)lpStruct->y);

-	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.cx, (jint)lpStruct->cx);

-	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.cy, (jint)lpStruct->cy);

-	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.flags, (jint)lpStruct->flags);

-}

-#endif

-

-#ifndef NO_WNDCLASS

-typedef struct WNDCLASS_FID_CACHE {

-	int cached;

-	jclass clazz;

-	jfieldID style, lpfnWndProc, cbClsExtra, cbWndExtra, hInstance, hIcon, hCursor, hbrBackground, lpszMenuName, lpszClassName;

-} WNDCLASS_FID_CACHE;

-

-WNDCLASS_FID_CACHE WNDCLASSFc;

-

-void cacheWNDCLASSFields(JNIEnv *env, jobject lpObject)

-{

-	if (WNDCLASSFc.cached) return;

-	WNDCLASSFc.clazz = (*env)->GetObjectClass(env, lpObject);

-	WNDCLASSFc.style = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "style", "I");

-	WNDCLASSFc.lpfnWndProc = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "lpfnWndProc", "I");

-	WNDCLASSFc.cbClsExtra = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "cbClsExtra", "I");

-	WNDCLASSFc.cbWndExtra = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "cbWndExtra", "I");

-	WNDCLASSFc.hInstance = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "hInstance", "I");

-	WNDCLASSFc.hIcon = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "hIcon", "I");

-	WNDCLASSFc.hCursor = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "hCursor", "I");

-	WNDCLASSFc.hbrBackground = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "hbrBackground", "I");

-	WNDCLASSFc.lpszMenuName = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "lpszMenuName", "I");

-	WNDCLASSFc.lpszClassName = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "lpszClassName", "I");

-	WNDCLASSFc.cached = 1;

-}

-

-WNDCLASS *getWNDCLASSFields(JNIEnv *env, jobject lpObject, WNDCLASS *lpStruct)

-{

-	if (!WNDCLASSFc.cached) cacheWNDCLASSFields(env, lpObject);

-	lpStruct->style = (*env)->GetIntField(env, lpObject, WNDCLASSFc.style);

-	lpStruct->lpfnWndProc = (WNDPROC)(*env)->GetIntField(env, lpObject, WNDCLASSFc.lpfnWndProc);

-	lpStruct->cbClsExtra = (*env)->GetIntField(env, lpObject, WNDCLASSFc.cbClsExtra);

-	lpStruct->cbWndExtra = (*env)->GetIntField(env, lpObject, WNDCLASSFc.cbWndExtra);

-	lpStruct->hInstance = (HINSTANCE)(*env)->GetIntField(env, lpObject, WNDCLASSFc.hInstance);

-	lpStruct->hIcon = (HICON)(*env)->GetIntField(env, lpObject, WNDCLASSFc.hIcon);

-	lpStruct->hCursor = (HCURSOR)(*env)->GetIntField(env, lpObject, WNDCLASSFc.hCursor);

-	lpStruct->hbrBackground = (HBRUSH)(*env)->GetIntField(env, lpObject, WNDCLASSFc.hbrBackground);

-	lpStruct->lpszMenuName = (LPCTSTR)(*env)->GetIntField(env, lpObject, WNDCLASSFc.lpszMenuName);

-	lpStruct->lpszClassName = (LPCTSTR)(*env)->GetIntField(env, lpObject, WNDCLASSFc.lpszClassName);

-	return lpStruct;

-}

-

-void setWNDCLASSFields(JNIEnv *env, jobject lpObject, WNDCLASS *lpStruct)

-{

-	if (!WNDCLASSFc.cached) cacheWNDCLASSFields(env, lpObject);

-	(*env)->SetIntField(env, lpObject, WNDCLASSFc.style, (jint)lpStruct->style);

-	(*env)->SetIntField(env, lpObject, WNDCLASSFc.lpfnWndProc, (jint)lpStruct->lpfnWndProc);

-	(*env)->SetIntField(env, lpObject, WNDCLASSFc.cbClsExtra, (jint)lpStruct->cbClsExtra);

-	(*env)->SetIntField(env, lpObject, WNDCLASSFc.cbWndExtra, (jint)lpStruct->cbWndExtra);

-	(*env)->SetIntField(env, lpObject, WNDCLASSFc.hInstance, (jint)lpStruct->hInstance);

-	(*env)->SetIntField(env, lpObject, WNDCLASSFc.hIcon, (jint)lpStruct->hIcon);

-	(*env)->SetIntField(env, lpObject, WNDCLASSFc.hCursor, (jint)lpStruct->hCursor);

-	(*env)->SetIntField(env, lpObject, WNDCLASSFc.hbrBackground, (jint)lpStruct->hbrBackground);

-	(*env)->SetIntField(env, lpObject, WNDCLASSFc.lpszMenuName, (jint)lpStruct->lpszMenuName);

-	(*env)->SetIntField(env, lpObject, WNDCLASSFc.lpszClassName, (jint)lpStruct->lpszClassName);

-}

-#endif

-

+/*******************************************************************************
+* Copyright (c) 2000, 2003 IBM Corporation and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Common Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/cpl-v10.html
+* 
+* Contributors:
+*     IBM Corporation - initial API and implementation
+*******************************************************************************/
+
+#include "swt.h"
+#include "os_structs.h"
+
+#ifndef NO_ACCEL
+typedef struct ACCEL_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID fVirt, key, cmd;
+} ACCEL_FID_CACHE;
+
+ACCEL_FID_CACHE ACCELFc;
+
+void cacheACCELFields(JNIEnv *env, jobject lpObject)
+{
+	if (ACCELFc.cached) return;
+	ACCELFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	ACCELFc.fVirt = (*env)->GetFieldID(env, ACCELFc.clazz, "fVirt", "B");
+	ACCELFc.key = (*env)->GetFieldID(env, ACCELFc.clazz, "key", "S");
+	ACCELFc.cmd = (*env)->GetFieldID(env, ACCELFc.clazz, "cmd", "S");
+	ACCELFc.cached = 1;
+}
+
+ACCEL *getACCELFields(JNIEnv *env, jobject lpObject, ACCEL *lpStruct)
+{
+	if (!ACCELFc.cached) cacheACCELFields(env, lpObject);
+	lpStruct->fVirt = (*env)->GetByteField(env, lpObject, ACCELFc.fVirt);
+	lpStruct->key = (*env)->GetShortField(env, lpObject, ACCELFc.key);
+	lpStruct->cmd = (*env)->GetShortField(env, lpObject, ACCELFc.cmd);
+	return lpStruct;
+}
+
+void setACCELFields(JNIEnv *env, jobject lpObject, ACCEL *lpStruct)
+{
+	if (!ACCELFc.cached) cacheACCELFields(env, lpObject);
+	(*env)->SetByteField(env, lpObject, ACCELFc.fVirt, (jbyte)lpStruct->fVirt);
+	(*env)->SetShortField(env, lpObject, ACCELFc.key, (jshort)lpStruct->key);
+	(*env)->SetShortField(env, lpObject, ACCELFc.cmd, (jshort)lpStruct->cmd);
+}
+#endif
+
+#ifndef NO_BITMAP
+typedef struct BITMAP_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID bmType, bmWidth, bmHeight, bmWidthBytes, bmPlanes, bmBitsPixel, bmBits;
+} BITMAP_FID_CACHE;
+
+BITMAP_FID_CACHE BITMAPFc;
+
+void cacheBITMAPFields(JNIEnv *env, jobject lpObject)
+{
+	if (BITMAPFc.cached) return;
+	BITMAPFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	BITMAPFc.bmType = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmType", "I");
+	BITMAPFc.bmWidth = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmWidth", "I");
+	BITMAPFc.bmHeight = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmHeight", "I");
+	BITMAPFc.bmWidthBytes = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmWidthBytes", "I");
+	BITMAPFc.bmPlanes = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmPlanes", "S");
+	BITMAPFc.bmBitsPixel = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmBitsPixel", "S");
+	BITMAPFc.bmBits = (*env)->GetFieldID(env, BITMAPFc.clazz, "bmBits", "I");
+	BITMAPFc.cached = 1;
+}
+
+BITMAP *getBITMAPFields(JNIEnv *env, jobject lpObject, BITMAP *lpStruct)
+{
+	if (!BITMAPFc.cached) cacheBITMAPFields(env, lpObject);
+	lpStruct->bmType = (*env)->GetIntField(env, lpObject, BITMAPFc.bmType);
+	lpStruct->bmWidth = (*env)->GetIntField(env, lpObject, BITMAPFc.bmWidth);
+	lpStruct->bmHeight = (*env)->GetIntField(env, lpObject, BITMAPFc.bmHeight);
+	lpStruct->bmWidthBytes = (*env)->GetIntField(env, lpObject, BITMAPFc.bmWidthBytes);
+	lpStruct->bmPlanes = (*env)->GetShortField(env, lpObject, BITMAPFc.bmPlanes);
+	lpStruct->bmBitsPixel = (*env)->GetShortField(env, lpObject, BITMAPFc.bmBitsPixel);
+	lpStruct->bmBits = (LPVOID)(*env)->GetIntField(env, lpObject, BITMAPFc.bmBits);
+	return lpStruct;
+}
+
+void setBITMAPFields(JNIEnv *env, jobject lpObject, BITMAP *lpStruct)
+{
+	if (!BITMAPFc.cached) cacheBITMAPFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, BITMAPFc.bmType, (jint)lpStruct->bmType);
+	(*env)->SetIntField(env, lpObject, BITMAPFc.bmWidth, (jint)lpStruct->bmWidth);
+	(*env)->SetIntField(env, lpObject, BITMAPFc.bmHeight, (jint)lpStruct->bmHeight);
+	(*env)->SetIntField(env, lpObject, BITMAPFc.bmWidthBytes, (jint)lpStruct->bmWidthBytes);
+	(*env)->SetShortField(env, lpObject, BITMAPFc.bmPlanes, (jshort)lpStruct->bmPlanes);
+	(*env)->SetShortField(env, lpObject, BITMAPFc.bmBitsPixel, (jshort)lpStruct->bmBitsPixel);
+	(*env)->SetIntField(env, lpObject, BITMAPFc.bmBits, (jint)lpStruct->bmBits);
+}
+#endif
+
+#ifndef NO_BITMAPINFOHEADER
+typedef struct BITMAPINFOHEADER_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID biSize, biWidth, biHeight, biPlanes, biBitCount, biCompression, biSizeImage, biXPelsPerMeter, biYPelsPerMeter, biClrUsed, biClrImportant;
+} BITMAPINFOHEADER_FID_CACHE;
+
+BITMAPINFOHEADER_FID_CACHE BITMAPINFOHEADERFc;
+
+void cacheBITMAPINFOHEADERFields(JNIEnv *env, jobject lpObject)
+{
+	if (BITMAPINFOHEADERFc.cached) return;
+	BITMAPINFOHEADERFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	BITMAPINFOHEADERFc.biSize = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biSize", "I");
+	BITMAPINFOHEADERFc.biWidth = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biWidth", "I");
+	BITMAPINFOHEADERFc.biHeight = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biHeight", "I");
+	BITMAPINFOHEADERFc.biPlanes = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biPlanes", "S");
+	BITMAPINFOHEADERFc.biBitCount = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biBitCount", "S");
+	BITMAPINFOHEADERFc.biCompression = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biCompression", "I");
+	BITMAPINFOHEADERFc.biSizeImage = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biSizeImage", "I");
+	BITMAPINFOHEADERFc.biXPelsPerMeter = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biXPelsPerMeter", "I");
+	BITMAPINFOHEADERFc.biYPelsPerMeter = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biYPelsPerMeter", "I");
+	BITMAPINFOHEADERFc.biClrUsed = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biClrUsed", "I");
+	BITMAPINFOHEADERFc.biClrImportant = (*env)->GetFieldID(env, BITMAPINFOHEADERFc.clazz, "biClrImportant", "I");
+	BITMAPINFOHEADERFc.cached = 1;
+}
+
+BITMAPINFOHEADER *getBITMAPINFOHEADERFields(JNIEnv *env, jobject lpObject, BITMAPINFOHEADER *lpStruct)
+{
+	if (!BITMAPINFOHEADERFc.cached) cacheBITMAPINFOHEADERFields(env, lpObject);
+	lpStruct->biSize = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biSize);
+	lpStruct->biWidth = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biWidth);
+	lpStruct->biHeight = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biHeight);
+	lpStruct->biPlanes = (*env)->GetShortField(env, lpObject, BITMAPINFOHEADERFc.biPlanes);
+	lpStruct->biBitCount = (*env)->GetShortField(env, lpObject, BITMAPINFOHEADERFc.biBitCount);
+	lpStruct->biCompression = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biCompression);
+	lpStruct->biSizeImage = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biSizeImage);
+	lpStruct->biXPelsPerMeter = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biXPelsPerMeter);
+	lpStruct->biYPelsPerMeter = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biYPelsPerMeter);
+	lpStruct->biClrUsed = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biClrUsed);
+	lpStruct->biClrImportant = (*env)->GetIntField(env, lpObject, BITMAPINFOHEADERFc.biClrImportant);
+	return lpStruct;
+}
+
+void setBITMAPINFOHEADERFields(JNIEnv *env, jobject lpObject, BITMAPINFOHEADER *lpStruct)
+{
+	if (!BITMAPINFOHEADERFc.cached) cacheBITMAPINFOHEADERFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biSize, (jint)lpStruct->biSize);
+	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biWidth, (jint)lpStruct->biWidth);
+	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biHeight, (jint)lpStruct->biHeight);
+	(*env)->SetShortField(env, lpObject, BITMAPINFOHEADERFc.biPlanes, (jshort)lpStruct->biPlanes);
+	(*env)->SetShortField(env, lpObject, BITMAPINFOHEADERFc.biBitCount, (jshort)lpStruct->biBitCount);
+	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biCompression, (jint)lpStruct->biCompression);
+	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biSizeImage, (jint)lpStruct->biSizeImage);
+	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biXPelsPerMeter, (jint)lpStruct->biXPelsPerMeter);
+	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biYPelsPerMeter, (jint)lpStruct->biYPelsPerMeter);
+	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biClrUsed, (jint)lpStruct->biClrUsed);
+	(*env)->SetIntField(env, lpObject, BITMAPINFOHEADERFc.biClrImportant, (jint)lpStruct->biClrImportant);
+}
+#endif
+
+#ifndef NO_BROWSEINFO
+typedef struct BROWSEINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID hwndOwner, pidlRoot, pszDisplayName, lpszTitle, ulFlags, lpfn, lParam, iImage;
+} BROWSEINFO_FID_CACHE;
+
+BROWSEINFO_FID_CACHE BROWSEINFOFc;
+
+void cacheBROWSEINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (BROWSEINFOFc.cached) return;
+	BROWSEINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	BROWSEINFOFc.hwndOwner = (*env)->GetFieldID(env, BROWSEINFOFc.clazz, "hwndOwner", "I");
+	BROWSEINFOFc.pidlRoot = (*env)->GetFieldID(env, BROWSEINFOFc.clazz, "pidlRoot", "I");
+	BROWSEINFOFc.pszDisplayName = (*env)->GetFieldID(env, BROWSEINFOFc.clazz, "pszDisplayName", "I");
+	BROWSEINFOFc.lpszTitle = (*env)->GetFieldID(env, BROWSEINFOFc.clazz, "lpszTitle", "I");
+	BROWSEINFOFc.ulFlags = (*env)->GetFieldID(env, BROWSEINFOFc.clazz, "ulFlags", "I");
+	BROWSEINFOFc.lpfn = (*env)->GetFieldID(env, BROWSEINFOFc.clazz, "lpfn", "I");
+	BROWSEINFOFc.lParam = (*env)->GetFieldID(env, BROWSEINFOFc.clazz, "lParam", "I");
+	BROWSEINFOFc.iImage = (*env)->GetFieldID(env, BROWSEINFOFc.clazz, "iImage", "I");
+	BROWSEINFOFc.cached = 1;
+}
+
+BROWSEINFO *getBROWSEINFOFields(JNIEnv *env, jobject lpObject, BROWSEINFO *lpStruct)
+{
+	if (!BROWSEINFOFc.cached) cacheBROWSEINFOFields(env, lpObject);
+	lpStruct->hwndOwner = (HWND)(*env)->GetIntField(env, lpObject, BROWSEINFOFc.hwndOwner);
+	lpStruct->pidlRoot = (LPCITEMIDLIST)(*env)->GetIntField(env, lpObject, BROWSEINFOFc.pidlRoot);
+	lpStruct->pszDisplayName = (LPTSTR)(*env)->GetIntField(env, lpObject, BROWSEINFOFc.pszDisplayName);
+	lpStruct->lpszTitle = (LPCTSTR)(*env)->GetIntField(env, lpObject, BROWSEINFOFc.lpszTitle);
+	lpStruct->ulFlags = (*env)->GetIntField(env, lpObject, BROWSEINFOFc.ulFlags);
+	lpStruct->lpfn = (BFFCALLBACK)(*env)->GetIntField(env, lpObject, BROWSEINFOFc.lpfn);
+	lpStruct->lParam = (*env)->GetIntField(env, lpObject, BROWSEINFOFc.lParam);
+	lpStruct->iImage = (*env)->GetIntField(env, lpObject, BROWSEINFOFc.iImage);
+	return lpStruct;
+}
+
+void setBROWSEINFOFields(JNIEnv *env, jobject lpObject, BROWSEINFO *lpStruct)
+{
+	if (!BROWSEINFOFc.cached) cacheBROWSEINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, BROWSEINFOFc.hwndOwner, (jint)lpStruct->hwndOwner);
+	(*env)->SetIntField(env, lpObject, BROWSEINFOFc.pidlRoot, (jint)lpStruct->pidlRoot);
+	(*env)->SetIntField(env, lpObject, BROWSEINFOFc.pszDisplayName, (jint)lpStruct->pszDisplayName);
+	(*env)->SetIntField(env, lpObject, BROWSEINFOFc.lpszTitle, (jint)lpStruct->lpszTitle);
+	(*env)->SetIntField(env, lpObject, BROWSEINFOFc.ulFlags, (jint)lpStruct->ulFlags);
+	(*env)->SetIntField(env, lpObject, BROWSEINFOFc.lpfn, (jint)lpStruct->lpfn);
+	(*env)->SetIntField(env, lpObject, BROWSEINFOFc.lParam, (jint)lpStruct->lParam);
+	(*env)->SetIntField(env, lpObject, BROWSEINFOFc.iImage, (jint)lpStruct->iImage);
+}
+#endif
+
+#ifndef NO_CHOOSECOLOR
+typedef struct CHOOSECOLOR_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID lStructSize, hwndOwner, hInstance, rgbResult, lpCustColors, Flags, lCustData, lpfnHook, lpTemplateName;
+} CHOOSECOLOR_FID_CACHE;
+
+CHOOSECOLOR_FID_CACHE CHOOSECOLORFc;
+
+void cacheCHOOSECOLORFields(JNIEnv *env, jobject lpObject)
+{
+	if (CHOOSECOLORFc.cached) return;
+	CHOOSECOLORFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	CHOOSECOLORFc.lStructSize = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "lStructSize", "I");
+	CHOOSECOLORFc.hwndOwner = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "hwndOwner", "I");
+	CHOOSECOLORFc.hInstance = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "hInstance", "I");
+	CHOOSECOLORFc.rgbResult = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "rgbResult", "I");
+	CHOOSECOLORFc.lpCustColors = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "lpCustColors", "I");
+	CHOOSECOLORFc.Flags = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "Flags", "I");
+	CHOOSECOLORFc.lCustData = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "lCustData", "I");
+	CHOOSECOLORFc.lpfnHook = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "lpfnHook", "I");
+	CHOOSECOLORFc.lpTemplateName = (*env)->GetFieldID(env, CHOOSECOLORFc.clazz, "lpTemplateName", "I");
+	CHOOSECOLORFc.cached = 1;
+}
+
+CHOOSECOLOR *getCHOOSECOLORFields(JNIEnv *env, jobject lpObject, CHOOSECOLOR *lpStruct)
+{
+	if (!CHOOSECOLORFc.cached) cacheCHOOSECOLORFields(env, lpObject);
+	lpStruct->lStructSize = (*env)->GetIntField(env, lpObject, CHOOSECOLORFc.lStructSize);
+	lpStruct->hwndOwner = (HWND)(*env)->GetIntField(env, lpObject, CHOOSECOLORFc.hwndOwner);
+	lpStruct->hInstance = (HANDLE)(*env)->GetIntField(env, lpObject, CHOOSECOLORFc.hInstance);
+	lpStruct->rgbResult = (*env)->GetIntField(env, lpObject, CHOOSECOLORFc.rgbResult);
+	lpStruct->lpCustColors = (COLORREF *)(*env)->GetIntField(env, lpObject, CHOOSECOLORFc.lpCustColors);
+	lpStruct->Flags = (*env)->GetIntField(env, lpObject, CHOOSECOLORFc.Flags);
+	lpStruct->lCustData = (*env)->GetIntField(env, lpObject, CHOOSECOLORFc.lCustData);
+	lpStruct->lpfnHook = (LPCCHOOKPROC)(*env)->GetIntField(env, lpObject, CHOOSECOLORFc.lpfnHook);
+	lpStruct->lpTemplateName = (LPCTSTR)(*env)->GetIntField(env, lpObject, CHOOSECOLORFc.lpTemplateName);
+	return lpStruct;
+}
+
+void setCHOOSECOLORFields(JNIEnv *env, jobject lpObject, CHOOSECOLOR *lpStruct)
+{
+	if (!CHOOSECOLORFc.cached) cacheCHOOSECOLORFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.lStructSize, (jint)lpStruct->lStructSize);
+	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.hwndOwner, (jint)lpStruct->hwndOwner);
+	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.hInstance, (jint)lpStruct->hInstance);
+	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.rgbResult, (jint)lpStruct->rgbResult);
+	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.lpCustColors, (jint)lpStruct->lpCustColors);
+	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.Flags, (jint)lpStruct->Flags);
+	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.lCustData, (jint)lpStruct->lCustData);
+	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.lpfnHook, (jint)lpStruct->lpfnHook);
+	(*env)->SetIntField(env, lpObject, CHOOSECOLORFc.lpTemplateName, (jint)lpStruct->lpTemplateName);
+}
+#endif
+
+#ifndef NO_CHOOSEFONT
+typedef struct CHOOSEFONT_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID lStructSize, hwndOwner, hDC, lpLogFont, iPointSize, Flags, rgbColors, lCustData, lpfnHook, lpTemplateName, hInstance, lpszStyle, nFontType, nSizeMin, nSizeMax;
+} CHOOSEFONT_FID_CACHE;
+
+CHOOSEFONT_FID_CACHE CHOOSEFONTFc;
+
+void cacheCHOOSEFONTFields(JNIEnv *env, jobject lpObject)
+{
+	if (CHOOSEFONTFc.cached) return;
+	CHOOSEFONTFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	CHOOSEFONTFc.lStructSize = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lStructSize", "I");
+	CHOOSEFONTFc.hwndOwner = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "hwndOwner", "I");
+	CHOOSEFONTFc.hDC = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "hDC", "I");
+	CHOOSEFONTFc.lpLogFont = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lpLogFont", "I");
+	CHOOSEFONTFc.iPointSize = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "iPointSize", "I");
+	CHOOSEFONTFc.Flags = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "Flags", "I");
+	CHOOSEFONTFc.rgbColors = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "rgbColors", "I");
+	CHOOSEFONTFc.lCustData = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lCustData", "I");
+	CHOOSEFONTFc.lpfnHook = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lpfnHook", "I");
+	CHOOSEFONTFc.lpTemplateName = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lpTemplateName", "I");
+	CHOOSEFONTFc.hInstance = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "hInstance", "I");
+	CHOOSEFONTFc.lpszStyle = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "lpszStyle", "I");
+	CHOOSEFONTFc.nFontType = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "nFontType", "S");
+	CHOOSEFONTFc.nSizeMin = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "nSizeMin", "I");
+	CHOOSEFONTFc.nSizeMax = (*env)->GetFieldID(env, CHOOSEFONTFc.clazz, "nSizeMax", "I");
+	CHOOSEFONTFc.cached = 1;
+}
+
+CHOOSEFONT *getCHOOSEFONTFields(JNIEnv *env, jobject lpObject, CHOOSEFONT *lpStruct)
+{
+	if (!CHOOSEFONTFc.cached) cacheCHOOSEFONTFields(env, lpObject);
+	lpStruct->lStructSize = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.lStructSize);
+	lpStruct->hwndOwner = (HWND)(*env)->GetIntField(env, lpObject, CHOOSEFONTFc.hwndOwner);
+	lpStruct->hDC = (HDC)(*env)->GetIntField(env, lpObject, CHOOSEFONTFc.hDC);
+	lpStruct->lpLogFont = (LPLOGFONT)(*env)->GetIntField(env, lpObject, CHOOSEFONTFc.lpLogFont);
+	lpStruct->iPointSize = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.iPointSize);
+	lpStruct->Flags = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.Flags);
+	lpStruct->rgbColors = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.rgbColors);
+	lpStruct->lCustData = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.lCustData);
+	lpStruct->lpfnHook = (LPCFHOOKPROC)(*env)->GetIntField(env, lpObject, CHOOSEFONTFc.lpfnHook);
+	lpStruct->lpTemplateName = (LPCTSTR)(*env)->GetIntField(env, lpObject, CHOOSEFONTFc.lpTemplateName);
+	lpStruct->hInstance = (HINSTANCE)(*env)->GetIntField(env, lpObject, CHOOSEFONTFc.hInstance);
+	lpStruct->lpszStyle = (LPTSTR)(*env)->GetIntField(env, lpObject, CHOOSEFONTFc.lpszStyle);
+	lpStruct->nFontType = (*env)->GetShortField(env, lpObject, CHOOSEFONTFc.nFontType);
+	lpStruct->nSizeMin = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.nSizeMin);
+	lpStruct->nSizeMax = (*env)->GetIntField(env, lpObject, CHOOSEFONTFc.nSizeMax);
+	return lpStruct;
+}
+
+void setCHOOSEFONTFields(JNIEnv *env, jobject lpObject, CHOOSEFONT *lpStruct)
+{
+	if (!CHOOSEFONTFc.cached) cacheCHOOSEFONTFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.lStructSize, (jint)lpStruct->lStructSize);
+	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.hwndOwner, (jint)lpStruct->hwndOwner);
+	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.hDC, (jint)lpStruct->hDC);
+	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.lpLogFont, (jint)lpStruct->lpLogFont);
+	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.iPointSize, (jint)lpStruct->iPointSize);
+	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.Flags, (jint)lpStruct->Flags);
+	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.rgbColors, (jint)lpStruct->rgbColors);
+	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.lCustData, (jint)lpStruct->lCustData);
+	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.lpfnHook, (jint)lpStruct->lpfnHook);
+	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.lpTemplateName, (jint)lpStruct->lpTemplateName);
+	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.hInstance, (jint)lpStruct->hInstance);
+	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.lpszStyle, (jint)lpStruct->lpszStyle);
+	(*env)->SetShortField(env, lpObject, CHOOSEFONTFc.nFontType, (jshort)lpStruct->nFontType);
+	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.nSizeMin, (jint)lpStruct->nSizeMin);
+	(*env)->SetIntField(env, lpObject, CHOOSEFONTFc.nSizeMax, (jint)lpStruct->nSizeMax);
+}
+#endif
+
+#ifndef NO_COMPOSITIONFORM
+typedef struct COMPOSITIONFORM_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID dwStyle, x, y, left, top, right, bottom;
+} COMPOSITIONFORM_FID_CACHE;
+
+COMPOSITIONFORM_FID_CACHE COMPOSITIONFORMFc;
+
+void cacheCOMPOSITIONFORMFields(JNIEnv *env, jobject lpObject)
+{
+	if (COMPOSITIONFORMFc.cached) return;
+	COMPOSITIONFORMFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	COMPOSITIONFORMFc.dwStyle = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "dwStyle", "I");
+	COMPOSITIONFORMFc.x = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "x", "I");
+	COMPOSITIONFORMFc.y = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "y", "I");
+	COMPOSITIONFORMFc.left = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "left", "I");
+	COMPOSITIONFORMFc.top = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "top", "I");
+	COMPOSITIONFORMFc.right = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "right", "I");
+	COMPOSITIONFORMFc.bottom = (*env)->GetFieldID(env, COMPOSITIONFORMFc.clazz, "bottom", "I");
+	COMPOSITIONFORMFc.cached = 1;
+}
+
+COMPOSITIONFORM *getCOMPOSITIONFORMFields(JNIEnv *env, jobject lpObject, COMPOSITIONFORM *lpStruct)
+{
+	if (!COMPOSITIONFORMFc.cached) cacheCOMPOSITIONFORMFields(env, lpObject);
+	lpStruct->dwStyle = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.dwStyle);
+	lpStruct->ptCurrentPos.y = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.x);
+	lpStruct->ptCurrentPos.x = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.y);
+	lpStruct->rcArea.left = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.left);
+	lpStruct->rcArea.top = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.top);
+	lpStruct->rcArea.right = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.right);
+	lpStruct->rcArea.bottom = (*env)->GetIntField(env, lpObject, COMPOSITIONFORMFc.bottom);
+	return lpStruct;
+}
+
+void setCOMPOSITIONFORMFields(JNIEnv *env, jobject lpObject, COMPOSITIONFORM *lpStruct)
+{
+	if (!COMPOSITIONFORMFc.cached) cacheCOMPOSITIONFORMFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.dwStyle, (jint)lpStruct->dwStyle);
+	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.x, (jint)lpStruct->ptCurrentPos.y);
+	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.y, (jint)lpStruct->ptCurrentPos.x);
+	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.left, (jint)lpStruct->rcArea.left);
+	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.top, (jint)lpStruct->rcArea.top);
+	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.right, (jint)lpStruct->rcArea.right);
+	(*env)->SetIntField(env, lpObject, COMPOSITIONFORMFc.bottom, (jint)lpStruct->rcArea.bottom);
+}
+#endif
+
+#ifndef NO_CREATESTRUCT
+typedef struct CREATESTRUCT_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID lpCreateParams, hInstance, hMenu, hwndParent, cy, cx, y, x, style, lpszName, lpszClass, dwExStyle;
+} CREATESTRUCT_FID_CACHE;
+
+CREATESTRUCT_FID_CACHE CREATESTRUCTFc;
+
+void cacheCREATESTRUCTFields(JNIEnv *env, jobject lpObject)
+{
+	if (CREATESTRUCTFc.cached) return;
+	CREATESTRUCTFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	CREATESTRUCTFc.lpCreateParams = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "lpCreateParams", "I");
+	CREATESTRUCTFc.hInstance = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "hInstance", "I");
+	CREATESTRUCTFc.hMenu = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "hMenu", "I");
+	CREATESTRUCTFc.hwndParent = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "hwndParent", "I");
+	CREATESTRUCTFc.cy = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "cy", "I");
+	CREATESTRUCTFc.cx = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "cx", "I");
+	CREATESTRUCTFc.y = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "y", "I");
+	CREATESTRUCTFc.x = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "x", "I");
+	CREATESTRUCTFc.style = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "style", "I");
+	CREATESTRUCTFc.lpszName = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "lpszName", "I");
+	CREATESTRUCTFc.lpszClass = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "lpszClass", "I");
+	CREATESTRUCTFc.dwExStyle = (*env)->GetFieldID(env, CREATESTRUCTFc.clazz, "dwExStyle", "I");
+	CREATESTRUCTFc.cached = 1;
+}
+
+CREATESTRUCT *getCREATESTRUCTFields(JNIEnv *env, jobject lpObject, CREATESTRUCT *lpStruct)
+{
+	if (!CREATESTRUCTFc.cached) cacheCREATESTRUCTFields(env, lpObject);
+	lpStruct->lpCreateParams = (LPVOID)(*env)->GetIntField(env, lpObject, CREATESTRUCTFc.lpCreateParams);
+	lpStruct->hInstance = (HINSTANCE)(*env)->GetIntField(env, lpObject, CREATESTRUCTFc.hInstance);
+	lpStruct->hMenu = (HMENU)(*env)->GetIntField(env, lpObject, CREATESTRUCTFc.hMenu);
+	lpStruct->hwndParent = (HWND)(*env)->GetIntField(env, lpObject, CREATESTRUCTFc.hwndParent);
+	lpStruct->cy = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.cy);
+	lpStruct->cx = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.cx);
+	lpStruct->y = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.y);
+	lpStruct->x = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.x);
+	lpStruct->style = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.style);
+	lpStruct->lpszName = (LPCTSTR)(*env)->GetIntField(env, lpObject, CREATESTRUCTFc.lpszName);
+	lpStruct->lpszClass = (LPCTSTR)(*env)->GetIntField(env, lpObject, CREATESTRUCTFc.lpszClass);
+	lpStruct->dwExStyle = (*env)->GetIntField(env, lpObject, CREATESTRUCTFc.dwExStyle);
+	return lpStruct;
+}
+
+void setCREATESTRUCTFields(JNIEnv *env, jobject lpObject, CREATESTRUCT *lpStruct)
+{
+	if (!CREATESTRUCTFc.cached) cacheCREATESTRUCTFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.lpCreateParams, (jint)lpStruct->lpCreateParams);
+	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.hInstance, (jint)lpStruct->hInstance);
+	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.hMenu, (jint)lpStruct->hMenu);
+	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.hwndParent, (jint)lpStruct->hwndParent);
+	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.cy, (jint)lpStruct->cy);
+	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.cx, (jint)lpStruct->cx);
+	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.y, (jint)lpStruct->y);
+	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.x, (jint)lpStruct->x);
+	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.style, (jint)lpStruct->style);
+	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.lpszName, (jint)lpStruct->lpszName);
+	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.lpszClass, (jint)lpStruct->lpszClass);
+	(*env)->SetIntField(env, lpObject, CREATESTRUCTFc.dwExStyle, (jint)lpStruct->dwExStyle);
+}
+#endif
+
+#ifndef NO_DIBSECTION
+typedef struct DIBSECTION_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID biSize, biWidth, biHeight, biPlanes, biBitCount, biCompression, biSizeImage, biXPelsPerMeter, biYPelsPerMeter, biClrUsed, biClrImportant, dsBitfields0, dsBitfields1, dsBitfields2, dshSection, dsOffset;
+} DIBSECTION_FID_CACHE;
+
+DIBSECTION_FID_CACHE DIBSECTIONFc;
+
+void cacheDIBSECTIONFields(JNIEnv *env, jobject lpObject)
+{
+	if (DIBSECTIONFc.cached) return;
+	cacheBITMAPFields(env, lpObject);
+	DIBSECTIONFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	DIBSECTIONFc.biSize = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biSize", "I");
+	DIBSECTIONFc.biWidth = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biWidth", "I");
+	DIBSECTIONFc.biHeight = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biHeight", "I");
+	DIBSECTIONFc.biPlanes = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biPlanes", "S");
+	DIBSECTIONFc.biBitCount = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biBitCount", "S");
+	DIBSECTIONFc.biCompression = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biCompression", "I");
+	DIBSECTIONFc.biSizeImage = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biSizeImage", "I");
+	DIBSECTIONFc.biXPelsPerMeter = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biXPelsPerMeter", "I");
+	DIBSECTIONFc.biYPelsPerMeter = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biYPelsPerMeter", "I");
+	DIBSECTIONFc.biClrUsed = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biClrUsed", "I");
+	DIBSECTIONFc.biClrImportant = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "biClrImportant", "I");
+	DIBSECTIONFc.dsBitfields0 = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "dsBitfields0", "I");
+	DIBSECTIONFc.dsBitfields1 = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "dsBitfields1", "I");
+	DIBSECTIONFc.dsBitfields2 = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "dsBitfields2", "I");
+	DIBSECTIONFc.dshSection = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "dshSection", "I");
+	DIBSECTIONFc.dsOffset = (*env)->GetFieldID(env, DIBSECTIONFc.clazz, "dsOffset", "I");
+	DIBSECTIONFc.cached = 1;
+}
+
+DIBSECTION *getDIBSECTIONFields(JNIEnv *env, jobject lpObject, DIBSECTION *lpStruct)
+{
+	if (!DIBSECTIONFc.cached) cacheDIBSECTIONFields(env, lpObject);
+	getBITMAPFields(env, lpObject, (BITMAP *)lpStruct);
+	lpStruct->dsBmih.biSize = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biSize);
+	lpStruct->dsBmih.biWidth = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biWidth);
+	lpStruct->dsBmih.biHeight = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biHeight);
+	lpStruct->dsBmih.biPlanes = (*env)->GetShortField(env, lpObject, DIBSECTIONFc.biPlanes);
+	lpStruct->dsBmih.biBitCount = (*env)->GetShortField(env, lpObject, DIBSECTIONFc.biBitCount);
+	lpStruct->dsBmih.biCompression = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biCompression);
+	lpStruct->dsBmih.biSizeImage = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biSizeImage);
+	lpStruct->dsBmih.biXPelsPerMeter = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biXPelsPerMeter);
+	lpStruct->dsBmih.biYPelsPerMeter = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biYPelsPerMeter);
+	lpStruct->dsBmih.biClrUsed = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biClrUsed);
+	lpStruct->dsBmih.biClrImportant = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.biClrImportant);
+	lpStruct->dsBitfields[0] = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.dsBitfields0);
+	lpStruct->dsBitfields[1] = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.dsBitfields1);
+	lpStruct->dsBitfields[2] = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.dsBitfields2);
+	lpStruct->dshSection = (HANDLE)(*env)->GetIntField(env, lpObject, DIBSECTIONFc.dshSection);
+	lpStruct->dsOffset = (*env)->GetIntField(env, lpObject, DIBSECTIONFc.dsOffset);
+	return lpStruct;
+}
+
+void setDIBSECTIONFields(JNIEnv *env, jobject lpObject, DIBSECTION *lpStruct)
+{
+	if (!DIBSECTIONFc.cached) cacheDIBSECTIONFields(env, lpObject);
+	setBITMAPFields(env, lpObject, (BITMAP *)lpStruct);
+	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biSize, (jint)lpStruct->dsBmih.biSize);
+	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biWidth, (jint)lpStruct->dsBmih.biWidth);
+	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biHeight, (jint)lpStruct->dsBmih.biHeight);
+	(*env)->SetShortField(env, lpObject, DIBSECTIONFc.biPlanes, (jshort)lpStruct->dsBmih.biPlanes);
+	(*env)->SetShortField(env, lpObject, DIBSECTIONFc.biBitCount, (jshort)lpStruct->dsBmih.biBitCount);
+	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biCompression, (jint)lpStruct->dsBmih.biCompression);
+	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biSizeImage, (jint)lpStruct->dsBmih.biSizeImage);
+	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biXPelsPerMeter, (jint)lpStruct->dsBmih.biXPelsPerMeter);
+	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biYPelsPerMeter, (jint)lpStruct->dsBmih.biYPelsPerMeter);
+	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biClrUsed, (jint)lpStruct->dsBmih.biClrUsed);
+	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.biClrImportant, (jint)lpStruct->dsBmih.biClrImportant);
+	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.dsBitfields0, (jint)lpStruct->dsBitfields[0]);
+	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.dsBitfields1, (jint)lpStruct->dsBitfields[1]);
+	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.dsBitfields2, (jint)lpStruct->dsBitfields[2]);
+	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.dshSection, (jint)lpStruct->dshSection);
+	(*env)->SetIntField(env, lpObject, DIBSECTIONFc.dsOffset, (jint)lpStruct->dsOffset);
+}
+#endif
+
+#ifndef NO_DLLVERSIONINFO
+typedef struct DLLVERSIONINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, dwMajorVersion, dwMinorVersion, dwBuildNumber, dwPlatformID;
+} DLLVERSIONINFO_FID_CACHE;
+
+DLLVERSIONINFO_FID_CACHE DLLVERSIONINFOFc;
+
+void cacheDLLVERSIONINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (DLLVERSIONINFOFc.cached) return;
+	DLLVERSIONINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	DLLVERSIONINFOFc.cbSize = (*env)->GetFieldID(env, DLLVERSIONINFOFc.clazz, "cbSize", "I");
+	DLLVERSIONINFOFc.dwMajorVersion = (*env)->GetFieldID(env, DLLVERSIONINFOFc.clazz, "dwMajorVersion", "I");
+	DLLVERSIONINFOFc.dwMinorVersion = (*env)->GetFieldID(env, DLLVERSIONINFOFc.clazz, "dwMinorVersion", "I");
+	DLLVERSIONINFOFc.dwBuildNumber = (*env)->GetFieldID(env, DLLVERSIONINFOFc.clazz, "dwBuildNumber", "I");
+	DLLVERSIONINFOFc.dwPlatformID = (*env)->GetFieldID(env, DLLVERSIONINFOFc.clazz, "dwPlatformID", "I");
+	DLLVERSIONINFOFc.cached = 1;
+}
+
+DLLVERSIONINFO *getDLLVERSIONINFOFields(JNIEnv *env, jobject lpObject, DLLVERSIONINFO *lpStruct)
+{
+	if (!DLLVERSIONINFOFc.cached) cacheDLLVERSIONINFOFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, DLLVERSIONINFOFc.cbSize);
+	lpStruct->dwMajorVersion = (*env)->GetIntField(env, lpObject, DLLVERSIONINFOFc.dwMajorVersion);
+	lpStruct->dwMinorVersion = (*env)->GetIntField(env, lpObject, DLLVERSIONINFOFc.dwMinorVersion);
+	lpStruct->dwBuildNumber = (*env)->GetIntField(env, lpObject, DLLVERSIONINFOFc.dwBuildNumber);
+	lpStruct->dwPlatformID = (*env)->GetIntField(env, lpObject, DLLVERSIONINFOFc.dwPlatformID);
+	return lpStruct;
+}
+
+void setDLLVERSIONINFOFields(JNIEnv *env, jobject lpObject, DLLVERSIONINFO *lpStruct)
+{
+	if (!DLLVERSIONINFOFc.cached) cacheDLLVERSIONINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, DLLVERSIONINFOFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, DLLVERSIONINFOFc.dwMajorVersion, (jint)lpStruct->dwMajorVersion);
+	(*env)->SetIntField(env, lpObject, DLLVERSIONINFOFc.dwMinorVersion, (jint)lpStruct->dwMinorVersion);
+	(*env)->SetIntField(env, lpObject, DLLVERSIONINFOFc.dwBuildNumber, (jint)lpStruct->dwBuildNumber);
+	(*env)->SetIntField(env, lpObject, DLLVERSIONINFOFc.dwPlatformID, (jint)lpStruct->dwPlatformID);
+}
+#endif
+
+#ifndef NO_DOCINFO
+typedef struct DOCINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, lpszDocName, lpszOutput, lpszDatatype, fwType;
+} DOCINFO_FID_CACHE;
+
+DOCINFO_FID_CACHE DOCINFOFc;
+
+void cacheDOCINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (DOCINFOFc.cached) return;
+	DOCINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	DOCINFOFc.cbSize = (*env)->GetFieldID(env, DOCINFOFc.clazz, "cbSize", "I");
+	DOCINFOFc.lpszDocName = (*env)->GetFieldID(env, DOCINFOFc.clazz, "lpszDocName", "I");
+	DOCINFOFc.lpszOutput = (*env)->GetFieldID(env, DOCINFOFc.clazz, "lpszOutput", "I");
+	DOCINFOFc.lpszDatatype = (*env)->GetFieldID(env, DOCINFOFc.clazz, "lpszDatatype", "I");
+	DOCINFOFc.fwType = (*env)->GetFieldID(env, DOCINFOFc.clazz, "fwType", "I");
+	DOCINFOFc.cached = 1;
+}
+
+DOCINFO *getDOCINFOFields(JNIEnv *env, jobject lpObject, DOCINFO *lpStruct)
+{
+	if (!DOCINFOFc.cached) cacheDOCINFOFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, DOCINFOFc.cbSize);
+	lpStruct->lpszDocName = (LPCTSTR)(*env)->GetIntField(env, lpObject, DOCINFOFc.lpszDocName);
+	lpStruct->lpszOutput = (LPCTSTR)(*env)->GetIntField(env, lpObject, DOCINFOFc.lpszOutput);
+	lpStruct->lpszDatatype = (LPCTSTR)(*env)->GetIntField(env, lpObject, DOCINFOFc.lpszDatatype);
+	lpStruct->fwType = (*env)->GetIntField(env, lpObject, DOCINFOFc.fwType);
+	return lpStruct;
+}
+
+void setDOCINFOFields(JNIEnv *env, jobject lpObject, DOCINFO *lpStruct)
+{
+	if (!DOCINFOFc.cached) cacheDOCINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, DOCINFOFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, DOCINFOFc.lpszDocName, (jint)lpStruct->lpszDocName);
+	(*env)->SetIntField(env, lpObject, DOCINFOFc.lpszOutput, (jint)lpStruct->lpszOutput);
+	(*env)->SetIntField(env, lpObject, DOCINFOFc.lpszDatatype, (jint)lpStruct->lpszDatatype);
+	(*env)->SetIntField(env, lpObject, DOCINFOFc.fwType, (jint)lpStruct->fwType);
+}
+#endif
+
+#ifndef NO_DRAWITEMSTRUCT
+typedef struct DRAWITEMSTRUCT_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID CtlType, CtlID, itemID, itemAction, itemState, hwndItem, hDC, left, top, bottom, right, itemData;
+} DRAWITEMSTRUCT_FID_CACHE;
+
+DRAWITEMSTRUCT_FID_CACHE DRAWITEMSTRUCTFc;
+
+void cacheDRAWITEMSTRUCTFields(JNIEnv *env, jobject lpObject)
+{
+	if (DRAWITEMSTRUCTFc.cached) return;
+	DRAWITEMSTRUCTFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	DRAWITEMSTRUCTFc.CtlType = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "CtlType", "I");
+	DRAWITEMSTRUCTFc.CtlID = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "CtlID", "I");
+	DRAWITEMSTRUCTFc.itemID = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "itemID", "I");
+	DRAWITEMSTRUCTFc.itemAction = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "itemAction", "I");
+	DRAWITEMSTRUCTFc.itemState = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "itemState", "I");
+	DRAWITEMSTRUCTFc.hwndItem = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "hwndItem", "I");
+	DRAWITEMSTRUCTFc.hDC = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "hDC", "I");
+	DRAWITEMSTRUCTFc.left = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "left", "I");
+	DRAWITEMSTRUCTFc.top = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "top", "I");
+	DRAWITEMSTRUCTFc.bottom = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "bottom", "I");
+	DRAWITEMSTRUCTFc.right = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "right", "I");
+	DRAWITEMSTRUCTFc.itemData = (*env)->GetFieldID(env, DRAWITEMSTRUCTFc.clazz, "itemData", "I");
+	DRAWITEMSTRUCTFc.cached = 1;
+}
+
+DRAWITEMSTRUCT *getDRAWITEMSTRUCTFields(JNIEnv *env, jobject lpObject, DRAWITEMSTRUCT *lpStruct)
+{
+	if (!DRAWITEMSTRUCTFc.cached) cacheDRAWITEMSTRUCTFields(env, lpObject);
+	lpStruct->CtlType = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.CtlType);
+	lpStruct->CtlID = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.CtlID);
+	lpStruct->itemID = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemID);
+	lpStruct->itemAction = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemAction);
+	lpStruct->itemState = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemState);
+	lpStruct->hwndItem = (HWND)(*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.hwndItem);
+	lpStruct->hDC = (HDC)(*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.hDC);
+	lpStruct->rcItem.left = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.left);
+	lpStruct->rcItem.top = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.top);
+	lpStruct->rcItem.bottom = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.bottom);
+	lpStruct->rcItem.right = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.right);
+	lpStruct->itemData = (*env)->GetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemData);
+	return lpStruct;
+}
+
+void setDRAWITEMSTRUCTFields(JNIEnv *env, jobject lpObject, DRAWITEMSTRUCT *lpStruct)
+{
+	if (!DRAWITEMSTRUCTFc.cached) cacheDRAWITEMSTRUCTFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.CtlType, (jint)lpStruct->CtlType);
+	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.CtlID, (jint)lpStruct->CtlID);
+	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemID, (jint)lpStruct->itemID);
+	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemAction, (jint)lpStruct->itemAction);
+	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemState, (jint)lpStruct->itemState);
+	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.hwndItem, (jint)lpStruct->hwndItem);
+	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.hDC, (jint)lpStruct->hDC);
+	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.left, (jint)lpStruct->rcItem.left);
+	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.top, (jint)lpStruct->rcItem.top);
+	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.bottom, (jint)lpStruct->rcItem.bottom);
+	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.right, (jint)lpStruct->rcItem.right);
+	(*env)->SetIntField(env, lpObject, DRAWITEMSTRUCTFc.itemData, (jint)lpStruct->itemData);
+}
+#endif
+
+#ifndef NO_DROPFILES
+typedef struct DROPFILES_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID pFiles, pt_x, pt_y, fNC, fWide;
+} DROPFILES_FID_CACHE;
+
+DROPFILES_FID_CACHE DROPFILESFc;
+
+void cacheDROPFILESFields(JNIEnv *env, jobject lpObject)
+{
+	if (DROPFILESFc.cached) return;
+	DROPFILESFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	DROPFILESFc.pFiles = (*env)->GetFieldID(env, DROPFILESFc.clazz, "pFiles", "I");
+	DROPFILESFc.pt_x = (*env)->GetFieldID(env, DROPFILESFc.clazz, "pt_x", "I");
+	DROPFILESFc.pt_y = (*env)->GetFieldID(env, DROPFILESFc.clazz, "pt_y", "I");
+	DROPFILESFc.fNC = (*env)->GetFieldID(env, DROPFILESFc.clazz, "fNC", "I");
+	DROPFILESFc.fWide = (*env)->GetFieldID(env, DROPFILESFc.clazz, "fWide", "I");
+	DROPFILESFc.cached = 1;
+}
+
+DROPFILES *getDROPFILESFields(JNIEnv *env, jobject lpObject, DROPFILES *lpStruct)
+{
+	if (!DROPFILESFc.cached) cacheDROPFILESFields(env, lpObject);
+	lpStruct->pFiles = (*env)->GetIntField(env, lpObject, DROPFILESFc.pFiles);
+	lpStruct->pt.x = (*env)->GetIntField(env, lpObject, DROPFILESFc.pt_x);
+	lpStruct->pt.y = (*env)->GetIntField(env, lpObject, DROPFILESFc.pt_y);
+	lpStruct->fNC = (*env)->GetIntField(env, lpObject, DROPFILESFc.fNC);
+	lpStruct->fWide = (*env)->GetIntField(env, lpObject, DROPFILESFc.fWide);
+	return lpStruct;
+}
+
+void setDROPFILESFields(JNIEnv *env, jobject lpObject, DROPFILES *lpStruct)
+{
+	if (!DROPFILESFc.cached) cacheDROPFILESFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, DROPFILESFc.pFiles, (jint)lpStruct->pFiles);
+	(*env)->SetIntField(env, lpObject, DROPFILESFc.pt_x, (jint)lpStruct->pt.x);
+	(*env)->SetIntField(env, lpObject, DROPFILESFc.pt_y, (jint)lpStruct->pt.y);
+	(*env)->SetIntField(env, lpObject, DROPFILESFc.fNC, (jint)lpStruct->fNC);
+	(*env)->SetIntField(env, lpObject, DROPFILESFc.fWide, (jint)lpStruct->fWide);
+}
+#endif
+
+#ifndef NO_FILETIME
+typedef struct FILETIME_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID dwLowDateTime, dwHighDateTime;
+} FILETIME_FID_CACHE;
+
+FILETIME_FID_CACHE FILETIMEFc;
+
+void cacheFILETIMEFields(JNIEnv *env, jobject lpObject)
+{
+	if (FILETIMEFc.cached) return;
+	FILETIMEFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	FILETIMEFc.dwLowDateTime = (*env)->GetFieldID(env, FILETIMEFc.clazz, "dwLowDateTime", "I");
+	FILETIMEFc.dwHighDateTime = (*env)->GetFieldID(env, FILETIMEFc.clazz, "dwHighDateTime", "I");
+	FILETIMEFc.cached = 1;
+}
+
+FILETIME *getFILETIMEFields(JNIEnv *env, jobject lpObject, FILETIME *lpStruct)
+{
+	if (!FILETIMEFc.cached) cacheFILETIMEFields(env, lpObject);
+	lpStruct->dwLowDateTime = (*env)->GetIntField(env, lpObject, FILETIMEFc.dwLowDateTime);
+	lpStruct->dwHighDateTime = (*env)->GetIntField(env, lpObject, FILETIMEFc.dwHighDateTime);
+	return lpStruct;
+}
+
+void setFILETIMEFields(JNIEnv *env, jobject lpObject, FILETIME *lpStruct)
+{
+	if (!FILETIMEFc.cached) cacheFILETIMEFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, FILETIMEFc.dwLowDateTime, (jint)lpStruct->dwLowDateTime);
+	(*env)->SetIntField(env, lpObject, FILETIMEFc.dwHighDateTime, (jint)lpStruct->dwHighDateTime);
+}
+#endif
+
+#ifndef NO_GCP_RESULTS
+typedef struct GCP_RESULTS_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID lStructSize, lpOutString, lpOrder, lpDx, lpCaretPos, lpClass, lpGlyphs, nGlyphs, nMaxFit;
+} GCP_RESULTS_FID_CACHE;
+
+GCP_RESULTS_FID_CACHE GCP_RESULTSFc;
+
+void cacheGCP_RESULTSFields(JNIEnv *env, jobject lpObject)
+{
+	if (GCP_RESULTSFc.cached) return;
+	GCP_RESULTSFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	GCP_RESULTSFc.lStructSize = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lStructSize", "I");
+	GCP_RESULTSFc.lpOutString = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpOutString", "I");
+	GCP_RESULTSFc.lpOrder = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpOrder", "I");
+	GCP_RESULTSFc.lpDx = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpDx", "I");
+	GCP_RESULTSFc.lpCaretPos = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpCaretPos", "I");
+	GCP_RESULTSFc.lpClass = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpClass", "I");
+	GCP_RESULTSFc.lpGlyphs = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "lpGlyphs", "I");
+	GCP_RESULTSFc.nGlyphs = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "nGlyphs", "I");
+	GCP_RESULTSFc.nMaxFit = (*env)->GetFieldID(env, GCP_RESULTSFc.clazz, "nMaxFit", "I");
+	GCP_RESULTSFc.cached = 1;
+}
+
+GCP_RESULTS *getGCP_RESULTSFields(JNIEnv *env, jobject lpObject, GCP_RESULTS *lpStruct)
+{
+	if (!GCP_RESULTSFc.cached) cacheGCP_RESULTSFields(env, lpObject);
+	lpStruct->lStructSize = (*env)->GetIntField(env, lpObject, GCP_RESULTSFc.lStructSize);
+	lpStruct->lpOutString = (LPTSTR)(*env)->GetIntField(env, lpObject, GCP_RESULTSFc.lpOutString);
+	lpStruct->lpOrder = (UINT  *)(*env)->GetIntField(env, lpObject, GCP_RESULTSFc.lpOrder);
+	lpStruct->lpDx = (int  *)(*env)->GetIntField(env, lpObject, GCP_RESULTSFc.lpDx);
+	lpStruct->lpCaretPos = (int  *)(*env)->GetIntField(env, lpObject, GCP_RESULTSFc.lpCaretPos);
+	lpStruct->lpClass = (LPSTR)(*env)->GetIntField(env, lpObject, GCP_RESULTSFc.lpClass);
+	lpStruct->lpGlyphs = (LPWSTR)(*env)->GetIntField(env, lpObject, GCP_RESULTSFc.lpGlyphs);
+	lpStruct->nGlyphs = (*env)->GetIntField(env, lpObject, GCP_RESULTSFc.nGlyphs);
+	lpStruct->nMaxFit = (*env)->GetIntField(env, lpObject, GCP_RESULTSFc.nMaxFit);
+	return lpStruct;
+}
+
+void setGCP_RESULTSFields(JNIEnv *env, jobject lpObject, GCP_RESULTS *lpStruct)
+{
+	if (!GCP_RESULTSFc.cached) cacheGCP_RESULTSFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.lStructSize, (jint)lpStruct->lStructSize);
+	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.lpOutString, (jint)lpStruct->lpOutString);
+	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.lpOrder, (jint)lpStruct->lpOrder);
+	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.lpDx, (jint)lpStruct->lpDx);
+	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.lpCaretPos, (jint)lpStruct->lpCaretPos);
+	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.lpClass, (jint)lpStruct->lpClass);
+	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.lpGlyphs, (jint)lpStruct->lpGlyphs);
+	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.nGlyphs, (jint)lpStruct->nGlyphs);
+	(*env)->SetIntField(env, lpObject, GCP_RESULTSFc.nMaxFit, (jint)lpStruct->nMaxFit);
+}
+#endif
+
+#ifndef NO_GRADIENT_RECT
+typedef struct GRADIENT_RECT_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID UpperLeft, LowerRight;
+} GRADIENT_RECT_FID_CACHE;
+
+GRADIENT_RECT_FID_CACHE GRADIENT_RECTFc;
+
+void cacheGRADIENT_RECTFields(JNIEnv *env, jobject lpObject)
+{
+	if (GRADIENT_RECTFc.cached) return;
+	GRADIENT_RECTFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	GRADIENT_RECTFc.UpperLeft = (*env)->GetFieldID(env, GRADIENT_RECTFc.clazz, "UpperLeft", "I");
+	GRADIENT_RECTFc.LowerRight = (*env)->GetFieldID(env, GRADIENT_RECTFc.clazz, "LowerRight", "I");
+	GRADIENT_RECTFc.cached = 1;
+}
+
+GRADIENT_RECT *getGRADIENT_RECTFields(JNIEnv *env, jobject lpObject, GRADIENT_RECT *lpStruct)
+{
+	if (!GRADIENT_RECTFc.cached) cacheGRADIENT_RECTFields(env, lpObject);
+	lpStruct->UpperLeft = (*env)->GetIntField(env, lpObject, GRADIENT_RECTFc.UpperLeft);
+	lpStruct->LowerRight = (*env)->GetIntField(env, lpObject, GRADIENT_RECTFc.LowerRight);
+	return lpStruct;
+}
+
+void setGRADIENT_RECTFields(JNIEnv *env, jobject lpObject, GRADIENT_RECT *lpStruct)
+{
+	if (!GRADIENT_RECTFc.cached) cacheGRADIENT_RECTFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, GRADIENT_RECTFc.UpperLeft, (jint)lpStruct->UpperLeft);
+	(*env)->SetIntField(env, lpObject, GRADIENT_RECTFc.LowerRight, (jint)lpStruct->LowerRight);
+}
+#endif
+
+#ifndef NO_HDITEM
+typedef struct HDITEM_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID mask, cxy, pszText, hbm, cchTextMax, fmt, lParam, iImage, iOrder;
+} HDITEM_FID_CACHE;
+
+HDITEM_FID_CACHE HDITEMFc;
+
+void cacheHDITEMFields(JNIEnv *env, jobject lpObject)
+{
+	if (HDITEMFc.cached) return;
+	HDITEMFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	HDITEMFc.mask = (*env)->GetFieldID(env, HDITEMFc.clazz, "mask", "I");
+	HDITEMFc.cxy = (*env)->GetFieldID(env, HDITEMFc.clazz, "cxy", "I");
+	HDITEMFc.pszText = (*env)->GetFieldID(env, HDITEMFc.clazz, "pszText", "I");
+	HDITEMFc.hbm = (*env)->GetFieldID(env, HDITEMFc.clazz, "hbm", "I");
+	HDITEMFc.cchTextMax = (*env)->GetFieldID(env, HDITEMFc.clazz, "cchTextMax", "I");
+	HDITEMFc.fmt = (*env)->GetFieldID(env, HDITEMFc.clazz, "fmt", "I");
+	HDITEMFc.lParam = (*env)->GetFieldID(env, HDITEMFc.clazz, "lParam", "I");
+	HDITEMFc.iImage = (*env)->GetFieldID(env, HDITEMFc.clazz, "iImage", "I");
+	HDITEMFc.iOrder = (*env)->GetFieldID(env, HDITEMFc.clazz, "iOrder", "I");
+	HDITEMFc.cached = 1;
+}
+
+HDITEM *getHDITEMFields(JNIEnv *env, jobject lpObject, HDITEM *lpStruct)
+{
+	if (!HDITEMFc.cached) cacheHDITEMFields(env, lpObject);
+	lpStruct->mask = (*env)->GetIntField(env, lpObject, HDITEMFc.mask);
+	lpStruct->cxy = (*env)->GetIntField(env, lpObject, HDITEMFc.cxy);
+	lpStruct->pszText = (LPTSTR)(*env)->GetIntField(env, lpObject, HDITEMFc.pszText);
+	lpStruct->hbm = (HBITMAP)(*env)->GetIntField(env, lpObject, HDITEMFc.hbm);
+	lpStruct->cchTextMax = (*env)->GetIntField(env, lpObject, HDITEMFc.cchTextMax);
+	lpStruct->fmt = (*env)->GetIntField(env, lpObject, HDITEMFc.fmt);
+	lpStruct->lParam = (*env)->GetIntField(env, lpObject, HDITEMFc.lParam);
+	lpStruct->iImage = (*env)->GetIntField(env, lpObject, HDITEMFc.iImage);
+	lpStruct->iOrder = (*env)->GetIntField(env, lpObject, HDITEMFc.iOrder);
+	return lpStruct;
+}
+
+void setHDITEMFields(JNIEnv *env, jobject lpObject, HDITEM *lpStruct)
+{
+	if (!HDITEMFc.cached) cacheHDITEMFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, HDITEMFc.mask, (jint)lpStruct->mask);
+	(*env)->SetIntField(env, lpObject, HDITEMFc.cxy, (jint)lpStruct->cxy);
+	(*env)->SetIntField(env, lpObject, HDITEMFc.pszText, (jint)lpStruct->pszText);
+	(*env)->SetIntField(env, lpObject, HDITEMFc.hbm, (jint)lpStruct->hbm);
+	(*env)->SetIntField(env, lpObject, HDITEMFc.cchTextMax, (jint)lpStruct->cchTextMax);
+	(*env)->SetIntField(env, lpObject, HDITEMFc.fmt, (jint)lpStruct->fmt);
+	(*env)->SetIntField(env, lpObject, HDITEMFc.lParam, (jint)lpStruct->lParam);
+	(*env)->SetIntField(env, lpObject, HDITEMFc.iImage, (jint)lpStruct->iImage);
+	(*env)->SetIntField(env, lpObject, HDITEMFc.iOrder, (jint)lpStruct->iOrder);
+}
+#endif
+
+#ifndef NO_HELPINFO
+typedef struct HELPINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, iContextType, iCtrlId, hItemHandle, dwContextId, x, y;
+} HELPINFO_FID_CACHE;
+
+HELPINFO_FID_CACHE HELPINFOFc;
+
+void cacheHELPINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (HELPINFOFc.cached) return;
+	HELPINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	HELPINFOFc.cbSize = (*env)->GetFieldID(env, HELPINFOFc.clazz, "cbSize", "I");
+	HELPINFOFc.iContextType = (*env)->GetFieldID(env, HELPINFOFc.clazz, "iContextType", "I");
+	HELPINFOFc.iCtrlId = (*env)->GetFieldID(env, HELPINFOFc.clazz, "iCtrlId", "I");
+	HELPINFOFc.hItemHandle = (*env)->GetFieldID(env, HELPINFOFc.clazz, "hItemHandle", "I");
+	HELPINFOFc.dwContextId = (*env)->GetFieldID(env, HELPINFOFc.clazz, "dwContextId", "I");
+	HELPINFOFc.x = (*env)->GetFieldID(env, HELPINFOFc.clazz, "x", "I");
+	HELPINFOFc.y = (*env)->GetFieldID(env, HELPINFOFc.clazz, "y", "I");
+	HELPINFOFc.cached = 1;
+}
+
+HELPINFO *getHELPINFOFields(JNIEnv *env, jobject lpObject, HELPINFO *lpStruct)
+{
+	if (!HELPINFOFc.cached) cacheHELPINFOFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, HELPINFOFc.cbSize);
+	lpStruct->iContextType = (*env)->GetIntField(env, lpObject, HELPINFOFc.iContextType);
+	lpStruct->iCtrlId = (*env)->GetIntField(env, lpObject, HELPINFOFc.iCtrlId);
+	lpStruct->hItemHandle = (HANDLE)(*env)->GetIntField(env, lpObject, HELPINFOFc.hItemHandle);
+	lpStruct->dwContextId = (*env)->GetIntField(env, lpObject, HELPINFOFc.dwContextId);
+	lpStruct->MousePos.x = (*env)->GetIntField(env, lpObject, HELPINFOFc.x);
+	lpStruct->MousePos.y = (*env)->GetIntField(env, lpObject, HELPINFOFc.y);
+	return lpStruct;
+}
+
+void setHELPINFOFields(JNIEnv *env, jobject lpObject, HELPINFO *lpStruct)
+{
+	if (!HELPINFOFc.cached) cacheHELPINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, HELPINFOFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, HELPINFOFc.iContextType, (jint)lpStruct->iContextType);
+	(*env)->SetIntField(env, lpObject, HELPINFOFc.iCtrlId, (jint)lpStruct->iCtrlId);
+	(*env)->SetIntField(env, lpObject, HELPINFOFc.hItemHandle, (jint)lpStruct->hItemHandle);
+	(*env)->SetIntField(env, lpObject, HELPINFOFc.dwContextId, (jint)lpStruct->dwContextId);
+	(*env)->SetIntField(env, lpObject, HELPINFOFc.x, (jint)lpStruct->MousePos.x);
+	(*env)->SetIntField(env, lpObject, HELPINFOFc.y, (jint)lpStruct->MousePos.y);
+}
+#endif
+
+#ifndef NO_ICONINFO
+typedef struct ICONINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID fIcon, xHotspot, yHotspot, hbmMask, hbmColor;
+} ICONINFO_FID_CACHE;
+
+ICONINFO_FID_CACHE ICONINFOFc;
+
+void cacheICONINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (ICONINFOFc.cached) return;
+	ICONINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	ICONINFOFc.fIcon = (*env)->GetFieldID(env, ICONINFOFc.clazz, "fIcon", "Z");
+	ICONINFOFc.xHotspot = (*env)->GetFieldID(env, ICONINFOFc.clazz, "xHotspot", "I");
+	ICONINFOFc.yHotspot = (*env)->GetFieldID(env, ICONINFOFc.clazz, "yHotspot", "I");
+	ICONINFOFc.hbmMask = (*env)->GetFieldID(env, ICONINFOFc.clazz, "hbmMask", "I");
+	ICONINFOFc.hbmColor = (*env)->GetFieldID(env, ICONINFOFc.clazz, "hbmColor", "I");
+	ICONINFOFc.cached = 1;
+}
+
+ICONINFO *getICONINFOFields(JNIEnv *env, jobject lpObject, ICONINFO *lpStruct)
+{
+	if (!ICONINFOFc.cached) cacheICONINFOFields(env, lpObject);
+	lpStruct->fIcon = (*env)->GetBooleanField(env, lpObject, ICONINFOFc.fIcon);
+	lpStruct->xHotspot = (*env)->GetIntField(env, lpObject, ICONINFOFc.xHotspot);
+	lpStruct->yHotspot = (*env)->GetIntField(env, lpObject, ICONINFOFc.yHotspot);
+	lpStruct->hbmMask = (HBITMAP)(*env)->GetIntField(env, lpObject, ICONINFOFc.hbmMask);
+	lpStruct->hbmColor = (HBITMAP)(*env)->GetIntField(env, lpObject, ICONINFOFc.hbmColor);
+	return lpStruct;
+}
+
+void setICONINFOFields(JNIEnv *env, jobject lpObject, ICONINFO *lpStruct)
+{
+	if (!ICONINFOFc.cached) cacheICONINFOFields(env, lpObject);
+	(*env)->SetBooleanField(env, lpObject, ICONINFOFc.fIcon, (jboolean)lpStruct->fIcon);
+	(*env)->SetIntField(env, lpObject, ICONINFOFc.xHotspot, (jint)lpStruct->xHotspot);
+	(*env)->SetIntField(env, lpObject, ICONINFOFc.yHotspot, (jint)lpStruct->yHotspot);
+	(*env)->SetIntField(env, lpObject, ICONINFOFc.hbmMask, (jint)lpStruct->hbmMask);
+	(*env)->SetIntField(env, lpObject, ICONINFOFc.hbmColor, (jint)lpStruct->hbmColor);
+}
+#endif
+
+#ifndef NO_INITCOMMONCONTROLSEX
+typedef struct INITCOMMONCONTROLSEX_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID dwSize, dwICC;
+} INITCOMMONCONTROLSEX_FID_CACHE;
+
+INITCOMMONCONTROLSEX_FID_CACHE INITCOMMONCONTROLSEXFc;
+
+void cacheINITCOMMONCONTROLSEXFields(JNIEnv *env, jobject lpObject)
+{
+	if (INITCOMMONCONTROLSEXFc.cached) return;
+	INITCOMMONCONTROLSEXFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	INITCOMMONCONTROLSEXFc.dwSize = (*env)->GetFieldID(env, INITCOMMONCONTROLSEXFc.clazz, "dwSize", "I");
+	INITCOMMONCONTROLSEXFc.dwICC = (*env)->GetFieldID(env, INITCOMMONCONTROLSEXFc.clazz, "dwICC", "I");
+	INITCOMMONCONTROLSEXFc.cached = 1;
+}
+
+INITCOMMONCONTROLSEX *getINITCOMMONCONTROLSEXFields(JNIEnv *env, jobject lpObject, INITCOMMONCONTROLSEX *lpStruct)
+{
+	if (!INITCOMMONCONTROLSEXFc.cached) cacheINITCOMMONCONTROLSEXFields(env, lpObject);
+	lpStruct->dwSize = (*env)->GetIntField(env, lpObject, INITCOMMONCONTROLSEXFc.dwSize);
+	lpStruct->dwICC = (*env)->GetIntField(env, lpObject, INITCOMMONCONTROLSEXFc.dwICC);
+	return lpStruct;
+}
+
+void setINITCOMMONCONTROLSEXFields(JNIEnv *env, jobject lpObject, INITCOMMONCONTROLSEX *lpStruct)
+{
+	if (!INITCOMMONCONTROLSEXFc.cached) cacheINITCOMMONCONTROLSEXFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, INITCOMMONCONTROLSEXFc.dwSize, (jint)lpStruct->dwSize);
+	(*env)->SetIntField(env, lpObject, INITCOMMONCONTROLSEXFc.dwICC, (jint)lpStruct->dwICC);
+}
+#endif
+
+#ifndef NO_LOGBRUSH
+typedef struct LOGBRUSH_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID lbStyle, lbColor, lbHatch;
+} LOGBRUSH_FID_CACHE;
+
+LOGBRUSH_FID_CACHE LOGBRUSHFc;
+
+void cacheLOGBRUSHFields(JNIEnv *env, jobject lpObject)
+{
+	if (LOGBRUSHFc.cached) return;
+	LOGBRUSHFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	LOGBRUSHFc.lbStyle = (*env)->GetFieldID(env, LOGBRUSHFc.clazz, "lbStyle", "I");
+	LOGBRUSHFc.lbColor = (*env)->GetFieldID(env, LOGBRUSHFc.clazz, "lbColor", "I");
+	LOGBRUSHFc.lbHatch = (*env)->GetFieldID(env, LOGBRUSHFc.clazz, "lbHatch", "I");
+	LOGBRUSHFc.cached = 1;
+}
+
+LOGBRUSH *getLOGBRUSHFields(JNIEnv *env, jobject lpObject, LOGBRUSH *lpStruct)
+{
+	if (!LOGBRUSHFc.cached) cacheLOGBRUSHFields(env, lpObject);
+	lpStruct->lbStyle = (*env)->GetIntField(env, lpObject, LOGBRUSHFc.lbStyle);
+	lpStruct->lbColor = (*env)->GetIntField(env, lpObject, LOGBRUSHFc.lbColor);
+	lpStruct->lbHatch = (*env)->GetIntField(env, lpObject, LOGBRUSHFc.lbHatch);
+	return lpStruct;
+}
+
+void setLOGBRUSHFields(JNIEnv *env, jobject lpObject, LOGBRUSH *lpStruct)
+{
+	if (!LOGBRUSHFc.cached) cacheLOGBRUSHFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, LOGBRUSHFc.lbStyle, (jint)lpStruct->lbStyle);
+	(*env)->SetIntField(env, lpObject, LOGBRUSHFc.lbColor, (jint)lpStruct->lbColor);
+	(*env)->SetIntField(env, lpObject, LOGBRUSHFc.lbHatch, (jint)lpStruct->lbHatch);
+}
+#endif
+
+#ifndef NO_LOGFONT
+typedef struct LOGFONT_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID lfHeight, lfWidth, lfEscapement, lfOrientation, lfWeight, lfItalic, lfUnderline, lfStrikeOut, lfCharSet, lfOutPrecision, lfClipPrecision, lfQuality, lfPitchAndFamily;
+} LOGFONT_FID_CACHE;
+
+LOGFONT_FID_CACHE LOGFONTFc;
+
+void cacheLOGFONTFields(JNIEnv *env, jobject lpObject)
+{
+	if (LOGFONTFc.cached) return;
+	LOGFONTFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	LOGFONTFc.lfHeight = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfHeight", "I");
+	LOGFONTFc.lfWidth = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfWidth", "I");
+	LOGFONTFc.lfEscapement = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfEscapement", "I");
+	LOGFONTFc.lfOrientation = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfOrientation", "I");
+	LOGFONTFc.lfWeight = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfWeight", "I");
+	LOGFONTFc.lfItalic = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfItalic", "B");
+	LOGFONTFc.lfUnderline = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfUnderline", "B");
+	LOGFONTFc.lfStrikeOut = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfStrikeOut", "B");
+	LOGFONTFc.lfCharSet = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfCharSet", "B");
+	LOGFONTFc.lfOutPrecision = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfOutPrecision", "B");
+	LOGFONTFc.lfClipPrecision = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfClipPrecision", "B");
+	LOGFONTFc.lfQuality = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfQuality", "B");
+	LOGFONTFc.lfPitchAndFamily = (*env)->GetFieldID(env, LOGFONTFc.clazz, "lfPitchAndFamily", "B");
+	LOGFONTFc.cached = 1;
+}
+
+LOGFONT *getLOGFONTFields(JNIEnv *env, jobject lpObject, LOGFONT *lpStruct)
+{
+	if (!LOGFONTFc.cached) cacheLOGFONTFields(env, lpObject);
+	lpStruct->lfHeight = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfHeight);
+	lpStruct->lfWidth = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfWidth);
+	lpStruct->lfEscapement = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfEscapement);
+	lpStruct->lfOrientation = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfOrientation);
+	lpStruct->lfWeight = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfWeight);
+	lpStruct->lfItalic = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfItalic);
+	lpStruct->lfUnderline = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfUnderline);
+	lpStruct->lfStrikeOut = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfStrikeOut);
+	lpStruct->lfCharSet = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfCharSet);
+	lpStruct->lfOutPrecision = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfOutPrecision);
+	lpStruct->lfClipPrecision = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfClipPrecision);
+	lpStruct->lfQuality = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfQuality);
+	lpStruct->lfPitchAndFamily = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfPitchAndFamily);
+	return lpStruct;
+}
+
+void setLOGFONTFields(JNIEnv *env, jobject lpObject, LOGFONT *lpStruct)
+{
+	if (!LOGFONTFc.cached) cacheLOGFONTFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfHeight, (jint)lpStruct->lfHeight);
+	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfWidth, (jint)lpStruct->lfWidth);
+	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfEscapement, (jint)lpStruct->lfEscapement);
+	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfOrientation, (jint)lpStruct->lfOrientation);
+	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfWeight, (jint)lpStruct->lfWeight);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfItalic, (jbyte)lpStruct->lfItalic);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfUnderline, (jbyte)lpStruct->lfUnderline);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfStrikeOut, (jbyte)lpStruct->lfStrikeOut);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfCharSet, (jbyte)lpStruct->lfCharSet);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfOutPrecision, (jbyte)lpStruct->lfOutPrecision);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfClipPrecision, (jbyte)lpStruct->lfClipPrecision);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfQuality, (jbyte)lpStruct->lfQuality);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfPitchAndFamily, (jbyte)lpStruct->lfPitchAndFamily);
+}
+#endif
+
+#ifndef NO_LOGFONTA
+typedef struct LOGFONTA_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID lfFaceName;
+} LOGFONTA_FID_CACHE;
+
+LOGFONTA_FID_CACHE LOGFONTAFc;
+
+void cacheLOGFONTAFields(JNIEnv *env, jobject lpObject)
+{
+	if (LOGFONTAFc.cached) return;
+	cacheLOGFONTFields(env, lpObject);
+	LOGFONTAFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	LOGFONTAFc.lfFaceName = (*env)->GetFieldID(env, LOGFONTAFc.clazz, "lfFaceName", "[B");
+	LOGFONTAFc.cached = 1;
+}
+
+LOGFONTA *getLOGFONTAFields(JNIEnv *env, jobject lpObject, LOGFONTA *lpStruct)
+{
+	if (!LOGFONTAFc.cached) cacheLOGFONTAFields(env, lpObject);
+	lpStruct->lfHeight = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfHeight);
+	lpStruct->lfWidth = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfWidth);
+	lpStruct->lfEscapement = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfEscapement);
+	lpStruct->lfOrientation = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfOrientation);
+	lpStruct->lfWeight = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfWeight);
+	lpStruct->lfItalic = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfItalic);
+	lpStruct->lfUnderline = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfUnderline);
+	lpStruct->lfStrikeOut = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfStrikeOut);
+	lpStruct->lfCharSet = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfCharSet);
+	lpStruct->lfOutPrecision = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfOutPrecision);
+	lpStruct->lfClipPrecision = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfClipPrecision);
+	lpStruct->lfQuality = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfQuality);
+	lpStruct->lfPitchAndFamily = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfPitchAndFamily);
+	{
+	jbyteArray lpObject1 = (*env)->GetObjectField(env, lpObject, LOGFONTAFc.lfFaceName);
+	(*env)->GetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->lfFaceName), (void *)lpStruct->lfFaceName);
+	}
+	return lpStruct;
+}
+
+void setLOGFONTAFields(JNIEnv *env, jobject lpObject, LOGFONTA *lpStruct)
+{
+	if (!LOGFONTAFc.cached) cacheLOGFONTAFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfHeight, (jint)lpStruct->lfHeight);
+	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfWidth, (jint)lpStruct->lfWidth);
+	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfEscapement, (jint)lpStruct->lfEscapement);
+	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfOrientation, (jint)lpStruct->lfOrientation);
+	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfWeight, (jint)lpStruct->lfWeight);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfItalic, (jbyte)lpStruct->lfItalic);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfUnderline, (jbyte)lpStruct->lfUnderline);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfStrikeOut, (jbyte)lpStruct->lfStrikeOut);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfCharSet, (jbyte)lpStruct->lfCharSet);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfOutPrecision, (jbyte)lpStruct->lfOutPrecision);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfClipPrecision, (jbyte)lpStruct->lfClipPrecision);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfQuality, (jbyte)lpStruct->lfQuality);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfPitchAndFamily, (jbyte)lpStruct->lfPitchAndFamily);
+	{
+	jbyteArray lpObject1 = (*env)->GetObjectField(env, lpObject, LOGFONTAFc.lfFaceName);
+	(*env)->SetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->lfFaceName), (void *)lpStruct->lfFaceName);
+	}
+}
+#endif
+
+#ifndef NO_LOGFONTW
+typedef struct LOGFONTW_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID lfFaceName;
+} LOGFONTW_FID_CACHE;
+
+LOGFONTW_FID_CACHE LOGFONTWFc;
+
+void cacheLOGFONTWFields(JNIEnv *env, jobject lpObject)
+{
+	if (LOGFONTWFc.cached) return;
+	cacheLOGFONTFields(env, lpObject);
+	LOGFONTWFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	LOGFONTWFc.lfFaceName = (*env)->GetFieldID(env, LOGFONTWFc.clazz, "lfFaceName", "[C");
+	LOGFONTWFc.cached = 1;
+}
+
+LOGFONTW *getLOGFONTWFields(JNIEnv *env, jobject lpObject, LOGFONTW *lpStruct)
+{
+	if (!LOGFONTWFc.cached) cacheLOGFONTWFields(env, lpObject);
+	lpStruct->lfHeight = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfHeight);
+	lpStruct->lfWidth = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfWidth);
+	lpStruct->lfEscapement = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfEscapement);
+	lpStruct->lfOrientation = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfOrientation);
+	lpStruct->lfWeight = (*env)->GetIntField(env, lpObject, LOGFONTFc.lfWeight);
+	lpStruct->lfItalic = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfItalic);
+	lpStruct->lfUnderline = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfUnderline);
+	lpStruct->lfStrikeOut = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfStrikeOut);
+	lpStruct->lfCharSet = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfCharSet);
+	lpStruct->lfOutPrecision = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfOutPrecision);
+	lpStruct->lfClipPrecision = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfClipPrecision);
+	lpStruct->lfQuality = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfQuality);
+	lpStruct->lfPitchAndFamily = (*env)->GetByteField(env, lpObject, LOGFONTFc.lfPitchAndFamily);
+	{
+	jcharArray lpObject1 = (*env)->GetObjectField(env, lpObject, LOGFONTWFc.lfFaceName);
+	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->lfFaceName) / 2, (void *)lpStruct->lfFaceName);
+	}
+	return lpStruct;
+}
+
+void setLOGFONTWFields(JNIEnv *env, jobject lpObject, LOGFONTW *lpStruct)
+{
+	if (!LOGFONTWFc.cached) cacheLOGFONTWFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfHeight, (jint)lpStruct->lfHeight);
+	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfWidth, (jint)lpStruct->lfWidth);
+	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfEscapement, (jint)lpStruct->lfEscapement);
+	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfOrientation, (jint)lpStruct->lfOrientation);
+	(*env)->SetIntField(env, lpObject, LOGFONTFc.lfWeight, (jint)lpStruct->lfWeight);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfItalic, (jbyte)lpStruct->lfItalic);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfUnderline, (jbyte)lpStruct->lfUnderline);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfStrikeOut, (jbyte)lpStruct->lfStrikeOut);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfCharSet, (jbyte)lpStruct->lfCharSet);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfOutPrecision, (jbyte)lpStruct->lfOutPrecision);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfClipPrecision, (jbyte)lpStruct->lfClipPrecision);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfQuality, (jbyte)lpStruct->lfQuality);
+	(*env)->SetByteField(env, lpObject, LOGFONTFc.lfPitchAndFamily, (jbyte)lpStruct->lfPitchAndFamily);
+	{
+	jcharArray lpObject1 = (*env)->GetObjectField(env, lpObject, LOGFONTWFc.lfFaceName);
+	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->lfFaceName) / 2, (void *)lpStruct->lfFaceName);
+	}
+}
+#endif
+
+#ifndef NO_LOGPEN
+typedef struct LOGPEN_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID lopnStyle, x, y, lopnColor;
+} LOGPEN_FID_CACHE;
+
+LOGPEN_FID_CACHE LOGPENFc;
+
+void cacheLOGPENFields(JNIEnv *env, jobject lpObject)
+{
+	if (LOGPENFc.cached) return;
+	LOGPENFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	LOGPENFc.lopnStyle = (*env)->GetFieldID(env, LOGPENFc.clazz, "lopnStyle", "I");
+	LOGPENFc.x = (*env)->GetFieldID(env, LOGPENFc.clazz, "x", "I");
+	LOGPENFc.y = (*env)->GetFieldID(env, LOGPENFc.clazz, "y", "I");
+	LOGPENFc.lopnColor = (*env)->GetFieldID(env, LOGPENFc.clazz, "lopnColor", "I");
+	LOGPENFc.cached = 1;
+}
+
+LOGPEN *getLOGPENFields(JNIEnv *env, jobject lpObject, LOGPEN *lpStruct)
+{
+	if (!LOGPENFc.cached) cacheLOGPENFields(env, lpObject);
+	lpStruct->lopnStyle = (*env)->GetIntField(env, lpObject, LOGPENFc.lopnStyle);
+	lpStruct->lopnWidth.x = (*env)->GetIntField(env, lpObject, LOGPENFc.x);
+	lpStruct->lopnWidth.y = (*env)->GetIntField(env, lpObject, LOGPENFc.y);
+	lpStruct->lopnColor = (*env)->GetIntField(env, lpObject, LOGPENFc.lopnColor);
+	return lpStruct;
+}
+
+void setLOGPENFields(JNIEnv *env, jobject lpObject, LOGPEN *lpStruct)
+{
+	if (!LOGPENFc.cached) cacheLOGPENFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, LOGPENFc.lopnStyle, (jint)lpStruct->lopnStyle);
+	(*env)->SetIntField(env, lpObject, LOGPENFc.x, (jint)lpStruct->lopnWidth.x);
+	(*env)->SetIntField(env, lpObject, LOGPENFc.y, (jint)lpStruct->lopnWidth.y);
+	(*env)->SetIntField(env, lpObject, LOGPENFc.lopnColor, (jint)lpStruct->lopnColor);
+}
+#endif
+
+#ifndef NO_LVCOLUMN
+typedef struct LVCOLUMN_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID mask, fmt, cx, pszText, cchTextMax, iSubItem, iImage, iOrder;
+} LVCOLUMN_FID_CACHE;
+
+LVCOLUMN_FID_CACHE LVCOLUMNFc;
+
+void cacheLVCOLUMNFields(JNIEnv *env, jobject lpObject)
+{
+	if (LVCOLUMNFc.cached) return;
+	LVCOLUMNFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	LVCOLUMNFc.mask = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "mask", "I");
+	LVCOLUMNFc.fmt = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "fmt", "I");
+	LVCOLUMNFc.cx = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "cx", "I");
+	LVCOLUMNFc.pszText = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "pszText", "I");
+	LVCOLUMNFc.cchTextMax = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "cchTextMax", "I");
+	LVCOLUMNFc.iSubItem = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "iSubItem", "I");
+	LVCOLUMNFc.iImage = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "iImage", "I");
+	LVCOLUMNFc.iOrder = (*env)->GetFieldID(env, LVCOLUMNFc.clazz, "iOrder", "I");
+	LVCOLUMNFc.cached = 1;
+}
+
+LVCOLUMN *getLVCOLUMNFields(JNIEnv *env, jobject lpObject, LVCOLUMN *lpStruct)
+{
+	if (!LVCOLUMNFc.cached) cacheLVCOLUMNFields(env, lpObject);
+	lpStruct->mask = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.mask);
+	lpStruct->fmt = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.fmt);
+	lpStruct->cx = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.cx);
+	lpStruct->pszText = (LPTSTR)(*env)->GetIntField(env, lpObject, LVCOLUMNFc.pszText);
+	lpStruct->cchTextMax = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.cchTextMax);
+	lpStruct->iSubItem = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.iSubItem);
+	lpStruct->iImage = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.iImage);
+	lpStruct->iOrder = (*env)->GetIntField(env, lpObject, LVCOLUMNFc.iOrder);
+	return lpStruct;
+}
+
+void setLVCOLUMNFields(JNIEnv *env, jobject lpObject, LVCOLUMN *lpStruct)
+{
+	if (!LVCOLUMNFc.cached) cacheLVCOLUMNFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.mask, (jint)lpStruct->mask);
+	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.fmt, (jint)lpStruct->fmt);
+	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.cx, (jint)lpStruct->cx);
+	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.pszText, (jint)lpStruct->pszText);
+	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.cchTextMax, (jint)lpStruct->cchTextMax);
+	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.iSubItem, (jint)lpStruct->iSubItem);
+	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.iImage, (jint)lpStruct->iImage);
+	(*env)->SetIntField(env, lpObject, LVCOLUMNFc.iOrder, (jint)lpStruct->iOrder);
+}
+#endif
+
+#ifndef NO_LVHITTESTINFO
+typedef struct LVHITTESTINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID x, y, flags, iItem, iSubItem;
+} LVHITTESTINFO_FID_CACHE;
+
+LVHITTESTINFO_FID_CACHE LVHITTESTINFOFc;
+
+void cacheLVHITTESTINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (LVHITTESTINFOFc.cached) return;
+	LVHITTESTINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	LVHITTESTINFOFc.x = (*env)->GetFieldID(env, LVHITTESTINFOFc.clazz, "x", "I");
+	LVHITTESTINFOFc.y = (*env)->GetFieldID(env, LVHITTESTINFOFc.clazz, "y", "I");
+	LVHITTESTINFOFc.flags = (*env)->GetFieldID(env, LVHITTESTINFOFc.clazz, "flags", "I");
+	LVHITTESTINFOFc.iItem = (*env)->GetFieldID(env, LVHITTESTINFOFc.clazz, "iItem", "I");
+	LVHITTESTINFOFc.iSubItem = (*env)->GetFieldID(env, LVHITTESTINFOFc.clazz, "iSubItem", "I");
+	LVHITTESTINFOFc.cached = 1;
+}
+
+LVHITTESTINFO *getLVHITTESTINFOFields(JNIEnv *env, jobject lpObject, LVHITTESTINFO *lpStruct)
+{
+	if (!LVHITTESTINFOFc.cached) cacheLVHITTESTINFOFields(env, lpObject);
+	lpStruct->pt.x = (*env)->GetIntField(env, lpObject, LVHITTESTINFOFc.x);
+	lpStruct->pt.y = (*env)->GetIntField(env, lpObject, LVHITTESTINFOFc.y);
+	lpStruct->flags = (*env)->GetIntField(env, lpObject, LVHITTESTINFOFc.flags);
+	lpStruct->iItem = (*env)->GetIntField(env, lpObject, LVHITTESTINFOFc.iItem);
+	lpStruct->iSubItem = (*env)->GetIntField(env, lpObject, LVHITTESTINFOFc.iSubItem);
+	return lpStruct;
+}
+
+void setLVHITTESTINFOFields(JNIEnv *env, jobject lpObject, LVHITTESTINFO *lpStruct)
+{
+	if (!LVHITTESTINFOFc.cached) cacheLVHITTESTINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, LVHITTESTINFOFc.x, (jint)lpStruct->pt.x);
+	(*env)->SetIntField(env, lpObject, LVHITTESTINFOFc.y, (jint)lpStruct->pt.y);
+	(*env)->SetIntField(env, lpObject, LVHITTESTINFOFc.flags, (jint)lpStruct->flags);
+	(*env)->SetIntField(env, lpObject, LVHITTESTINFOFc.iItem, (jint)lpStruct->iItem);
+	(*env)->SetIntField(env, lpObject, LVHITTESTINFOFc.iSubItem, (jint)lpStruct->iSubItem);
+}
+#endif
+
+#ifndef NO_LVITEM
+typedef struct LVITEM_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID mask, iItem, iSubItem, state, stateMask, pszText, cchTextMax, iImage, lParam, iIndent;
+} LVITEM_FID_CACHE;
+
+LVITEM_FID_CACHE LVITEMFc;
+
+void cacheLVITEMFields(JNIEnv *env, jobject lpObject)
+{
+	if (LVITEMFc.cached) return;
+	LVITEMFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	LVITEMFc.mask = (*env)->GetFieldID(env, LVITEMFc.clazz, "mask", "I");
+	LVITEMFc.iItem = (*env)->GetFieldID(env, LVITEMFc.clazz, "iItem", "I");
+	LVITEMFc.iSubItem = (*env)->GetFieldID(env, LVITEMFc.clazz, "iSubItem", "I");
+	LVITEMFc.state = (*env)->GetFieldID(env, LVITEMFc.clazz, "state", "I");
+	LVITEMFc.stateMask = (*env)->GetFieldID(env, LVITEMFc.clazz, "stateMask", "I");
+	LVITEMFc.pszText = (*env)->GetFieldID(env, LVITEMFc.clazz, "pszText", "I");
+	LVITEMFc.cchTextMax = (*env)->GetFieldID(env, LVITEMFc.clazz, "cchTextMax", "I");
+	LVITEMFc.iImage = (*env)->GetFieldID(env, LVITEMFc.clazz, "iImage", "I");
+	LVITEMFc.lParam = (*env)->GetFieldID(env, LVITEMFc.clazz, "lParam", "I");
+	LVITEMFc.iIndent = (*env)->GetFieldID(env, LVITEMFc.clazz, "iIndent", "I");
+	LVITEMFc.cached = 1;
+}
+
+LVITEM *getLVITEMFields(JNIEnv *env, jobject lpObject, LVITEM *lpStruct)
+{
+	if (!LVITEMFc.cached) cacheLVITEMFields(env, lpObject);
+	lpStruct->mask = (*env)->GetIntField(env, lpObject, LVITEMFc.mask);
+	lpStruct->iItem = (*env)->GetIntField(env, lpObject, LVITEMFc.iItem);
+	lpStruct->iSubItem = (*env)->GetIntField(env, lpObject, LVITEMFc.iSubItem);
+	lpStruct->state = (*env)->GetIntField(env, lpObject, LVITEMFc.state);
+	lpStruct->stateMask = (*env)->GetIntField(env, lpObject, LVITEMFc.stateMask);
+	lpStruct->pszText = (LPTSTR)(*env)->GetIntField(env, lpObject, LVITEMFc.pszText);
+	lpStruct->cchTextMax = (*env)->GetIntField(env, lpObject, LVITEMFc.cchTextMax);
+	lpStruct->iImage = (*env)->GetIntField(env, lpObject, LVITEMFc.iImage);
+	lpStruct->lParam = (*env)->GetIntField(env, lpObject, LVITEMFc.lParam);
+	lpStruct->iIndent = (*env)->GetIntField(env, lpObject, LVITEMFc.iIndent);
+	return lpStruct;
+}
+
+void setLVITEMFields(JNIEnv *env, jobject lpObject, LVITEM *lpStruct)
+{
+	if (!LVITEMFc.cached) cacheLVITEMFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, LVITEMFc.mask, (jint)lpStruct->mask);
+	(*env)->SetIntField(env, lpObject, LVITEMFc.iItem, (jint)lpStruct->iItem);
+	(*env)->SetIntField(env, lpObject, LVITEMFc.iSubItem, (jint)lpStruct->iSubItem);
+	(*env)->SetIntField(env, lpObject, LVITEMFc.state, (jint)lpStruct->state);
+	(*env)->SetIntField(env, lpObject, LVITEMFc.stateMask, (jint)lpStruct->stateMask);
+	(*env)->SetIntField(env, lpObject, LVITEMFc.pszText, (jint)lpStruct->pszText);
+	(*env)->SetIntField(env, lpObject, LVITEMFc.cchTextMax, (jint)lpStruct->cchTextMax);
+	(*env)->SetIntField(env, lpObject, LVITEMFc.iImage, (jint)lpStruct->iImage);
+	(*env)->SetIntField(env, lpObject, LVITEMFc.lParam, (jint)lpStruct->lParam);
+	(*env)->SetIntField(env, lpObject, LVITEMFc.iIndent, (jint)lpStruct->iIndent);
+}
+#endif
+
+#ifndef NO_MEASUREITEMSTRUCT
+typedef struct MEASUREITEMSTRUCT_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID CtlType, CtlID, itemID, itemWidth, itemHeight, itemData;
+} MEASUREITEMSTRUCT_FID_CACHE;
+
+MEASUREITEMSTRUCT_FID_CACHE MEASUREITEMSTRUCTFc;
+
+void cacheMEASUREITEMSTRUCTFields(JNIEnv *env, jobject lpObject)
+{
+	if (MEASUREITEMSTRUCTFc.cached) return;
+	MEASUREITEMSTRUCTFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	MEASUREITEMSTRUCTFc.CtlType = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "CtlType", "I");
+	MEASUREITEMSTRUCTFc.CtlID = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "CtlID", "I");
+	MEASUREITEMSTRUCTFc.itemID = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "itemID", "I");
+	MEASUREITEMSTRUCTFc.itemWidth = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "itemWidth", "I");
+	MEASUREITEMSTRUCTFc.itemHeight = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "itemHeight", "I");
+	MEASUREITEMSTRUCTFc.itemData = (*env)->GetFieldID(env, MEASUREITEMSTRUCTFc.clazz, "itemData", "I");
+	MEASUREITEMSTRUCTFc.cached = 1;
+}
+
+MEASUREITEMSTRUCT *getMEASUREITEMSTRUCTFields(JNIEnv *env, jobject lpObject, MEASUREITEMSTRUCT *lpStruct)
+{
+	if (!MEASUREITEMSTRUCTFc.cached) cacheMEASUREITEMSTRUCTFields(env, lpObject);
+	lpStruct->CtlType = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.CtlType);
+	lpStruct->CtlID = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.CtlID);
+	lpStruct->itemID = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemID);
+	lpStruct->itemWidth = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemWidth);
+	lpStruct->itemHeight = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemHeight);
+	lpStruct->itemData = (*env)->GetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemData);
+	return lpStruct;
+}
+
+void setMEASUREITEMSTRUCTFields(JNIEnv *env, jobject lpObject, MEASUREITEMSTRUCT *lpStruct)
+{
+	if (!MEASUREITEMSTRUCTFc.cached) cacheMEASUREITEMSTRUCTFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.CtlType, (jint)lpStruct->CtlType);
+	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.CtlID, (jint)lpStruct->CtlID);
+	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemID, (jint)lpStruct->itemID);
+	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemWidth, (jint)lpStruct->itemWidth);
+	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemHeight, (jint)lpStruct->itemHeight);
+	(*env)->SetIntField(env, lpObject, MEASUREITEMSTRUCTFc.itemData, (jint)lpStruct->itemData);
+}
+#endif
+
+#ifndef NO_MENUINFO
+typedef struct MENUINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, fMask, dwStyle, cyMax, hbrBack, dwContextHelpID, dwMenuData;
+} MENUINFO_FID_CACHE;
+
+MENUINFO_FID_CACHE MENUINFOFc;
+
+void cacheMENUINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (MENUINFOFc.cached) return;
+	MENUINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	MENUINFOFc.cbSize = (*env)->GetFieldID(env, MENUINFOFc.clazz, "cbSize", "I");
+	MENUINFOFc.fMask = (*env)->GetFieldID(env, MENUINFOFc.clazz, "fMask", "I");
+	MENUINFOFc.dwStyle = (*env)->GetFieldID(env, MENUINFOFc.clazz, "dwStyle", "I");
+	MENUINFOFc.cyMax = (*env)->GetFieldID(env, MENUINFOFc.clazz, "cyMax", "I");
+	MENUINFOFc.hbrBack = (*env)->GetFieldID(env, MENUINFOFc.clazz, "hbrBack", "I");
+	MENUINFOFc.dwContextHelpID = (*env)->GetFieldID(env, MENUINFOFc.clazz, "dwContextHelpID", "I");
+	MENUINFOFc.dwMenuData = (*env)->GetFieldID(env, MENUINFOFc.clazz, "dwMenuData", "I");
+	MENUINFOFc.cached = 1;
+}
+
+MENUINFO *getMENUINFOFields(JNIEnv *env, jobject lpObject, MENUINFO *lpStruct)
+{
+	if (!MENUINFOFc.cached) cacheMENUINFOFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, MENUINFOFc.cbSize);
+	lpStruct->fMask = (*env)->GetIntField(env, lpObject, MENUINFOFc.fMask);
+	lpStruct->dwStyle = (*env)->GetIntField(env, lpObject, MENUINFOFc.dwStyle);
+	lpStruct->cyMax = (*env)->GetIntField(env, lpObject, MENUINFOFc.cyMax);
+	lpStruct->hbrBack = (HBRUSH)(*env)->GetIntField(env, lpObject, MENUINFOFc.hbrBack);
+	lpStruct->dwContextHelpID = (*env)->GetIntField(env, lpObject, MENUINFOFc.dwContextHelpID);
+	lpStruct->dwMenuData = (*env)->GetIntField(env, lpObject, MENUINFOFc.dwMenuData);
+	return lpStruct;
+}
+
+void setMENUINFOFields(JNIEnv *env, jobject lpObject, MENUINFO *lpStruct)
+{
+	if (!MENUINFOFc.cached) cacheMENUINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, MENUINFOFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, MENUINFOFc.fMask, (jint)lpStruct->fMask);
+	(*env)->SetIntField(env, lpObject, MENUINFOFc.dwStyle, (jint)lpStruct->dwStyle);
+	(*env)->SetIntField(env, lpObject, MENUINFOFc.cyMax, (jint)lpStruct->cyMax);
+	(*env)->SetIntField(env, lpObject, MENUINFOFc.hbrBack, (jint)lpStruct->hbrBack);
+	(*env)->SetIntField(env, lpObject, MENUINFOFc.dwContextHelpID, (jint)lpStruct->dwContextHelpID);
+	(*env)->SetIntField(env, lpObject, MENUINFOFc.dwMenuData, (jint)lpStruct->dwMenuData);
+}
+#endif
+
+#ifndef NO_MENUITEMINFO
+typedef struct MENUITEMINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, fMask, fType, fState, wID, hSubMenu, hbmpChecked, hbmpUnchecked, dwItemData, dwTypeData, cch, hbmpItem;
+} MENUITEMINFO_FID_CACHE;
+
+MENUITEMINFO_FID_CACHE MENUITEMINFOFc;
+
+void cacheMENUITEMINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (MENUITEMINFOFc.cached) return;
+	MENUITEMINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	MENUITEMINFOFc.cbSize = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "cbSize", "I");
+	MENUITEMINFOFc.fMask = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "fMask", "I");
+	MENUITEMINFOFc.fType = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "fType", "I");
+	MENUITEMINFOFc.fState = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "fState", "I");
+	MENUITEMINFOFc.wID = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "wID", "I");
+	MENUITEMINFOFc.hSubMenu = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "hSubMenu", "I");
+	MENUITEMINFOFc.hbmpChecked = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "hbmpChecked", "I");
+	MENUITEMINFOFc.hbmpUnchecked = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "hbmpUnchecked", "I");
+	MENUITEMINFOFc.dwItemData = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "dwItemData", "I");
+	MENUITEMINFOFc.dwTypeData = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "dwTypeData", "I");
+	MENUITEMINFOFc.cch = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "cch", "I");
+	MENUITEMINFOFc.hbmpItem = (*env)->GetFieldID(env, MENUITEMINFOFc.clazz, "hbmpItem", "I");
+	MENUITEMINFOFc.cached = 1;
+}
+
+MENUITEMINFO *getMENUITEMINFOFields(JNIEnv *env, jobject lpObject, MENUITEMINFO *lpStruct)
+{
+	if (!MENUITEMINFOFc.cached) cacheMENUITEMINFOFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.cbSize);
+	lpStruct->fMask = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.fMask);
+	lpStruct->fType = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.fType);
+	lpStruct->fState = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.fState);
+	lpStruct->wID = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.wID);
+	lpStruct->hSubMenu = (HMENU)(*env)->GetIntField(env, lpObject, MENUITEMINFOFc.hSubMenu);
+	lpStruct->hbmpChecked = (HBITMAP)(*env)->GetIntField(env, lpObject, MENUITEMINFOFc.hbmpChecked);
+	lpStruct->hbmpUnchecked = (HBITMAP)(*env)->GetIntField(env, lpObject, MENUITEMINFOFc.hbmpUnchecked);
+	lpStruct->dwItemData = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.dwItemData);
+	lpStruct->dwTypeData = (LPTSTR)(*env)->GetIntField(env, lpObject, MENUITEMINFOFc.dwTypeData);
+	lpStruct->cch = (*env)->GetIntField(env, lpObject, MENUITEMINFOFc.cch);
+#ifndef _WIN32_WCE
+	lpStruct->hbmpItem = (HBITMAP)(*env)->GetIntField(env, lpObject, MENUITEMINFOFc.hbmpItem);
+#endif
+	return lpStruct;
+}
+
+void setMENUITEMINFOFields(JNIEnv *env, jobject lpObject, MENUITEMINFO *lpStruct)
+{
+	if (!MENUITEMINFOFc.cached) cacheMENUITEMINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.fMask, (jint)lpStruct->fMask);
+	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.fType, (jint)lpStruct->fType);
+	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.fState, (jint)lpStruct->fState);
+	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.wID, (jint)lpStruct->wID);
+	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.hSubMenu, (jint)lpStruct->hSubMenu);
+	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.hbmpChecked, (jint)lpStruct->hbmpChecked);
+	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.hbmpUnchecked, (jint)lpStruct->hbmpUnchecked);
+	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.dwItemData, (jint)lpStruct->dwItemData);
+	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.dwTypeData, (jint)lpStruct->dwTypeData);
+	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.cch, (jint)lpStruct->cch);
+#ifndef _WIN32_WCE
+	(*env)->SetIntField(env, lpObject, MENUITEMINFOFc.hbmpItem, (jint)lpStruct->hbmpItem);
+#endif
+}
+#endif
+
+#ifndef NO_MONITORINFO
+typedef struct MONITORINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, rcMonitor_left, rcMonitor_top, rcMonitor_right, rcMonitor_bottom, rcWork_left, rcWork_top, rcWork_right, rcWork_bottom, dwFlags;
+} MONITORINFO_FID_CACHE;
+
+MONITORINFO_FID_CACHE MONITORINFOFc;
+
+void cacheMONITORINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (MONITORINFOFc.cached) return;
+	MONITORINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	MONITORINFOFc.cbSize = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "cbSize", "I");
+	MONITORINFOFc.rcMonitor_left = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcMonitor_left", "I");
+	MONITORINFOFc.rcMonitor_top = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcMonitor_top", "I");
+	MONITORINFOFc.rcMonitor_right = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcMonitor_right", "I");
+	MONITORINFOFc.rcMonitor_bottom = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcMonitor_bottom", "I");
+	MONITORINFOFc.rcWork_left = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcWork_left", "I");
+	MONITORINFOFc.rcWork_top = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcWork_top", "I");
+	MONITORINFOFc.rcWork_right = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcWork_right", "I");
+	MONITORINFOFc.rcWork_bottom = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "rcWork_bottom", "I");
+	MONITORINFOFc.dwFlags = (*env)->GetFieldID(env, MONITORINFOFc.clazz, "dwFlags", "I");
+	MONITORINFOFc.cached = 1;
+}
+
+MONITORINFO *getMONITORINFOFields(JNIEnv *env, jobject lpObject, MONITORINFO *lpStruct)
+{
+	if (!MONITORINFOFc.cached) cacheMONITORINFOFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, MONITORINFOFc.cbSize);
+	lpStruct->rcMonitor.left = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcMonitor_left);
+	lpStruct->rcMonitor.top = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcMonitor_top);
+	lpStruct->rcMonitor.right = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcMonitor_right);
+	lpStruct->rcMonitor.bottom = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcMonitor_bottom);
+	lpStruct->rcWork.left = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcWork_left);
+	lpStruct->rcWork.top = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcWork_top);
+	lpStruct->rcWork.right = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcWork_right);
+	lpStruct->rcWork.bottom = (*env)->GetIntField(env, lpObject, MONITORINFOFc.rcWork_bottom);
+	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, MONITORINFOFc.dwFlags);
+	return lpStruct;
+}
+
+void setMONITORINFOFields(JNIEnv *env, jobject lpObject, MONITORINFO *lpStruct)
+{
+	if (!MONITORINFOFc.cached) cacheMONITORINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, MONITORINFOFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcMonitor_left, (jint)lpStruct->rcMonitor.left);
+	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcMonitor_top, (jint)lpStruct->rcMonitor.top);
+	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcMonitor_right, (jint)lpStruct->rcMonitor.right);
+	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcMonitor_bottom, (jint)lpStruct->rcMonitor.bottom);
+	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcWork_left, (jint)lpStruct->rcWork.left);
+	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcWork_top, (jint)lpStruct->rcWork.top);
+	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcWork_right, (jint)lpStruct->rcWork.right);
+	(*env)->SetIntField(env, lpObject, MONITORINFOFc.rcWork_bottom, (jint)lpStruct->rcWork.bottom);
+	(*env)->SetIntField(env, lpObject, MONITORINFOFc.dwFlags, (jint)lpStruct->dwFlags);
+}
+#endif
+
+#ifndef NO_MSG
+typedef struct MSG_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID hwnd, message, wParam, lParam, time, x, y;
+} MSG_FID_CACHE;
+
+MSG_FID_CACHE MSGFc;
+
+void cacheMSGFields(JNIEnv *env, jobject lpObject)
+{
+	if (MSGFc.cached) return;
+	MSGFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	MSGFc.hwnd = (*env)->GetFieldID(env, MSGFc.clazz, "hwnd", "I");
+	MSGFc.message = (*env)->GetFieldID(env, MSGFc.clazz, "message", "I");
+	MSGFc.wParam = (*env)->GetFieldID(env, MSGFc.clazz, "wParam", "I");
+	MSGFc.lParam = (*env)->GetFieldID(env, MSGFc.clazz, "lParam", "I");
+	MSGFc.time = (*env)->GetFieldID(env, MSGFc.clazz, "time", "I");
+	MSGFc.x = (*env)->GetFieldID(env, MSGFc.clazz, "x", "I");
+	MSGFc.y = (*env)->GetFieldID(env, MSGFc.clazz, "y", "I");
+	MSGFc.cached = 1;
+}
+
+MSG *getMSGFields(JNIEnv *env, jobject lpObject, MSG *lpStruct)
+{
+	if (!MSGFc.cached) cacheMSGFields(env, lpObject);
+	lpStruct->hwnd = (HWND)(*env)->GetIntField(env, lpObject, MSGFc.hwnd);
+	lpStruct->message = (*env)->GetIntField(env, lpObject, MSGFc.message);
+	lpStruct->wParam = (*env)->GetIntField(env, lpObject, MSGFc.wParam);
+	lpStruct->lParam = (*env)->GetIntField(env, lpObject, MSGFc.lParam);
+	lpStruct->time = (*env)->GetIntField(env, lpObject, MSGFc.time);
+	lpStruct->pt.x = (*env)->GetIntField(env, lpObject, MSGFc.x);
+	lpStruct->pt.y = (*env)->GetIntField(env, lpObject, MSGFc.y);
+	return lpStruct;
+}
+
+void setMSGFields(JNIEnv *env, jobject lpObject, MSG *lpStruct)
+{
+	if (!MSGFc.cached) cacheMSGFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, MSGFc.hwnd, (jint)lpStruct->hwnd);
+	(*env)->SetIntField(env, lpObject, MSGFc.message, (jint)lpStruct->message);
+	(*env)->SetIntField(env, lpObject, MSGFc.wParam, (jint)lpStruct->wParam);
+	(*env)->SetIntField(env, lpObject, MSGFc.lParam, (jint)lpStruct->lParam);
+	(*env)->SetIntField(env, lpObject, MSGFc.time, (jint)lpStruct->time);
+	(*env)->SetIntField(env, lpObject, MSGFc.x, (jint)lpStruct->pt.x);
+	(*env)->SetIntField(env, lpObject, MSGFc.y, (jint)lpStruct->pt.y);
+}
+#endif
+
+#ifndef NO_NMHDR
+typedef struct NMHDR_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID hwndFrom, idFrom, code;
+} NMHDR_FID_CACHE;
+
+NMHDR_FID_CACHE NMHDRFc;
+
+void cacheNMHDRFields(JNIEnv *env, jobject lpObject)
+{
+	if (NMHDRFc.cached) return;
+	NMHDRFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	NMHDRFc.hwndFrom = (*env)->GetFieldID(env, NMHDRFc.clazz, "hwndFrom", "I");
+	NMHDRFc.idFrom = (*env)->GetFieldID(env, NMHDRFc.clazz, "idFrom", "I");
+	NMHDRFc.code = (*env)->GetFieldID(env, NMHDRFc.clazz, "code", "I");
+	NMHDRFc.cached = 1;
+}
+
+NMHDR *getNMHDRFields(JNIEnv *env, jobject lpObject, NMHDR *lpStruct)
+{
+	if (!NMHDRFc.cached) cacheNMHDRFields(env, lpObject);
+	lpStruct->hwndFrom = (HWND)(*env)->GetIntField(env, lpObject, NMHDRFc.hwndFrom);
+	lpStruct->idFrom = (*env)->GetIntField(env, lpObject, NMHDRFc.idFrom);
+	lpStruct->code = (*env)->GetIntField(env, lpObject, NMHDRFc.code);
+	return lpStruct;
+}
+
+void setNMHDRFields(JNIEnv *env, jobject lpObject, NMHDR *lpStruct)
+{
+	if (!NMHDRFc.cached) cacheNMHDRFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, NMHDRFc.hwndFrom, (jint)lpStruct->hwndFrom);
+	(*env)->SetIntField(env, lpObject, NMHDRFc.idFrom, (jint)lpStruct->idFrom);
+	(*env)->SetIntField(env, lpObject, NMHDRFc.code, (jint)lpStruct->code);
+}
+#endif
+
+#ifndef NO_NMCUSTOMDRAW
+typedef struct NMCUSTOMDRAW_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID dwDrawStage, hdc, left, top, right, bottom, dwItemSpec, uItemState, lItemlParam;
+} NMCUSTOMDRAW_FID_CACHE;
+
+NMCUSTOMDRAW_FID_CACHE NMCUSTOMDRAWFc;
+
+void cacheNMCUSTOMDRAWFields(JNIEnv *env, jobject lpObject)
+{
+	if (NMCUSTOMDRAWFc.cached) return;
+	cacheNMHDRFields(env, lpObject);
+	NMCUSTOMDRAWFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	NMCUSTOMDRAWFc.dwDrawStage = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "dwDrawStage", "I");
+	NMCUSTOMDRAWFc.hdc = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "hdc", "I");
+	NMCUSTOMDRAWFc.left = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "left", "I");
+	NMCUSTOMDRAWFc.top = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "top", "I");
+	NMCUSTOMDRAWFc.right = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "right", "I");
+	NMCUSTOMDRAWFc.bottom = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "bottom", "I");
+	NMCUSTOMDRAWFc.dwItemSpec = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "dwItemSpec", "I");
+	NMCUSTOMDRAWFc.uItemState = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "uItemState", "I");
+	NMCUSTOMDRAWFc.lItemlParam = (*env)->GetFieldID(env, NMCUSTOMDRAWFc.clazz, "lItemlParam", "I");
+	NMCUSTOMDRAWFc.cached = 1;
+}
+
+NMCUSTOMDRAW *getNMCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMCUSTOMDRAW *lpStruct)
+{
+	if (!NMCUSTOMDRAWFc.cached) cacheNMCUSTOMDRAWFields(env, lpObject);
+	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
+	lpStruct->dwDrawStage = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.dwDrawStage);
+	lpStruct->hdc = (HDC)(*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.hdc);
+	lpStruct->rc.left = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.left);
+	lpStruct->rc.top = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.top);
+	lpStruct->rc.right = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.right);
+	lpStruct->rc.bottom = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.bottom);
+	lpStruct->dwItemSpec = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.dwItemSpec);
+	lpStruct->uItemState = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.uItemState);
+	lpStruct->lItemlParam = (*env)->GetIntField(env, lpObject, NMCUSTOMDRAWFc.lItemlParam);
+	return lpStruct;
+}
+
+void setNMCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMCUSTOMDRAW *lpStruct)
+{
+	if (!NMCUSTOMDRAWFc.cached) cacheNMCUSTOMDRAWFields(env, lpObject);
+	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
+	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.dwDrawStage, (jint)lpStruct->dwDrawStage);
+	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.hdc, (jint)lpStruct->hdc);
+	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.left, (jint)lpStruct->rc.left);
+	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.top, (jint)lpStruct->rc.top);
+	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.right, (jint)lpStruct->rc.right);
+	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.bottom, (jint)lpStruct->rc.bottom);
+	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.dwItemSpec, (jint)lpStruct->dwItemSpec);
+	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.uItemState, (jint)lpStruct->uItemState);
+	(*env)->SetIntField(env, lpObject, NMCUSTOMDRAWFc.lItemlParam, (jint)lpStruct->lItemlParam);
+}
+#endif
+
+#ifndef NO_NMHEADER
+typedef struct NMHEADER_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID iItem, iButton, pitem;
+} NMHEADER_FID_CACHE;
+
+NMHEADER_FID_CACHE NMHEADERFc;
+
+void cacheNMHEADERFields(JNIEnv *env, jobject lpObject)
+{
+	if (NMHEADERFc.cached) return;
+	cacheNMHDRFields(env, lpObject);
+	NMHEADERFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	NMHEADERFc.iItem = (*env)->GetFieldID(env, NMHEADERFc.clazz, "iItem", "I");
+	NMHEADERFc.iButton = (*env)->GetFieldID(env, NMHEADERFc.clazz, "iButton", "I");
+	NMHEADERFc.pitem = (*env)->GetFieldID(env, NMHEADERFc.clazz, "pitem", "I");
+	NMHEADERFc.cached = 1;
+}
+
+NMHEADER *getNMHEADERFields(JNIEnv *env, jobject lpObject, NMHEADER *lpStruct)
+{
+	if (!NMHEADERFc.cached) cacheNMHEADERFields(env, lpObject);
+	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
+	lpStruct->iItem = (*env)->GetIntField(env, lpObject, NMHEADERFc.iItem);
+	lpStruct->iButton = (*env)->GetIntField(env, lpObject, NMHEADERFc.iButton);
+	lpStruct->pitem = (HDITEM FAR *)(*env)->GetIntField(env, lpObject, NMHEADERFc.pitem);
+	return lpStruct;
+}
+
+void setNMHEADERFields(JNIEnv *env, jobject lpObject, NMHEADER *lpStruct)
+{
+	if (!NMHEADERFc.cached) cacheNMHEADERFields(env, lpObject);
+	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
+	(*env)->SetIntField(env, lpObject, NMHEADERFc.iItem, (jint)lpStruct->iItem);
+	(*env)->SetIntField(env, lpObject, NMHEADERFc.iButton, (jint)lpStruct->iButton);
+	(*env)->SetIntField(env, lpObject, NMHEADERFc.pitem, (jint)lpStruct->pitem);
+}
+#endif
+
+#ifndef NO_NMLISTVIEW
+typedef struct NMLISTVIEW_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID iItem, iSubItem, uNewState, uOldState, uChanged, x, y, lParam;
+} NMLISTVIEW_FID_CACHE;
+
+NMLISTVIEW_FID_CACHE NMLISTVIEWFc;
+
+void cacheNMLISTVIEWFields(JNIEnv *env, jobject lpObject)
+{
+	if (NMLISTVIEWFc.cached) return;
+	cacheNMHDRFields(env, lpObject);
+	NMLISTVIEWFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	NMLISTVIEWFc.iItem = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "iItem", "I");
+	NMLISTVIEWFc.iSubItem = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "iSubItem", "I");
+	NMLISTVIEWFc.uNewState = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "uNewState", "I");
+	NMLISTVIEWFc.uOldState = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "uOldState", "I");
+	NMLISTVIEWFc.uChanged = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "uChanged", "I");
+	NMLISTVIEWFc.x = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "x", "I");
+	NMLISTVIEWFc.y = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "y", "I");
+	NMLISTVIEWFc.lParam = (*env)->GetFieldID(env, NMLISTVIEWFc.clazz, "lParam", "I");
+	NMLISTVIEWFc.cached = 1;
+}
+
+NMLISTVIEW *getNMLISTVIEWFields(JNIEnv *env, jobject lpObject, NMLISTVIEW *lpStruct)
+{
+	if (!NMLISTVIEWFc.cached) cacheNMLISTVIEWFields(env, lpObject);
+	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
+	lpStruct->iItem = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.iItem);
+	lpStruct->iSubItem = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.iSubItem);
+	lpStruct->uNewState = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.uNewState);
+	lpStruct->uOldState = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.uOldState);
+	lpStruct->uChanged = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.uChanged);
+	lpStruct->ptAction.x = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.x);
+	lpStruct->ptAction.y = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.y);
+	lpStruct->lParam = (*env)->GetIntField(env, lpObject, NMLISTVIEWFc.lParam);
+	return lpStruct;
+}
+
+void setNMLISTVIEWFields(JNIEnv *env, jobject lpObject, NMLISTVIEW *lpStruct)
+{
+	if (!NMLISTVIEWFc.cached) cacheNMLISTVIEWFields(env, lpObject);
+	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
+	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.iItem, (jint)lpStruct->iItem);
+	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.iSubItem, (jint)lpStruct->iSubItem);
+	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.uNewState, (jint)lpStruct->uNewState);
+	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.uOldState, (jint)lpStruct->uOldState);
+	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.uChanged, (jint)lpStruct->uChanged);
+	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.x, (jint)lpStruct->ptAction.x);
+	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.y, (jint)lpStruct->ptAction.y);
+	(*env)->SetIntField(env, lpObject, NMLISTVIEWFc.lParam, (jint)lpStruct->lParam);
+}
+#endif
+
+#ifndef NO_NMLVCUSTOMDRAW
+typedef struct NMLVCUSTOMDRAW_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID clrText, clrTextBk, iSubItem;
+} NMLVCUSTOMDRAW_FID_CACHE;
+
+NMLVCUSTOMDRAW_FID_CACHE NMLVCUSTOMDRAWFc;
+
+void cacheNMLVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject)
+{
+	if (NMLVCUSTOMDRAWFc.cached) return;
+	cacheNMCUSTOMDRAWFields(env, lpObject);
+	NMLVCUSTOMDRAWFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	NMLVCUSTOMDRAWFc.clrText = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "clrText", "I");
+	NMLVCUSTOMDRAWFc.clrTextBk = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "clrTextBk", "I");
+	NMLVCUSTOMDRAWFc.iSubItem = (*env)->GetFieldID(env, NMLVCUSTOMDRAWFc.clazz, "iSubItem", "I");
+	NMLVCUSTOMDRAWFc.cached = 1;
+}
+
+NMLVCUSTOMDRAW *getNMLVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMLVCUSTOMDRAW *lpStruct)
+{
+	if (!NMLVCUSTOMDRAWFc.cached) cacheNMLVCUSTOMDRAWFields(env, lpObject);
+	getNMCUSTOMDRAWFields(env, lpObject, (NMCUSTOMDRAW *)lpStruct);
+	lpStruct->clrText = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.clrText);
+	lpStruct->clrTextBk = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.clrTextBk);
+	lpStruct->iSubItem = (*env)->GetIntField(env, lpObject, NMLVCUSTOMDRAWFc.iSubItem);
+	return lpStruct;
+}
+
+void setNMLVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMLVCUSTOMDRAW *lpStruct)
+{
+	if (!NMLVCUSTOMDRAWFc.cached) cacheNMLVCUSTOMDRAWFields(env, lpObject);
+	setNMCUSTOMDRAWFields(env, lpObject, (NMCUSTOMDRAW *)lpStruct);
+	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.clrText, (jint)lpStruct->clrText);
+	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.clrTextBk, (jint)lpStruct->clrTextBk);
+	(*env)->SetIntField(env, lpObject, NMLVCUSTOMDRAWFc.iSubItem, (jint)lpStruct->iSubItem);
+}
+#endif
+
+#ifndef NO_NMREBARCHEVRON
+typedef struct NMREBARCHEVRON_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID uBand, wID, lParam, left, top, right, bottom, lParamNM;
+} NMREBARCHEVRON_FID_CACHE;
+
+NMREBARCHEVRON_FID_CACHE NMREBARCHEVRONFc;
+
+void cacheNMREBARCHEVRONFields(JNIEnv *env, jobject lpObject)
+{
+	if (NMREBARCHEVRONFc.cached) return;
+	cacheNMHDRFields(env, lpObject);
+	NMREBARCHEVRONFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	NMREBARCHEVRONFc.uBand = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "uBand", "I");
+	NMREBARCHEVRONFc.wID = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "wID", "I");
+	NMREBARCHEVRONFc.lParam = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "lParam", "I");
+	NMREBARCHEVRONFc.left = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "left", "I");
+	NMREBARCHEVRONFc.top = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "top", "I");
+	NMREBARCHEVRONFc.right = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "right", "I");
+	NMREBARCHEVRONFc.bottom = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "bottom", "I");
+	NMREBARCHEVRONFc.lParamNM = (*env)->GetFieldID(env, NMREBARCHEVRONFc.clazz, "lParamNM", "I");
+	NMREBARCHEVRONFc.cached = 1;
+}
+
+NMREBARCHEVRON *getNMREBARCHEVRONFields(JNIEnv *env, jobject lpObject, NMREBARCHEVRON *lpStruct)
+{
+	if (!NMREBARCHEVRONFc.cached) cacheNMREBARCHEVRONFields(env, lpObject);
+	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
+	lpStruct->uBand = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.uBand);
+	lpStruct->wID = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.wID);
+	lpStruct->lParam = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.lParam);
+	lpStruct->rc.left = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.left);
+	lpStruct->rc.top = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.top);
+	lpStruct->rc.right = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.right);
+	lpStruct->rc.bottom = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.bottom);
+	lpStruct->lParamNM = (*env)->GetIntField(env, lpObject, NMREBARCHEVRONFc.lParamNM);
+	return lpStruct;
+}
+
+void setNMREBARCHEVRONFields(JNIEnv *env, jobject lpObject, NMREBARCHEVRON *lpStruct)
+{
+	if (!NMREBARCHEVRONFc.cached) cacheNMREBARCHEVRONFields(env, lpObject);
+	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
+	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.uBand, (jint)lpStruct->uBand);
+	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.wID, (jint)lpStruct->wID);
+	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.lParam, (jint)lpStruct->lParam);
+	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.left, (jint)lpStruct->rc.left);
+	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.top, (jint)lpStruct->rc.top);
+	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.right, (jint)lpStruct->rc.right);
+	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.bottom, (jint)lpStruct->rc.bottom);
+	(*env)->SetIntField(env, lpObject, NMREBARCHEVRONFc.lParamNM, (jint)lpStruct->lParamNM);
+}
+#endif
+
+#ifndef NO_NMTOOLBAR
+typedef struct NMTOOLBAR_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID iItem, iBitmap, idCommand, fsState, fsStyle, dwData, iString, cchText, pszText, left, top, right, bottom;
+} NMTOOLBAR_FID_CACHE;
+
+NMTOOLBAR_FID_CACHE NMTOOLBARFc;
+
+void cacheNMTOOLBARFields(JNIEnv *env, jobject lpObject)
+{
+	if (NMTOOLBARFc.cached) return;
+	cacheNMHDRFields(env, lpObject);
+	NMTOOLBARFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	NMTOOLBARFc.iItem = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "iItem", "I");
+	NMTOOLBARFc.iBitmap = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "iBitmap", "I");
+	NMTOOLBARFc.idCommand = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "idCommand", "I");
+	NMTOOLBARFc.fsState = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "fsState", "B");
+	NMTOOLBARFc.fsStyle = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "fsStyle", "B");
+	NMTOOLBARFc.dwData = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "dwData", "I");
+	NMTOOLBARFc.iString = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "iString", "I");
+	NMTOOLBARFc.cchText = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "cchText", "I");
+	NMTOOLBARFc.pszText = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "pszText", "I");
+	NMTOOLBARFc.left = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "left", "I");
+	NMTOOLBARFc.top = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "top", "I");
+	NMTOOLBARFc.right = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "right", "I");
+	NMTOOLBARFc.bottom = (*env)->GetFieldID(env, NMTOOLBARFc.clazz, "bottom", "I");
+	NMTOOLBARFc.cached = 1;
+}
+
+NMTOOLBAR *getNMTOOLBARFields(JNIEnv *env, jobject lpObject, NMTOOLBAR *lpStruct)
+{
+	if (!NMTOOLBARFc.cached) cacheNMTOOLBARFields(env, lpObject);
+	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
+	lpStruct->iItem = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.iItem);
+	lpStruct->tbButton.iBitmap = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.iBitmap);
+	lpStruct->tbButton.idCommand = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.idCommand);
+	lpStruct->tbButton.fsState = (*env)->GetByteField(env, lpObject, NMTOOLBARFc.fsState);
+	lpStruct->tbButton.fsStyle = (*env)->GetByteField(env, lpObject, NMTOOLBARFc.fsStyle);
+	lpStruct->tbButton.dwData = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.dwData);
+	lpStruct->tbButton.iString = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.iString);
+	lpStruct->cchText = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.cchText);
+	lpStruct->pszText = (LPTSTR)(*env)->GetIntField(env, lpObject, NMTOOLBARFc.pszText);
+#ifndef _WIN32_WCE
+	lpStruct->rcButton.left = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.left);
+#endif
+#ifndef _WIN32_WCE
+	lpStruct->rcButton.top = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.top);
+#endif
+#ifndef _WIN32_WCE
+	lpStruct->rcButton.right = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.right);
+#endif
+#ifndef _WIN32_WCE
+	lpStruct->rcButton.bottom = (*env)->GetIntField(env, lpObject, NMTOOLBARFc.bottom);
+#endif
+	return lpStruct;
+}
+
+void setNMTOOLBARFields(JNIEnv *env, jobject lpObject, NMTOOLBAR *lpStruct)
+{
+	if (!NMTOOLBARFc.cached) cacheNMTOOLBARFields(env, lpObject);
+	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
+	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.iItem, (jint)lpStruct->iItem);
+	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.iBitmap, (jint)lpStruct->tbButton.iBitmap);
+	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.idCommand, (jint)lpStruct->tbButton.idCommand);
+	(*env)->SetByteField(env, lpObject, NMTOOLBARFc.fsState, (jbyte)lpStruct->tbButton.fsState);
+	(*env)->SetByteField(env, lpObject, NMTOOLBARFc.fsStyle, (jbyte)lpStruct->tbButton.fsStyle);
+	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.dwData, (jint)lpStruct->tbButton.dwData);
+	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.iString, (jint)lpStruct->tbButton.iString);
+	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.cchText, (jint)lpStruct->cchText);
+	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.pszText, (jint)lpStruct->pszText);
+#ifndef _WIN32_WCE
+	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.left, (jint)lpStruct->rcButton.left);
+#endif
+#ifndef _WIN32_WCE
+	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.top, (jint)lpStruct->rcButton.top);
+#endif
+#ifndef _WIN32_WCE
+	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.right, (jint)lpStruct->rcButton.right);
+#endif
+#ifndef _WIN32_WCE
+	(*env)->SetIntField(env, lpObject, NMTOOLBARFc.bottom, (jint)lpStruct->rcButton.bottom);
+#endif
+}
+#endif
+
+#ifndef NO_NMTTDISPINFO
+typedef struct NMTTDISPINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID lpszText, hinst, uFlags, lParam;
+} NMTTDISPINFO_FID_CACHE;
+
+NMTTDISPINFO_FID_CACHE NMTTDISPINFOFc;
+
+void cacheNMTTDISPINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (NMTTDISPINFOFc.cached) return;
+	cacheNMHDRFields(env, lpObject);
+	NMTTDISPINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	NMTTDISPINFOFc.lpszText = (*env)->GetFieldID(env, NMTTDISPINFOFc.clazz, "lpszText", "I");
+	NMTTDISPINFOFc.hinst = (*env)->GetFieldID(env, NMTTDISPINFOFc.clazz, "hinst", "I");
+	NMTTDISPINFOFc.uFlags = (*env)->GetFieldID(env, NMTTDISPINFOFc.clazz, "uFlags", "I");
+	NMTTDISPINFOFc.lParam = (*env)->GetFieldID(env, NMTTDISPINFOFc.clazz, "lParam", "I");
+	NMTTDISPINFOFc.cached = 1;
+}
+
+NMTTDISPINFO *getNMTTDISPINFOFields(JNIEnv *env, jobject lpObject, NMTTDISPINFO *lpStruct)
+{
+	if (!NMTTDISPINFOFc.cached) cacheNMTTDISPINFOFields(env, lpObject);
+	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
+	lpStruct->lpszText = (void *)(*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.lpszText);
+	lpStruct->hinst = (HINSTANCE)(*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.hinst);
+	lpStruct->uFlags = (*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.uFlags);
+	lpStruct->lParam = (*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.lParam);
+	return lpStruct;
+}
+
+void setNMTTDISPINFOFields(JNIEnv *env, jobject lpObject, NMTTDISPINFO *lpStruct)
+{
+	if (!NMTTDISPINFOFc.cached) cacheNMTTDISPINFOFields(env, lpObject);
+	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
+	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.lpszText, (jint)lpStruct->lpszText);
+	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.hinst, (jint)lpStruct->hinst);
+	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.uFlags, (jint)lpStruct->uFlags);
+	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.lParam, (jint)lpStruct->lParam);
+}
+#endif
+
+#ifndef NO_NMTTDISPINFOA
+typedef struct NMTTDISPINFOA_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID szText;
+} NMTTDISPINFOA_FID_CACHE;
+
+NMTTDISPINFOA_FID_CACHE NMTTDISPINFOAFc;
+
+void cacheNMTTDISPINFOAFields(JNIEnv *env, jobject lpObject)
+{
+	if (NMTTDISPINFOAFc.cached) return;
+	cacheNMTTDISPINFOFields(env, lpObject);
+	NMTTDISPINFOAFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	NMTTDISPINFOAFc.szText = (*env)->GetFieldID(env, NMTTDISPINFOAFc.clazz, "szText", "[B");
+	NMTTDISPINFOAFc.cached = 1;
+}
+
+NMTTDISPINFOA *getNMTTDISPINFOAFields(JNIEnv *env, jobject lpObject, NMTTDISPINFOA *lpStruct)
+{
+	if (!NMTTDISPINFOAFc.cached) cacheNMTTDISPINFOAFields(env, lpObject);
+	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
+	lpStruct->lpszText = (void *)(*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.lpszText);
+	lpStruct->hinst = (HINSTANCE)(*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.hinst);
+	lpStruct->uFlags = (*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.uFlags);
+	lpStruct->lParam = (*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.lParam);
+	{
+	jbyteArray lpObject1 = (*env)->GetObjectField(env, lpObject, NMTTDISPINFOAFc.szText);
+	(*env)->GetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szText), (void *)lpStruct->szText);
+	}
+	return lpStruct;
+}
+
+void setNMTTDISPINFOAFields(JNIEnv *env, jobject lpObject, NMTTDISPINFOA *lpStruct)
+{
+	if (!NMTTDISPINFOAFc.cached) cacheNMTTDISPINFOAFields(env, lpObject);
+	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
+	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.lpszText, (jint)lpStruct->lpszText);
+	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.hinst, (jint)lpStruct->hinst);
+	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.uFlags, (jint)lpStruct->uFlags);
+	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.lParam, (jint)lpStruct->lParam);
+	{
+	jbyteArray lpObject1 = (*env)->GetObjectField(env, lpObject, NMTTDISPINFOAFc.szText);
+	(*env)->SetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szText), (void *)lpStruct->szText);
+	}
+}
+#endif
+
+#ifndef NO_NMTTDISPINFOW
+typedef struct NMTTDISPINFOW_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID szText;
+} NMTTDISPINFOW_FID_CACHE;
+
+NMTTDISPINFOW_FID_CACHE NMTTDISPINFOWFc;
+
+void cacheNMTTDISPINFOWFields(JNIEnv *env, jobject lpObject)
+{
+	if (NMTTDISPINFOWFc.cached) return;
+	cacheNMTTDISPINFOFields(env, lpObject);
+	NMTTDISPINFOWFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	NMTTDISPINFOWFc.szText = (*env)->GetFieldID(env, NMTTDISPINFOWFc.clazz, "szText", "[C");
+	NMTTDISPINFOWFc.cached = 1;
+}
+
+NMTTDISPINFOW *getNMTTDISPINFOWFields(JNIEnv *env, jobject lpObject, NMTTDISPINFOW *lpStruct)
+{
+	if (!NMTTDISPINFOWFc.cached) cacheNMTTDISPINFOWFields(env, lpObject);
+	getNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
+	lpStruct->lpszText = (void *)(*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.lpszText);
+	lpStruct->hinst = (HINSTANCE)(*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.hinst);
+	lpStruct->uFlags = (*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.uFlags);
+	lpStruct->lParam = (*env)->GetIntField(env, lpObject, NMTTDISPINFOFc.lParam);
+	{
+	jcharArray lpObject1 = (*env)->GetObjectField(env, lpObject, NMTTDISPINFOWFc.szText);
+	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szText) / 2, (void *)lpStruct->szText);
+	}
+	return lpStruct;
+}
+
+void setNMTTDISPINFOWFields(JNIEnv *env, jobject lpObject, NMTTDISPINFOW *lpStruct)
+{
+	if (!NMTTDISPINFOWFc.cached) cacheNMTTDISPINFOWFields(env, lpObject);
+	setNMHDRFields(env, lpObject, (NMHDR *)lpStruct);
+	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.lpszText, (jint)lpStruct->lpszText);
+	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.hinst, (jint)lpStruct->hinst);
+	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.uFlags, (jint)lpStruct->uFlags);
+	(*env)->SetIntField(env, lpObject, NMTTDISPINFOFc.lParam, (jint)lpStruct->lParam);
+	{
+	jcharArray lpObject1 = (*env)->GetObjectField(env, lpObject, NMTTDISPINFOWFc.szText);
+	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szText) / 2, (void *)lpStruct->szText);
+	}
+}
+#endif
+
+#ifndef NO_NMTVCUSTOMDRAW
+typedef struct NMTVCUSTOMDRAW_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID clrText, clrTextBk, iLevel;
+} NMTVCUSTOMDRAW_FID_CACHE;
+
+NMTVCUSTOMDRAW_FID_CACHE NMTVCUSTOMDRAWFc;
+
+void cacheNMTVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject)
+{
+	if (NMTVCUSTOMDRAWFc.cached) return;
+	cacheNMCUSTOMDRAWFields(env, lpObject);
+	NMTVCUSTOMDRAWFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	NMTVCUSTOMDRAWFc.clrText = (*env)->GetFieldID(env, NMTVCUSTOMDRAWFc.clazz, "clrText", "I");
+	NMTVCUSTOMDRAWFc.clrTextBk = (*env)->GetFieldID(env, NMTVCUSTOMDRAWFc.clazz, "clrTextBk", "I");
+	NMTVCUSTOMDRAWFc.iLevel = (*env)->GetFieldID(env, NMTVCUSTOMDRAWFc.clazz, "iLevel", "I");
+	NMTVCUSTOMDRAWFc.cached = 1;
+}
+
+NMTVCUSTOMDRAW *getNMTVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMTVCUSTOMDRAW *lpStruct)
+{
+	if (!NMTVCUSTOMDRAWFc.cached) cacheNMTVCUSTOMDRAWFields(env, lpObject);
+	getNMCUSTOMDRAWFields(env, lpObject, (NMCUSTOMDRAW *)lpStruct);
+	lpStruct->clrText = (*env)->GetIntField(env, lpObject, NMTVCUSTOMDRAWFc.clrText);
+	lpStruct->clrTextBk = (*env)->GetIntField(env, lpObject, NMTVCUSTOMDRAWFc.clrTextBk);
+#ifndef _WIN32_WCE
+	lpStruct->iLevel = (*env)->GetIntField(env, lpObject, NMTVCUSTOMDRAWFc.iLevel);
+#endif
+	return lpStruct;
+}
+
+void setNMTVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMTVCUSTOMDRAW *lpStruct)
+{
+	if (!NMTVCUSTOMDRAWFc.cached) cacheNMTVCUSTOMDRAWFields(env, lpObject);
+	setNMCUSTOMDRAWFields(env, lpObject, (NMCUSTOMDRAW *)lpStruct);
+	(*env)->SetIntField(env, lpObject, NMTVCUSTOMDRAWFc.clrText, (jint)lpStruct->clrText);
+	(*env)->SetIntField(env, lpObject, NMTVCUSTOMDRAWFc.clrTextBk, (jint)lpStruct->clrTextBk);
+#ifndef _WIN32_WCE
+	(*env)->SetIntField(env, lpObject, NMTVCUSTOMDRAWFc.iLevel, (jint)lpStruct->iLevel);
+#endif
+}
+#endif
+
+#ifndef NO_NONCLIENTMETRICS
+typedef struct NONCLIENTMETRICS_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, iBorderWidth, iScrollWidth, iScrollHeight, iCaptionWidth, iCaptionHeight, iSmCaptionWidth, iSmCaptionHeight, iMenuWidth, iMenuHeight;
+} NONCLIENTMETRICS_FID_CACHE;
+
+NONCLIENTMETRICS_FID_CACHE NONCLIENTMETRICSFc;
+
+void cacheNONCLIENTMETRICSFields(JNIEnv *env, jobject lpObject)
+{
+	if (NONCLIENTMETRICSFc.cached) return;
+	NONCLIENTMETRICSFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	NONCLIENTMETRICSFc.cbSize = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "cbSize", "I");
+	NONCLIENTMETRICSFc.iBorderWidth = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iBorderWidth", "I");
+	NONCLIENTMETRICSFc.iScrollWidth = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iScrollWidth", "I");
+	NONCLIENTMETRICSFc.iScrollHeight = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iScrollHeight", "I");
+	NONCLIENTMETRICSFc.iCaptionWidth = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iCaptionWidth", "I");
+	NONCLIENTMETRICSFc.iCaptionHeight = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iCaptionHeight", "I");
+	NONCLIENTMETRICSFc.iSmCaptionWidth = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iSmCaptionWidth", "I");
+	NONCLIENTMETRICSFc.iSmCaptionHeight = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iSmCaptionHeight", "I");
+	NONCLIENTMETRICSFc.iMenuWidth = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iMenuWidth", "I");
+	NONCLIENTMETRICSFc.iMenuHeight = (*env)->GetFieldID(env, NONCLIENTMETRICSFc.clazz, "iMenuHeight", "I");
+	NONCLIENTMETRICSFc.cached = 1;
+}
+
+NONCLIENTMETRICS *getNONCLIENTMETRICSFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICS *lpStruct)
+{
+	if (!NONCLIENTMETRICSFc.cached) cacheNONCLIENTMETRICSFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.cbSize);
+	lpStruct->iBorderWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iBorderWidth);
+	lpStruct->iScrollWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollWidth);
+	lpStruct->iScrollHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollHeight);
+	lpStruct->iCaptionWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionWidth);
+	lpStruct->iCaptionHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionHeight);
+	lpStruct->iSmCaptionWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionWidth);
+	lpStruct->iSmCaptionHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionHeight);
+	lpStruct->iMenuWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuWidth);
+	lpStruct->iMenuHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuHeight);
+	return lpStruct;
+}
+
+void setNONCLIENTMETRICSFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICS *lpStruct)
+{
+	if (!NONCLIENTMETRICSFc.cached) cacheNONCLIENTMETRICSFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iBorderWidth, (jint)lpStruct->iBorderWidth);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollWidth, (jint)lpStruct->iScrollWidth);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollHeight, (jint)lpStruct->iScrollHeight);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionWidth, (jint)lpStruct->iCaptionWidth);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionHeight, (jint)lpStruct->iCaptionHeight);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionWidth, (jint)lpStruct->iSmCaptionWidth);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionHeight, (jint)lpStruct->iSmCaptionHeight);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuWidth, (jint)lpStruct->iMenuWidth);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuHeight, (jint)lpStruct->iMenuHeight);
+}
+#endif
+
+#ifndef NO_NONCLIENTMETRICSA
+typedef struct NONCLIENTMETRICSA_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID lfCaptionFont, lfSmCaptionFont, lfMenuFont, lfStatusFont, lfMessageFont;
+} NONCLIENTMETRICSA_FID_CACHE;
+
+NONCLIENTMETRICSA_FID_CACHE NONCLIENTMETRICSAFc;
+
+void cacheNONCLIENTMETRICSAFields(JNIEnv *env, jobject lpObject)
+{
+	if (NONCLIENTMETRICSAFc.cached) return;
+	cacheNONCLIENTMETRICSFields(env, lpObject);
+	NONCLIENTMETRICSAFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	NONCLIENTMETRICSAFc.lfCaptionFont = (*env)->GetFieldID(env, NONCLIENTMETRICSAFc.clazz, "lfCaptionFont", "Lorg/eclipse/swt/internal/win32/LOGFONTA;");
+	NONCLIENTMETRICSAFc.lfSmCaptionFont = (*env)->GetFieldID(env, NONCLIENTMETRICSAFc.clazz, "lfSmCaptionFont", "Lorg/eclipse/swt/internal/win32/LOGFONTA;");
+	NONCLIENTMETRICSAFc.lfMenuFont = (*env)->GetFieldID(env, NONCLIENTMETRICSAFc.clazz, "lfMenuFont", "Lorg/eclipse/swt/internal/win32/LOGFONTA;");
+	NONCLIENTMETRICSAFc.lfStatusFont = (*env)->GetFieldID(env, NONCLIENTMETRICSAFc.clazz, "lfStatusFont", "Lorg/eclipse/swt/internal/win32/LOGFONTA;");
+	NONCLIENTMETRICSAFc.lfMessageFont = (*env)->GetFieldID(env, NONCLIENTMETRICSAFc.clazz, "lfMessageFont", "Lorg/eclipse/swt/internal/win32/LOGFONTA;");
+	NONCLIENTMETRICSAFc.cached = 1;
+}
+
+NONCLIENTMETRICSA *getNONCLIENTMETRICSAFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICSA *lpStruct)
+{
+	if (!NONCLIENTMETRICSAFc.cached) cacheNONCLIENTMETRICSAFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.cbSize);
+	lpStruct->iBorderWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iBorderWidth);
+	lpStruct->iScrollWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollWidth);
+	lpStruct->iScrollHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollHeight);
+	lpStruct->iCaptionWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionWidth);
+	lpStruct->iCaptionHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionHeight);
+	lpStruct->iSmCaptionWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionWidth);
+	lpStruct->iSmCaptionHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionHeight);
+	lpStruct->iMenuWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuWidth);
+	lpStruct->iMenuHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuHeight);
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfCaptionFont);
+	getLOGFONTAFields(env, lpObject1, &lpStruct->lfCaptionFont);
+	}
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfSmCaptionFont);
+	getLOGFONTAFields(env, lpObject1, &lpStruct->lfSmCaptionFont);
+	}
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfMenuFont);
+	getLOGFONTAFields(env, lpObject1, &lpStruct->lfMenuFont);
+	}
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfStatusFont);
+	getLOGFONTAFields(env, lpObject1, &lpStruct->lfStatusFont);
+	}
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfMessageFont);
+	getLOGFONTAFields(env, lpObject1, &lpStruct->lfMessageFont);
+	}
+	return lpStruct;
+}
+
+void setNONCLIENTMETRICSAFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICSA *lpStruct)
+{
+	if (!NONCLIENTMETRICSAFc.cached) cacheNONCLIENTMETRICSAFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iBorderWidth, (jint)lpStruct->iBorderWidth);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollWidth, (jint)lpStruct->iScrollWidth);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollHeight, (jint)lpStruct->iScrollHeight);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionWidth, (jint)lpStruct->iCaptionWidth);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionHeight, (jint)lpStruct->iCaptionHeight);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionWidth, (jint)lpStruct->iSmCaptionWidth);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionHeight, (jint)lpStruct->iSmCaptionHeight);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuWidth, (jint)lpStruct->iMenuWidth);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuHeight, (jint)lpStruct->iMenuHeight);
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfCaptionFont);
+	setLOGFONTAFields(env, lpObject1, &lpStruct->lfCaptionFont);
+	}
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfSmCaptionFont);
+	setLOGFONTAFields(env, lpObject1, &lpStruct->lfSmCaptionFont);
+	}
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfMenuFont);
+	setLOGFONTAFields(env, lpObject1, &lpStruct->lfMenuFont);
+	}
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfStatusFont);
+	setLOGFONTAFields(env, lpObject1, &lpStruct->lfStatusFont);
+	}
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSAFc.lfMessageFont);
+	setLOGFONTAFields(env, lpObject1, &lpStruct->lfMessageFont);
+	}
+}
+#endif
+
+#ifndef NO_NONCLIENTMETRICSW
+typedef struct NONCLIENTMETRICSW_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID lfCaptionFont, lfSmCaptionFont, lfMenuFont, lfStatusFont, lfMessageFont;
+} NONCLIENTMETRICSW_FID_CACHE;
+
+NONCLIENTMETRICSW_FID_CACHE NONCLIENTMETRICSWFc;
+
+void cacheNONCLIENTMETRICSWFields(JNIEnv *env, jobject lpObject)
+{
+	if (NONCLIENTMETRICSWFc.cached) return;
+	cacheNONCLIENTMETRICSFields(env, lpObject);
+	NONCLIENTMETRICSWFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	NONCLIENTMETRICSWFc.lfCaptionFont = (*env)->GetFieldID(env, NONCLIENTMETRICSWFc.clazz, "lfCaptionFont", "Lorg/eclipse/swt/internal/win32/LOGFONTW;");
+	NONCLIENTMETRICSWFc.lfSmCaptionFont = (*env)->GetFieldID(env, NONCLIENTMETRICSWFc.clazz, "lfSmCaptionFont", "Lorg/eclipse/swt/internal/win32/LOGFONTW;");
+	NONCLIENTMETRICSWFc.lfMenuFont = (*env)->GetFieldID(env, NONCLIENTMETRICSWFc.clazz, "lfMenuFont", "Lorg/eclipse/swt/internal/win32/LOGFONTW;");
+	NONCLIENTMETRICSWFc.lfStatusFont = (*env)->GetFieldID(env, NONCLIENTMETRICSWFc.clazz, "lfStatusFont", "Lorg/eclipse/swt/internal/win32/LOGFONTW;");
+	NONCLIENTMETRICSWFc.lfMessageFont = (*env)->GetFieldID(env, NONCLIENTMETRICSWFc.clazz, "lfMessageFont", "Lorg/eclipse/swt/internal/win32/LOGFONTW;");
+	NONCLIENTMETRICSWFc.cached = 1;
+}
+
+NONCLIENTMETRICSW *getNONCLIENTMETRICSWFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICSW *lpStruct)
+{
+	if (!NONCLIENTMETRICSWFc.cached) cacheNONCLIENTMETRICSWFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.cbSize);
+	lpStruct->iBorderWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iBorderWidth);
+	lpStruct->iScrollWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollWidth);
+	lpStruct->iScrollHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollHeight);
+	lpStruct->iCaptionWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionWidth);
+	lpStruct->iCaptionHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionHeight);
+	lpStruct->iSmCaptionWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionWidth);
+	lpStruct->iSmCaptionHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionHeight);
+	lpStruct->iMenuWidth = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuWidth);
+	lpStruct->iMenuHeight = (*env)->GetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuHeight);
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfCaptionFont);
+	getLOGFONTWFields(env, lpObject1, &lpStruct->lfCaptionFont);
+	}
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfSmCaptionFont);
+	getLOGFONTWFields(env, lpObject1, &lpStruct->lfSmCaptionFont);
+	}
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfMenuFont);
+	getLOGFONTWFields(env, lpObject1, &lpStruct->lfMenuFont);
+	}
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfStatusFont);
+	getLOGFONTWFields(env, lpObject1, &lpStruct->lfStatusFont);
+	}
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfMessageFont);
+	getLOGFONTWFields(env, lpObject1, &lpStruct->lfMessageFont);
+	}
+	return lpStruct;
+}
+
+void setNONCLIENTMETRICSWFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICSW *lpStruct)
+{
+	if (!NONCLIENTMETRICSWFc.cached) cacheNONCLIENTMETRICSWFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iBorderWidth, (jint)lpStruct->iBorderWidth);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollWidth, (jint)lpStruct->iScrollWidth);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iScrollHeight, (jint)lpStruct->iScrollHeight);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionWidth, (jint)lpStruct->iCaptionWidth);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iCaptionHeight, (jint)lpStruct->iCaptionHeight);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionWidth, (jint)lpStruct->iSmCaptionWidth);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iSmCaptionHeight, (jint)lpStruct->iSmCaptionHeight);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuWidth, (jint)lpStruct->iMenuWidth);
+	(*env)->SetIntField(env, lpObject, NONCLIENTMETRICSFc.iMenuHeight, (jint)lpStruct->iMenuHeight);
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfCaptionFont);
+	setLOGFONTWFields(env, lpObject1, &lpStruct->lfCaptionFont);
+	}
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfSmCaptionFont);
+	setLOGFONTWFields(env, lpObject1, &lpStruct->lfSmCaptionFont);
+	}
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfMenuFont);
+	setLOGFONTWFields(env, lpObject1, &lpStruct->lfMenuFont);
+	}
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfStatusFont);
+	setLOGFONTWFields(env, lpObject1, &lpStruct->lfStatusFont);
+	}
+	{
+	jobject lpObject1 = (*env)->GetObjectField(env, lpObject, NONCLIENTMETRICSWFc.lfMessageFont);
+	setLOGFONTWFields(env, lpObject1, &lpStruct->lfMessageFont);
+	}
+}
+#endif
+
+#ifndef NO_OPENFILENAME
+typedef struct OPENFILENAME_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID lStructSize, hwndOwner, hInstance, lpstrFilter, lpstrCustomFilter, nMaxCustFilter, nFilterIndex, lpstrFile, nMaxFile, lpstrFileTitle, nMaxFileTitle, lpstrInitialDir, lpstrTitle, Flags, nFileOffset, nFileExtension, lpstrDefExt, lCustData, lpfnHook, lpTemplateName;
+} OPENFILENAME_FID_CACHE;
+
+OPENFILENAME_FID_CACHE OPENFILENAMEFc;
+
+void cacheOPENFILENAMEFields(JNIEnv *env, jobject lpObject)
+{
+	if (OPENFILENAMEFc.cached) return;
+	OPENFILENAMEFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	OPENFILENAMEFc.lStructSize = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lStructSize", "I");
+	OPENFILENAMEFc.hwndOwner = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "hwndOwner", "I");
+	OPENFILENAMEFc.hInstance = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "hInstance", "I");
+	OPENFILENAMEFc.lpstrFilter = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrFilter", "I");
+	OPENFILENAMEFc.lpstrCustomFilter = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrCustomFilter", "I");
+	OPENFILENAMEFc.nMaxCustFilter = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nMaxCustFilter", "I");
+	OPENFILENAMEFc.nFilterIndex = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nFilterIndex", "I");
+	OPENFILENAMEFc.lpstrFile = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrFile", "I");
+	OPENFILENAMEFc.nMaxFile = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nMaxFile", "I");
+	OPENFILENAMEFc.lpstrFileTitle = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrFileTitle", "I");
+	OPENFILENAMEFc.nMaxFileTitle = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nMaxFileTitle", "I");
+	OPENFILENAMEFc.lpstrInitialDir = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrInitialDir", "I");
+	OPENFILENAMEFc.lpstrTitle = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrTitle", "I");
+	OPENFILENAMEFc.Flags = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "Flags", "I");
+	OPENFILENAMEFc.nFileOffset = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nFileOffset", "S");
+	OPENFILENAMEFc.nFileExtension = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "nFileExtension", "S");
+	OPENFILENAMEFc.lpstrDefExt = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpstrDefExt", "I");
+	OPENFILENAMEFc.lCustData = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lCustData", "I");
+	OPENFILENAMEFc.lpfnHook = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpfnHook", "I");
+	OPENFILENAMEFc.lpTemplateName = (*env)->GetFieldID(env, OPENFILENAMEFc.clazz, "lpTemplateName", "I");
+	OPENFILENAMEFc.cached = 1;
+}
+
+OPENFILENAME *getOPENFILENAMEFields(JNIEnv *env, jobject lpObject, OPENFILENAME *lpStruct)
+{
+	if (!OPENFILENAMEFc.cached) cacheOPENFILENAMEFields(env, lpObject);
+	lpStruct->lStructSize = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lStructSize);
+	lpStruct->hwndOwner = (HWND)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.hwndOwner);
+	lpStruct->hInstance = (HINSTANCE)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.hInstance);
+	lpStruct->lpstrFilter = (LPCTSTR)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpstrFilter);
+	lpStruct->lpstrCustomFilter = (LPTSTR)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpstrCustomFilter);
+	lpStruct->nMaxCustFilter = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.nMaxCustFilter);
+	lpStruct->nFilterIndex = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.nFilterIndex);
+	lpStruct->lpstrFile = (LPTSTR)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpstrFile);
+	lpStruct->nMaxFile = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.nMaxFile);
+	lpStruct->lpstrFileTitle = (LPTSTR)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpstrFileTitle);
+	lpStruct->nMaxFileTitle = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.nMaxFileTitle);
+	lpStruct->lpstrInitialDir = (LPCTSTR)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpstrInitialDir);
+	lpStruct->lpstrTitle = (LPCTSTR)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpstrTitle);
+	lpStruct->Flags = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.Flags);
+	lpStruct->nFileOffset = (*env)->GetShortField(env, lpObject, OPENFILENAMEFc.nFileOffset);
+	lpStruct->nFileExtension = (*env)->GetShortField(env, lpObject, OPENFILENAMEFc.nFileExtension);
+	lpStruct->lpstrDefExt = (LPCTSTR)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpstrDefExt);
+	lpStruct->lCustData = (*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lCustData);
+	lpStruct->lpfnHook = (LPOFNHOOKPROC)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpfnHook);
+	lpStruct->lpTemplateName = (LPCTSTR)(*env)->GetIntField(env, lpObject, OPENFILENAMEFc.lpTemplateName);
+	return lpStruct;
+}
+
+void setOPENFILENAMEFields(JNIEnv *env, jobject lpObject, OPENFILENAME *lpStruct)
+{
+	if (!OPENFILENAMEFc.cached) cacheOPENFILENAMEFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lStructSize, (jint)lpStruct->lStructSize);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.hwndOwner, (jint)lpStruct->hwndOwner);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.hInstance, (jint)lpStruct->hInstance);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpstrFilter, (jint)lpStruct->lpstrFilter);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpstrCustomFilter, (jint)lpStruct->lpstrCustomFilter);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.nMaxCustFilter, (jint)lpStruct->nMaxCustFilter);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.nFilterIndex, (jint)lpStruct->nFilterIndex);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpstrFile, (jint)lpStruct->lpstrFile);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.nMaxFile, (jint)lpStruct->nMaxFile);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpstrFileTitle, (jint)lpStruct->lpstrFileTitle);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.nMaxFileTitle, (jint)lpStruct->nMaxFileTitle);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpstrInitialDir, (jint)lpStruct->lpstrInitialDir);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpstrTitle, (jint)lpStruct->lpstrTitle);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.Flags, (jint)lpStruct->Flags);
+	(*env)->SetShortField(env, lpObject, OPENFILENAMEFc.nFileOffset, (jshort)lpStruct->nFileOffset);
+	(*env)->SetShortField(env, lpObject, OPENFILENAMEFc.nFileExtension, (jshort)lpStruct->nFileExtension);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpstrDefExt, (jint)lpStruct->lpstrDefExt);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lCustData, (jint)lpStruct->lCustData);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpfnHook, (jint)lpStruct->lpfnHook);
+	(*env)->SetIntField(env, lpObject, OPENFILENAMEFc.lpTemplateName, (jint)lpStruct->lpTemplateName);
+}
+#endif
+
+#ifndef NO_OSVERSIONINFO
+typedef struct OSVERSIONINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID dwOSVersionInfoSize, dwMajorVersion, dwMinorVersion, dwBuildNumber, dwPlatformId;
+} OSVERSIONINFO_FID_CACHE;
+
+OSVERSIONINFO_FID_CACHE OSVERSIONINFOFc;
+
+void cacheOSVERSIONINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (OSVERSIONINFOFc.cached) return;
+	OSVERSIONINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	OSVERSIONINFOFc.dwOSVersionInfoSize = (*env)->GetFieldID(env, OSVERSIONINFOFc.clazz, "dwOSVersionInfoSize", "I");
+	OSVERSIONINFOFc.dwMajorVersion = (*env)->GetFieldID(env, OSVERSIONINFOFc.clazz, "dwMajorVersion", "I");
+	OSVERSIONINFOFc.dwMinorVersion = (*env)->GetFieldID(env, OSVERSIONINFOFc.clazz, "dwMinorVersion", "I");
+	OSVERSIONINFOFc.dwBuildNumber = (*env)->GetFieldID(env, OSVERSIONINFOFc.clazz, "dwBuildNumber", "I");
+	OSVERSIONINFOFc.dwPlatformId = (*env)->GetFieldID(env, OSVERSIONINFOFc.clazz, "dwPlatformId", "I");
+	OSVERSIONINFOFc.cached = 1;
+}
+
+OSVERSIONINFO *getOSVERSIONINFOFields(JNIEnv *env, jobject lpObject, OSVERSIONINFO *lpStruct)
+{
+	if (!OSVERSIONINFOFc.cached) cacheOSVERSIONINFOFields(env, lpObject);
+	lpStruct->dwOSVersionInfoSize = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwOSVersionInfoSize);
+	lpStruct->dwMajorVersion = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwMajorVersion);
+	lpStruct->dwMinorVersion = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwMinorVersion);
+	lpStruct->dwBuildNumber = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwBuildNumber);
+	lpStruct->dwPlatformId = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwPlatformId);
+	return lpStruct;
+}
+
+void setOSVERSIONINFOFields(JNIEnv *env, jobject lpObject, OSVERSIONINFO *lpStruct)
+{
+	if (!OSVERSIONINFOFc.cached) cacheOSVERSIONINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwOSVersionInfoSize, (jint)lpStruct->dwOSVersionInfoSize);
+	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwMajorVersion, (jint)lpStruct->dwMajorVersion);
+	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwMinorVersion, (jint)lpStruct->dwMinorVersion);
+	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwBuildNumber, (jint)lpStruct->dwBuildNumber);
+	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwPlatformId, (jint)lpStruct->dwPlatformId);
+}
+#endif
+
+#ifndef NO_OSVERSIONINFOA
+typedef struct OSVERSIONINFOA_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID szCSDVersion;
+} OSVERSIONINFOA_FID_CACHE;
+
+OSVERSIONINFOA_FID_CACHE OSVERSIONINFOAFc;
+
+void cacheOSVERSIONINFOAFields(JNIEnv *env, jobject lpObject)
+{
+	if (OSVERSIONINFOAFc.cached) return;
+	cacheOSVERSIONINFOFields(env, lpObject);
+	OSVERSIONINFOAFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	OSVERSIONINFOAFc.szCSDVersion = (*env)->GetFieldID(env, OSVERSIONINFOAFc.clazz, "szCSDVersion", "[B");
+	OSVERSIONINFOAFc.cached = 1;
+}
+
+OSVERSIONINFOA *getOSVERSIONINFOAFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOA *lpStruct)
+{
+	if (!OSVERSIONINFOAFc.cached) cacheOSVERSIONINFOAFields(env, lpObject);
+	lpStruct->dwOSVersionInfoSize = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwOSVersionInfoSize);
+	lpStruct->dwMajorVersion = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwMajorVersion);
+	lpStruct->dwMinorVersion = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwMinorVersion);
+	lpStruct->dwBuildNumber = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwBuildNumber);
+	lpStruct->dwPlatformId = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwPlatformId);
+	{
+	jbyteArray lpObject1 = (*env)->GetObjectField(env, lpObject, OSVERSIONINFOAFc.szCSDVersion);
+	(*env)->GetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szCSDVersion), (void *)lpStruct->szCSDVersion);
+	}
+	return lpStruct;
+}
+
+void setOSVERSIONINFOAFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOA *lpStruct)
+{
+	if (!OSVERSIONINFOAFc.cached) cacheOSVERSIONINFOAFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwOSVersionInfoSize, (jint)lpStruct->dwOSVersionInfoSize);
+	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwMajorVersion, (jint)lpStruct->dwMajorVersion);
+	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwMinorVersion, (jint)lpStruct->dwMinorVersion);
+	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwBuildNumber, (jint)lpStruct->dwBuildNumber);
+	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwPlatformId, (jint)lpStruct->dwPlatformId);
+	{
+	jbyteArray lpObject1 = (*env)->GetObjectField(env, lpObject, OSVERSIONINFOAFc.szCSDVersion);
+	(*env)->SetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szCSDVersion), (void *)lpStruct->szCSDVersion);
+	}
+}
+#endif
+
+#ifndef NO_OSVERSIONINFOW
+typedef struct OSVERSIONINFOW_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID szCSDVersion;
+} OSVERSIONINFOW_FID_CACHE;
+
+OSVERSIONINFOW_FID_CACHE OSVERSIONINFOWFc;
+
+void cacheOSVERSIONINFOWFields(JNIEnv *env, jobject lpObject)
+{
+	if (OSVERSIONINFOWFc.cached) return;
+	cacheOSVERSIONINFOFields(env, lpObject);
+	OSVERSIONINFOWFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	OSVERSIONINFOWFc.szCSDVersion = (*env)->GetFieldID(env, OSVERSIONINFOWFc.clazz, "szCSDVersion", "[C");
+	OSVERSIONINFOWFc.cached = 1;
+}
+
+OSVERSIONINFOW *getOSVERSIONINFOWFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOW *lpStruct)
+{
+	if (!OSVERSIONINFOWFc.cached) cacheOSVERSIONINFOWFields(env, lpObject);
+	lpStruct->dwOSVersionInfoSize = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwOSVersionInfoSize);
+	lpStruct->dwMajorVersion = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwMajorVersion);
+	lpStruct->dwMinorVersion = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwMinorVersion);
+	lpStruct->dwBuildNumber = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwBuildNumber);
+	lpStruct->dwPlatformId = (*env)->GetIntField(env, lpObject, OSVERSIONINFOFc.dwPlatformId);
+	{
+	jcharArray lpObject1 = (*env)->GetObjectField(env, lpObject, OSVERSIONINFOWFc.szCSDVersion);
+	(*env)->GetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szCSDVersion) / 2, (void *)lpStruct->szCSDVersion);
+	}
+	return lpStruct;
+}
+
+void setOSVERSIONINFOWFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOW *lpStruct)
+{
+	if (!OSVERSIONINFOWFc.cached) cacheOSVERSIONINFOWFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwOSVersionInfoSize, (jint)lpStruct->dwOSVersionInfoSize);
+	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwMajorVersion, (jint)lpStruct->dwMajorVersion);
+	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwMinorVersion, (jint)lpStruct->dwMinorVersion);
+	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwBuildNumber, (jint)lpStruct->dwBuildNumber);
+	(*env)->SetIntField(env, lpObject, OSVERSIONINFOFc.dwPlatformId, (jint)lpStruct->dwPlatformId);
+	{
+	jcharArray lpObject1 = (*env)->GetObjectField(env, lpObject, OSVERSIONINFOWFc.szCSDVersion);
+	(*env)->SetCharArrayRegion(env, lpObject1, 0, sizeof(lpStruct->szCSDVersion) / 2, (void *)lpStruct->szCSDVersion);
+	}
+}
+#endif
+
+#ifndef NO_PAINTSTRUCT
+typedef struct PAINTSTRUCT_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID hdc, fErase, left, top, right, bottom, fRestore, fIncUpdate, rgbReserved;
+} PAINTSTRUCT_FID_CACHE;
+
+PAINTSTRUCT_FID_CACHE PAINTSTRUCTFc;
+
+void cachePAINTSTRUCTFields(JNIEnv *env, jobject lpObject)
+{
+	if (PAINTSTRUCTFc.cached) return;
+	PAINTSTRUCTFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	PAINTSTRUCTFc.hdc = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "hdc", "I");
+	PAINTSTRUCTFc.fErase = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "fErase", "Z");
+	PAINTSTRUCTFc.left = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "left", "I");
+	PAINTSTRUCTFc.top = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "top", "I");
+	PAINTSTRUCTFc.right = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "right", "I");
+	PAINTSTRUCTFc.bottom = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "bottom", "I");
+	PAINTSTRUCTFc.fRestore = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "fRestore", "Z");
+	PAINTSTRUCTFc.fIncUpdate = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "fIncUpdate", "Z");
+	PAINTSTRUCTFc.rgbReserved = (*env)->GetFieldID(env, PAINTSTRUCTFc.clazz, "rgbReserved", "[B");
+	PAINTSTRUCTFc.cached = 1;
+}
+
+PAINTSTRUCT *getPAINTSTRUCTFields(JNIEnv *env, jobject lpObject, PAINTSTRUCT *lpStruct)
+{
+	if (!PAINTSTRUCTFc.cached) cachePAINTSTRUCTFields(env, lpObject);
+	lpStruct->hdc = (HDC)(*env)->GetIntField(env, lpObject, PAINTSTRUCTFc.hdc);
+	lpStruct->fErase = (*env)->GetBooleanField(env, lpObject, PAINTSTRUCTFc.fErase);
+	lpStruct->rcPaint.left = (*env)->GetIntField(env, lpObject, PAINTSTRUCTFc.left);
+	lpStruct->rcPaint.top = (*env)->GetIntField(env, lpObject, PAINTSTRUCTFc.top);
+	lpStruct->rcPaint.right = (*env)->GetIntField(env, lpObject, PAINTSTRUCTFc.right);
+	lpStruct->rcPaint.bottom = (*env)->GetIntField(env, lpObject, PAINTSTRUCTFc.bottom);
+	lpStruct->fRestore = (*env)->GetBooleanField(env, lpObject, PAINTSTRUCTFc.fRestore);
+	lpStruct->fIncUpdate = (*env)->GetBooleanField(env, lpObject, PAINTSTRUCTFc.fIncUpdate);
+	{
+	jbyteArray lpObject1 = (*env)->GetObjectField(env, lpObject, PAINTSTRUCTFc.rgbReserved);
+	(*env)->GetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->rgbReserved), (void *)lpStruct->rgbReserved);
+	}
+	return lpStruct;
+}
+
+void setPAINTSTRUCTFields(JNIEnv *env, jobject lpObject, PAINTSTRUCT *lpStruct)
+{
+	if (!PAINTSTRUCTFc.cached) cachePAINTSTRUCTFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, PAINTSTRUCTFc.hdc, (jint)lpStruct->hdc);
+	(*env)->SetBooleanField(env, lpObject, PAINTSTRUCTFc.fErase, (jboolean)lpStruct->fErase);
+	(*env)->SetIntField(env, lpObject, PAINTSTRUCTFc.left, (jint)lpStruct->rcPaint.left);
+	(*env)->SetIntField(env, lpObject, PAINTSTRUCTFc.top, (jint)lpStruct->rcPaint.top);
+	(*env)->SetIntField(env, lpObject, PAINTSTRUCTFc.right, (jint)lpStruct->rcPaint.right);
+	(*env)->SetIntField(env, lpObject, PAINTSTRUCTFc.bottom, (jint)lpStruct->rcPaint.bottom);
+	(*env)->SetBooleanField(env, lpObject, PAINTSTRUCTFc.fRestore, (jboolean)lpStruct->fRestore);
+	(*env)->SetBooleanField(env, lpObject, PAINTSTRUCTFc.fIncUpdate, (jboolean)lpStruct->fIncUpdate);
+	{
+	jbyteArray lpObject1 = (*env)->GetObjectField(env, lpObject, PAINTSTRUCTFc.rgbReserved);
+	(*env)->SetByteArrayRegion(env, lpObject1, 0, sizeof(lpStruct->rgbReserved), (void *)lpStruct->rgbReserved);
+	}
+}
+#endif
+
+#ifndef NO_POINT
+typedef struct POINT_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID x, y;
+} POINT_FID_CACHE;
+
+POINT_FID_CACHE POINTFc;
+
+void cachePOINTFields(JNIEnv *env, jobject lpObject)
+{
+	if (POINTFc.cached) return;
+	POINTFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	POINTFc.x = (*env)->GetFieldID(env, POINTFc.clazz, "x", "I");
+	POINTFc.y = (*env)->GetFieldID(env, POINTFc.clazz, "y", "I");
+	POINTFc.cached = 1;
+}
+
+POINT *getPOINTFields(JNIEnv *env, jobject lpObject, POINT *lpStruct)
+{
+	if (!POINTFc.cached) cachePOINTFields(env, lpObject);
+	lpStruct->x = (*env)->GetIntField(env, lpObject, POINTFc.x);
+	lpStruct->y = (*env)->GetIntField(env, lpObject, POINTFc.y);
+	return lpStruct;
+}
+
+void setPOINTFields(JNIEnv *env, jobject lpObject, POINT *lpStruct)
+{
+	if (!POINTFc.cached) cachePOINTFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, POINTFc.x, (jint)lpStruct->x);
+	(*env)->SetIntField(env, lpObject, POINTFc.y, (jint)lpStruct->y);
+}
+#endif
+
+#ifndef NO_PRINTDLG
+typedef struct PRINTDLG_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID lStructSize, hwndOwner, hDevMode, hDevNames, hDC, Flags, nFromPage, nToPage, nMinPage, nMaxPage, nCopies, hInstance, lCustData, lpfnPrintHook, lpfnSetupHook, lpPrintTemplateName, lpSetupTemplateName, hPrintTemplate, hSetupTemplate;
+} PRINTDLG_FID_CACHE;
+
+PRINTDLG_FID_CACHE PRINTDLGFc;
+
+void cachePRINTDLGFields(JNIEnv *env, jobject lpObject)
+{
+	if (PRINTDLGFc.cached) return;
+	PRINTDLGFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	PRINTDLGFc.lStructSize = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lStructSize", "I");
+	PRINTDLGFc.hwndOwner = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hwndOwner", "I");
+	PRINTDLGFc.hDevMode = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hDevMode", "I");
+	PRINTDLGFc.hDevNames = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hDevNames", "I");
+	PRINTDLGFc.hDC = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hDC", "I");
+	PRINTDLGFc.Flags = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "Flags", "I");
+	PRINTDLGFc.nFromPage = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "nFromPage", "S");
+	PRINTDLGFc.nToPage = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "nToPage", "S");
+	PRINTDLGFc.nMinPage = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "nMinPage", "S");
+	PRINTDLGFc.nMaxPage = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "nMaxPage", "S");
+	PRINTDLGFc.nCopies = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "nCopies", "S");
+	PRINTDLGFc.hInstance = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hInstance", "I");
+	PRINTDLGFc.lCustData = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lCustData", "I");
+	PRINTDLGFc.lpfnPrintHook = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lpfnPrintHook", "I");
+	PRINTDLGFc.lpfnSetupHook = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lpfnSetupHook", "I");
+	PRINTDLGFc.lpPrintTemplateName = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lpPrintTemplateName", "I");
+	PRINTDLGFc.lpSetupTemplateName = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "lpSetupTemplateName", "I");
+	PRINTDLGFc.hPrintTemplate = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hPrintTemplate", "I");
+	PRINTDLGFc.hSetupTemplate = (*env)->GetFieldID(env, PRINTDLGFc.clazz, "hSetupTemplate", "I");
+	PRINTDLGFc.cached = 1;
+}
+
+PRINTDLG *getPRINTDLGFields(JNIEnv *env, jobject lpObject, PRINTDLG *lpStruct)
+{
+	if (!PRINTDLGFc.cached) cachePRINTDLGFields(env, lpObject);
+	lpStruct->lStructSize = (*env)->GetIntField(env, lpObject, PRINTDLGFc.lStructSize);
+	lpStruct->hwndOwner = (HWND)(*env)->GetIntField(env, lpObject, PRINTDLGFc.hwndOwner);
+	lpStruct->hDevMode = (HGLOBAL)(*env)->GetIntField(env, lpObject, PRINTDLGFc.hDevMode);
+	lpStruct->hDevNames = (HGLOBAL)(*env)->GetIntField(env, lpObject, PRINTDLGFc.hDevNames);
+	lpStruct->hDC = (HDC)(*env)->GetIntField(env, lpObject, PRINTDLGFc.hDC);
+	lpStruct->Flags = (*env)->GetIntField(env, lpObject, PRINTDLGFc.Flags);
+	lpStruct->nFromPage = (*env)->GetShortField(env, lpObject, PRINTDLGFc.nFromPage);
+	lpStruct->nToPage = (*env)->GetShortField(env, lpObject, PRINTDLGFc.nToPage);
+	lpStruct->nMinPage = (*env)->GetShortField(env, lpObject, PRINTDLGFc.nMinPage);
+	lpStruct->nMaxPage = (*env)->GetShortField(env, lpObject, PRINTDLGFc.nMaxPage);
+	lpStruct->nCopies = (*env)->GetShortField(env, lpObject, PRINTDLGFc.nCopies);
+	lpStruct->hInstance = (HINSTANCE)(*env)->GetIntField(env, lpObject, PRINTDLGFc.hInstance);
+	lpStruct->lCustData = (*env)->GetIntField(env, lpObject, PRINTDLGFc.lCustData);
+	lpStruct->lpfnPrintHook = (LPPRINTHOOKPROC)(*env)->GetIntField(env, lpObject, PRINTDLGFc.lpfnPrintHook);
+	lpStruct->lpfnSetupHook = (LPPRINTHOOKPROC)(*env)->GetIntField(env, lpObject, PRINTDLGFc.lpfnSetupHook);
+	lpStruct->lpPrintTemplateName = (LPCTSTR)(*env)->GetIntField(env, lpObject, PRINTDLGFc.lpPrintTemplateName);
+	lpStruct->lpSetupTemplateName = (LPCTSTR)(*env)->GetIntField(env, lpObject, PRINTDLGFc.lpSetupTemplateName);
+	lpStruct->hPrintTemplate = (HGLOBAL)(*env)->GetIntField(env, lpObject, PRINTDLGFc.hPrintTemplate);
+	lpStruct->hSetupTemplate = (HGLOBAL)(*env)->GetIntField(env, lpObject, PRINTDLGFc.hSetupTemplate);
+	return lpStruct;
+}
+
+void setPRINTDLGFields(JNIEnv *env, jobject lpObject, PRINTDLG *lpStruct)
+{
+	if (!PRINTDLGFc.cached) cachePRINTDLGFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, PRINTDLGFc.lStructSize, (jint)lpStruct->lStructSize);
+	(*env)->SetIntField(env, lpObject, PRINTDLGFc.hwndOwner, (jint)lpStruct->hwndOwner);
+	(*env)->SetIntField(env, lpObject, PRINTDLGFc.hDevMode, (jint)lpStruct->hDevMode);
+	(*env)->SetIntField(env, lpObject, PRINTDLGFc.hDevNames, (jint)lpStruct->hDevNames);
+	(*env)->SetIntField(env, lpObject, PRINTDLGFc.hDC, (jint)lpStruct->hDC);
+	(*env)->SetIntField(env, lpObject, PRINTDLGFc.Flags, (jint)lpStruct->Flags);
+	(*env)->SetShortField(env, lpObject, PRINTDLGFc.nFromPage, (jshort)lpStruct->nFromPage);
+	(*env)->SetShortField(env, lpObject, PRINTDLGFc.nToPage, (jshort)lpStruct->nToPage);
+	(*env)->SetShortField(env, lpObject, PRINTDLGFc.nMinPage, (jshort)lpStruct->nMinPage);
+	(*env)->SetShortField(env, lpObject, PRINTDLGFc.nMaxPage, (jshort)lpStruct->nMaxPage);
+	(*env)->SetShortField(env, lpObject, PRINTDLGFc.nCopies, (jshort)lpStruct->nCopies);
+	(*env)->SetIntField(env, lpObject, PRINTDLGFc.hInstance, (jint)lpStruct->hInstance);
+	(*env)->SetIntField(env, lpObject, PRINTDLGFc.lCustData, (jint)lpStruct->lCustData);
+	(*env)->SetIntField(env, lpObject, PRINTDLGFc.lpfnPrintHook, (jint)lpStruct->lpfnPrintHook);
+	(*env)->SetIntField(env, lpObject, PRINTDLGFc.lpfnSetupHook, (jint)lpStruct->lpfnSetupHook);
+	(*env)->SetIntField(env, lpObject, PRINTDLGFc.lpPrintTemplateName, (jint)lpStruct->lpPrintTemplateName);
+	(*env)->SetIntField(env, lpObject, PRINTDLGFc.lpSetupTemplateName, (jint)lpStruct->lpSetupTemplateName);
+	(*env)->SetIntField(env, lpObject, PRINTDLGFc.hPrintTemplate, (jint)lpStruct->hPrintTemplate);
+	(*env)->SetIntField(env, lpObject, PRINTDLGFc.hSetupTemplate, (jint)lpStruct->hSetupTemplate);
+}
+#endif
+
+#ifndef NO_REBARBANDINFO
+typedef struct REBARBANDINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, fMask, fStyle, clrFore, clrBack, lpText, cch, iImage, hwndChild, cxMinChild, cyMinChild, cx, hbmBack, wID, cyChild, cyMaxChild, cyIntegral, cxIdeal, lParam, cxHeader;
+} REBARBANDINFO_FID_CACHE;
+
+REBARBANDINFO_FID_CACHE REBARBANDINFOFc;
+
+void cacheREBARBANDINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (REBARBANDINFOFc.cached) return;
+	REBARBANDINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	REBARBANDINFOFc.cbSize = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cbSize", "I");
+	REBARBANDINFOFc.fMask = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "fMask", "I");
+	REBARBANDINFOFc.fStyle = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "fStyle", "I");
+	REBARBANDINFOFc.clrFore = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "clrFore", "I");
+	REBARBANDINFOFc.clrBack = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "clrBack", "I");
+	REBARBANDINFOFc.lpText = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "lpText", "I");
+	REBARBANDINFOFc.cch = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cch", "I");
+	REBARBANDINFOFc.iImage = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "iImage", "I");
+	REBARBANDINFOFc.hwndChild = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "hwndChild", "I");
+	REBARBANDINFOFc.cxMinChild = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cxMinChild", "I");
+	REBARBANDINFOFc.cyMinChild = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cyMinChild", "I");
+	REBARBANDINFOFc.cx = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cx", "I");
+	REBARBANDINFOFc.hbmBack = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "hbmBack", "I");
+	REBARBANDINFOFc.wID = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "wID", "I");
+	REBARBANDINFOFc.cyChild = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cyChild", "I");
+	REBARBANDINFOFc.cyMaxChild = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cyMaxChild", "I");
+	REBARBANDINFOFc.cyIntegral = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cyIntegral", "I");
+	REBARBANDINFOFc.cxIdeal = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cxIdeal", "I");
+	REBARBANDINFOFc.lParam = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "lParam", "I");
+	REBARBANDINFOFc.cxHeader = (*env)->GetFieldID(env, REBARBANDINFOFc.clazz, "cxHeader", "I");
+	REBARBANDINFOFc.cached = 1;
+}
+
+REBARBANDINFO *getREBARBANDINFOFields(JNIEnv *env, jobject lpObject, REBARBANDINFO *lpStruct)
+{
+	if (!REBARBANDINFOFc.cached) cacheREBARBANDINFOFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cbSize);
+	lpStruct->fMask = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.fMask);
+	lpStruct->fStyle = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.fStyle);
+	lpStruct->clrFore = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.clrFore);
+	lpStruct->clrBack = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.clrBack);
+	lpStruct->lpText = (LPTSTR)(*env)->GetIntField(env, lpObject, REBARBANDINFOFc.lpText);
+	lpStruct->cch = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cch);
+	lpStruct->iImage = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.iImage);
+	lpStruct->hwndChild = (HWND)(*env)->GetIntField(env, lpObject, REBARBANDINFOFc.hwndChild);
+	lpStruct->cxMinChild = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cxMinChild);
+	lpStruct->cyMinChild = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cyMinChild);
+	lpStruct->cx = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cx);
+	lpStruct->hbmBack = (HBITMAP)(*env)->GetIntField(env, lpObject, REBARBANDINFOFc.hbmBack);
+	lpStruct->wID = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.wID);
+	lpStruct->cyChild = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cyChild);
+	lpStruct->cyMaxChild = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cyMaxChild);
+	lpStruct->cyIntegral = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cyIntegral);
+	lpStruct->cxIdeal = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cxIdeal);
+	lpStruct->lParam = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.lParam);
+#ifndef _WIN32_WCE
+	lpStruct->cxHeader = (*env)->GetIntField(env, lpObject, REBARBANDINFOFc.cxHeader);
+#endif
+	return lpStruct;
+}
+
+void setREBARBANDINFOFields(JNIEnv *env, jobject lpObject, REBARBANDINFO *lpStruct)
+{
+	if (!REBARBANDINFOFc.cached) cacheREBARBANDINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.fMask, (jint)lpStruct->fMask);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.fStyle, (jint)lpStruct->fStyle);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.clrFore, (jint)lpStruct->clrFore);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.clrBack, (jint)lpStruct->clrBack);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.lpText, (jint)lpStruct->lpText);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cch, (jint)lpStruct->cch);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.iImage, (jint)lpStruct->iImage);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.hwndChild, (jint)lpStruct->hwndChild);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cxMinChild, (jint)lpStruct->cxMinChild);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cyMinChild, (jint)lpStruct->cyMinChild);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cx, (jint)lpStruct->cx);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.hbmBack, (jint)lpStruct->hbmBack);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.wID, (jint)lpStruct->wID);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cyChild, (jint)lpStruct->cyChild);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cyMaxChild, (jint)lpStruct->cyMaxChild);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cyIntegral, (jint)lpStruct->cyIntegral);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cxIdeal, (jint)lpStruct->cxIdeal);
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.lParam, (jint)lpStruct->lParam);
+#ifndef _WIN32_WCE
+	(*env)->SetIntField(env, lpObject, REBARBANDINFOFc.cxHeader, (jint)lpStruct->cxHeader);
+#endif
+}
+#endif
+
+#ifndef NO_RECT
+typedef struct RECT_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID left, top, right, bottom;
+} RECT_FID_CACHE;
+
+RECT_FID_CACHE RECTFc;
+
+void cacheRECTFields(JNIEnv *env, jobject lpObject)
+{
+	if (RECTFc.cached) return;
+	RECTFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	RECTFc.left = (*env)->GetFieldID(env, RECTFc.clazz, "left", "I");
+	RECTFc.top = (*env)->GetFieldID(env, RECTFc.clazz, "top", "I");
+	RECTFc.right = (*env)->GetFieldID(env, RECTFc.clazz, "right", "I");
+	RECTFc.bottom = (*env)->GetFieldID(env, RECTFc.clazz, "bottom", "I");
+	RECTFc.cached = 1;
+}
+
+RECT *getRECTFields(JNIEnv *env, jobject lpObject, RECT *lpStruct)
+{
+	if (!RECTFc.cached) cacheRECTFields(env, lpObject);
+	lpStruct->left = (*env)->GetIntField(env, lpObject, RECTFc.left);
+	lpStruct->top = (*env)->GetIntField(env, lpObject, RECTFc.top);
+	lpStruct->right = (*env)->GetIntField(env, lpObject, RECTFc.right);
+	lpStruct->bottom = (*env)->GetIntField(env, lpObject, RECTFc.bottom);
+	return lpStruct;
+}
+
+void setRECTFields(JNIEnv *env, jobject lpObject, RECT *lpStruct)
+{
+	if (!RECTFc.cached) cacheRECTFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, RECTFc.left, (jint)lpStruct->left);
+	(*env)->SetIntField(env, lpObject, RECTFc.top, (jint)lpStruct->top);
+	(*env)->SetIntField(env, lpObject, RECTFc.right, (jint)lpStruct->right);
+	(*env)->SetIntField(env, lpObject, RECTFc.bottom, (jint)lpStruct->bottom);
+}
+#endif
+
+#ifndef NO_SCROLLINFO
+typedef struct SCROLLINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, fMask, nMin, nMax, nPage, nPos, nTrackPos;
+} SCROLLINFO_FID_CACHE;
+
+SCROLLINFO_FID_CACHE SCROLLINFOFc;
+
+void cacheSCROLLINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (SCROLLINFOFc.cached) return;
+	SCROLLINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	SCROLLINFOFc.cbSize = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "cbSize", "I");
+	SCROLLINFOFc.fMask = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "fMask", "I");
+	SCROLLINFOFc.nMin = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "nMin", "I");
+	SCROLLINFOFc.nMax = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "nMax", "I");
+	SCROLLINFOFc.nPage = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "nPage", "I");
+	SCROLLINFOFc.nPos = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "nPos", "I");
+	SCROLLINFOFc.nTrackPos = (*env)->GetFieldID(env, SCROLLINFOFc.clazz, "nTrackPos", "I");
+	SCROLLINFOFc.cached = 1;
+}
+
+SCROLLINFO *getSCROLLINFOFields(JNIEnv *env, jobject lpObject, SCROLLINFO *lpStruct)
+{
+	if (!SCROLLINFOFc.cached) cacheSCROLLINFOFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.cbSize);
+	lpStruct->fMask = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.fMask);
+	lpStruct->nMin = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.nMin);
+	lpStruct->nMax = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.nMax);
+	lpStruct->nPage = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.nPage);
+	lpStruct->nPos = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.nPos);
+	lpStruct->nTrackPos = (*env)->GetIntField(env, lpObject, SCROLLINFOFc.nTrackPos);
+	return lpStruct;
+}
+
+void setSCROLLINFOFields(JNIEnv *env, jobject lpObject, SCROLLINFO *lpStruct)
+{
+	if (!SCROLLINFOFc.cached) cacheSCROLLINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.fMask, (jint)lpStruct->fMask);
+	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.nMin, (jint)lpStruct->nMin);
+	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.nMax, (jint)lpStruct->nMax);
+	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.nPage, (jint)lpStruct->nPage);
+	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.nPos, (jint)lpStruct->nPos);
+	(*env)->SetIntField(env, lpObject, SCROLLINFOFc.nTrackPos, (jint)lpStruct->nTrackPos);
+}
+#endif
+
+#ifndef NO_SHACTIVATEINFO
+typedef struct SHACTIVATEINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, hwndLastFocus, fSipUp, fSipOnDeactivation, fActive, fReserved;
+} SHACTIVATEINFO_FID_CACHE;
+
+SHACTIVATEINFO_FID_CACHE SHACTIVATEINFOFc;
+
+void cacheSHACTIVATEINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (SHACTIVATEINFOFc.cached) return;
+	SHACTIVATEINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	SHACTIVATEINFOFc.cbSize = (*env)->GetFieldID(env, SHACTIVATEINFOFc.clazz, "cbSize", "I");
+	SHACTIVATEINFOFc.hwndLastFocus = (*env)->GetFieldID(env, SHACTIVATEINFOFc.clazz, "hwndLastFocus", "I");
+	SHACTIVATEINFOFc.fSipUp = (*env)->GetFieldID(env, SHACTIVATEINFOFc.clazz, "fSipUp", "I");
+	SHACTIVATEINFOFc.fSipOnDeactivation = (*env)->GetFieldID(env, SHACTIVATEINFOFc.clazz, "fSipOnDeactivation", "I");
+	SHACTIVATEINFOFc.fActive = (*env)->GetFieldID(env, SHACTIVATEINFOFc.clazz, "fActive", "I");
+	SHACTIVATEINFOFc.fReserved = (*env)->GetFieldID(env, SHACTIVATEINFOFc.clazz, "fReserved", "I");
+	SHACTIVATEINFOFc.cached = 1;
+}
+
+SHACTIVATEINFO *getSHACTIVATEINFOFields(JNIEnv *env, jobject lpObject, SHACTIVATEINFO *lpStruct)
+{
+	if (!SHACTIVATEINFOFc.cached) cacheSHACTIVATEINFOFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, SHACTIVATEINFOFc.cbSize);
+	lpStruct->hwndLastFocus = (HWND)(*env)->GetIntField(env, lpObject, SHACTIVATEINFOFc.hwndLastFocus);
+	lpStruct->fSipUp = (*env)->GetIntField(env, lpObject, SHACTIVATEINFOFc.fSipUp);
+	lpStruct->fSipOnDeactivation = (*env)->GetIntField(env, lpObject, SHACTIVATEINFOFc.fSipOnDeactivation);
+	lpStruct->fActive = (*env)->GetIntField(env, lpObject, SHACTIVATEINFOFc.fActive);
+	lpStruct->fReserved = (*env)->GetIntField(env, lpObject, SHACTIVATEINFOFc.fReserved);
+	return lpStruct;
+}
+
+void setSHACTIVATEINFOFields(JNIEnv *env, jobject lpObject, SHACTIVATEINFO *lpStruct)
+{
+	if (!SHACTIVATEINFOFc.cached) cacheSHACTIVATEINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, SHACTIVATEINFOFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, SHACTIVATEINFOFc.hwndLastFocus, (jint)lpStruct->hwndLastFocus);
+	(*env)->SetIntField(env, lpObject, SHACTIVATEINFOFc.fSipUp, (jint)lpStruct->fSipUp);
+	(*env)->SetIntField(env, lpObject, SHACTIVATEINFOFc.fSipOnDeactivation, (jint)lpStruct->fSipOnDeactivation);
+	(*env)->SetIntField(env, lpObject, SHACTIVATEINFOFc.fActive, (jint)lpStruct->fActive);
+	(*env)->SetIntField(env, lpObject, SHACTIVATEINFOFc.fReserved, (jint)lpStruct->fReserved);
+}
+#endif
+
+#ifndef NO_SHELLEXECUTEINFO
+typedef struct SHELLEXECUTEINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, fMask, hwnd, lpVerb, lpFile, lpParameters, lpDirectory, nShow, hInstApp, lpIDList, lpClass, hkeyClass, dwHotKey, hIcon, hProcess;
+} SHELLEXECUTEINFO_FID_CACHE;
+
+SHELLEXECUTEINFO_FID_CACHE SHELLEXECUTEINFOFc;
+
+void cacheSHELLEXECUTEINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (SHELLEXECUTEINFOFc.cached) return;
+	SHELLEXECUTEINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	SHELLEXECUTEINFOFc.cbSize = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "cbSize", "I");
+	SHELLEXECUTEINFOFc.fMask = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "fMask", "I");
+	SHELLEXECUTEINFOFc.hwnd = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "hwnd", "I");
+	SHELLEXECUTEINFOFc.lpVerb = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpVerb", "I");
+	SHELLEXECUTEINFOFc.lpFile = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpFile", "I");
+	SHELLEXECUTEINFOFc.lpParameters = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpParameters", "I");
+	SHELLEXECUTEINFOFc.lpDirectory = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpDirectory", "I");
+	SHELLEXECUTEINFOFc.nShow = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "nShow", "I");
+	SHELLEXECUTEINFOFc.hInstApp = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "hInstApp", "I");
+	SHELLEXECUTEINFOFc.lpIDList = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpIDList", "I");
+	SHELLEXECUTEINFOFc.lpClass = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "lpClass", "I");
+	SHELLEXECUTEINFOFc.hkeyClass = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "hkeyClass", "I");
+	SHELLEXECUTEINFOFc.dwHotKey = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "dwHotKey", "I");
+	SHELLEXECUTEINFOFc.hIcon = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "hIcon", "I");
+	SHELLEXECUTEINFOFc.hProcess = (*env)->GetFieldID(env, SHELLEXECUTEINFOFc.clazz, "hProcess", "I");
+	SHELLEXECUTEINFOFc.cached = 1;
+}
+
+SHELLEXECUTEINFO *getSHELLEXECUTEINFOFields(JNIEnv *env, jobject lpObject, SHELLEXECUTEINFO *lpStruct)
+{
+	if (!SHELLEXECUTEINFOFc.cached) cacheSHELLEXECUTEINFOFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.cbSize);
+	lpStruct->fMask = (*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.fMask);
+	lpStruct->hwnd = (HWND)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.hwnd);
+	lpStruct->lpVerb = (LPCTSTR)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpVerb);
+	lpStruct->lpFile = (LPCTSTR)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpFile);
+	lpStruct->lpParameters = (LPCTSTR)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpParameters);
+	lpStruct->lpDirectory = (LPCTSTR)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpDirectory);
+	lpStruct->nShow = (*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.nShow);
+	lpStruct->hInstApp = (HINSTANCE)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.hInstApp);
+	lpStruct->lpIDList = (LPVOID)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpIDList);
+	lpStruct->lpClass = (LPCTSTR)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpClass);
+	lpStruct->hkeyClass = (HKEY)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.hkeyClass);
+	lpStruct->dwHotKey = (*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.dwHotKey);
+	lpStruct->hIcon = (HANDLE)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.hIcon);
+	lpStruct->hProcess = (HANDLE)(*env)->GetIntField(env, lpObject, SHELLEXECUTEINFOFc.hProcess);
+	return lpStruct;
+}
+
+void setSHELLEXECUTEINFOFields(JNIEnv *env, jobject lpObject, SHELLEXECUTEINFO *lpStruct)
+{
+	if (!SHELLEXECUTEINFOFc.cached) cacheSHELLEXECUTEINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.fMask, (jint)lpStruct->fMask);
+	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.hwnd, (jint)lpStruct->hwnd);
+	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpVerb, (jint)lpStruct->lpVerb);
+	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpFile, (jint)lpStruct->lpFile);
+	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpParameters, (jint)lpStruct->lpParameters);
+	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpDirectory, (jint)lpStruct->lpDirectory);
+	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.nShow, (jint)lpStruct->nShow);
+	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.hInstApp, (jint)lpStruct->hInstApp);
+	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpIDList, (jint)lpStruct->lpIDList);
+	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.lpClass, (jint)lpStruct->lpClass);
+	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.hkeyClass, (jint)lpStruct->hkeyClass);
+	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.dwHotKey, (jint)lpStruct->dwHotKey);
+	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.hIcon, (jint)lpStruct->hIcon);
+	(*env)->SetIntField(env, lpObject, SHELLEXECUTEINFOFc.hProcess, (jint)lpStruct->hProcess);
+}
+#endif
+
+#ifndef NO_SHMENUBARINFO
+typedef struct SHMENUBARINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, hwndParent, dwFlags, nToolBarId, hInstRes, nBmpId, cBmpImages, hwndMB;
+} SHMENUBARINFO_FID_CACHE;
+
+SHMENUBARINFO_FID_CACHE SHMENUBARINFOFc;
+
+void cacheSHMENUBARINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (SHMENUBARINFOFc.cached) return;
+	SHMENUBARINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	SHMENUBARINFOFc.cbSize = (*env)->GetFieldID(env, SHMENUBARINFOFc.clazz, "cbSize", "I");
+	SHMENUBARINFOFc.hwndParent = (*env)->GetFieldID(env, SHMENUBARINFOFc.clazz, "hwndParent", "I");
+	SHMENUBARINFOFc.dwFlags = (*env)->GetFieldID(env, SHMENUBARINFOFc.clazz, "dwFlags", "I");
+	SHMENUBARINFOFc.nToolBarId = (*env)->GetFieldID(env, SHMENUBARINFOFc.clazz, "nToolBarId", "I");
+	SHMENUBARINFOFc.hInstRes = (*env)->GetFieldID(env, SHMENUBARINFOFc.clazz, "hInstRes", "I");
+	SHMENUBARINFOFc.nBmpId = (*env)->GetFieldID(env, SHMENUBARINFOFc.clazz, "nBmpId", "I");
+	SHMENUBARINFOFc.cBmpImages = (*env)->GetFieldID(env, SHMENUBARINFOFc.clazz, "cBmpImages", "I");
+	SHMENUBARINFOFc.hwndMB = (*env)->GetFieldID(env, SHMENUBARINFOFc.clazz, "hwndMB", "I");
+	SHMENUBARINFOFc.cached = 1;
+}
+
+SHMENUBARINFO *getSHMENUBARINFOFields(JNIEnv *env, jobject lpObject, SHMENUBARINFO *lpStruct)
+{
+	if (!SHMENUBARINFOFc.cached) cacheSHMENUBARINFOFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, SHMENUBARINFOFc.cbSize);
+	lpStruct->hwndParent = (HWND)(*env)->GetIntField(env, lpObject, SHMENUBARINFOFc.hwndParent);
+	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, SHMENUBARINFOFc.dwFlags);
+	lpStruct->nToolBarId = (*env)->GetIntField(env, lpObject, SHMENUBARINFOFc.nToolBarId);
+	lpStruct->hInstRes = (HINSTANCE)(*env)->GetIntField(env, lpObject, SHMENUBARINFOFc.hInstRes);
+	lpStruct->nBmpId = (*env)->GetIntField(env, lpObject, SHMENUBARINFOFc.nBmpId);
+	lpStruct->cBmpImages = (*env)->GetIntField(env, lpObject, SHMENUBARINFOFc.cBmpImages);
+	lpStruct->hwndMB = (HWND)(*env)->GetIntField(env, lpObject, SHMENUBARINFOFc.hwndMB);
+	return lpStruct;
+}
+
+void setSHMENUBARINFOFields(JNIEnv *env, jobject lpObject, SHMENUBARINFO *lpStruct)
+{
+	if (!SHMENUBARINFOFc.cached) cacheSHMENUBARINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, SHMENUBARINFOFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, SHMENUBARINFOFc.hwndParent, (jint)lpStruct->hwndParent);
+	(*env)->SetIntField(env, lpObject, SHMENUBARINFOFc.dwFlags, (jint)lpStruct->dwFlags);
+	(*env)->SetIntField(env, lpObject, SHMENUBARINFOFc.nToolBarId, (jint)lpStruct->nToolBarId);
+	(*env)->SetIntField(env, lpObject, SHMENUBARINFOFc.hInstRes, (jint)lpStruct->hInstRes);
+	(*env)->SetIntField(env, lpObject, SHMENUBARINFOFc.nBmpId, (jint)lpStruct->nBmpId);
+	(*env)->SetIntField(env, lpObject, SHMENUBARINFOFc.cBmpImages, (jint)lpStruct->cBmpImages);
+	(*env)->SetIntField(env, lpObject, SHMENUBARINFOFc.hwndMB, (jint)lpStruct->hwndMB);
+}
+#endif
+
+#ifndef NO_SHRGINFO
+typedef struct SHRGINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, hwndClient, ptDown_x, ptDown_y, dwFlags;
+} SHRGINFO_FID_CACHE;
+
+SHRGINFO_FID_CACHE SHRGINFOFc;
+
+void cacheSHRGINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (SHRGINFOFc.cached) return;
+	SHRGINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	SHRGINFOFc.cbSize = (*env)->GetFieldID(env, SHRGINFOFc.clazz, "cbSize", "I");
+	SHRGINFOFc.hwndClient = (*env)->GetFieldID(env, SHRGINFOFc.clazz, "hwndClient", "I");
+	SHRGINFOFc.ptDown_x = (*env)->GetFieldID(env, SHRGINFOFc.clazz, "ptDown_x", "I");
+	SHRGINFOFc.ptDown_y = (*env)->GetFieldID(env, SHRGINFOFc.clazz, "ptDown_y", "I");
+	SHRGINFOFc.dwFlags = (*env)->GetFieldID(env, SHRGINFOFc.clazz, "dwFlags", "I");
+	SHRGINFOFc.cached = 1;
+}
+
+SHRGINFO *getSHRGINFOFields(JNIEnv *env, jobject lpObject, SHRGINFO *lpStruct)
+{
+	if (!SHRGINFOFc.cached) cacheSHRGINFOFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, SHRGINFOFc.cbSize);
+	lpStruct->hwndClient = (HWND)(*env)->GetIntField(env, lpObject, SHRGINFOFc.hwndClient);
+	lpStruct->ptDown.x = (*env)->GetIntField(env, lpObject, SHRGINFOFc.ptDown_x);
+	lpStruct->ptDown.y = (*env)->GetIntField(env, lpObject, SHRGINFOFc.ptDown_y);
+	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, SHRGINFOFc.dwFlags);
+	return lpStruct;
+}
+
+void setSHRGINFOFields(JNIEnv *env, jobject lpObject, SHRGINFO *lpStruct)
+{
+	if (!SHRGINFOFc.cached) cacheSHRGINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, SHRGINFOFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, SHRGINFOFc.hwndClient, (jint)lpStruct->hwndClient);
+	(*env)->SetIntField(env, lpObject, SHRGINFOFc.ptDown_x, (jint)lpStruct->ptDown.x);
+	(*env)->SetIntField(env, lpObject, SHRGINFOFc.ptDown_y, (jint)lpStruct->ptDown.y);
+	(*env)->SetIntField(env, lpObject, SHRGINFOFc.dwFlags, (jint)lpStruct->dwFlags);
+}
+#endif
+
+#ifndef NO_SIPINFO
+typedef struct SIPINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, fdwFlags, rcVisibleDesktop_left, rcVisibleDesktop_top, rcVisibleDesktop_right, rcVisibleDesktop_bottom, rcSipRect_left, rcSipRect_top, rcSipRect_right, rcSipRect_bottom, dwImDataSize, pvImData;
+} SIPINFO_FID_CACHE;
+
+SIPINFO_FID_CACHE SIPINFOFc;
+
+void cacheSIPINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (SIPINFOFc.cached) return;
+	SIPINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	SIPINFOFc.cbSize = (*env)->GetFieldID(env, SIPINFOFc.clazz, "cbSize", "I");
+	SIPINFOFc.fdwFlags = (*env)->GetFieldID(env, SIPINFOFc.clazz, "fdwFlags", "I");
+	SIPINFOFc.rcVisibleDesktop_left = (*env)->GetFieldID(env, SIPINFOFc.clazz, "rcVisibleDesktop_left", "I");
+	SIPINFOFc.rcVisibleDesktop_top = (*env)->GetFieldID(env, SIPINFOFc.clazz, "rcVisibleDesktop_top", "I");
+	SIPINFOFc.rcVisibleDesktop_right = (*env)->GetFieldID(env, SIPINFOFc.clazz, "rcVisibleDesktop_right", "I");
+	SIPINFOFc.rcVisibleDesktop_bottom = (*env)->GetFieldID(env, SIPINFOFc.clazz, "rcVisibleDesktop_bottom", "I");
+	SIPINFOFc.rcSipRect_left = (*env)->GetFieldID(env, SIPINFOFc.clazz, "rcSipRect_left", "I");
+	SIPINFOFc.rcSipRect_top = (*env)->GetFieldID(env, SIPINFOFc.clazz, "rcSipRect_top", "I");
+	SIPINFOFc.rcSipRect_right = (*env)->GetFieldID(env, SIPINFOFc.clazz, "rcSipRect_right", "I");
+	SIPINFOFc.rcSipRect_bottom = (*env)->GetFieldID(env, SIPINFOFc.clazz, "rcSipRect_bottom", "I");
+	SIPINFOFc.dwImDataSize = (*env)->GetFieldID(env, SIPINFOFc.clazz, "dwImDataSize", "I");
+	SIPINFOFc.pvImData = (*env)->GetFieldID(env, SIPINFOFc.clazz, "pvImData", "I");
+	SIPINFOFc.cached = 1;
+}
+
+SIPINFO *getSIPINFOFields(JNIEnv *env, jobject lpObject, SIPINFO *lpStruct)
+{
+	if (!SIPINFOFc.cached) cacheSIPINFOFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, SIPINFOFc.cbSize);
+	lpStruct->fdwFlags = (*env)->GetIntField(env, lpObject, SIPINFOFc.fdwFlags);
+	lpStruct->rcVisibleDesktop.left = (*env)->GetIntField(env, lpObject, SIPINFOFc.rcVisibleDesktop_left);
+	lpStruct->rcVisibleDesktop.top = (*env)->GetIntField(env, lpObject, SIPINFOFc.rcVisibleDesktop_top);
+	lpStruct->rcVisibleDesktop.right = (*env)->GetIntField(env, lpObject, SIPINFOFc.rcVisibleDesktop_right);
+	lpStruct->rcVisibleDesktop.bottom = (*env)->GetIntField(env, lpObject, SIPINFOFc.rcVisibleDesktop_bottom);
+	lpStruct->rcSipRect.left = (*env)->GetIntField(env, lpObject, SIPINFOFc.rcSipRect_left);
+	lpStruct->rcSipRect.top = (*env)->GetIntField(env, lpObject, SIPINFOFc.rcSipRect_top);
+	lpStruct->rcSipRect.right = (*env)->GetIntField(env, lpObject, SIPINFOFc.rcSipRect_right);
+	lpStruct->rcSipRect.bottom = (*env)->GetIntField(env, lpObject, SIPINFOFc.rcSipRect_bottom);
+	lpStruct->dwImDataSize = (*env)->GetIntField(env, lpObject, SIPINFOFc.dwImDataSize);
+	lpStruct->pvImData = (void *)(*env)->GetIntField(env, lpObject, SIPINFOFc.pvImData);
+	return lpStruct;
+}
+
+void setSIPINFOFields(JNIEnv *env, jobject lpObject, SIPINFO *lpStruct)
+{
+	if (!SIPINFOFc.cached) cacheSIPINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, SIPINFOFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, SIPINFOFc.fdwFlags, (jint)lpStruct->fdwFlags);
+	(*env)->SetIntField(env, lpObject, SIPINFOFc.rcVisibleDesktop_left, (jint)lpStruct->rcVisibleDesktop.left);
+	(*env)->SetIntField(env, lpObject, SIPINFOFc.rcVisibleDesktop_top, (jint)lpStruct->rcVisibleDesktop.top);
+	(*env)->SetIntField(env, lpObject, SIPINFOFc.rcVisibleDesktop_right, (jint)lpStruct->rcVisibleDesktop.right);
+	(*env)->SetIntField(env, lpObject, SIPINFOFc.rcVisibleDesktop_bottom, (jint)lpStruct->rcVisibleDesktop.bottom);
+	(*env)->SetIntField(env, lpObject, SIPINFOFc.rcSipRect_left, (jint)lpStruct->rcSipRect.left);
+	(*env)->SetIntField(env, lpObject, SIPINFOFc.rcSipRect_top, (jint)lpStruct->rcSipRect.top);
+	(*env)->SetIntField(env, lpObject, SIPINFOFc.rcSipRect_right, (jint)lpStruct->rcSipRect.right);
+	(*env)->SetIntField(env, lpObject, SIPINFOFc.rcSipRect_bottom, (jint)lpStruct->rcSipRect.bottom);
+	(*env)->SetIntField(env, lpObject, SIPINFOFc.dwImDataSize, (jint)lpStruct->dwImDataSize);
+	(*env)->SetIntField(env, lpObject, SIPINFOFc.pvImData, (jint)lpStruct->pvImData);
+}
+#endif
+
+#ifndef NO_SIZE
+typedef struct SIZE_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cx, cy;
+} SIZE_FID_CACHE;
+
+SIZE_FID_CACHE SIZEFc;
+
+void cacheSIZEFields(JNIEnv *env, jobject lpObject)
+{
+	if (SIZEFc.cached) return;
+	SIZEFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	SIZEFc.cx = (*env)->GetFieldID(env, SIZEFc.clazz, "cx", "I");
+	SIZEFc.cy = (*env)->GetFieldID(env, SIZEFc.clazz, "cy", "I");
+	SIZEFc.cached = 1;
+}
+
+SIZE *getSIZEFields(JNIEnv *env, jobject lpObject, SIZE *lpStruct)
+{
+	if (!SIZEFc.cached) cacheSIZEFields(env, lpObject);
+	lpStruct->cx = (*env)->GetIntField(env, lpObject, SIZEFc.cx);
+	lpStruct->cy = (*env)->GetIntField(env, lpObject, SIZEFc.cy);
+	return lpStruct;
+}
+
+void setSIZEFields(JNIEnv *env, jobject lpObject, SIZE *lpStruct)
+{
+	if (!SIZEFc.cached) cacheSIZEFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, SIZEFc.cx, (jint)lpStruct->cx);
+	(*env)->SetIntField(env, lpObject, SIZEFc.cy, (jint)lpStruct->cy);
+}
+#endif
+
+#ifndef NO_TBBUTTON
+typedef struct TBBUTTON_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID iBitmap, idCommand, fsState, fsStyle, dwData, iString;
+} TBBUTTON_FID_CACHE;
+
+TBBUTTON_FID_CACHE TBBUTTONFc;
+
+void cacheTBBUTTONFields(JNIEnv *env, jobject lpObject)
+{
+	if (TBBUTTONFc.cached) return;
+	TBBUTTONFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	TBBUTTONFc.iBitmap = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "iBitmap", "I");
+	TBBUTTONFc.idCommand = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "idCommand", "I");
+	TBBUTTONFc.fsState = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "fsState", "B");
+	TBBUTTONFc.fsStyle = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "fsStyle", "B");
+	TBBUTTONFc.dwData = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "dwData", "I");
+	TBBUTTONFc.iString = (*env)->GetFieldID(env, TBBUTTONFc.clazz, "iString", "I");
+	TBBUTTONFc.cached = 1;
+}
+
+TBBUTTON *getTBBUTTONFields(JNIEnv *env, jobject lpObject, TBBUTTON *lpStruct)
+{
+	if (!TBBUTTONFc.cached) cacheTBBUTTONFields(env, lpObject);
+	lpStruct->iBitmap = (*env)->GetIntField(env, lpObject, TBBUTTONFc.iBitmap);
+	lpStruct->idCommand = (*env)->GetIntField(env, lpObject, TBBUTTONFc.idCommand);
+	lpStruct->fsState = (*env)->GetByteField(env, lpObject, TBBUTTONFc.fsState);
+	lpStruct->fsStyle = (*env)->GetByteField(env, lpObject, TBBUTTONFc.fsStyle);
+	lpStruct->dwData = (*env)->GetIntField(env, lpObject, TBBUTTONFc.dwData);
+	lpStruct->iString = (*env)->GetIntField(env, lpObject, TBBUTTONFc.iString);
+	return lpStruct;
+}
+
+void setTBBUTTONFields(JNIEnv *env, jobject lpObject, TBBUTTON *lpStruct)
+{
+	if (!TBBUTTONFc.cached) cacheTBBUTTONFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, TBBUTTONFc.iBitmap, (jint)lpStruct->iBitmap);
+	(*env)->SetIntField(env, lpObject, TBBUTTONFc.idCommand, (jint)lpStruct->idCommand);
+	(*env)->SetByteField(env, lpObject, TBBUTTONFc.fsState, (jbyte)lpStruct->fsState);
+	(*env)->SetByteField(env, lpObject, TBBUTTONFc.fsStyle, (jbyte)lpStruct->fsStyle);
+	(*env)->SetIntField(env, lpObject, TBBUTTONFc.dwData, (jint)lpStruct->dwData);
+	(*env)->SetIntField(env, lpObject, TBBUTTONFc.iString, (jint)lpStruct->iString);
+}
+#endif
+
+#ifndef NO_TBBUTTONINFO
+typedef struct TBBUTTONINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, dwMask, idCommand, iImage, fsState, fsStyle, cx, lParam, pszText, cchText;
+} TBBUTTONINFO_FID_CACHE;
+
+TBBUTTONINFO_FID_CACHE TBBUTTONINFOFc;
+
+void cacheTBBUTTONINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (TBBUTTONINFOFc.cached) return;
+	TBBUTTONINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	TBBUTTONINFOFc.cbSize = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "cbSize", "I");
+	TBBUTTONINFOFc.dwMask = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "dwMask", "I");
+	TBBUTTONINFOFc.idCommand = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "idCommand", "I");
+	TBBUTTONINFOFc.iImage = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "iImage", "I");
+	TBBUTTONINFOFc.fsState = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "fsState", "B");
+	TBBUTTONINFOFc.fsStyle = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "fsStyle", "B");
+	TBBUTTONINFOFc.cx = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "cx", "S");
+	TBBUTTONINFOFc.lParam = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "lParam", "I");
+	TBBUTTONINFOFc.pszText = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "pszText", "I");
+	TBBUTTONINFOFc.cchText = (*env)->GetFieldID(env, TBBUTTONINFOFc.clazz, "cchText", "I");
+	TBBUTTONINFOFc.cached = 1;
+}
+
+TBBUTTONINFO *getTBBUTTONINFOFields(JNIEnv *env, jobject lpObject, TBBUTTONINFO *lpStruct)
+{
+	if (!TBBUTTONINFOFc.cached) cacheTBBUTTONINFOFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.cbSize);
+	lpStruct->dwMask = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.dwMask);
+	lpStruct->idCommand = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.idCommand);
+	lpStruct->iImage = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.iImage);
+	lpStruct->fsState = (*env)->GetByteField(env, lpObject, TBBUTTONINFOFc.fsState);
+	lpStruct->fsStyle = (*env)->GetByteField(env, lpObject, TBBUTTONINFOFc.fsStyle);
+	lpStruct->cx = (*env)->GetShortField(env, lpObject, TBBUTTONINFOFc.cx);
+	lpStruct->lParam = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.lParam);
+	lpStruct->pszText = (LPTSTR)(*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.pszText);
+	lpStruct->cchText = (*env)->GetIntField(env, lpObject, TBBUTTONINFOFc.cchText);
+	return lpStruct;
+}
+
+void setTBBUTTONINFOFields(JNIEnv *env, jobject lpObject, TBBUTTONINFO *lpStruct)
+{
+	if (!TBBUTTONINFOFc.cached) cacheTBBUTTONINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.dwMask, (jint)lpStruct->dwMask);
+	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.idCommand, (jint)lpStruct->idCommand);
+	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.iImage, (jint)lpStruct->iImage);
+	(*env)->SetByteField(env, lpObject, TBBUTTONINFOFc.fsState, (jbyte)lpStruct->fsState);
+	(*env)->SetByteField(env, lpObject, TBBUTTONINFOFc.fsStyle, (jbyte)lpStruct->fsStyle);
+	(*env)->SetShortField(env, lpObject, TBBUTTONINFOFc.cx, (jshort)lpStruct->cx);
+	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.lParam, (jint)lpStruct->lParam);
+	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.pszText, (jint)lpStruct->pszText);
+	(*env)->SetIntField(env, lpObject, TBBUTTONINFOFc.cchText, (jint)lpStruct->cchText);
+}
+#endif
+
+#ifndef NO_TCITEM
+typedef struct TCITEM_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID mask, dwState, dwStateMask, pszText, cchTextMax, iImage, lParam;
+} TCITEM_FID_CACHE;
+
+TCITEM_FID_CACHE TCITEMFc;
+
+void cacheTCITEMFields(JNIEnv *env, jobject lpObject)
+{
+	if (TCITEMFc.cached) return;
+	TCITEMFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	TCITEMFc.mask = (*env)->GetFieldID(env, TCITEMFc.clazz, "mask", "I");
+	TCITEMFc.dwState = (*env)->GetFieldID(env, TCITEMFc.clazz, "dwState", "I");
+	TCITEMFc.dwStateMask = (*env)->GetFieldID(env, TCITEMFc.clazz, "dwStateMask", "I");
+	TCITEMFc.pszText = (*env)->GetFieldID(env, TCITEMFc.clazz, "pszText", "I");
+	TCITEMFc.cchTextMax = (*env)->GetFieldID(env, TCITEMFc.clazz, "cchTextMax", "I");
+	TCITEMFc.iImage = (*env)->GetFieldID(env, TCITEMFc.clazz, "iImage", "I");
+	TCITEMFc.lParam = (*env)->GetFieldID(env, TCITEMFc.clazz, "lParam", "I");
+	TCITEMFc.cached = 1;
+}
+
+TCITEM *getTCITEMFields(JNIEnv *env, jobject lpObject, TCITEM *lpStruct)
+{
+	if (!TCITEMFc.cached) cacheTCITEMFields(env, lpObject);
+	lpStruct->mask = (*env)->GetIntField(env, lpObject, TCITEMFc.mask);
+	lpStruct->dwState = (*env)->GetIntField(env, lpObject, TCITEMFc.dwState);
+	lpStruct->dwStateMask = (*env)->GetIntField(env, lpObject, TCITEMFc.dwStateMask);
+	lpStruct->pszText = (LPTSTR)(*env)->GetIntField(env, lpObject, TCITEMFc.pszText);
+	lpStruct->cchTextMax = (*env)->GetIntField(env, lpObject, TCITEMFc.cchTextMax);
+	lpStruct->iImage = (*env)->GetIntField(env, lpObject, TCITEMFc.iImage);
+	lpStruct->lParam = (*env)->GetIntField(env, lpObject, TCITEMFc.lParam);
+	return lpStruct;
+}
+
+void setTCITEMFields(JNIEnv *env, jobject lpObject, TCITEM *lpStruct)
+{
+	if (!TCITEMFc.cached) cacheTCITEMFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, TCITEMFc.mask, (jint)lpStruct->mask);
+	(*env)->SetIntField(env, lpObject, TCITEMFc.dwState, (jint)lpStruct->dwState);
+	(*env)->SetIntField(env, lpObject, TCITEMFc.dwStateMask, (jint)lpStruct->dwStateMask);
+	(*env)->SetIntField(env, lpObject, TCITEMFc.pszText, (jint)lpStruct->pszText);
+	(*env)->SetIntField(env, lpObject, TCITEMFc.cchTextMax, (jint)lpStruct->cchTextMax);
+	(*env)->SetIntField(env, lpObject, TCITEMFc.iImage, (jint)lpStruct->iImage);
+	(*env)->SetIntField(env, lpObject, TCITEMFc.lParam, (jint)lpStruct->lParam);
+}
+#endif
+
+#ifndef NO_TEXTMETRIC
+typedef struct TEXTMETRIC_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID tmHeight, tmAscent, tmDescent, tmInternalLeading, tmExternalLeading, tmAveCharWidth, tmMaxCharWidth, tmWeight, tmOverhang, tmDigitizedAspectX, tmDigitizedAspectY, tmItalic, tmUnderlined, tmStruckOut, tmPitchAndFamily, tmCharSet;
+} TEXTMETRIC_FID_CACHE;
+
+TEXTMETRIC_FID_CACHE TEXTMETRICFc;
+
+void cacheTEXTMETRICFields(JNIEnv *env, jobject lpObject)
+{
+	if (TEXTMETRICFc.cached) return;
+	TEXTMETRICFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	TEXTMETRICFc.tmHeight = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmHeight", "I");
+	TEXTMETRICFc.tmAscent = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmAscent", "I");
+	TEXTMETRICFc.tmDescent = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmDescent", "I");
+	TEXTMETRICFc.tmInternalLeading = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmInternalLeading", "I");
+	TEXTMETRICFc.tmExternalLeading = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmExternalLeading", "I");
+	TEXTMETRICFc.tmAveCharWidth = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmAveCharWidth", "I");
+	TEXTMETRICFc.tmMaxCharWidth = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmMaxCharWidth", "I");
+	TEXTMETRICFc.tmWeight = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmWeight", "I");
+	TEXTMETRICFc.tmOverhang = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmOverhang", "I");
+	TEXTMETRICFc.tmDigitizedAspectX = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmDigitizedAspectX", "I");
+	TEXTMETRICFc.tmDigitizedAspectY = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmDigitizedAspectY", "I");
+	TEXTMETRICFc.tmItalic = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmItalic", "B");
+	TEXTMETRICFc.tmUnderlined = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmUnderlined", "B");
+	TEXTMETRICFc.tmStruckOut = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmStruckOut", "B");
+	TEXTMETRICFc.tmPitchAndFamily = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmPitchAndFamily", "B");
+	TEXTMETRICFc.tmCharSet = (*env)->GetFieldID(env, TEXTMETRICFc.clazz, "tmCharSet", "B");
+	TEXTMETRICFc.cached = 1;
+}
+
+TEXTMETRIC *getTEXTMETRICFields(JNIEnv *env, jobject lpObject, TEXTMETRIC *lpStruct)
+{
+	if (!TEXTMETRICFc.cached) cacheTEXTMETRICFields(env, lpObject);
+	lpStruct->tmHeight = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmHeight);
+	lpStruct->tmAscent = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmAscent);
+	lpStruct->tmDescent = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDescent);
+	lpStruct->tmInternalLeading = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmInternalLeading);
+	lpStruct->tmExternalLeading = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmExternalLeading);
+	lpStruct->tmAveCharWidth = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmAveCharWidth);
+	lpStruct->tmMaxCharWidth = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmMaxCharWidth);
+	lpStruct->tmWeight = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmWeight);
+	lpStruct->tmOverhang = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmOverhang);
+	lpStruct->tmDigitizedAspectX = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectX);
+	lpStruct->tmDigitizedAspectY = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectY);
+	lpStruct->tmItalic = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmItalic);
+	lpStruct->tmUnderlined = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmUnderlined);
+	lpStruct->tmStruckOut = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmStruckOut);
+	lpStruct->tmPitchAndFamily = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmPitchAndFamily);
+	lpStruct->tmCharSet = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmCharSet);
+	return lpStruct;
+}
+
+void setTEXTMETRICFields(JNIEnv *env, jobject lpObject, TEXTMETRIC *lpStruct)
+{
+	if (!TEXTMETRICFc.cached) cacheTEXTMETRICFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmHeight, (jint)lpStruct->tmHeight);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmAscent, (jint)lpStruct->tmAscent);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDescent, (jint)lpStruct->tmDescent);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmInternalLeading, (jint)lpStruct->tmInternalLeading);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmExternalLeading, (jint)lpStruct->tmExternalLeading);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmAveCharWidth, (jint)lpStruct->tmAveCharWidth);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmMaxCharWidth, (jint)lpStruct->tmMaxCharWidth);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmWeight, (jint)lpStruct->tmWeight);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmOverhang, (jint)lpStruct->tmOverhang);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectX, (jint)lpStruct->tmDigitizedAspectX);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectY, (jint)lpStruct->tmDigitizedAspectY);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmItalic, (jbyte)lpStruct->tmItalic);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmUnderlined, (jbyte)lpStruct->tmUnderlined);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmStruckOut, (jbyte)lpStruct->tmStruckOut);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmPitchAndFamily, (jbyte)lpStruct->tmPitchAndFamily);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmCharSet, (jbyte)lpStruct->tmCharSet);
+}
+#endif
+
+#ifndef NO_TEXTMETRICA
+typedef struct TEXTMETRICA_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID tmFirstChar, tmLastChar, tmDefaultChar, tmBreakChar;
+} TEXTMETRICA_FID_CACHE;
+
+TEXTMETRICA_FID_CACHE TEXTMETRICAFc;
+
+void cacheTEXTMETRICAFields(JNIEnv *env, jobject lpObject)
+{
+	if (TEXTMETRICAFc.cached) return;
+	cacheTEXTMETRICFields(env, lpObject);
+	TEXTMETRICAFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	TEXTMETRICAFc.tmFirstChar = (*env)->GetFieldID(env, TEXTMETRICAFc.clazz, "tmFirstChar", "B");
+	TEXTMETRICAFc.tmLastChar = (*env)->GetFieldID(env, TEXTMETRICAFc.clazz, "tmLastChar", "B");
+	TEXTMETRICAFc.tmDefaultChar = (*env)->GetFieldID(env, TEXTMETRICAFc.clazz, "tmDefaultChar", "B");
+	TEXTMETRICAFc.tmBreakChar = (*env)->GetFieldID(env, TEXTMETRICAFc.clazz, "tmBreakChar", "B");
+	TEXTMETRICAFc.cached = 1;
+}
+
+TEXTMETRICA *getTEXTMETRICAFields(JNIEnv *env, jobject lpObject, TEXTMETRICA *lpStruct)
+{
+	if (!TEXTMETRICAFc.cached) cacheTEXTMETRICAFields(env, lpObject);
+	lpStruct->tmHeight = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmHeight);
+	lpStruct->tmAscent = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmAscent);
+	lpStruct->tmDescent = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDescent);
+	lpStruct->tmInternalLeading = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmInternalLeading);
+	lpStruct->tmExternalLeading = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmExternalLeading);
+	lpStruct->tmAveCharWidth = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmAveCharWidth);
+	lpStruct->tmMaxCharWidth = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmMaxCharWidth);
+	lpStruct->tmWeight = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmWeight);
+	lpStruct->tmOverhang = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmOverhang);
+	lpStruct->tmDigitizedAspectX = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectX);
+	lpStruct->tmDigitizedAspectY = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectY);
+	lpStruct->tmItalic = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmItalic);
+	lpStruct->tmUnderlined = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmUnderlined);
+	lpStruct->tmStruckOut = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmStruckOut);
+	lpStruct->tmPitchAndFamily = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmPitchAndFamily);
+	lpStruct->tmCharSet = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmCharSet);
+	lpStruct->tmFirstChar = (*env)->GetByteField(env, lpObject, TEXTMETRICAFc.tmFirstChar);
+	lpStruct->tmLastChar = (*env)->GetByteField(env, lpObject, TEXTMETRICAFc.tmLastChar);
+	lpStruct->tmDefaultChar = (*env)->GetByteField(env, lpObject, TEXTMETRICAFc.tmDefaultChar);
+	lpStruct->tmBreakChar = (*env)->GetByteField(env, lpObject, TEXTMETRICAFc.tmBreakChar);
+	return lpStruct;
+}
+
+void setTEXTMETRICAFields(JNIEnv *env, jobject lpObject, TEXTMETRICA *lpStruct)
+{
+	if (!TEXTMETRICAFc.cached) cacheTEXTMETRICAFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmHeight, (jint)lpStruct->tmHeight);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmAscent, (jint)lpStruct->tmAscent);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDescent, (jint)lpStruct->tmDescent);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmInternalLeading, (jint)lpStruct->tmInternalLeading);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmExternalLeading, (jint)lpStruct->tmExternalLeading);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmAveCharWidth, (jint)lpStruct->tmAveCharWidth);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmMaxCharWidth, (jint)lpStruct->tmMaxCharWidth);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmWeight, (jint)lpStruct->tmWeight);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmOverhang, (jint)lpStruct->tmOverhang);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectX, (jint)lpStruct->tmDigitizedAspectX);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectY, (jint)lpStruct->tmDigitizedAspectY);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmItalic, (jbyte)lpStruct->tmItalic);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmUnderlined, (jbyte)lpStruct->tmUnderlined);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmStruckOut, (jbyte)lpStruct->tmStruckOut);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmPitchAndFamily, (jbyte)lpStruct->tmPitchAndFamily);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmCharSet, (jbyte)lpStruct->tmCharSet);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICAFc.tmFirstChar, (jbyte)lpStruct->tmFirstChar);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICAFc.tmLastChar, (jbyte)lpStruct->tmLastChar);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICAFc.tmDefaultChar, (jbyte)lpStruct->tmDefaultChar);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICAFc.tmBreakChar, (jbyte)lpStruct->tmBreakChar);
+}
+#endif
+
+#ifndef NO_TEXTMETRICW
+typedef struct TEXTMETRICW_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID tmFirstChar, tmLastChar, tmDefaultChar, tmBreakChar;
+} TEXTMETRICW_FID_CACHE;
+
+TEXTMETRICW_FID_CACHE TEXTMETRICWFc;
+
+void cacheTEXTMETRICWFields(JNIEnv *env, jobject lpObject)
+{
+	if (TEXTMETRICWFc.cached) return;
+	cacheTEXTMETRICFields(env, lpObject);
+	TEXTMETRICWFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	TEXTMETRICWFc.tmFirstChar = (*env)->GetFieldID(env, TEXTMETRICWFc.clazz, "tmFirstChar", "C");
+	TEXTMETRICWFc.tmLastChar = (*env)->GetFieldID(env, TEXTMETRICWFc.clazz, "tmLastChar", "C");
+	TEXTMETRICWFc.tmDefaultChar = (*env)->GetFieldID(env, TEXTMETRICWFc.clazz, "tmDefaultChar", "C");
+	TEXTMETRICWFc.tmBreakChar = (*env)->GetFieldID(env, TEXTMETRICWFc.clazz, "tmBreakChar", "C");
+	TEXTMETRICWFc.cached = 1;
+}
+
+TEXTMETRICW *getTEXTMETRICWFields(JNIEnv *env, jobject lpObject, TEXTMETRICW *lpStruct)
+{
+	if (!TEXTMETRICWFc.cached) cacheTEXTMETRICWFields(env, lpObject);
+	lpStruct->tmHeight = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmHeight);
+	lpStruct->tmAscent = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmAscent);
+	lpStruct->tmDescent = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDescent);
+	lpStruct->tmInternalLeading = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmInternalLeading);
+	lpStruct->tmExternalLeading = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmExternalLeading);
+	lpStruct->tmAveCharWidth = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmAveCharWidth);
+	lpStruct->tmMaxCharWidth = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmMaxCharWidth);
+	lpStruct->tmWeight = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmWeight);
+	lpStruct->tmOverhang = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmOverhang);
+	lpStruct->tmDigitizedAspectX = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectX);
+	lpStruct->tmDigitizedAspectY = (*env)->GetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectY);
+	lpStruct->tmItalic = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmItalic);
+	lpStruct->tmUnderlined = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmUnderlined);
+	lpStruct->tmStruckOut = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmStruckOut);
+	lpStruct->tmPitchAndFamily = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmPitchAndFamily);
+	lpStruct->tmCharSet = (*env)->GetByteField(env, lpObject, TEXTMETRICFc.tmCharSet);
+	lpStruct->tmFirstChar = (*env)->GetCharField(env, lpObject, TEXTMETRICWFc.tmFirstChar);
+	lpStruct->tmLastChar = (*env)->GetCharField(env, lpObject, TEXTMETRICWFc.tmLastChar);
+	lpStruct->tmDefaultChar = (*env)->GetCharField(env, lpObject, TEXTMETRICWFc.tmDefaultChar);
+	lpStruct->tmBreakChar = (*env)->GetCharField(env, lpObject, TEXTMETRICWFc.tmBreakChar);
+	return lpStruct;
+}
+
+void setTEXTMETRICWFields(JNIEnv *env, jobject lpObject, TEXTMETRICW *lpStruct)
+{
+	if (!TEXTMETRICWFc.cached) cacheTEXTMETRICWFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmHeight, (jint)lpStruct->tmHeight);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmAscent, (jint)lpStruct->tmAscent);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDescent, (jint)lpStruct->tmDescent);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmInternalLeading, (jint)lpStruct->tmInternalLeading);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmExternalLeading, (jint)lpStruct->tmExternalLeading);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmAveCharWidth, (jint)lpStruct->tmAveCharWidth);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmMaxCharWidth, (jint)lpStruct->tmMaxCharWidth);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmWeight, (jint)lpStruct->tmWeight);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmOverhang, (jint)lpStruct->tmOverhang);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectX, (jint)lpStruct->tmDigitizedAspectX);
+	(*env)->SetIntField(env, lpObject, TEXTMETRICFc.tmDigitizedAspectY, (jint)lpStruct->tmDigitizedAspectY);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmItalic, (jbyte)lpStruct->tmItalic);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmUnderlined, (jbyte)lpStruct->tmUnderlined);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmStruckOut, (jbyte)lpStruct->tmStruckOut);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmPitchAndFamily, (jbyte)lpStruct->tmPitchAndFamily);
+	(*env)->SetByteField(env, lpObject, TEXTMETRICFc.tmCharSet, (jbyte)lpStruct->tmCharSet);
+	(*env)->SetCharField(env, lpObject, TEXTMETRICWFc.tmFirstChar, (jchar)lpStruct->tmFirstChar);
+	(*env)->SetCharField(env, lpObject, TEXTMETRICWFc.tmLastChar, (jchar)lpStruct->tmLastChar);
+	(*env)->SetCharField(env, lpObject, TEXTMETRICWFc.tmDefaultChar, (jchar)lpStruct->tmDefaultChar);
+	(*env)->SetCharField(env, lpObject, TEXTMETRICWFc.tmBreakChar, (jchar)lpStruct->tmBreakChar);
+}
+#endif
+
+#ifndef NO_TOOLINFO
+typedef struct TOOLINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, uFlags, hwnd, uId, left, top, right, bottom, hinst, lpszText, lParam;
+} TOOLINFO_FID_CACHE;
+
+TOOLINFO_FID_CACHE TOOLINFOFc;
+
+void cacheTOOLINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (TOOLINFOFc.cached) return;
+	TOOLINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	TOOLINFOFc.cbSize = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "cbSize", "I");
+	TOOLINFOFc.uFlags = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "uFlags", "I");
+	TOOLINFOFc.hwnd = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "hwnd", "I");
+	TOOLINFOFc.uId = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "uId", "I");
+	TOOLINFOFc.left = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "left", "I");
+	TOOLINFOFc.top = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "top", "I");
+	TOOLINFOFc.right = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "right", "I");
+	TOOLINFOFc.bottom = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "bottom", "I");
+	TOOLINFOFc.hinst = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "hinst", "I");
+	TOOLINFOFc.lpszText = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "lpszText", "I");
+	TOOLINFOFc.lParam = (*env)->GetFieldID(env, TOOLINFOFc.clazz, "lParam", "I");
+	TOOLINFOFc.cached = 1;
+}
+
+TOOLINFO *getTOOLINFOFields(JNIEnv *env, jobject lpObject, TOOLINFO *lpStruct)
+{
+	if (!TOOLINFOFc.cached) cacheTOOLINFOFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, TOOLINFOFc.cbSize);
+	lpStruct->uFlags = (*env)->GetIntField(env, lpObject, TOOLINFOFc.uFlags);
+	lpStruct->hwnd = (HWND)(*env)->GetIntField(env, lpObject, TOOLINFOFc.hwnd);
+	lpStruct->uId = (*env)->GetIntField(env, lpObject, TOOLINFOFc.uId);
+	lpStruct->rect.left = (*env)->GetIntField(env, lpObject, TOOLINFOFc.left);
+	lpStruct->rect.top = (*env)->GetIntField(env, lpObject, TOOLINFOFc.top);
+	lpStruct->rect.right = (*env)->GetIntField(env, lpObject, TOOLINFOFc.right);
+	lpStruct->rect.bottom = (*env)->GetIntField(env, lpObject, TOOLINFOFc.bottom);
+	lpStruct->hinst = (HINSTANCE)(*env)->GetIntField(env, lpObject, TOOLINFOFc.hinst);
+	lpStruct->lpszText = (LPTSTR)(*env)->GetIntField(env, lpObject, TOOLINFOFc.lpszText);
+	lpStruct->lParam = (*env)->GetIntField(env, lpObject, TOOLINFOFc.lParam);
+	return lpStruct;
+}
+
+void setTOOLINFOFields(JNIEnv *env, jobject lpObject, TOOLINFO *lpStruct)
+{
+	if (!TOOLINFOFc.cached) cacheTOOLINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, TOOLINFOFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, TOOLINFOFc.uFlags, (jint)lpStruct->uFlags);
+	(*env)->SetIntField(env, lpObject, TOOLINFOFc.hwnd, (jint)lpStruct->hwnd);
+	(*env)->SetIntField(env, lpObject, TOOLINFOFc.uId, (jint)lpStruct->uId);
+	(*env)->SetIntField(env, lpObject, TOOLINFOFc.left, (jint)lpStruct->rect.left);
+	(*env)->SetIntField(env, lpObject, TOOLINFOFc.top, (jint)lpStruct->rect.top);
+	(*env)->SetIntField(env, lpObject, TOOLINFOFc.right, (jint)lpStruct->rect.right);
+	(*env)->SetIntField(env, lpObject, TOOLINFOFc.bottom, (jint)lpStruct->rect.bottom);
+	(*env)->SetIntField(env, lpObject, TOOLINFOFc.hinst, (jint)lpStruct->hinst);
+	(*env)->SetIntField(env, lpObject, TOOLINFOFc.lpszText, (jint)lpStruct->lpszText);
+	(*env)->SetIntField(env, lpObject, TOOLINFOFc.lParam, (jint)lpStruct->lParam);
+}
+#endif
+
+#ifndef NO_TRACKMOUSEEVENT
+typedef struct TRACKMOUSEEVENT_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, dwFlags, hwndTrack, dwHoverTime;
+} TRACKMOUSEEVENT_FID_CACHE;
+
+TRACKMOUSEEVENT_FID_CACHE TRACKMOUSEEVENTFc;
+
+void cacheTRACKMOUSEEVENTFields(JNIEnv *env, jobject lpObject)
+{
+	if (TRACKMOUSEEVENTFc.cached) return;
+	TRACKMOUSEEVENTFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	TRACKMOUSEEVENTFc.cbSize = (*env)->GetFieldID(env, TRACKMOUSEEVENTFc.clazz, "cbSize", "I");
+	TRACKMOUSEEVENTFc.dwFlags = (*env)->GetFieldID(env, TRACKMOUSEEVENTFc.clazz, "dwFlags", "I");
+	TRACKMOUSEEVENTFc.hwndTrack = (*env)->GetFieldID(env, TRACKMOUSEEVENTFc.clazz, "hwndTrack", "I");
+	TRACKMOUSEEVENTFc.dwHoverTime = (*env)->GetFieldID(env, TRACKMOUSEEVENTFc.clazz, "dwHoverTime", "I");
+	TRACKMOUSEEVENTFc.cached = 1;
+}
+
+TRACKMOUSEEVENT *getTRACKMOUSEEVENTFields(JNIEnv *env, jobject lpObject, TRACKMOUSEEVENT *lpStruct)
+{
+	if (!TRACKMOUSEEVENTFc.cached) cacheTRACKMOUSEEVENTFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, TRACKMOUSEEVENTFc.cbSize);
+	lpStruct->dwFlags = (*env)->GetIntField(env, lpObject, TRACKMOUSEEVENTFc.dwFlags);
+	lpStruct->hwndTrack = (HWND)(*env)->GetIntField(env, lpObject, TRACKMOUSEEVENTFc.hwndTrack);
+	lpStruct->dwHoverTime = (*env)->GetIntField(env, lpObject, TRACKMOUSEEVENTFc.dwHoverTime);
+	return lpStruct;
+}
+
+void setTRACKMOUSEEVENTFields(JNIEnv *env, jobject lpObject, TRACKMOUSEEVENT *lpStruct)
+{
+	if (!TRACKMOUSEEVENTFc.cached) cacheTRACKMOUSEEVENTFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, TRACKMOUSEEVENTFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, TRACKMOUSEEVENTFc.dwFlags, (jint)lpStruct->dwFlags);
+	(*env)->SetIntField(env, lpObject, TRACKMOUSEEVENTFc.hwndTrack, (jint)lpStruct->hwndTrack);
+	(*env)->SetIntField(env, lpObject, TRACKMOUSEEVENTFc.dwHoverTime, (jint)lpStruct->dwHoverTime);
+}
+#endif
+
+#ifndef NO_TRIVERTEX
+typedef struct TRIVERTEX_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID x, y, Red, Green, Blue, Alpha;
+} TRIVERTEX_FID_CACHE;
+
+TRIVERTEX_FID_CACHE TRIVERTEXFc;
+
+void cacheTRIVERTEXFields(JNIEnv *env, jobject lpObject)
+{
+	if (TRIVERTEXFc.cached) return;
+	TRIVERTEXFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	TRIVERTEXFc.x = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "x", "I");
+	TRIVERTEXFc.y = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "y", "I");
+	TRIVERTEXFc.Red = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "Red", "S");
+	TRIVERTEXFc.Green = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "Green", "S");
+	TRIVERTEXFc.Blue = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "Blue", "S");
+	TRIVERTEXFc.Alpha = (*env)->GetFieldID(env, TRIVERTEXFc.clazz, "Alpha", "S");
+	TRIVERTEXFc.cached = 1;
+}
+
+TRIVERTEX *getTRIVERTEXFields(JNIEnv *env, jobject lpObject, TRIVERTEX *lpStruct)
+{
+	if (!TRIVERTEXFc.cached) cacheTRIVERTEXFields(env, lpObject);
+	lpStruct->x = (*env)->GetIntField(env, lpObject, TRIVERTEXFc.x);
+	lpStruct->y = (*env)->GetIntField(env, lpObject, TRIVERTEXFc.y);
+	lpStruct->Red = (*env)->GetShortField(env, lpObject, TRIVERTEXFc.Red);
+	lpStruct->Green = (*env)->GetShortField(env, lpObject, TRIVERTEXFc.Green);
+	lpStruct->Blue = (*env)->GetShortField(env, lpObject, TRIVERTEXFc.Blue);
+	lpStruct->Alpha = (*env)->GetShortField(env, lpObject, TRIVERTEXFc.Alpha);
+	return lpStruct;
+}
+
+void setTRIVERTEXFields(JNIEnv *env, jobject lpObject, TRIVERTEX *lpStruct)
+{
+	if (!TRIVERTEXFc.cached) cacheTRIVERTEXFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, TRIVERTEXFc.x, (jint)lpStruct->x);
+	(*env)->SetIntField(env, lpObject, TRIVERTEXFc.y, (jint)lpStruct->y);
+	(*env)->SetShortField(env, lpObject, TRIVERTEXFc.Red, (jshort)lpStruct->Red);
+	(*env)->SetShortField(env, lpObject, TRIVERTEXFc.Green, (jshort)lpStruct->Green);
+	(*env)->SetShortField(env, lpObject, TRIVERTEXFc.Blue, (jshort)lpStruct->Blue);
+	(*env)->SetShortField(env, lpObject, TRIVERTEXFc.Alpha, (jshort)lpStruct->Alpha);
+}
+#endif
+
+#ifndef NO_TVHITTESTINFO
+typedef struct TVHITTESTINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID x, y, flags, hItem;
+} TVHITTESTINFO_FID_CACHE;
+
+TVHITTESTINFO_FID_CACHE TVHITTESTINFOFc;
+
+void cacheTVHITTESTINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (TVHITTESTINFOFc.cached) return;
+	TVHITTESTINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	TVHITTESTINFOFc.x = (*env)->GetFieldID(env, TVHITTESTINFOFc.clazz, "x", "I");
+	TVHITTESTINFOFc.y = (*env)->GetFieldID(env, TVHITTESTINFOFc.clazz, "y", "I");
+	TVHITTESTINFOFc.flags = (*env)->GetFieldID(env, TVHITTESTINFOFc.clazz, "flags", "I");
+	TVHITTESTINFOFc.hItem = (*env)->GetFieldID(env, TVHITTESTINFOFc.clazz, "hItem", "I");
+	TVHITTESTINFOFc.cached = 1;
+}
+
+TVHITTESTINFO *getTVHITTESTINFOFields(JNIEnv *env, jobject lpObject, TVHITTESTINFO *lpStruct)
+{
+	if (!TVHITTESTINFOFc.cached) cacheTVHITTESTINFOFields(env, lpObject);
+	lpStruct->pt.x = (*env)->GetIntField(env, lpObject, TVHITTESTINFOFc.x);
+	lpStruct->pt.y = (*env)->GetIntField(env, lpObject, TVHITTESTINFOFc.y);
+	lpStruct->flags = (*env)->GetIntField(env, lpObject, TVHITTESTINFOFc.flags);
+	lpStruct->hItem = (HTREEITEM)(*env)->GetIntField(env, lpObject, TVHITTESTINFOFc.hItem);
+	return lpStruct;
+}
+
+void setTVHITTESTINFOFields(JNIEnv *env, jobject lpObject, TVHITTESTINFO *lpStruct)
+{
+	if (!TVHITTESTINFOFc.cached) cacheTVHITTESTINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, TVHITTESTINFOFc.x, (jint)lpStruct->pt.x);
+	(*env)->SetIntField(env, lpObject, TVHITTESTINFOFc.y, (jint)lpStruct->pt.y);
+	(*env)->SetIntField(env, lpObject, TVHITTESTINFOFc.flags, (jint)lpStruct->flags);
+	(*env)->SetIntField(env, lpObject, TVHITTESTINFOFc.hItem, (jint)lpStruct->hItem);
+}
+#endif
+
+#ifndef NO_TVINSERTSTRUCT
+typedef struct TVINSERTSTRUCT_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID hParent, hInsertAfter, mask, hItem, state, stateMask, pszText, cchTextMax, iImage, iSelectedImage, cChildren, lParam;
+} TVINSERTSTRUCT_FID_CACHE;
+
+TVINSERTSTRUCT_FID_CACHE TVINSERTSTRUCTFc;
+
+void cacheTVINSERTSTRUCTFields(JNIEnv *env, jobject lpObject)
+{
+	if (TVINSERTSTRUCTFc.cached) return;
+	TVINSERTSTRUCTFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	TVINSERTSTRUCTFc.hParent = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "hParent", "I");
+	TVINSERTSTRUCTFc.hInsertAfter = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "hInsertAfter", "I");
+	TVINSERTSTRUCTFc.mask = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "mask", "I");
+	TVINSERTSTRUCTFc.hItem = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "hItem", "I");
+	TVINSERTSTRUCTFc.state = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "state", "I");
+	TVINSERTSTRUCTFc.stateMask = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "stateMask", "I");
+	TVINSERTSTRUCTFc.pszText = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "pszText", "I");
+	TVINSERTSTRUCTFc.cchTextMax = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "cchTextMax", "I");
+	TVINSERTSTRUCTFc.iImage = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "iImage", "I");
+	TVINSERTSTRUCTFc.iSelectedImage = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "iSelectedImage", "I");
+	TVINSERTSTRUCTFc.cChildren = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "cChildren", "I");
+	TVINSERTSTRUCTFc.lParam = (*env)->GetFieldID(env, TVINSERTSTRUCTFc.clazz, "lParam", "I");
+	TVINSERTSTRUCTFc.cached = 1;
+}
+
+TVINSERTSTRUCT *getTVINSERTSTRUCTFields(JNIEnv *env, jobject lpObject, TVINSERTSTRUCT *lpStruct)
+{
+	if (!TVINSERTSTRUCTFc.cached) cacheTVINSERTSTRUCTFields(env, lpObject);
+	lpStruct->hParent = (HTREEITEM)(*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.hParent);
+	lpStruct->hInsertAfter = (HTREEITEM)(*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.hInsertAfter);
+	lpStruct->item.mask = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.mask);
+	lpStruct->item.hItem = (HTREEITEM)(*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.hItem);
+	lpStruct->item.state = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.state);
+	lpStruct->item.stateMask = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.stateMask);
+	lpStruct->item.pszText = (LPTSTR)(*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.pszText);
+	lpStruct->item.cchTextMax = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.cchTextMax);
+	lpStruct->item.iImage = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.iImage);
+	lpStruct->item.iSelectedImage = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.iSelectedImage);
+	lpStruct->item.cChildren = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.cChildren);
+	lpStruct->item.lParam = (*env)->GetIntField(env, lpObject, TVINSERTSTRUCTFc.lParam);
+	return lpStruct;
+}
+
+void setTVINSERTSTRUCTFields(JNIEnv *env, jobject lpObject, TVINSERTSTRUCT *lpStruct)
+{
+	if (!TVINSERTSTRUCTFc.cached) cacheTVINSERTSTRUCTFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.hParent, (jint)lpStruct->hParent);
+	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.hInsertAfter, (jint)lpStruct->hInsertAfter);
+	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.mask, (jint)lpStruct->item.mask);
+	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.hItem, (jint)lpStruct->item.hItem);
+	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.state, (jint)lpStruct->item.state);
+	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.stateMask, (jint)lpStruct->item.stateMask);
+	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.pszText, (jint)lpStruct->item.pszText);
+	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.cchTextMax, (jint)lpStruct->item.cchTextMax);
+	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.iImage, (jint)lpStruct->item.iImage);
+	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.iSelectedImage, (jint)lpStruct->item.iSelectedImage);
+	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.cChildren, (jint)lpStruct->item.cChildren);
+	(*env)->SetIntField(env, lpObject, TVINSERTSTRUCTFc.lParam, (jint)lpStruct->item.lParam);
+}
+#endif
+
+#ifndef NO_TVITEM
+typedef struct TVITEM_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID mask, hItem, state, stateMask, pszText, cchTextMax, iImage, iSelectedImage, cChildren, lParam;
+} TVITEM_FID_CACHE;
+
+TVITEM_FID_CACHE TVITEMFc;
+
+void cacheTVITEMFields(JNIEnv *env, jobject lpObject)
+{
+	if (TVITEMFc.cached) return;
+	TVITEMFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	TVITEMFc.mask = (*env)->GetFieldID(env, TVITEMFc.clazz, "mask", "I");
+	TVITEMFc.hItem = (*env)->GetFieldID(env, TVITEMFc.clazz, "hItem", "I");
+	TVITEMFc.state = (*env)->GetFieldID(env, TVITEMFc.clazz, "state", "I");
+	TVITEMFc.stateMask = (*env)->GetFieldID(env, TVITEMFc.clazz, "stateMask", "I");
+	TVITEMFc.pszText = (*env)->GetFieldID(env, TVITEMFc.clazz, "pszText", "I");
+	TVITEMFc.cchTextMax = (*env)->GetFieldID(env, TVITEMFc.clazz, "cchTextMax", "I");
+	TVITEMFc.iImage = (*env)->GetFieldID(env, TVITEMFc.clazz, "iImage", "I");
+	TVITEMFc.iSelectedImage = (*env)->GetFieldID(env, TVITEMFc.clazz, "iSelectedImage", "I");
+	TVITEMFc.cChildren = (*env)->GetFieldID(env, TVITEMFc.clazz, "cChildren", "I");
+	TVITEMFc.lParam = (*env)->GetFieldID(env, TVITEMFc.clazz, "lParam", "I");
+	TVITEMFc.cached = 1;
+}
+
+TVITEM *getTVITEMFields(JNIEnv *env, jobject lpObject, TVITEM *lpStruct)
+{
+	if (!TVITEMFc.cached) cacheTVITEMFields(env, lpObject);
+	lpStruct->mask = (*env)->GetIntField(env, lpObject, TVITEMFc.mask);
+	lpStruct->hItem = (HTREEITEM)(*env)->GetIntField(env, lpObject, TVITEMFc.hItem);
+	lpStruct->state = (*env)->GetIntField(env, lpObject, TVITEMFc.state);
+	lpStruct->stateMask = (*env)->GetIntField(env, lpObject, TVITEMFc.stateMask);
+	lpStruct->pszText = (LPTSTR)(*env)->GetIntField(env, lpObject, TVITEMFc.pszText);
+	lpStruct->cchTextMax = (*env)->GetIntField(env, lpObject, TVITEMFc.cchTextMax);
+	lpStruct->iImage = (*env)->GetIntField(env, lpObject, TVITEMFc.iImage);
+	lpStruct->iSelectedImage = (*env)->GetIntField(env, lpObject, TVITEMFc.iSelectedImage);
+	lpStruct->cChildren = (*env)->GetIntField(env, lpObject, TVITEMFc.cChildren);
+	lpStruct->lParam = (*env)->GetIntField(env, lpObject, TVITEMFc.lParam);
+	return lpStruct;
+}
+
+void setTVITEMFields(JNIEnv *env, jobject lpObject, TVITEM *lpStruct)
+{
+	if (!TVITEMFc.cached) cacheTVITEMFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, TVITEMFc.mask, (jint)lpStruct->mask);
+	(*env)->SetIntField(env, lpObject, TVITEMFc.hItem, (jint)lpStruct->hItem);
+	(*env)->SetIntField(env, lpObject, TVITEMFc.state, (jint)lpStruct->state);
+	(*env)->SetIntField(env, lpObject, TVITEMFc.stateMask, (jint)lpStruct->stateMask);
+	(*env)->SetIntField(env, lpObject, TVITEMFc.pszText, (jint)lpStruct->pszText);
+	(*env)->SetIntField(env, lpObject, TVITEMFc.cchTextMax, (jint)lpStruct->cchTextMax);
+	(*env)->SetIntField(env, lpObject, TVITEMFc.iImage, (jint)lpStruct->iImage);
+	(*env)->SetIntField(env, lpObject, TVITEMFc.iSelectedImage, (jint)lpStruct->iSelectedImage);
+	(*env)->SetIntField(env, lpObject, TVITEMFc.cChildren, (jint)lpStruct->cChildren);
+	(*env)->SetIntField(env, lpObject, TVITEMFc.lParam, (jint)lpStruct->lParam);
+}
+#endif
+
+#ifndef NO_WINDOWPLACEMENT
+typedef struct WINDOWPLACEMENT_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID length, flags, showCmd, ptMinPosition_x, ptMinPosition_y, ptMaxPosition_x, ptMaxPosition_y, left, top, right, bottom;
+} WINDOWPLACEMENT_FID_CACHE;
+
+WINDOWPLACEMENT_FID_CACHE WINDOWPLACEMENTFc;
+
+void cacheWINDOWPLACEMENTFields(JNIEnv *env, jobject lpObject)
+{
+	if (WINDOWPLACEMENTFc.cached) return;
+	WINDOWPLACEMENTFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	WINDOWPLACEMENTFc.length = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "length", "I");
+	WINDOWPLACEMENTFc.flags = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "flags", "I");
+	WINDOWPLACEMENTFc.showCmd = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "showCmd", "I");
+	WINDOWPLACEMENTFc.ptMinPosition_x = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "ptMinPosition_x", "I");
+	WINDOWPLACEMENTFc.ptMinPosition_y = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "ptMinPosition_y", "I");
+	WINDOWPLACEMENTFc.ptMaxPosition_x = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "ptMaxPosition_x", "I");
+	WINDOWPLACEMENTFc.ptMaxPosition_y = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "ptMaxPosition_y", "I");
+	WINDOWPLACEMENTFc.left = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "left", "I");
+	WINDOWPLACEMENTFc.top = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "top", "I");
+	WINDOWPLACEMENTFc.right = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "right", "I");
+	WINDOWPLACEMENTFc.bottom = (*env)->GetFieldID(env, WINDOWPLACEMENTFc.clazz, "bottom", "I");
+	WINDOWPLACEMENTFc.cached = 1;
+}
+
+WINDOWPLACEMENT *getWINDOWPLACEMENTFields(JNIEnv *env, jobject lpObject, WINDOWPLACEMENT *lpStruct)
+{
+	if (!WINDOWPLACEMENTFc.cached) cacheWINDOWPLACEMENTFields(env, lpObject);
+	lpStruct->length = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.length);
+	lpStruct->flags = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.flags);
+	lpStruct->showCmd = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.showCmd);
+	lpStruct->ptMinPosition.x = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMinPosition_x);
+	lpStruct->ptMinPosition.y = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMinPosition_y);
+	lpStruct->ptMaxPosition.x = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMaxPosition_x);
+	lpStruct->ptMaxPosition.y = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMaxPosition_y);
+	lpStruct->rcNormalPosition.left = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.left);
+	lpStruct->rcNormalPosition.top = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.top);
+	lpStruct->rcNormalPosition.right = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.right);
+	lpStruct->rcNormalPosition.bottom = (*env)->GetIntField(env, lpObject, WINDOWPLACEMENTFc.bottom);
+	return lpStruct;
+}
+
+void setWINDOWPLACEMENTFields(JNIEnv *env, jobject lpObject, WINDOWPLACEMENT *lpStruct)
+{
+	if (!WINDOWPLACEMENTFc.cached) cacheWINDOWPLACEMENTFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.length, (jint)lpStruct->length);
+	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.flags, (jint)lpStruct->flags);
+	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.showCmd, (jint)lpStruct->showCmd);
+	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMinPosition_x, (jint)lpStruct->ptMinPosition.x);
+	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMinPosition_y, (jint)lpStruct->ptMinPosition.y);
+	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMaxPosition_x, (jint)lpStruct->ptMaxPosition.x);
+	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.ptMaxPosition_y, (jint)lpStruct->ptMaxPosition.y);
+	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.left, (jint)lpStruct->rcNormalPosition.left);
+	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.top, (jint)lpStruct->rcNormalPosition.top);
+	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.right, (jint)lpStruct->rcNormalPosition.right);
+	(*env)->SetIntField(env, lpObject, WINDOWPLACEMENTFc.bottom, (jint)lpStruct->rcNormalPosition.bottom);
+}
+#endif
+
+#ifndef NO_WINDOWPOS
+typedef struct WINDOWPOS_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID hwnd, hwndInsertAfter, x, y, cx, cy, flags;
+} WINDOWPOS_FID_CACHE;
+
+WINDOWPOS_FID_CACHE WINDOWPOSFc;
+
+void cacheWINDOWPOSFields(JNIEnv *env, jobject lpObject)
+{
+	if (WINDOWPOSFc.cached) return;
+	WINDOWPOSFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	WINDOWPOSFc.hwnd = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "hwnd", "I");
+	WINDOWPOSFc.hwndInsertAfter = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "hwndInsertAfter", "I");
+	WINDOWPOSFc.x = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "x", "I");
+	WINDOWPOSFc.y = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "y", "I");
+	WINDOWPOSFc.cx = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "cx", "I");
+	WINDOWPOSFc.cy = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "cy", "I");
+	WINDOWPOSFc.flags = (*env)->GetFieldID(env, WINDOWPOSFc.clazz, "flags", "I");
+	WINDOWPOSFc.cached = 1;
+}
+
+WINDOWPOS *getWINDOWPOSFields(JNIEnv *env, jobject lpObject, WINDOWPOS *lpStruct)
+{
+	if (!WINDOWPOSFc.cached) cacheWINDOWPOSFields(env, lpObject);
+	lpStruct->hwnd = (HWND)(*env)->GetIntField(env, lpObject, WINDOWPOSFc.hwnd);
+	lpStruct->hwndInsertAfter = (HWND)(*env)->GetIntField(env, lpObject, WINDOWPOSFc.hwndInsertAfter);
+	lpStruct->x = (*env)->GetIntField(env, lpObject, WINDOWPOSFc.x);
+	lpStruct->y = (*env)->GetIntField(env, lpObject, WINDOWPOSFc.y);
+	lpStruct->cx = (*env)->GetIntField(env, lpObject, WINDOWPOSFc.cx);
+	lpStruct->cy = (*env)->GetIntField(env, lpObject, WINDOWPOSFc.cy);
+	lpStruct->flags = (*env)->GetIntField(env, lpObject, WINDOWPOSFc.flags);
+	return lpStruct;
+}
+
+void setWINDOWPOSFields(JNIEnv *env, jobject lpObject, WINDOWPOS *lpStruct)
+{
+	if (!WINDOWPOSFc.cached) cacheWINDOWPOSFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.hwnd, (jint)lpStruct->hwnd);
+	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.hwndInsertAfter, (jint)lpStruct->hwndInsertAfter);
+	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.x, (jint)lpStruct->x);
+	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.y, (jint)lpStruct->y);
+	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.cx, (jint)lpStruct->cx);
+	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.cy, (jint)lpStruct->cy);
+	(*env)->SetIntField(env, lpObject, WINDOWPOSFc.flags, (jint)lpStruct->flags);
+}
+#endif
+
+#ifndef NO_WNDCLASS
+typedef struct WNDCLASS_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID style, lpfnWndProc, cbClsExtra, cbWndExtra, hInstance, hIcon, hCursor, hbrBackground, lpszMenuName, lpszClassName;
+} WNDCLASS_FID_CACHE;
+
+WNDCLASS_FID_CACHE WNDCLASSFc;
+
+void cacheWNDCLASSFields(JNIEnv *env, jobject lpObject)
+{
+	if (WNDCLASSFc.cached) return;
+	WNDCLASSFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	WNDCLASSFc.style = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "style", "I");
+	WNDCLASSFc.lpfnWndProc = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "lpfnWndProc", "I");
+	WNDCLASSFc.cbClsExtra = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "cbClsExtra", "I");
+	WNDCLASSFc.cbWndExtra = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "cbWndExtra", "I");
+	WNDCLASSFc.hInstance = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "hInstance", "I");
+	WNDCLASSFc.hIcon = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "hIcon", "I");
+	WNDCLASSFc.hCursor = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "hCursor", "I");
+	WNDCLASSFc.hbrBackground = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "hbrBackground", "I");
+	WNDCLASSFc.lpszMenuName = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "lpszMenuName", "I");
+	WNDCLASSFc.lpszClassName = (*env)->GetFieldID(env, WNDCLASSFc.clazz, "lpszClassName", "I");
+	WNDCLASSFc.cached = 1;
+}
+
+WNDCLASS *getWNDCLASSFields(JNIEnv *env, jobject lpObject, WNDCLASS *lpStruct)
+{
+	if (!WNDCLASSFc.cached) cacheWNDCLASSFields(env, lpObject);
+	lpStruct->style = (*env)->GetIntField(env, lpObject, WNDCLASSFc.style);
+	lpStruct->lpfnWndProc = (WNDPROC)(*env)->GetIntField(env, lpObject, WNDCLASSFc.lpfnWndProc);
+	lpStruct->cbClsExtra = (*env)->GetIntField(env, lpObject, WNDCLASSFc.cbClsExtra);
+	lpStruct->cbWndExtra = (*env)->GetIntField(env, lpObject, WNDCLASSFc.cbWndExtra);
+	lpStruct->hInstance = (HINSTANCE)(*env)->GetIntField(env, lpObject, WNDCLASSFc.hInstance);
+	lpStruct->hIcon = (HICON)(*env)->GetIntField(env, lpObject, WNDCLASSFc.hIcon);
+	lpStruct->hCursor = (HCURSOR)(*env)->GetIntField(env, lpObject, WNDCLASSFc.hCursor);
+	lpStruct->hbrBackground = (HBRUSH)(*env)->GetIntField(env, lpObject, WNDCLASSFc.hbrBackground);
+	lpStruct->lpszMenuName = (LPCTSTR)(*env)->GetIntField(env, lpObject, WNDCLASSFc.lpszMenuName);
+	lpStruct->lpszClassName = (LPCTSTR)(*env)->GetIntField(env, lpObject, WNDCLASSFc.lpszClassName);
+	return lpStruct;
+}
+
+void setWNDCLASSFields(JNIEnv *env, jobject lpObject, WNDCLASS *lpStruct)
+{
+	if (!WNDCLASSFc.cached) cacheWNDCLASSFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, WNDCLASSFc.style, (jint)lpStruct->style);
+	(*env)->SetIntField(env, lpObject, WNDCLASSFc.lpfnWndProc, (jint)lpStruct->lpfnWndProc);
+	(*env)->SetIntField(env, lpObject, WNDCLASSFc.cbClsExtra, (jint)lpStruct->cbClsExtra);
+	(*env)->SetIntField(env, lpObject, WNDCLASSFc.cbWndExtra, (jint)lpStruct->cbWndExtra);
+	(*env)->SetIntField(env, lpObject, WNDCLASSFc.hInstance, (jint)lpStruct->hInstance);
+	(*env)->SetIntField(env, lpObject, WNDCLASSFc.hIcon, (jint)lpStruct->hIcon);
+	(*env)->SetIntField(env, lpObject, WNDCLASSFc.hCursor, (jint)lpStruct->hCursor);
+	(*env)->SetIntField(env, lpObject, WNDCLASSFc.hbrBackground, (jint)lpStruct->hbrBackground);
+	(*env)->SetIntField(env, lpObject, WNDCLASSFc.lpszMenuName, (jint)lpStruct->lpszMenuName);
+	(*env)->SetIntField(env, lpObject, WNDCLASSFc.lpszClassName, (jint)lpStruct->lpszClassName);
+}
+#endif
+
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h
index 30d087f..aabd864 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.h
@@ -1,637 +1,637 @@
-/*******************************************************************************

-* Copyright (c) 2000, 2003 IBM Corporation and others.

-* All rights reserved. This program and the accompanying materials

-* are made available under the terms of the Common Public License v1.0

-* which accompanies this distribution, and is available at

-* http://www.eclipse.org/legal/cpl-v10.html

-* 

-* Contributors:

-*     IBM Corporation - initial API and implementation

-*******************************************************************************/

-

-#include "os.h"

-

-#ifndef NO_ACCEL

-ACCEL *getACCELFields(JNIEnv *env, jobject lpObject, ACCEL *lpStruct);

-void setACCELFields(JNIEnv *env, jobject lpObject, ACCEL *lpStruct);

-#else

-#define getACCELFields(a,b,c) NULL

-#define setACCELFields(a,b,c)

-#endif

-

-#ifndef NO_BITMAP

-BITMAP *getBITMAPFields(JNIEnv *env, jobject lpObject, BITMAP *lpStruct);

-void setBITMAPFields(JNIEnv *env, jobject lpObject, BITMAP *lpStruct);

-#else

-#define getBITMAPFields(a,b,c) NULL

-#define setBITMAPFields(a,b,c)

-#endif

-

-#ifndef NO_BITMAPINFOHEADER

-BITMAPINFOHEADER *getBITMAPINFOHEADERFields(JNIEnv *env, jobject lpObject, BITMAPINFOHEADER *lpStruct);

-void setBITMAPINFOHEADERFields(JNIEnv *env, jobject lpObject, BITMAPINFOHEADER *lpStruct);

-#else

-#define getBITMAPINFOHEADERFields(a,b,c) NULL

-#define setBITMAPINFOHEADERFields(a,b,c)

-#endif

-

-#ifndef NO_BROWSEINFO

-BROWSEINFO *getBROWSEINFOFields(JNIEnv *env, jobject lpObject, BROWSEINFO *lpStruct);

-void setBROWSEINFOFields(JNIEnv *env, jobject lpObject, BROWSEINFO *lpStruct);

-#else

-#define getBROWSEINFOFields(a,b,c) NULL

-#define setBROWSEINFOFields(a,b,c)

-#endif

-

-#ifndef NO_CHOOSECOLOR

-CHOOSECOLOR *getCHOOSECOLORFields(JNIEnv *env, jobject lpObject, CHOOSECOLOR *lpStruct);

-void setCHOOSECOLORFields(JNIEnv *env, jobject lpObject, CHOOSECOLOR *lpStruct);

-#else

-#define getCHOOSECOLORFields(a,b,c) NULL

-#define setCHOOSECOLORFields(a,b,c)

-#endif

-

-#ifndef NO_CHOOSEFONT

-CHOOSEFONT *getCHOOSEFONTFields(JNIEnv *env, jobject lpObject, CHOOSEFONT *lpStruct);

-void setCHOOSEFONTFields(JNIEnv *env, jobject lpObject, CHOOSEFONT *lpStruct);

-#else

-#define getCHOOSEFONTFields(a,b,c) NULL

-#define setCHOOSEFONTFields(a,b,c)

-#endif

-

-#ifndef NO_COMPOSITIONFORM

-COMPOSITIONFORM *getCOMPOSITIONFORMFields(JNIEnv *env, jobject lpObject, COMPOSITIONFORM *lpStruct);

-void setCOMPOSITIONFORMFields(JNIEnv *env, jobject lpObject, COMPOSITIONFORM *lpStruct);

-#else

-#define getCOMPOSITIONFORMFields(a,b,c) NULL

-#define setCOMPOSITIONFORMFields(a,b,c)

-#endif

-

-#ifndef NO_CREATESTRUCT

-CREATESTRUCT *getCREATESTRUCTFields(JNIEnv *env, jobject lpObject, CREATESTRUCT *lpStruct);

-void setCREATESTRUCTFields(JNIEnv *env, jobject lpObject, CREATESTRUCT *lpStruct);

-#else

-#define getCREATESTRUCTFields(a,b,c) NULL

-#define setCREATESTRUCTFields(a,b,c)

-#endif

-

-#ifndef NO_DIBSECTION

-DIBSECTION *getDIBSECTIONFields(JNIEnv *env, jobject lpObject, DIBSECTION *lpStruct);

-void setDIBSECTIONFields(JNIEnv *env, jobject lpObject, DIBSECTION *lpStruct);

-#else

-#define getDIBSECTIONFields(a,b,c) NULL

-#define setDIBSECTIONFields(a,b,c)

-#endif

-

-#ifndef NO_DLLVERSIONINFO

-DLLVERSIONINFO *getDLLVERSIONINFOFields(JNIEnv *env, jobject lpObject, DLLVERSIONINFO *lpStruct);

-void setDLLVERSIONINFOFields(JNIEnv *env, jobject lpObject, DLLVERSIONINFO *lpStruct);

-#else

-#define getDLLVERSIONINFOFields(a,b,c) NULL

-#define setDLLVERSIONINFOFields(a,b,c)

-#endif

-

-#ifndef NO_DOCINFO

-DOCINFO *getDOCINFOFields(JNIEnv *env, jobject lpObject, DOCINFO *lpStruct);

-void setDOCINFOFields(JNIEnv *env, jobject lpObject, DOCINFO *lpStruct);

-#else

-#define getDOCINFOFields(a,b,c) NULL

-#define setDOCINFOFields(a,b,c)

-#endif

-

-#ifndef NO_DRAWITEMSTRUCT

-DRAWITEMSTRUCT *getDRAWITEMSTRUCTFields(JNIEnv *env, jobject lpObject, DRAWITEMSTRUCT *lpStruct);

-void setDRAWITEMSTRUCTFields(JNIEnv *env, jobject lpObject, DRAWITEMSTRUCT *lpStruct);

-#else

-#define getDRAWITEMSTRUCTFields(a,b,c) NULL

-#define setDRAWITEMSTRUCTFields(a,b,c)

-#endif

-

-#ifndef NO_DROPFILES

-DROPFILES *getDROPFILESFields(JNIEnv *env, jobject lpObject, DROPFILES *lpStruct);

-void setDROPFILESFields(JNIEnv *env, jobject lpObject, DROPFILES *lpStruct);

-#else

-#define getDROPFILESFields(a,b,c) NULL

-#define setDROPFILESFields(a,b,c)

-#endif

-

-#ifndef NO_FILETIME

-FILETIME *getFILETIMEFields(JNIEnv *env, jobject lpObject, FILETIME *lpStruct);

-void setFILETIMEFields(JNIEnv *env, jobject lpObject, FILETIME *lpStruct);

-#else

-#define getFILETIMEFields(a,b,c) NULL

-#define setFILETIMEFields(a,b,c)

-#endif

-

-#ifndef NO_GCP_RESULTS

-GCP_RESULTS *getGCP_RESULTSFields(JNIEnv *env, jobject lpObject, GCP_RESULTS *lpStruct);

-void setGCP_RESULTSFields(JNIEnv *env, jobject lpObject, GCP_RESULTS *lpStruct);

-#else

-#define getGCP_RESULTSFields(a,b,c) NULL

-#define setGCP_RESULTSFields(a,b,c)

-#endif

-

-#ifndef NO_GRADIENT_RECT

-GRADIENT_RECT *getGRADIENT_RECTFields(JNIEnv *env, jobject lpObject, GRADIENT_RECT *lpStruct);

-void setGRADIENT_RECTFields(JNIEnv *env, jobject lpObject, GRADIENT_RECT *lpStruct);

-#else

-#define getGRADIENT_RECTFields(a,b,c) NULL

-#define setGRADIENT_RECTFields(a,b,c)

-#endif

-

-#ifndef NO_HDITEM

-HDITEM *getHDITEMFields(JNIEnv *env, jobject lpObject, HDITEM *lpStruct);

-void setHDITEMFields(JNIEnv *env, jobject lpObject, HDITEM *lpStruct);

-#else

-#define getHDITEMFields(a,b,c) NULL

-#define setHDITEMFields(a,b,c)

-#endif

-

-#ifndef NO_HELPINFO

-HELPINFO *getHELPINFOFields(JNIEnv *env, jobject lpObject, HELPINFO *lpStruct);

-void setHELPINFOFields(JNIEnv *env, jobject lpObject, HELPINFO *lpStruct);

-#else

-#define getHELPINFOFields(a,b,c) NULL

-#define setHELPINFOFields(a,b,c)

-#endif

-

-#ifndef NO_ICONINFO

-ICONINFO *getICONINFOFields(JNIEnv *env, jobject lpObject, ICONINFO *lpStruct);

-void setICONINFOFields(JNIEnv *env, jobject lpObject, ICONINFO *lpStruct);

-#else

-#define getICONINFOFields(a,b,c) NULL

-#define setICONINFOFields(a,b,c)

-#endif

-

-#ifndef NO_INITCOMMONCONTROLSEX

-INITCOMMONCONTROLSEX *getINITCOMMONCONTROLSEXFields(JNIEnv *env, jobject lpObject, INITCOMMONCONTROLSEX *lpStruct);

-void setINITCOMMONCONTROLSEXFields(JNIEnv *env, jobject lpObject, INITCOMMONCONTROLSEX *lpStruct);

-#else

-#define getINITCOMMONCONTROLSEXFields(a,b,c) NULL

-#define setINITCOMMONCONTROLSEXFields(a,b,c)

-#endif

-

-#ifndef NO_LOGBRUSH

-LOGBRUSH *getLOGBRUSHFields(JNIEnv *env, jobject lpObject, LOGBRUSH *lpStruct);

-void setLOGBRUSHFields(JNIEnv *env, jobject lpObject, LOGBRUSH *lpStruct);

-#else

-#define getLOGBRUSHFields(a,b,c) NULL

-#define setLOGBRUSHFields(a,b,c)

-#endif

-

-#ifndef NO_LOGFONT

-LOGFONT *getLOGFONTFields(JNIEnv *env, jobject lpObject, LOGFONT *lpStruct);

-void setLOGFONTFields(JNIEnv *env, jobject lpObject, LOGFONT *lpStruct);

-#else

-#define getLOGFONTFields(a,b,c) NULL

-#define setLOGFONTFields(a,b,c)

-#endif

-

-#ifndef NO_LOGFONTA

-LOGFONTA *getLOGFONTAFields(JNIEnv *env, jobject lpObject, LOGFONTA *lpStruct);

-void setLOGFONTAFields(JNIEnv *env, jobject lpObject, LOGFONTA *lpStruct);

-#else

-#define getLOGFONTAFields(a,b,c) NULL

-#define setLOGFONTAFields(a,b,c)

-#endif

-

-#ifndef NO_LOGFONTW

-LOGFONTW *getLOGFONTWFields(JNIEnv *env, jobject lpObject, LOGFONTW *lpStruct);

-void setLOGFONTWFields(JNIEnv *env, jobject lpObject, LOGFONTW *lpStruct);

-#else

-#define getLOGFONTWFields(a,b,c) NULL

-#define setLOGFONTWFields(a,b,c)

-#endif

-

-#ifndef NO_LOGPEN

-LOGPEN *getLOGPENFields(JNIEnv *env, jobject lpObject, LOGPEN *lpStruct);

-void setLOGPENFields(JNIEnv *env, jobject lpObject, LOGPEN *lpStruct);

-#else

-#define getLOGPENFields(a,b,c) NULL

-#define setLOGPENFields(a,b,c)

-#endif

-

-#ifndef NO_LVCOLUMN

-LVCOLUMN *getLVCOLUMNFields(JNIEnv *env, jobject lpObject, LVCOLUMN *lpStruct);

-void setLVCOLUMNFields(JNIEnv *env, jobject lpObject, LVCOLUMN *lpStruct);

-#else

-#define getLVCOLUMNFields(a,b,c) NULL

-#define setLVCOLUMNFields(a,b,c)

-#endif

-

-#ifndef NO_LVHITTESTINFO

-LVHITTESTINFO *getLVHITTESTINFOFields(JNIEnv *env, jobject lpObject, LVHITTESTINFO *lpStruct);

-void setLVHITTESTINFOFields(JNIEnv *env, jobject lpObject, LVHITTESTINFO *lpStruct);

-#else

-#define getLVHITTESTINFOFields(a,b,c) NULL

-#define setLVHITTESTINFOFields(a,b,c)

-#endif

-

-#ifndef NO_LVITEM

-LVITEM *getLVITEMFields(JNIEnv *env, jobject lpObject, LVITEM *lpStruct);

-void setLVITEMFields(JNIEnv *env, jobject lpObject, LVITEM *lpStruct);

-#else

-#define getLVITEMFields(a,b,c) NULL

-#define setLVITEMFields(a,b,c)

-#endif

-

-#ifndef NO_MEASUREITEMSTRUCT

-MEASUREITEMSTRUCT *getMEASUREITEMSTRUCTFields(JNIEnv *env, jobject lpObject, MEASUREITEMSTRUCT *lpStruct);

-void setMEASUREITEMSTRUCTFields(JNIEnv *env, jobject lpObject, MEASUREITEMSTRUCT *lpStruct);

-#else

-#define getMEASUREITEMSTRUCTFields(a,b,c) NULL

-#define setMEASUREITEMSTRUCTFields(a,b,c)

-#endif

-

-#ifndef NO_MENUINFO

-MENUINFO *getMENUINFOFields(JNIEnv *env, jobject lpObject, MENUINFO *lpStruct);

-void setMENUINFOFields(JNIEnv *env, jobject lpObject, MENUINFO *lpStruct);

-#else

-#define getMENUINFOFields(a,b,c) NULL

-#define setMENUINFOFields(a,b,c)

-#endif

-

-#ifndef NO_MENUITEMINFO

-MENUITEMINFO *getMENUITEMINFOFields(JNIEnv *env, jobject lpObject, MENUITEMINFO *lpStruct);

-void setMENUITEMINFOFields(JNIEnv *env, jobject lpObject, MENUITEMINFO *lpStruct);

-#else

-#define getMENUITEMINFOFields(a,b,c) NULL

-#define setMENUITEMINFOFields(a,b,c)

-#endif

-

-#ifndef NO_MONITORINFO

-MONITORINFO *getMONITORINFOFields(JNIEnv *env, jobject lpObject, MONITORINFO *lpStruct);

-void setMONITORINFOFields(JNIEnv *env, jobject lpObject, MONITORINFO *lpStruct);

-#else

-#define getMONITORINFOFields(a,b,c) NULL

-#define setMONITORINFOFields(a,b,c)

-#endif

-

-#ifndef NO_MSG

-MSG *getMSGFields(JNIEnv *env, jobject lpObject, MSG *lpStruct);

-void setMSGFields(JNIEnv *env, jobject lpObject, MSG *lpStruct);

-#else

-#define getMSGFields(a,b,c) NULL

-#define setMSGFields(a,b,c)

-#endif

-

-#ifndef NO_NMHDR

-NMHDR *getNMHDRFields(JNIEnv *env, jobject lpObject, NMHDR *lpStruct);

-void setNMHDRFields(JNIEnv *env, jobject lpObject, NMHDR *lpStruct);

-#else

-#define getNMHDRFields(a,b,c) NULL

-#define setNMHDRFields(a,b,c)

-#endif

-

-#ifndef NO_NMCUSTOMDRAW

-NMCUSTOMDRAW *getNMCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMCUSTOMDRAW *lpStruct);

-void setNMCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMCUSTOMDRAW *lpStruct);

-#else

-#define getNMCUSTOMDRAWFields(a,b,c) NULL

-#define setNMCUSTOMDRAWFields(a,b,c)

-#endif

-

-#ifndef NO_NMHEADER

-NMHEADER *getNMHEADERFields(JNIEnv *env, jobject lpObject, NMHEADER *lpStruct);

-void setNMHEADERFields(JNIEnv *env, jobject lpObject, NMHEADER *lpStruct);

-#else

-#define getNMHEADERFields(a,b,c) NULL

-#define setNMHEADERFields(a,b,c)

-#endif

-

-#ifndef NO_NMLISTVIEW

-NMLISTVIEW *getNMLISTVIEWFields(JNIEnv *env, jobject lpObject, NMLISTVIEW *lpStruct);

-void setNMLISTVIEWFields(JNIEnv *env, jobject lpObject, NMLISTVIEW *lpStruct);

-#else

-#define getNMLISTVIEWFields(a,b,c) NULL

-#define setNMLISTVIEWFields(a,b,c)

-#endif

-

-#ifndef NO_NMLVCUSTOMDRAW

-NMLVCUSTOMDRAW *getNMLVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMLVCUSTOMDRAW *lpStruct);

-void setNMLVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMLVCUSTOMDRAW *lpStruct);

-#else

-#define getNMLVCUSTOMDRAWFields(a,b,c) NULL

-#define setNMLVCUSTOMDRAWFields(a,b,c)

-#endif

-

-#ifndef NO_NMREBARCHEVRON

-NMREBARCHEVRON *getNMREBARCHEVRONFields(JNIEnv *env, jobject lpObject, NMREBARCHEVRON *lpStruct);

-void setNMREBARCHEVRONFields(JNIEnv *env, jobject lpObject, NMREBARCHEVRON *lpStruct);

-#else

-#define getNMREBARCHEVRONFields(a,b,c) NULL

-#define setNMREBARCHEVRONFields(a,b,c)

-#endif

-

-#ifndef NO_NMTOOLBAR

-NMTOOLBAR *getNMTOOLBARFields(JNIEnv *env, jobject lpObject, NMTOOLBAR *lpStruct);

-void setNMTOOLBARFields(JNIEnv *env, jobject lpObject, NMTOOLBAR *lpStruct);

-#else

-#define getNMTOOLBARFields(a,b,c) NULL

-#define setNMTOOLBARFields(a,b,c)

-#endif

-

-#ifndef NO_NMTTDISPINFO

-NMTTDISPINFO *getNMTTDISPINFOFields(JNIEnv *env, jobject lpObject, NMTTDISPINFO *lpStruct);

-void setNMTTDISPINFOFields(JNIEnv *env, jobject lpObject, NMTTDISPINFO *lpStruct);

-#else

-#define getNMTTDISPINFOFields(a,b,c) NULL

-#define setNMTTDISPINFOFields(a,b,c)

-#endif

-

-#ifndef NO_NMTTDISPINFOA

-NMTTDISPINFOA *getNMTTDISPINFOAFields(JNIEnv *env, jobject lpObject, NMTTDISPINFOA *lpStruct);

-void setNMTTDISPINFOAFields(JNIEnv *env, jobject lpObject, NMTTDISPINFOA *lpStruct);

-#else

-#define getNMTTDISPINFOAFields(a,b,c) NULL

-#define setNMTTDISPINFOAFields(a,b,c)

-#endif

-

-#ifndef NO_NMTTDISPINFOW

-NMTTDISPINFOW *getNMTTDISPINFOWFields(JNIEnv *env, jobject lpObject, NMTTDISPINFOW *lpStruct);

-void setNMTTDISPINFOWFields(JNIEnv *env, jobject lpObject, NMTTDISPINFOW *lpStruct);

-#else

-#define getNMTTDISPINFOWFields(a,b,c) NULL

-#define setNMTTDISPINFOWFields(a,b,c)

-#endif

-

-#ifndef NO_NMTVCUSTOMDRAW

-NMTVCUSTOMDRAW *getNMTVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMTVCUSTOMDRAW *lpStruct);

-void setNMTVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMTVCUSTOMDRAW *lpStruct);

-#else

-#define getNMTVCUSTOMDRAWFields(a,b,c) NULL

-#define setNMTVCUSTOMDRAWFields(a,b,c)

-#endif

-

-#ifndef NO_NONCLIENTMETRICS

-NONCLIENTMETRICS *getNONCLIENTMETRICSFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICS *lpStruct);

-void setNONCLIENTMETRICSFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICS *lpStruct);

-#else

-#define getNONCLIENTMETRICSFields(a,b,c) NULL

-#define setNONCLIENTMETRICSFields(a,b,c)

-#endif

-

-#ifndef NO_NONCLIENTMETRICSA

-NONCLIENTMETRICSA *getNONCLIENTMETRICSAFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICSA *lpStruct);

-void setNONCLIENTMETRICSAFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICSA *lpStruct);

-#else

-#define getNONCLIENTMETRICSAFields(a,b,c) NULL

-#define setNONCLIENTMETRICSAFields(a,b,c)

-#endif

-

-#ifndef NO_NONCLIENTMETRICSW

-NONCLIENTMETRICSW *getNONCLIENTMETRICSWFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICSW *lpStruct);

-void setNONCLIENTMETRICSWFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICSW *lpStruct);

-#else

-#define getNONCLIENTMETRICSWFields(a,b,c) NULL

-#define setNONCLIENTMETRICSWFields(a,b,c)

-#endif

-

-#ifndef NO_OPENFILENAME

-OPENFILENAME *getOPENFILENAMEFields(JNIEnv *env, jobject lpObject, OPENFILENAME *lpStruct);

-void setOPENFILENAMEFields(JNIEnv *env, jobject lpObject, OPENFILENAME *lpStruct);

-#else

-#define getOPENFILENAMEFields(a,b,c) NULL

-#define setOPENFILENAMEFields(a,b,c)

-#endif

-

-#ifndef NO_OSVERSIONINFO

-OSVERSIONINFO *getOSVERSIONINFOFields(JNIEnv *env, jobject lpObject, OSVERSIONINFO *lpStruct);

-void setOSVERSIONINFOFields(JNIEnv *env, jobject lpObject, OSVERSIONINFO *lpStruct);

-#else

-#define getOSVERSIONINFOFields(a,b,c) NULL

-#define setOSVERSIONINFOFields(a,b,c)

-#endif

-

-#ifndef NO_OSVERSIONINFOA

-OSVERSIONINFOA *getOSVERSIONINFOAFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOA *lpStruct);

-void setOSVERSIONINFOAFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOA *lpStruct);

-#else

-#define getOSVERSIONINFOAFields(a,b,c) NULL

-#define setOSVERSIONINFOAFields(a,b,c)

-#endif

-

-#ifndef NO_OSVERSIONINFOW

-OSVERSIONINFOW *getOSVERSIONINFOWFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOW *lpStruct);

-void setOSVERSIONINFOWFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOW *lpStruct);

-#else

-#define getOSVERSIONINFOWFields(a,b,c) NULL

-#define setOSVERSIONINFOWFields(a,b,c)

-#endif

-

-#ifndef NO_PAINTSTRUCT

-PAINTSTRUCT *getPAINTSTRUCTFields(JNIEnv *env, jobject lpObject, PAINTSTRUCT *lpStruct);

-void setPAINTSTRUCTFields(JNIEnv *env, jobject lpObject, PAINTSTRUCT *lpStruct);

-#else

-#define getPAINTSTRUCTFields(a,b,c) NULL

-#define setPAINTSTRUCTFields(a,b,c)

-#endif

-

-#ifndef NO_POINT

-POINT *getPOINTFields(JNIEnv *env, jobject lpObject, POINT *lpStruct);

-void setPOINTFields(JNIEnv *env, jobject lpObject, POINT *lpStruct);

-#else

-#define getPOINTFields(a,b,c) NULL

-#define setPOINTFields(a,b,c)

-#endif

-

-#ifndef NO_PRINTDLG

-PRINTDLG *getPRINTDLGFields(JNIEnv *env, jobject lpObject, PRINTDLG *lpStruct);

-void setPRINTDLGFields(JNIEnv *env, jobject lpObject, PRINTDLG *lpStruct);

-#else

-#define getPRINTDLGFields(a,b,c) NULL

-#define setPRINTDLGFields(a,b,c)

-#endif

-

-#ifndef NO_REBARBANDINFO

-REBARBANDINFO *getREBARBANDINFOFields(JNIEnv *env, jobject lpObject, REBARBANDINFO *lpStruct);

-void setREBARBANDINFOFields(JNIEnv *env, jobject lpObject, REBARBANDINFO *lpStruct);

-#else

-#define getREBARBANDINFOFields(a,b,c) NULL

-#define setREBARBANDINFOFields(a,b,c)

-#endif

-

-#ifndef NO_RECT

-RECT *getRECTFields(JNIEnv *env, jobject lpObject, RECT *lpStruct);

-void setRECTFields(JNIEnv *env, jobject lpObject, RECT *lpStruct);

-#else

-#define getRECTFields(a,b,c) NULL

-#define setRECTFields(a,b,c)

-#endif

-

-#ifndef NO_SCROLLINFO

-SCROLLINFO *getSCROLLINFOFields(JNIEnv *env, jobject lpObject, SCROLLINFO *lpStruct);

-void setSCROLLINFOFields(JNIEnv *env, jobject lpObject, SCROLLINFO *lpStruct);

-#else

-#define getSCROLLINFOFields(a,b,c) NULL

-#define setSCROLLINFOFields(a,b,c)

-#endif

-

-#ifndef NO_SHACTIVATEINFO

-SHACTIVATEINFO *getSHACTIVATEINFOFields(JNIEnv *env, jobject lpObject, SHACTIVATEINFO *lpStruct);

-void setSHACTIVATEINFOFields(JNIEnv *env, jobject lpObject, SHACTIVATEINFO *lpStruct);

-#else

-#define getSHACTIVATEINFOFields(a,b,c) NULL

-#define setSHACTIVATEINFOFields(a,b,c)

-#endif

-

-#ifndef NO_SHELLEXECUTEINFO

-SHELLEXECUTEINFO *getSHELLEXECUTEINFOFields(JNIEnv *env, jobject lpObject, SHELLEXECUTEINFO *lpStruct);

-void setSHELLEXECUTEINFOFields(JNIEnv *env, jobject lpObject, SHELLEXECUTEINFO *lpStruct);

-#else

-#define getSHELLEXECUTEINFOFields(a,b,c) NULL

-#define setSHELLEXECUTEINFOFields(a,b,c)

-#endif

-

-#ifndef NO_SHMENUBARINFO

-SHMENUBARINFO *getSHMENUBARINFOFields(JNIEnv *env, jobject lpObject, SHMENUBARINFO *lpStruct);

-void setSHMENUBARINFOFields(JNIEnv *env, jobject lpObject, SHMENUBARINFO *lpStruct);

-#else

-#define getSHMENUBARINFOFields(a,b,c) NULL

-#define setSHMENUBARINFOFields(a,b,c)

-#endif

-

-#ifndef NO_SHRGINFO

-SHRGINFO *getSHRGINFOFields(JNIEnv *env, jobject lpObject, SHRGINFO *lpStruct);

-void setSHRGINFOFields(JNIEnv *env, jobject lpObject, SHRGINFO *lpStruct);

-#else

-#define getSHRGINFOFields(a,b,c) NULL

-#define setSHRGINFOFields(a,b,c)

-#endif

-

-#ifndef NO_SIPINFO

-SIPINFO *getSIPINFOFields(JNIEnv *env, jobject lpObject, SIPINFO *lpStruct);

-void setSIPINFOFields(JNIEnv *env, jobject lpObject, SIPINFO *lpStruct);

-#else

-#define getSIPINFOFields(a,b,c) NULL

-#define setSIPINFOFields(a,b,c)

-#endif

-

-#ifndef NO_SIZE

-SIZE *getSIZEFields(JNIEnv *env, jobject lpObject, SIZE *lpStruct);

-void setSIZEFields(JNIEnv *env, jobject lpObject, SIZE *lpStruct);

-#else

-#define getSIZEFields(a,b,c) NULL

-#define setSIZEFields(a,b,c)

-#endif

-

-#ifndef NO_TBBUTTON

-TBBUTTON *getTBBUTTONFields(JNIEnv *env, jobject lpObject, TBBUTTON *lpStruct);

-void setTBBUTTONFields(JNIEnv *env, jobject lpObject, TBBUTTON *lpStruct);

-#else

-#define getTBBUTTONFields(a,b,c) NULL

-#define setTBBUTTONFields(a,b,c)

-#endif

-

-#ifndef NO_TBBUTTONINFO

-TBBUTTONINFO *getTBBUTTONINFOFields(JNIEnv *env, jobject lpObject, TBBUTTONINFO *lpStruct);

-void setTBBUTTONINFOFields(JNIEnv *env, jobject lpObject, TBBUTTONINFO *lpStruct);

-#else

-#define getTBBUTTONINFOFields(a,b,c) NULL

-#define setTBBUTTONINFOFields(a,b,c)

-#endif

-

-#ifndef NO_TCITEM

-TCITEM *getTCITEMFields(JNIEnv *env, jobject lpObject, TCITEM *lpStruct);

-void setTCITEMFields(JNIEnv *env, jobject lpObject, TCITEM *lpStruct);

-#else

-#define getTCITEMFields(a,b,c) NULL

-#define setTCITEMFields(a,b,c)

-#endif

-

-#ifndef NO_TEXTMETRIC

-TEXTMETRIC *getTEXTMETRICFields(JNIEnv *env, jobject lpObject, TEXTMETRIC *lpStruct);

-void setTEXTMETRICFields(JNIEnv *env, jobject lpObject, TEXTMETRIC *lpStruct);

-#else

-#define getTEXTMETRICFields(a,b,c) NULL

-#define setTEXTMETRICFields(a,b,c)

-#endif

-

-#ifndef NO_TEXTMETRICA

-TEXTMETRICA *getTEXTMETRICAFields(JNIEnv *env, jobject lpObject, TEXTMETRICA *lpStruct);

-void setTEXTMETRICAFields(JNIEnv *env, jobject lpObject, TEXTMETRICA *lpStruct);

-#else

-#define getTEXTMETRICAFields(a,b,c) NULL

-#define setTEXTMETRICAFields(a,b,c)

-#endif

-

-#ifndef NO_TEXTMETRICW

-TEXTMETRICW *getTEXTMETRICWFields(JNIEnv *env, jobject lpObject, TEXTMETRICW *lpStruct);

-void setTEXTMETRICWFields(JNIEnv *env, jobject lpObject, TEXTMETRICW *lpStruct);

-#else

-#define getTEXTMETRICWFields(a,b,c) NULL

-#define setTEXTMETRICWFields(a,b,c)

-#endif

-

-#ifndef NO_TOOLINFO

-TOOLINFO *getTOOLINFOFields(JNIEnv *env, jobject lpObject, TOOLINFO *lpStruct);

-void setTOOLINFOFields(JNIEnv *env, jobject lpObject, TOOLINFO *lpStruct);

-#else

-#define getTOOLINFOFields(a,b,c) NULL

-#define setTOOLINFOFields(a,b,c)

-#endif

-

-#ifndef NO_TRACKMOUSEEVENT

-TRACKMOUSEEVENT *getTRACKMOUSEEVENTFields(JNIEnv *env, jobject lpObject, TRACKMOUSEEVENT *lpStruct);

-void setTRACKMOUSEEVENTFields(JNIEnv *env, jobject lpObject, TRACKMOUSEEVENT *lpStruct);

-#else

-#define getTRACKMOUSEEVENTFields(a,b,c) NULL

-#define setTRACKMOUSEEVENTFields(a,b,c)

-#endif

-

-#ifndef NO_TRIVERTEX

-TRIVERTEX *getTRIVERTEXFields(JNIEnv *env, jobject lpObject, TRIVERTEX *lpStruct);

-void setTRIVERTEXFields(JNIEnv *env, jobject lpObject, TRIVERTEX *lpStruct);

-#else

-#define getTRIVERTEXFields(a,b,c) NULL

-#define setTRIVERTEXFields(a,b,c)

-#endif

-

-#ifndef NO_TVHITTESTINFO

-TVHITTESTINFO *getTVHITTESTINFOFields(JNIEnv *env, jobject lpObject, TVHITTESTINFO *lpStruct);

-void setTVHITTESTINFOFields(JNIEnv *env, jobject lpObject, TVHITTESTINFO *lpStruct);

-#else

-#define getTVHITTESTINFOFields(a,b,c) NULL

-#define setTVHITTESTINFOFields(a,b,c)

-#endif

-

-#ifndef NO_TVINSERTSTRUCT

-TVINSERTSTRUCT *getTVINSERTSTRUCTFields(JNIEnv *env, jobject lpObject, TVINSERTSTRUCT *lpStruct);

-void setTVINSERTSTRUCTFields(JNIEnv *env, jobject lpObject, TVINSERTSTRUCT *lpStruct);

-#else

-#define getTVINSERTSTRUCTFields(a,b,c) NULL

-#define setTVINSERTSTRUCTFields(a,b,c)

-#endif

-

-#ifndef NO_TVITEM

-TVITEM *getTVITEMFields(JNIEnv *env, jobject lpObject, TVITEM *lpStruct);

-void setTVITEMFields(JNIEnv *env, jobject lpObject, TVITEM *lpStruct);

-#else

-#define getTVITEMFields(a,b,c) NULL

-#define setTVITEMFields(a,b,c)

-#endif

-

-#ifndef NO_WINDOWPLACEMENT

-WINDOWPLACEMENT *getWINDOWPLACEMENTFields(JNIEnv *env, jobject lpObject, WINDOWPLACEMENT *lpStruct);

-void setWINDOWPLACEMENTFields(JNIEnv *env, jobject lpObject, WINDOWPLACEMENT *lpStruct);

-#else

-#define getWINDOWPLACEMENTFields(a,b,c) NULL

-#define setWINDOWPLACEMENTFields(a,b,c)

-#endif

-

-#ifndef NO_WINDOWPOS

-WINDOWPOS *getWINDOWPOSFields(JNIEnv *env, jobject lpObject, WINDOWPOS *lpStruct);

-void setWINDOWPOSFields(JNIEnv *env, jobject lpObject, WINDOWPOS *lpStruct);

-#else

-#define getWINDOWPOSFields(a,b,c) NULL

-#define setWINDOWPOSFields(a,b,c)

-#endif

-

-#ifndef NO_WNDCLASS

-WNDCLASS *getWNDCLASSFields(JNIEnv *env, jobject lpObject, WNDCLASS *lpStruct);

-void setWNDCLASSFields(JNIEnv *env, jobject lpObject, WNDCLASS *lpStruct);

-#else

-#define getWNDCLASSFields(a,b,c) NULL

-#define setWNDCLASSFields(a,b,c)

-#endif

-

+/*******************************************************************************
+* Copyright (c) 2000, 2003 IBM Corporation and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Common Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/cpl-v10.html
+* 
+* Contributors:
+*     IBM Corporation - initial API and implementation
+*******************************************************************************/
+
+#include "os.h"
+
+#ifndef NO_ACCEL
+ACCEL *getACCELFields(JNIEnv *env, jobject lpObject, ACCEL *lpStruct);
+void setACCELFields(JNIEnv *env, jobject lpObject, ACCEL *lpStruct);
+#else
+#define getACCELFields(a,b,c) NULL
+#define setACCELFields(a,b,c)
+#endif
+
+#ifndef NO_BITMAP
+BITMAP *getBITMAPFields(JNIEnv *env, jobject lpObject, BITMAP *lpStruct);
+void setBITMAPFields(JNIEnv *env, jobject lpObject, BITMAP *lpStruct);
+#else
+#define getBITMAPFields(a,b,c) NULL
+#define setBITMAPFields(a,b,c)
+#endif
+
+#ifndef NO_BITMAPINFOHEADER
+BITMAPINFOHEADER *getBITMAPINFOHEADERFields(JNIEnv *env, jobject lpObject, BITMAPINFOHEADER *lpStruct);
+void setBITMAPINFOHEADERFields(JNIEnv *env, jobject lpObject, BITMAPINFOHEADER *lpStruct);
+#else
+#define getBITMAPINFOHEADERFields(a,b,c) NULL
+#define setBITMAPINFOHEADERFields(a,b,c)
+#endif
+
+#ifndef NO_BROWSEINFO
+BROWSEINFO *getBROWSEINFOFields(JNIEnv *env, jobject lpObject, BROWSEINFO *lpStruct);
+void setBROWSEINFOFields(JNIEnv *env, jobject lpObject, BROWSEINFO *lpStruct);
+#else
+#define getBROWSEINFOFields(a,b,c) NULL
+#define setBROWSEINFOFields(a,b,c)
+#endif
+
+#ifndef NO_CHOOSECOLOR
+CHOOSECOLOR *getCHOOSECOLORFields(JNIEnv *env, jobject lpObject, CHOOSECOLOR *lpStruct);
+void setCHOOSECOLORFields(JNIEnv *env, jobject lpObject, CHOOSECOLOR *lpStruct);
+#else
+#define getCHOOSECOLORFields(a,b,c) NULL
+#define setCHOOSECOLORFields(a,b,c)
+#endif
+
+#ifndef NO_CHOOSEFONT
+CHOOSEFONT *getCHOOSEFONTFields(JNIEnv *env, jobject lpObject, CHOOSEFONT *lpStruct);
+void setCHOOSEFONTFields(JNIEnv *env, jobject lpObject, CHOOSEFONT *lpStruct);
+#else
+#define getCHOOSEFONTFields(a,b,c) NULL
+#define setCHOOSEFONTFields(a,b,c)
+#endif
+
+#ifndef NO_COMPOSITIONFORM
+COMPOSITIONFORM *getCOMPOSITIONFORMFields(JNIEnv *env, jobject lpObject, COMPOSITIONFORM *lpStruct);
+void setCOMPOSITIONFORMFields(JNIEnv *env, jobject lpObject, COMPOSITIONFORM *lpStruct);
+#else
+#define getCOMPOSITIONFORMFields(a,b,c) NULL
+#define setCOMPOSITIONFORMFields(a,b,c)
+#endif
+
+#ifndef NO_CREATESTRUCT
+CREATESTRUCT *getCREATESTRUCTFields(JNIEnv *env, jobject lpObject, CREATESTRUCT *lpStruct);
+void setCREATESTRUCTFields(JNIEnv *env, jobject lpObject, CREATESTRUCT *lpStruct);
+#else
+#define getCREATESTRUCTFields(a,b,c) NULL
+#define setCREATESTRUCTFields(a,b,c)
+#endif
+
+#ifndef NO_DIBSECTION
+DIBSECTION *getDIBSECTIONFields(JNIEnv *env, jobject lpObject, DIBSECTION *lpStruct);
+void setDIBSECTIONFields(JNIEnv *env, jobject lpObject, DIBSECTION *lpStruct);
+#else
+#define getDIBSECTIONFields(a,b,c) NULL
+#define setDIBSECTIONFields(a,b,c)
+#endif
+
+#ifndef NO_DLLVERSIONINFO
+DLLVERSIONINFO *getDLLVERSIONINFOFields(JNIEnv *env, jobject lpObject, DLLVERSIONINFO *lpStruct);
+void setDLLVERSIONINFOFields(JNIEnv *env, jobject lpObject, DLLVERSIONINFO *lpStruct);
+#else
+#define getDLLVERSIONINFOFields(a,b,c) NULL
+#define setDLLVERSIONINFOFields(a,b,c)
+#endif
+
+#ifndef NO_DOCINFO
+DOCINFO *getDOCINFOFields(JNIEnv *env, jobject lpObject, DOCINFO *lpStruct);
+void setDOCINFOFields(JNIEnv *env, jobject lpObject, DOCINFO *lpStruct);
+#else
+#define getDOCINFOFields(a,b,c) NULL
+#define setDOCINFOFields(a,b,c)
+#endif
+
+#ifndef NO_DRAWITEMSTRUCT
+DRAWITEMSTRUCT *getDRAWITEMSTRUCTFields(JNIEnv *env, jobject lpObject, DRAWITEMSTRUCT *lpStruct);
+void setDRAWITEMSTRUCTFields(JNIEnv *env, jobject lpObject, DRAWITEMSTRUCT *lpStruct);
+#else
+#define getDRAWITEMSTRUCTFields(a,b,c) NULL
+#define setDRAWITEMSTRUCTFields(a,b,c)
+#endif
+
+#ifndef NO_DROPFILES
+DROPFILES *getDROPFILESFields(JNIEnv *env, jobject lpObject, DROPFILES *lpStruct);
+void setDROPFILESFields(JNIEnv *env, jobject lpObject, DROPFILES *lpStruct);
+#else
+#define getDROPFILESFields(a,b,c) NULL
+#define setDROPFILESFields(a,b,c)
+#endif
+
+#ifndef NO_FILETIME
+FILETIME *getFILETIMEFields(JNIEnv *env, jobject lpObject, FILETIME *lpStruct);
+void setFILETIMEFields(JNIEnv *env, jobject lpObject, FILETIME *lpStruct);
+#else
+#define getFILETIMEFields(a,b,c) NULL
+#define setFILETIMEFields(a,b,c)
+#endif
+
+#ifndef NO_GCP_RESULTS
+GCP_RESULTS *getGCP_RESULTSFields(JNIEnv *env, jobject lpObject, GCP_RESULTS *lpStruct);
+void setGCP_RESULTSFields(JNIEnv *env, jobject lpObject, GCP_RESULTS *lpStruct);
+#else
+#define getGCP_RESULTSFields(a,b,c) NULL
+#define setGCP_RESULTSFields(a,b,c)
+#endif
+
+#ifndef NO_GRADIENT_RECT
+GRADIENT_RECT *getGRADIENT_RECTFields(JNIEnv *env, jobject lpObject, GRADIENT_RECT *lpStruct);
+void setGRADIENT_RECTFields(JNIEnv *env, jobject lpObject, GRADIENT_RECT *lpStruct);
+#else
+#define getGRADIENT_RECTFields(a,b,c) NULL
+#define setGRADIENT_RECTFields(a,b,c)
+#endif
+
+#ifndef NO_HDITEM
+HDITEM *getHDITEMFields(JNIEnv *env, jobject lpObject, HDITEM *lpStruct);
+void setHDITEMFields(JNIEnv *env, jobject lpObject, HDITEM *lpStruct);
+#else
+#define getHDITEMFields(a,b,c) NULL
+#define setHDITEMFields(a,b,c)
+#endif
+
+#ifndef NO_HELPINFO
+HELPINFO *getHELPINFOFields(JNIEnv *env, jobject lpObject, HELPINFO *lpStruct);
+void setHELPINFOFields(JNIEnv *env, jobject lpObject, HELPINFO *lpStruct);
+#else
+#define getHELPINFOFields(a,b,c) NULL
+#define setHELPINFOFields(a,b,c)
+#endif
+
+#ifndef NO_ICONINFO
+ICONINFO *getICONINFOFields(JNIEnv *env, jobject lpObject, ICONINFO *lpStruct);
+void setICONINFOFields(JNIEnv *env, jobject lpObject, ICONINFO *lpStruct);
+#else
+#define getICONINFOFields(a,b,c) NULL
+#define setICONINFOFields(a,b,c)
+#endif
+
+#ifndef NO_INITCOMMONCONTROLSEX
+INITCOMMONCONTROLSEX *getINITCOMMONCONTROLSEXFields(JNIEnv *env, jobject lpObject, INITCOMMONCONTROLSEX *lpStruct);
+void setINITCOMMONCONTROLSEXFields(JNIEnv *env, jobject lpObject, INITCOMMONCONTROLSEX *lpStruct);
+#else
+#define getINITCOMMONCONTROLSEXFields(a,b,c) NULL
+#define setINITCOMMONCONTROLSEXFields(a,b,c)
+#endif
+
+#ifndef NO_LOGBRUSH
+LOGBRUSH *getLOGBRUSHFields(JNIEnv *env, jobject lpObject, LOGBRUSH *lpStruct);
+void setLOGBRUSHFields(JNIEnv *env, jobject lpObject, LOGBRUSH *lpStruct);
+#else
+#define getLOGBRUSHFields(a,b,c) NULL
+#define setLOGBRUSHFields(a,b,c)
+#endif
+
+#ifndef NO_LOGFONT
+LOGFONT *getLOGFONTFields(JNIEnv *env, jobject lpObject, LOGFONT *lpStruct);
+void setLOGFONTFields(JNIEnv *env, jobject lpObject, LOGFONT *lpStruct);
+#else
+#define getLOGFONTFields(a,b,c) NULL
+#define setLOGFONTFields(a,b,c)
+#endif
+
+#ifndef NO_LOGFONTA
+LOGFONTA *getLOGFONTAFields(JNIEnv *env, jobject lpObject, LOGFONTA *lpStruct);
+void setLOGFONTAFields(JNIEnv *env, jobject lpObject, LOGFONTA *lpStruct);
+#else
+#define getLOGFONTAFields(a,b,c) NULL
+#define setLOGFONTAFields(a,b,c)
+#endif
+
+#ifndef NO_LOGFONTW
+LOGFONTW *getLOGFONTWFields(JNIEnv *env, jobject lpObject, LOGFONTW *lpStruct);
+void setLOGFONTWFields(JNIEnv *env, jobject lpObject, LOGFONTW *lpStruct);
+#else
+#define getLOGFONTWFields(a,b,c) NULL
+#define setLOGFONTWFields(a,b,c)
+#endif
+
+#ifndef NO_LOGPEN
+LOGPEN *getLOGPENFields(JNIEnv *env, jobject lpObject, LOGPEN *lpStruct);
+void setLOGPENFields(JNIEnv *env, jobject lpObject, LOGPEN *lpStruct);
+#else
+#define getLOGPENFields(a,b,c) NULL
+#define setLOGPENFields(a,b,c)
+#endif
+
+#ifndef NO_LVCOLUMN
+LVCOLUMN *getLVCOLUMNFields(JNIEnv *env, jobject lpObject, LVCOLUMN *lpStruct);
+void setLVCOLUMNFields(JNIEnv *env, jobject lpObject, LVCOLUMN *lpStruct);
+#else
+#define getLVCOLUMNFields(a,b,c) NULL
+#define setLVCOLUMNFields(a,b,c)
+#endif
+
+#ifndef NO_LVHITTESTINFO
+LVHITTESTINFO *getLVHITTESTINFOFields(JNIEnv *env, jobject lpObject, LVHITTESTINFO *lpStruct);
+void setLVHITTESTINFOFields(JNIEnv *env, jobject lpObject, LVHITTESTINFO *lpStruct);
+#else
+#define getLVHITTESTINFOFields(a,b,c) NULL
+#define setLVHITTESTINFOFields(a,b,c)
+#endif
+
+#ifndef NO_LVITEM
+LVITEM *getLVITEMFields(JNIEnv *env, jobject lpObject, LVITEM *lpStruct);
+void setLVITEMFields(JNIEnv *env, jobject lpObject, LVITEM *lpStruct);
+#else
+#define getLVITEMFields(a,b,c) NULL
+#define setLVITEMFields(a,b,c)
+#endif
+
+#ifndef NO_MEASUREITEMSTRUCT
+MEASUREITEMSTRUCT *getMEASUREITEMSTRUCTFields(JNIEnv *env, jobject lpObject, MEASUREITEMSTRUCT *lpStruct);
+void setMEASUREITEMSTRUCTFields(JNIEnv *env, jobject lpObject, MEASUREITEMSTRUCT *lpStruct);
+#else
+#define getMEASUREITEMSTRUCTFields(a,b,c) NULL
+#define setMEASUREITEMSTRUCTFields(a,b,c)
+#endif
+
+#ifndef NO_MENUINFO
+MENUINFO *getMENUINFOFields(JNIEnv *env, jobject lpObject, MENUINFO *lpStruct);
+void setMENUINFOFields(JNIEnv *env, jobject lpObject, MENUINFO *lpStruct);
+#else
+#define getMENUINFOFields(a,b,c) NULL
+#define setMENUINFOFields(a,b,c)
+#endif
+
+#ifndef NO_MENUITEMINFO
+MENUITEMINFO *getMENUITEMINFOFields(JNIEnv *env, jobject lpObject, MENUITEMINFO *lpStruct);
+void setMENUITEMINFOFields(JNIEnv *env, jobject lpObject, MENUITEMINFO *lpStruct);
+#else
+#define getMENUITEMINFOFields(a,b,c) NULL
+#define setMENUITEMINFOFields(a,b,c)
+#endif
+
+#ifndef NO_MONITORINFO
+MONITORINFO *getMONITORINFOFields(JNIEnv *env, jobject lpObject, MONITORINFO *lpStruct);
+void setMONITORINFOFields(JNIEnv *env, jobject lpObject, MONITORINFO *lpStruct);
+#else
+#define getMONITORINFOFields(a,b,c) NULL
+#define setMONITORINFOFields(a,b,c)
+#endif
+
+#ifndef NO_MSG
+MSG *getMSGFields(JNIEnv *env, jobject lpObject, MSG *lpStruct);
+void setMSGFields(JNIEnv *env, jobject lpObject, MSG *lpStruct);
+#else
+#define getMSGFields(a,b,c) NULL
+#define setMSGFields(a,b,c)
+#endif
+
+#ifndef NO_NMHDR
+NMHDR *getNMHDRFields(JNIEnv *env, jobject lpObject, NMHDR *lpStruct);
+void setNMHDRFields(JNIEnv *env, jobject lpObject, NMHDR *lpStruct);
+#else
+#define getNMHDRFields(a,b,c) NULL
+#define setNMHDRFields(a,b,c)
+#endif
+
+#ifndef NO_NMCUSTOMDRAW
+NMCUSTOMDRAW *getNMCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMCUSTOMDRAW *lpStruct);
+void setNMCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMCUSTOMDRAW *lpStruct);
+#else
+#define getNMCUSTOMDRAWFields(a,b,c) NULL
+#define setNMCUSTOMDRAWFields(a,b,c)
+#endif
+
+#ifndef NO_NMHEADER
+NMHEADER *getNMHEADERFields(JNIEnv *env, jobject lpObject, NMHEADER *lpStruct);
+void setNMHEADERFields(JNIEnv *env, jobject lpObject, NMHEADER *lpStruct);
+#else
+#define getNMHEADERFields(a,b,c) NULL
+#define setNMHEADERFields(a,b,c)
+#endif
+
+#ifndef NO_NMLISTVIEW
+NMLISTVIEW *getNMLISTVIEWFields(JNIEnv *env, jobject lpObject, NMLISTVIEW *lpStruct);
+void setNMLISTVIEWFields(JNIEnv *env, jobject lpObject, NMLISTVIEW *lpStruct);
+#else
+#define getNMLISTVIEWFields(a,b,c) NULL
+#define setNMLISTVIEWFields(a,b,c)
+#endif
+
+#ifndef NO_NMLVCUSTOMDRAW
+NMLVCUSTOMDRAW *getNMLVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMLVCUSTOMDRAW *lpStruct);
+void setNMLVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMLVCUSTOMDRAW *lpStruct);
+#else
+#define getNMLVCUSTOMDRAWFields(a,b,c) NULL
+#define setNMLVCUSTOMDRAWFields(a,b,c)
+#endif
+
+#ifndef NO_NMREBARCHEVRON
+NMREBARCHEVRON *getNMREBARCHEVRONFields(JNIEnv *env, jobject lpObject, NMREBARCHEVRON *lpStruct);
+void setNMREBARCHEVRONFields(JNIEnv *env, jobject lpObject, NMREBARCHEVRON *lpStruct);
+#else
+#define getNMREBARCHEVRONFields(a,b,c) NULL
+#define setNMREBARCHEVRONFields(a,b,c)
+#endif
+
+#ifndef NO_NMTOOLBAR
+NMTOOLBAR *getNMTOOLBARFields(JNIEnv *env, jobject lpObject, NMTOOLBAR *lpStruct);
+void setNMTOOLBARFields(JNIEnv *env, jobject lpObject, NMTOOLBAR *lpStruct);
+#else
+#define getNMTOOLBARFields(a,b,c) NULL
+#define setNMTOOLBARFields(a,b,c)
+#endif
+
+#ifndef NO_NMTTDISPINFO
+NMTTDISPINFO *getNMTTDISPINFOFields(JNIEnv *env, jobject lpObject, NMTTDISPINFO *lpStruct);
+void setNMTTDISPINFOFields(JNIEnv *env, jobject lpObject, NMTTDISPINFO *lpStruct);
+#else
+#define getNMTTDISPINFOFields(a,b,c) NULL
+#define setNMTTDISPINFOFields(a,b,c)
+#endif
+
+#ifndef NO_NMTTDISPINFOA
+NMTTDISPINFOA *getNMTTDISPINFOAFields(JNIEnv *env, jobject lpObject, NMTTDISPINFOA *lpStruct);
+void setNMTTDISPINFOAFields(JNIEnv *env, jobject lpObject, NMTTDISPINFOA *lpStruct);
+#else
+#define getNMTTDISPINFOAFields(a,b,c) NULL
+#define setNMTTDISPINFOAFields(a,b,c)
+#endif
+
+#ifndef NO_NMTTDISPINFOW
+NMTTDISPINFOW *getNMTTDISPINFOWFields(JNIEnv *env, jobject lpObject, NMTTDISPINFOW *lpStruct);
+void setNMTTDISPINFOWFields(JNIEnv *env, jobject lpObject, NMTTDISPINFOW *lpStruct);
+#else
+#define getNMTTDISPINFOWFields(a,b,c) NULL
+#define setNMTTDISPINFOWFields(a,b,c)
+#endif
+
+#ifndef NO_NMTVCUSTOMDRAW
+NMTVCUSTOMDRAW *getNMTVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMTVCUSTOMDRAW *lpStruct);
+void setNMTVCUSTOMDRAWFields(JNIEnv *env, jobject lpObject, NMTVCUSTOMDRAW *lpStruct);
+#else
+#define getNMTVCUSTOMDRAWFields(a,b,c) NULL
+#define setNMTVCUSTOMDRAWFields(a,b,c)
+#endif
+
+#ifndef NO_NONCLIENTMETRICS
+NONCLIENTMETRICS *getNONCLIENTMETRICSFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICS *lpStruct);
+void setNONCLIENTMETRICSFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICS *lpStruct);
+#else
+#define getNONCLIENTMETRICSFields(a,b,c) NULL
+#define setNONCLIENTMETRICSFields(a,b,c)
+#endif
+
+#ifndef NO_NONCLIENTMETRICSA
+NONCLIENTMETRICSA *getNONCLIENTMETRICSAFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICSA *lpStruct);
+void setNONCLIENTMETRICSAFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICSA *lpStruct);
+#else
+#define getNONCLIENTMETRICSAFields(a,b,c) NULL
+#define setNONCLIENTMETRICSAFields(a,b,c)
+#endif
+
+#ifndef NO_NONCLIENTMETRICSW
+NONCLIENTMETRICSW *getNONCLIENTMETRICSWFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICSW *lpStruct);
+void setNONCLIENTMETRICSWFields(JNIEnv *env, jobject lpObject, NONCLIENTMETRICSW *lpStruct);
+#else
+#define getNONCLIENTMETRICSWFields(a,b,c) NULL
+#define setNONCLIENTMETRICSWFields(a,b,c)
+#endif
+
+#ifndef NO_OPENFILENAME
+OPENFILENAME *getOPENFILENAMEFields(JNIEnv *env, jobject lpObject, OPENFILENAME *lpStruct);
+void setOPENFILENAMEFields(JNIEnv *env, jobject lpObject, OPENFILENAME *lpStruct);
+#else
+#define getOPENFILENAMEFields(a,b,c) NULL
+#define setOPENFILENAMEFields(a,b,c)
+#endif
+
+#ifndef NO_OSVERSIONINFO
+OSVERSIONINFO *getOSVERSIONINFOFields(JNIEnv *env, jobject lpObject, OSVERSIONINFO *lpStruct);
+void setOSVERSIONINFOFields(JNIEnv *env, jobject lpObject, OSVERSIONINFO *lpStruct);
+#else
+#define getOSVERSIONINFOFields(a,b,c) NULL
+#define setOSVERSIONINFOFields(a,b,c)
+#endif
+
+#ifndef NO_OSVERSIONINFOA
+OSVERSIONINFOA *getOSVERSIONINFOAFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOA *lpStruct);
+void setOSVERSIONINFOAFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOA *lpStruct);
+#else
+#define getOSVERSIONINFOAFields(a,b,c) NULL
+#define setOSVERSIONINFOAFields(a,b,c)
+#endif
+
+#ifndef NO_OSVERSIONINFOW
+OSVERSIONINFOW *getOSVERSIONINFOWFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOW *lpStruct);
+void setOSVERSIONINFOWFields(JNIEnv *env, jobject lpObject, OSVERSIONINFOW *lpStruct);
+#else
+#define getOSVERSIONINFOWFields(a,b,c) NULL
+#define setOSVERSIONINFOWFields(a,b,c)
+#endif
+
+#ifndef NO_PAINTSTRUCT
+PAINTSTRUCT *getPAINTSTRUCTFields(JNIEnv *env, jobject lpObject, PAINTSTRUCT *lpStruct);
+void setPAINTSTRUCTFields(JNIEnv *env, jobject lpObject, PAINTSTRUCT *lpStruct);
+#else
+#define getPAINTSTRUCTFields(a,b,c) NULL
+#define setPAINTSTRUCTFields(a,b,c)
+#endif
+
+#ifndef NO_POINT
+POINT *getPOINTFields(JNIEnv *env, jobject lpObject, POINT *lpStruct);
+void setPOINTFields(JNIEnv *env, jobject lpObject, POINT *lpStruct);
+#else
+#define getPOINTFields(a,b,c) NULL
+#define setPOINTFields(a,b,c)
+#endif
+
+#ifndef NO_PRINTDLG
+PRINTDLG *getPRINTDLGFields(JNIEnv *env, jobject lpObject, PRINTDLG *lpStruct);
+void setPRINTDLGFields(JNIEnv *env, jobject lpObject, PRINTDLG *lpStruct);
+#else
+#define getPRINTDLGFields(a,b,c) NULL
+#define setPRINTDLGFields(a,b,c)
+#endif
+
+#ifndef NO_REBARBANDINFO
+REBARBANDINFO *getREBARBANDINFOFields(JNIEnv *env, jobject lpObject, REBARBANDINFO *lpStruct);
+void setREBARBANDINFOFields(JNIEnv *env, jobject lpObject, REBARBANDINFO *lpStruct);
+#else
+#define getREBARBANDINFOFields(a,b,c) NULL
+#define setREBARBANDINFOFields(a,b,c)
+#endif
+
+#ifndef NO_RECT
+RECT *getRECTFields(JNIEnv *env, jobject lpObject, RECT *lpStruct);
+void setRECTFields(JNIEnv *env, jobject lpObject, RECT *lpStruct);
+#else
+#define getRECTFields(a,b,c) NULL
+#define setRECTFields(a,b,c)
+#endif
+
+#ifndef NO_SCROLLINFO
+SCROLLINFO *getSCROLLINFOFields(JNIEnv *env, jobject lpObject, SCROLLINFO *lpStruct);
+void setSCROLLINFOFields(JNIEnv *env, jobject lpObject, SCROLLINFO *lpStruct);
+#else
+#define getSCROLLINFOFields(a,b,c) NULL
+#define setSCROLLINFOFields(a,b,c)
+#endif
+
+#ifndef NO_SHACTIVATEINFO
+SHACTIVATEINFO *getSHACTIVATEINFOFields(JNIEnv *env, jobject lpObject, SHACTIVATEINFO *lpStruct);
+void setSHACTIVATEINFOFields(JNIEnv *env, jobject lpObject, SHACTIVATEINFO *lpStruct);
+#else
+#define getSHACTIVATEINFOFields(a,b,c) NULL
+#define setSHACTIVATEINFOFields(a,b,c)
+#endif
+
+#ifndef NO_SHELLEXECUTEINFO
+SHELLEXECUTEINFO *getSHELLEXECUTEINFOFields(JNIEnv *env, jobject lpObject, SHELLEXECUTEINFO *lpStruct);
+void setSHELLEXECUTEINFOFields(JNIEnv *env, jobject lpObject, SHELLEXECUTEINFO *lpStruct);
+#else
+#define getSHELLEXECUTEINFOFields(a,b,c) NULL
+#define setSHELLEXECUTEINFOFields(a,b,c)
+#endif
+
+#ifndef NO_SHMENUBARINFO
+SHMENUBARINFO *getSHMENUBARINFOFields(JNIEnv *env, jobject lpObject, SHMENUBARINFO *lpStruct);
+void setSHMENUBARINFOFields(JNIEnv *env, jobject lpObject, SHMENUBARINFO *lpStruct);
+#else
+#define getSHMENUBARINFOFields(a,b,c) NULL
+#define setSHMENUBARINFOFields(a,b,c)
+#endif
+
+#ifndef NO_SHRGINFO
+SHRGINFO *getSHRGINFOFields(JNIEnv *env, jobject lpObject, SHRGINFO *lpStruct);
+void setSHRGINFOFields(JNIEnv *env, jobject lpObject, SHRGINFO *lpStruct);
+#else
+#define getSHRGINFOFields(a,b,c) NULL
+#define setSHRGINFOFields(a,b,c)
+#endif
+
+#ifndef NO_SIPINFO
+SIPINFO *getSIPINFOFields(JNIEnv *env, jobject lpObject, SIPINFO *lpStruct);
+void setSIPINFOFields(JNIEnv *env, jobject lpObject, SIPINFO *lpStruct);
+#else
+#define getSIPINFOFields(a,b,c) NULL
+#define setSIPINFOFields(a,b,c)
+#endif
+
+#ifndef NO_SIZE
+SIZE *getSIZEFields(JNIEnv *env, jobject lpObject, SIZE *lpStruct);
+void setSIZEFields(JNIEnv *env, jobject lpObject, SIZE *lpStruct);
+#else
+#define getSIZEFields(a,b,c) NULL
+#define setSIZEFields(a,b,c)
+#endif
+
+#ifndef NO_TBBUTTON
+TBBUTTON *getTBBUTTONFields(JNIEnv *env, jobject lpObject, TBBUTTON *lpStruct);
+void setTBBUTTONFields(JNIEnv *env, jobject lpObject, TBBUTTON *lpStruct);
+#else
+#define getTBBUTTONFields(a,b,c) NULL
+#define setTBBUTTONFields(a,b,c)
+#endif
+
+#ifndef NO_TBBUTTONINFO
+TBBUTTONINFO *getTBBUTTONINFOFields(JNIEnv *env, jobject lpObject, TBBUTTONINFO *lpStruct);
+void setTBBUTTONINFOFields(JNIEnv *env, jobject lpObject, TBBUTTONINFO *lpStruct);
+#else
+#define getTBBUTTONINFOFields(a,b,c) NULL
+#define setTBBUTTONINFOFields(a,b,c)
+#endif
+
+#ifndef NO_TCITEM
+TCITEM *getTCITEMFields(JNIEnv *env, jobject lpObject, TCITEM *lpStruct);
+void setTCITEMFields(JNIEnv *env, jobject lpObject, TCITEM *lpStruct);
+#else
+#define getTCITEMFields(a,b,c) NULL
+#define setTCITEMFields(a,b,c)
+#endif
+
+#ifndef NO_TEXTMETRIC
+TEXTMETRIC *getTEXTMETRICFields(JNIEnv *env, jobject lpObject, TEXTMETRIC *lpStruct);
+void setTEXTMETRICFields(JNIEnv *env, jobject lpObject, TEXTMETRIC *lpStruct);
+#else
+#define getTEXTMETRICFields(a,b,c) NULL
+#define setTEXTMETRICFields(a,b,c)
+#endif
+
+#ifndef NO_TEXTMETRICA
+TEXTMETRICA *getTEXTMETRICAFields(JNIEnv *env, jobject lpObject, TEXTMETRICA *lpStruct);
+void setTEXTMETRICAFields(JNIEnv *env, jobject lpObject, TEXTMETRICA *lpStruct);
+#else
+#define getTEXTMETRICAFields(a,b,c) NULL
+#define setTEXTMETRICAFields(a,b,c)
+#endif
+
+#ifndef NO_TEXTMETRICW
+TEXTMETRICW *getTEXTMETRICWFields(JNIEnv *env, jobject lpObject, TEXTMETRICW *lpStruct);
+void setTEXTMETRICWFields(JNIEnv *env, jobject lpObject, TEXTMETRICW *lpStruct);
+#else
+#define getTEXTMETRICWFields(a,b,c) NULL
+#define setTEXTMETRICWFields(a,b,c)
+#endif
+
+#ifndef NO_TOOLINFO
+TOOLINFO *getTOOLINFOFields(JNIEnv *env, jobject lpObject, TOOLINFO *lpStruct);
+void setTOOLINFOFields(JNIEnv *env, jobject lpObject, TOOLINFO *lpStruct);
+#else
+#define getTOOLINFOFields(a,b,c) NULL
+#define setTOOLINFOFields(a,b,c)
+#endif
+
+#ifndef NO_TRACKMOUSEEVENT
+TRACKMOUSEEVENT *getTRACKMOUSEEVENTFields(JNIEnv *env, jobject lpObject, TRACKMOUSEEVENT *lpStruct);
+void setTRACKMOUSEEVENTFields(JNIEnv *env, jobject lpObject, TRACKMOUSEEVENT *lpStruct);
+#else
+#define getTRACKMOUSEEVENTFields(a,b,c) NULL
+#define setTRACKMOUSEEVENTFields(a,b,c)
+#endif
+
+#ifndef NO_TRIVERTEX
+TRIVERTEX *getTRIVERTEXFields(JNIEnv *env, jobject lpObject, TRIVERTEX *lpStruct);
+void setTRIVERTEXFields(JNIEnv *env, jobject lpObject, TRIVERTEX *lpStruct);
+#else
+#define getTRIVERTEXFields(a,b,c) NULL
+#define setTRIVERTEXFields(a,b,c)
+#endif
+
+#ifndef NO_TVHITTESTINFO
+TVHITTESTINFO *getTVHITTESTINFOFields(JNIEnv *env, jobject lpObject, TVHITTESTINFO *lpStruct);
+void setTVHITTESTINFOFields(JNIEnv *env, jobject lpObject, TVHITTESTINFO *lpStruct);
+#else
+#define getTVHITTESTINFOFields(a,b,c) NULL
+#define setTVHITTESTINFOFields(a,b,c)
+#endif
+
+#ifndef NO_TVINSERTSTRUCT
+TVINSERTSTRUCT *getTVINSERTSTRUCTFields(JNIEnv *env, jobject lpObject, TVINSERTSTRUCT *lpStruct);
+void setTVINSERTSTRUCTFields(JNIEnv *env, jobject lpObject, TVINSERTSTRUCT *lpStruct);
+#else
+#define getTVINSERTSTRUCTFields(a,b,c) NULL
+#define setTVINSERTSTRUCTFields(a,b,c)
+#endif
+
+#ifndef NO_TVITEM
+TVITEM *getTVITEMFields(JNIEnv *env, jobject lpObject, TVITEM *lpStruct);
+void setTVITEMFields(JNIEnv *env, jobject lpObject, TVITEM *lpStruct);
+#else
+#define getTVITEMFields(a,b,c) NULL
+#define setTVITEMFields(a,b,c)
+#endif
+
+#ifndef NO_WINDOWPLACEMENT
+WINDOWPLACEMENT *getWINDOWPLACEMENTFields(JNIEnv *env, jobject lpObject, WINDOWPLACEMENT *lpStruct);
+void setWINDOWPLACEMENTFields(JNIEnv *env, jobject lpObject, WINDOWPLACEMENT *lpStruct);
+#else
+#define getWINDOWPLACEMENTFields(a,b,c) NULL
+#define setWINDOWPLACEMENTFields(a,b,c)
+#endif
+
+#ifndef NO_WINDOWPOS
+WINDOWPOS *getWINDOWPOSFields(JNIEnv *env, jobject lpObject, WINDOWPOS *lpStruct);
+void setWINDOWPOSFields(JNIEnv *env, jobject lpObject, WINDOWPOS *lpStruct);
+#else
+#define getWINDOWPOSFields(a,b,c) NULL
+#define setWINDOWPOSFields(a,b,c)
+#endif
+
+#ifndef NO_WNDCLASS
+WNDCLASS *getWNDCLASSFields(JNIEnv *env, jobject lpObject, WNDCLASS *lpStruct);
+void setWNDCLASSFields(JNIEnv *env, jobject lpObject, WNDCLASS *lpStruct);
+#else
+#define getWNDCLASSFields(a,b,c) NULL
+#define setWNDCLASSFields(a,b,c)
+#endif
+