*** empty log message ***
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 132e86d..d6935e6 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
@@ -2261,6 +2261,21 @@
 }
 #endif
 
+#ifndef NO_GetMenuItemRect
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetMenuItemRect)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	RECT _arg3, *lparg3=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetMenuItemRect\n")
+	if (arg3) lparg3 = getRECTFields(env, arg3, &_arg3);
+	rc = (jboolean)GetMenuItemRect((HWND)arg0, (HMENU)arg1, arg2, lparg3);
+	if (arg3) setRECTFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "GetMenuItemRect\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)
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 306b1ca..6c46398 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
@@ -191,6 +191,34 @@
 }
 #endif
 
+#ifndef NO_GetMenuBarInfo
+JNIEXPORT jboolean JNICALL OS_NATIVE(GetMenuBarInfo)
+	(JNIEnv *env, jclass that, jint arg0, jint arg1, jint arg2, jobject arg3)
+{
+	MENUBARINFO _arg3, *lparg3=NULL;
+	jboolean rc;
+	NATIVE_ENTER(env, that, "GetMenuBarInfo\n")
+	if (arg3) lparg3 = getMENUBARINFOFields(env, arg3, &_arg3);
+	//rc = (jboolean)GetMenuBarInfo((HWND)arg0, arg1, arg2, lparg3);
+	{
+		/*
+		*  GetMenuBarInfo 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, "GetMenuBarInfo"))) {
+			rc = (jboolean)(fp)((HWND)arg0, arg1, arg2, lparg3);
+		}
+	}
+	if (arg3) setMENUBARINFOFields(env, arg3, lparg3);
+	NATIVE_EXIT(env, that, "GetMenuBarInfo\n")
+	return rc;
+}
+#endif
+
 #ifndef NO_GetMenuInfo
 JNIEXPORT jboolean JNICALL OS_NATIVE(GetMenuInfo)
 	(JNIEnv *env, jclass that, jint arg0, jobject arg1)
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 c2edf97..cb765b2 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
@@ -1566,6 +1566,61 @@
 }
 #endif
 
+#ifndef NO_MENUBARINFO
+typedef struct MENUBARINFO_FID_CACHE {
+	int cached;
+	jclass clazz;
+	jfieldID cbSize, left, top, right, bottom, hMenu, hwndMenu, fBarFocused, fFocused;
+} MENUBARINFO_FID_CACHE;
+
+MENUBARINFO_FID_CACHE MENUBARINFOFc;
+
+void cacheMENUBARINFOFields(JNIEnv *env, jobject lpObject)
+{
+	if (MENUBARINFOFc.cached) return;
+	MENUBARINFOFc.clazz = (*env)->GetObjectClass(env, lpObject);
+	MENUBARINFOFc.cbSize = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "cbSize", "I");
+	MENUBARINFOFc.left = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "left", "I");
+	MENUBARINFOFc.top = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "top", "I");
+	MENUBARINFOFc.right = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "right", "I");
+	MENUBARINFOFc.bottom = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "bottom", "I");
+	MENUBARINFOFc.hMenu = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "hMenu", "I");
+	MENUBARINFOFc.hwndMenu = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "hwndMenu", "I");
+	MENUBARINFOFc.fBarFocused = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "fBarFocused", "Z");
+	MENUBARINFOFc.fFocused = (*env)->GetFieldID(env, MENUBARINFOFc.clazz, "fFocused", "Z");
+	MENUBARINFOFc.cached = 1;
+}
+
+MENUBARINFO *getMENUBARINFOFields(JNIEnv *env, jobject lpObject, MENUBARINFO *lpStruct)
+{
+	if (!MENUBARINFOFc.cached) cacheMENUBARINFOFields(env, lpObject);
+	lpStruct->cbSize = (*env)->GetIntField(env, lpObject, MENUBARINFOFc.cbSize);
+	lpStruct->rcBar.left = (*env)->GetIntField(env, lpObject, MENUBARINFOFc.left);
+	lpStruct->rcBar.top = (*env)->GetIntField(env, lpObject, MENUBARINFOFc.top);
+	lpStruct->rcBar.right = (*env)->GetIntField(env, lpObject, MENUBARINFOFc.right);
+	lpStruct->rcBar.bottom = (*env)->GetIntField(env, lpObject, MENUBARINFOFc.bottom);
+	lpStruct->hMenu = (HMENU)(*env)->GetIntField(env, lpObject, MENUBARINFOFc.hMenu);
+	lpStruct->hwndMenu = (HWND)(*env)->GetIntField(env, lpObject, MENUBARINFOFc.hwndMenu);
+	lpStruct->fBarFocused = (*env)->GetBooleanField(env, lpObject, MENUBARINFOFc.fBarFocused);
+	lpStruct->fFocused = (*env)->GetBooleanField(env, lpObject, MENUBARINFOFc.fFocused);
+	return lpStruct;
+}
+
+void setMENUBARINFOFields(JNIEnv *env, jobject lpObject, MENUBARINFO *lpStruct)
+{
+	if (!MENUBARINFOFc.cached) cacheMENUBARINFOFields(env, lpObject);
+	(*env)->SetIntField(env, lpObject, MENUBARINFOFc.cbSize, (jint)lpStruct->cbSize);
+	(*env)->SetIntField(env, lpObject, MENUBARINFOFc.left, (jint)lpStruct->rcBar.left);
+	(*env)->SetIntField(env, lpObject, MENUBARINFOFc.top, (jint)lpStruct->rcBar.top);
+	(*env)->SetIntField(env, lpObject, MENUBARINFOFc.right, (jint)lpStruct->rcBar.right);
+	(*env)->SetIntField(env, lpObject, MENUBARINFOFc.bottom, (jint)lpStruct->rcBar.bottom);
+	(*env)->SetIntField(env, lpObject, MENUBARINFOFc.hMenu, (jint)lpStruct->hMenu);
+	(*env)->SetIntField(env, lpObject, MENUBARINFOFc.hwndMenu, (jint)lpStruct->hwndMenu);
+	(*env)->SetBooleanField(env, lpObject, MENUBARINFOFc.fBarFocused, (jboolean)lpStruct->fBarFocused);
+	(*env)->SetBooleanField(env, lpObject, MENUBARINFOFc.fFocused, (jboolean)lpStruct->fFocused);
+}
+#endif
+
 #ifndef NO_MENUINFO
 typedef struct MENUINFO_FID_CACHE {
 	int cached;
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 b0e66c9..16dda2a 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
@@ -251,6 +251,14 @@
 #define setMEASUREITEMSTRUCTFields(a,b,c)
 #endif
 
+#ifndef NO_MENUBARINFO
+MENUBARINFO *getMENUBARINFOFields(JNIEnv *env, jobject lpObject, MENUBARINFO *lpStruct);
+void setMENUBARINFOFields(JNIEnv *env, jobject lpObject, MENUBARINFO *lpStruct);
+#else
+#define getMENUBARINFOFields(a,b,c) NULL
+#define setMENUBARINFOFields(a,b,c)
+#endif
+
 #ifndef NO_MENUINFO
 MENUINFO *getMENUINFOFields(JNIEnv *env, jobject lpObject, MENUINFO *lpStruct);
 void setMENUINFOFields(JNIEnv *env, jobject lpObject, MENUINFO *lpStruct);