X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fsubsystems%2Fmvdm%2Fntvdm%2Fntvdm.c;h=a6ac026e2eb202c641e3633d4de4538db02009b7;hp=94e5414550259d861bc0bcc8074efad4283c6397;hb=9565c83981a34758ddade54186eec5cc3761325a;hpb=829726353be5701009e516f637729a411f995623 diff --git a/reactos/subsystems/mvdm/ntvdm/ntvdm.c b/reactos/subsystems/mvdm/ntvdm/ntvdm.c index 94e54145502..a6ac026e2eb 100644 --- a/reactos/subsystems/mvdm/ntvdm/ntvdm.c +++ b/reactos/subsystems/mvdm/ntvdm/ntvdm.c @@ -116,6 +116,21 @@ AppendMenuItems(HMENU hMenu, } while (!(Items[i].uID == 0 && Items[i].SubMenu == NULL && Items[i].wCmdID == 0)); } +BOOL +VdmMenuExists(HMENU hConsoleMenu) +{ + INT MenuPos, i; + MenuPos = GetMenuItemCount(hConsoleMenu); + + /* Check for the presence of one of the VDM menu items */ + for (i = 0; i <= MenuPos; i++) + { + if (GetMenuItemID(hConsoleMenu, i) == ID_SHOWHIDE_MOUSE) + return TRUE; + } + return FALSE; +} + /*static*/ VOID CreateVdmMenu(HANDLE ConOutHandle) { @@ -124,9 +139,17 @@ CreateVdmMenu(HANDLE ConOutHandle) ID_VDM_QUIT); if (hConsoleMenu == NULL) return; + /* Get the position where we are going to insert our menu items */ VdmMenuPos = GetMenuItemCount(hConsoleMenu); - AppendMenuItems(hConsoleMenu, VdmMainMenuItems); - DrawMenuBar(GetConsoleWindow()); + // FIXME: What happens if the menu already exist? + // VdmMenuPos points *after* the already existing menu! + + /* Really add the menu if it doesn't already exist (in case eg. NTVDM crashed) */ + if (!VdmMenuExists(hConsoleMenu)) + { + AppendMenuItems(hConsoleMenu, VdmMainMenuItems); + DrawMenuBar(GetConsoleWindow()); + } } /*static*/ VOID