+static void test_AppendMenu(void)
+{
+ MENUITEMINFOA mii;
+ HMENU hmenu, hsubmenu;
+ BOOL ret;
+
+ hmenu = CreateMenu();
+ ok(hmenu != 0, "CreateMenu failed\n");
+ ret = AppendMenuA(hmenu, MF_OWNERDRAW, 201, "item 1");
+ ok(ret, "AppendMenu failed\n");
+ check_menu_items(hmenu, 201, MF_OWNERDRAW, 0);
+ DestroyMenu(hmenu);
+
+ hmenu = CreateMenu();
+ ok(hmenu != 0, "CreateMenu failed\n");
+ ret = AppendMenuA(hmenu, MF_POPUP, 202, "item 1");
+ ok(ret, "AppendMenu failed\n");
+ check_menu_items(hmenu, 202, MF_STRING, 0);
+ DestroyMenu(hmenu);
+
+ hmenu = CreateMenu();
+ ok(hmenu != 0, "CreateMenu failed\n");
+ ret = AppendMenuA(hmenu, MF_OWNERDRAW | MF_POPUP, 203, "item 1");
+ ok(ret, "AppendMenu failed\n");
+ check_menu_items(hmenu, 203, MF_OWNERDRAW, 0);
+ DestroyMenu(hmenu);
+
+ hmenu = CreateMenu();
+ ok(hmenu != 0, "CreateMenu failed\n");
+ hsubmenu = CreateMenu();
+ ok(hsubmenu != 0, "CreateMenu failed\n");
+ ret = AppendMenuA(hmenu, MF_OWNERDRAW, (UINT_PTR)hsubmenu, "item 1");
+ ok(ret, "AppendMenu failed\n");
+ check_menu_items(hmenu, (UINT_PTR)hsubmenu, MF_OWNERDRAW, 0);
+ DestroyMenu(hmenu);
+ DestroyMenu(hsubmenu);
+
+ hmenu = CreateMenu();
+ ok(hmenu != 0, "CreateMenu failed\n");
+ hsubmenu = CreateMenu();
+ ok(hsubmenu != 0, "CreateMenu failed\n");
+ ret = AppendMenuA(hmenu, MF_POPUP, (UINT_PTR)hsubmenu, "item 1");
+ ok(ret, "AppendMenu failed\n");
+ check_menu_items(hmenu, (UINT_PTR)hsubmenu, MF_STRING, 0);
+ DestroyMenu(hmenu);
+ DestroyMenu(hsubmenu);
+
+ hmenu = CreateMenu();
+ ok(hmenu != 0, "CreateMenu failed\n");
+ hsubmenu = CreateMenu();
+ ok(hsubmenu != 0, "CreateMenu failed\n");
+ ret = AppendMenuA(hmenu, MF_OWNERDRAW | MF_POPUP, (UINT_PTR)hsubmenu, "item 1");
+ ok(ret, "AppendMenu failed\n");
+ check_menu_items(hmenu, (UINT_PTR)hsubmenu, MF_OWNERDRAW, 0);
+ DestroyMenu(hmenu);
+ DestroyMenu(hsubmenu);
+
+ hmenu = CreateMenu();
+ ok(hmenu != 0, "CreateMenu failed\n");
+ hsubmenu = CreatePopupMenu();
+ ok(hsubmenu != 0, "CreatePopupMenu failed\n");
+ ret = AppendMenuA(hmenu, MF_OWNERDRAW, (UINT_PTR)hsubmenu, "item 1");
+ ok(ret, "AppendMenu failed\n");
+ check_menu_items(hmenu, (UINT_PTR)hsubmenu, MF_OWNERDRAW, 0);
+ DestroyMenu(hmenu);
+ DestroyMenu(hsubmenu);
+
+ hmenu = CreateMenu();
+ ok(hmenu != 0, "CreateMenu failed\n");
+ hsubmenu = CreatePopupMenu();
+ ok(hsubmenu != 0, "CreatePopupMenu failed\n");
+ ret = AppendMenuA(hmenu, MF_POPUP, (UINT_PTR)hsubmenu, "item 1");
+ ok(ret, "AppendMenu failed\n");
+ check_menu_items(hmenu, (UINT_PTR)hsubmenu, MF_STRING, 0);
+ DestroyMenu(hmenu);
+ DestroyMenu(hsubmenu);
+
+ hmenu = CreateMenu();
+ ok(hmenu != 0, "CreateMenu failed\n");
+ hsubmenu = CreatePopupMenu();
+ ok(hsubmenu != 0, "CreatePopupMenu failed\n");
+ ret = AppendMenuA(hmenu, MF_OWNERDRAW | MF_POPUP, (UINT_PTR)hsubmenu, "item 1");
+ ok(ret, "AppendMenu failed\n");
+ check_menu_items(hmenu, (UINT_PTR)hsubmenu, MF_OWNERDRAW, 0);
+ DestroyMenu(hmenu);
+ DestroyMenu(hsubmenu);
+
+ hmenu = CreateMenu();
+ ok(hmenu != 0, "CreateMenu failed\n");
+ ret = AppendMenuA(hmenu, MF_STRING, 204, "item 1");
+ ok(ret, "AppendMenu failed\n");
+ check_menu_items(hmenu, 204, MF_STRING, 0);
+ ret = ModifyMenuA(hmenu, 0, MF_POPUP | MF_BYPOSITION, 205, "item 2");
+ ok(ret, "ModifyMenu failed\n");
+ check_menu_items(hmenu, 205, MF_STRING, 0);
+ memset(&mii, 0, sizeof(mii));
+ mii.cbSize = sizeof(mii);
+ mii.fMask = MIIM_SUBMENU;
+ mii.hSubMenu = (HMENU)204;
+ ret = InsertMenuItemA(hmenu, 0, TRUE, &mii);
+ ok(!ret, "InsertMenuItem should fail\n");
+ ret = SetMenuItemInfoA(hmenu, 0, TRUE, &mii);
+ ok(!ret, "SetMenuItemInfo should fail\n");
+ mii.fMask = MIIM_ID;
+ mii.wID = 206;
+ ret = InsertMenuItemA(hmenu, 0, TRUE, &mii);
+ ok(ret, "InsertMenuItem failed\n");
+if (0) /* FIXME: uncomment once Wine is fixed */
+ check_menu_items(hmenu, 206, MF_SEPARATOR, MFS_GRAYED);
+ mii.wID = 207;
+ ret = SetMenuItemInfoA(hmenu, 0, TRUE, &mii);
+ ok(ret, "SetMenuItemInfo failed\n");
+if (0) /* FIXME: uncomment once Wine is fixed */
+ check_menu_items(hmenu, 207, MF_SEPARATOR, MFS_GRAYED);
+ DestroyMenu(hmenu);
+}
+