Diff for /np2/win9x/menu.cpp between versions 1.19 and 1.27

version 1.19, 2005/02/07 14:46:14 version 1.27, 2007/10/26 14:38:34
Line 23  void menu_addmenubar(HMENU popup, HMENU  Line 23  void menu_addmenubar(HMENU popup, HMENU 
         UINT                    pos;          UINT                    pos;
         UINT                    i;          UINT                    i;
         MENUITEMINFO    mii;          MENUITEMINFO    mii;
         char                    str[128];          TCHAR                   str[128];
         HMENU                   hSubMenu;          HMENU                   hSubMenu;
   
         cnt = GetMenuItemCount(menubar);          cnt = GetMenuItemCount(menubar);
Line 34  void menu_addmenubar(HMENU popup, HMENU  Line 34  void menu_addmenubar(HMENU popup, HMENU 
                 mii.fMask = MIIM_TYPE | MIIM_STATE | MIIM_ID | MIIM_SUBMENU |                  mii.fMask = MIIM_TYPE | MIIM_STATE | MIIM_ID | MIIM_SUBMENU |
                                                                                                                                         MIIM_DATA;                                                                                                                                          MIIM_DATA;
                 mii.dwTypeData = str;                  mii.dwTypeData = str;
                 mii.cch = sizeof(str);                  mii.cch = NELEMENTS(str);
                 if (GetMenuItemInfo(menubar, i, TRUE, &mii)) {                  if (GetMenuItemInfo(menubar, i, TRUE, &mii)) {
                         if (mii.hSubMenu) {                          if (mii.hSubMenu) {
                                 hSubMenu = CreatePopupMenu();                                  hSubMenu = CreatePopupMenu();
Line 48  void menu_addmenubar(HMENU popup, HMENU  Line 48  void menu_addmenubar(HMENU popup, HMENU 
 }  }
   
 static void insertresmenu(HMENU menu, UINT pos, UINT flag,  static void insertresmenu(HMENU menu, UINT pos, UINT flag,
                                                                                                         UINT item, UINT str) {                                                                                                          UINT32 item, UINT str) {
   
         char    tmp[128];          TCHAR   tmp[128];
   
         if (LoadString(hInst, str, tmp, sizeof(tmp))) {          if (LoadString(hInst, str, tmp, NELEMENTS(tmp))) {
                 InsertMenu(menu, pos, flag, item, tmp);                  InsertMenu(menu, pos, flag, item, tmp);
         }          }
 }  }
Line 76  const MENUITEMS *iterm; Line 76  const MENUITEMS *iterm;
         }          }
 }  }
   
   static BOOL searchchildmenu(HMENU hMenu, UINT uID, HMENU *phmenuRet, UINT *puPos)
   {
           UINT                    nCount;
           UINT                    i;
           MENUITEMINFO    mii;
   
           nCount = GetMenuItemCount(hMenu);
           for (i=0; i<nCount; i++)
           {
                   ZeroMemory(&mii, sizeof(mii));
                   mii.cbSize = sizeof(mii);
                   mii.fMask = MIIM_ID | MIIM_SUBMENU;
                   if (GetMenuItemInfo(hMenu, i, TRUE, &mii))
                   {
                           if (mii.wID == uID)
                           {
                                   if (phmenuRet)
                                   {
                                           *phmenuRet = hMenu;
                                   }
                                   if (puPos)
                                   {
                                           *puPos = i;
                                   }
                                   return TRUE;
                           }
                           else if ((mii.hSubMenu) && (searchchildmenu(mii.hSubMenu, uID, phmenuRet, puPos)))
                           {
                                   return TRUE;
                           }
                   }
           }
           return FALSE;
   }
   
   static BOOL searchsubmenu(HMENU hMenu, HMENU hmenuTarget, HMENU *phmenuRet, UINT *puPos)
   {
           UINT                    nCount;
           UINT                    i;
           MENUITEMINFO    mii;
   
           nCount = GetMenuItemCount(hMenu);
           for (i=0; i<nCount; i++)
           {
                   ZeroMemory(&mii, sizeof(mii));
                   mii.cbSize = sizeof(mii);
                   mii.fMask = MIIM_SUBMENU;
                   if ((GetMenuItemInfo(hMenu, i, TRUE, &mii)) && (mii.hSubMenu))
                   {
                           if (mii.hSubMenu == hmenuTarget)
                           {
                                   if (phmenuRet)
                                   {
                                           *phmenuRet = hMenu;
                                   }
                                   if (puPos)
                                   {
                                           *puPos = i;
                                   }
                                   return TRUE;
                           }
                           if (searchsubmenu(mii.hSubMenu, hmenuTarget, phmenuRet, puPos))
                           {
                                   return TRUE;
                           }
                   }
           }
           return FALSE;
   }
   
   
 // ----  // ----
   
Line 189  void sysmenu_setscrnmul(UINT8 value) { Line 259  void sysmenu_setscrnmul(UINT8 value) {
   
 typedef struct {  typedef struct {
         UINT16          title;          UINT16          title;
           UINT16          items;
           MENUITEMS       item[1];
   } SUBMITEMS;
   
   typedef struct {
           UINT16          title;
           UINT16          items;
         MENUITEMS       item[3];          MENUITEMS       item[3];
 } DISKMENU;  } SUBMITEM3;
   
 static const DISKMENU fddmenu[4] = {  static const SUBMITEM3 fddmenu[4] = {
                 {IDS_FDD1,      {{IDM_FDD1OPEN,         IDS_OPEN},                  {IDS_FDD1, 3,
                                         {0,                                     0},                          {{IDM_FDD1OPEN, IDS_OPEN}, {0, 0}, {IDM_FDD1EJECT, IDS_EJECT}}},
                                         {IDM_FDD1EJECT,         IDS_EJECT}}},                  {IDS_FDD2, 3,
                 {IDS_FDD2,      {{IDM_FDD2OPEN,         IDS_OPEN},                          {{IDM_FDD2OPEN, IDS_OPEN}, {0, 0}, {IDM_FDD2EJECT, IDS_EJECT}}},
                                         {0,                                     0},                  {IDS_FDD3, 3,
                                         {IDM_FDD2EJECT,         IDS_EJECT}}},                          {{IDM_FDD3OPEN, IDS_OPEN}, {0, 0}, {IDM_FDD3EJECT, IDS_EJECT}}},
                 {IDS_FDD3,      {{IDM_FDD3OPEN,         IDS_OPEN},                  {IDS_FDD4, 3,
                                         {0,                                     0},                          {{IDM_FDD4OPEN, IDS_OPEN}, {0, 0}, {IDM_FDD4EJECT, IDS_EJECT}}}};
                                         {IDM_FDD3EJECT,         IDS_EJECT}}},  
                 {IDS_FDD4,      {{IDM_FDD4OPEN,         IDS_OPEN},  #if defined(SUPPORT_IDEIO)
                                         {0,                                     0},  static const SUBMITEM3 side[3] = {
                                         {IDM_FDD4EJECT,         IDS_EJECT}}}};                  {IDS_IDE0, 3,
                           {{IDM_IDE0OPEN, IDS_OPEN}, {0, 0}, {IDM_IDE0EJECT, IDS_REMOVE}}},
                   {IDS_IDE1, 3,
                           {{IDM_IDE1OPEN, IDS_OPEN}, {0, 0}, {IDM_IDE1EJECT, IDS_REMOVE}}},
                   {IDS_IDE2, 3,
                           {{IDM_IDE2OPEN, IDS_OPEN}, {0, 0}, {IDM_IDE2EJECT, IDS_EJECT}}}};
   #else
   static const SUBMITEM3 ssasi[2] = {
                   {IDS_SASI1, 3,
                           {{IDM_IDE0OPEN, IDS_OPEN}, {0, 0}, {IDM_IDE0EJECT, IDS_REMOVE}}},
                   {IDS_SASI2, 3,
                           {{IDM_IDE1OPEN, IDS_OPEN}, {0, 0}, {IDM_IDE1EJECT, IDS_REMOVE}}}};
   #endif
   
 static void insdiskmenu(HMENU hMenu, UINT pos, const DISKMENU *m) {  #if defined(SUPPORT_SCSI)
   static const SUBMITEM3 sscsi[4] = {
           {IDS_SCSI0, 3,
                   {{IDM_SCSI0OPEN, IDS_OPEN}, {0, 0}, {IDM_SCSI0EJECT, IDS_REMOVE}}},
           {IDS_SCSI1, 3,
                   {{IDM_SCSI1OPEN, IDS_OPEN}, {0, 0}, {IDM_SCSI1EJECT, IDS_REMOVE}}},
           {IDS_SCSI2, 3,
                   {{IDM_SCSI2OPEN, IDS_OPEN}, {0, 0}, {IDM_SCSI2EJECT, IDS_REMOVE}}},
           {IDS_SCSI3, 3,
                   {{IDM_SCSI3OPEN, IDS_OPEN}, {0, 0}, {IDM_SCSI3EJECT, IDS_REMOVE}}}};
   #endif
   
         HMENU   hSubMenu;  
   static void insdiskmenu(HMENU hMenu, UINT pos, const void *item) {
   
           HMENU           hSubMenu;
   const SUBMITEMS *smi;
   
         hSubMenu = CreatePopupMenu();          hSubMenu = CreatePopupMenu();
         insertresmenus(hSubMenu, 0, m->item, 3);          smi = (SUBMITEMS *)item;
           insertresmenus(hSubMenu, 0, smi->item, smi->items);
         insertresmenu(hMenu, pos, MF_BYPOSITION | MF_POPUP,          insertresmenu(hMenu, pos, MF_BYPOSITION | MF_POPUP,
                                                                                         (UINT)hSubMenu, m->title);                                                                                          (UINT)hSubMenu, smi->title);
 }  }
   
 #if defined(SUPPORT_SCSI)  
 static const DISKMENU scsimenu[4] = {  
                 {IDS_SCSI0,     {{IDM_SCSI0OPEN,        IDS_OPEN},  
                                         {0,                                     0},  
                                         {IDM_SCSI0EJECT,        IDS_REMOVE}}},  
                 {IDS_SCSI1,     {{IDM_SCSI1OPEN,        IDS_OPEN},  
                                         {0,                                     0},  
                                         {IDM_SCSI1EJECT,        IDS_REMOVE}}},  
                 {IDS_SCSI2,     {{IDM_SCSI2OPEN,        IDS_OPEN},  
                                         {0,                                     0},  
                                         {IDM_SCSI2EJECT,        IDS_REMOVE}}},  
                 {IDS_SCSI3,     {{IDM_SCSI3OPEN,        IDS_OPEN},  
                                         {0,                                     0},  
                                         {IDM_SCSI3EJECT,        IDS_REMOVE}}}};  
 #endif  
   
 #if defined(SUPPORT_STATSAVE)  #if defined(SUPPORT_STATSAVE)
 static const char xmenu_stat[] = "S&tat";  static const TCHAR xmenu_stat[] = _T("S&tat");
 static const char xmenu_statsave[] = "Save %u";  static const TCHAR xmenu_statsave[] = _T("Save %u");
 static const char xmenu_statload[] = "Load %u";  static const TCHAR xmenu_statload[] = _T("Load %u");
   
 static void addstatsavemenu(HMENU hMenu, UINT pos) {  static void addstatsavemenu(HMENU hMenu, UINT pos) {
   
         HMENU   hSubMenu;          HMENU   hSubMenu;
         UINT    i;          UINT    i;
         char    buf[16];          TCHAR   buf[16];
   
         hSubMenu = CreatePopupMenu();          hSubMenu = CreatePopupMenu();
         for (i=0; i<SUPPORT_STATSAVE; i++) {          for (i=0; i<SUPPORT_STATSAVE; i++) {
                 SPRINTF(buf, xmenu_statsave, i);                  wsprintf(buf, xmenu_statsave, i);
                 AppendMenu(hSubMenu, MF_STRING, IDM_FLAGSAVE + i, buf);                  AppendMenu(hSubMenu, MF_STRING, IDM_FLAGSAVE + i, buf);
         }          }
         AppendMenu(hSubMenu, MF_MENUBARBREAK, 0, NULL);          AppendMenu(hSubMenu, MF_MENUBARBREAK, 0, NULL);
         for (i=0; i<SUPPORT_STATSAVE; i++) {          for (i=0; i<SUPPORT_STATSAVE; i++) {
                 SPRINTF(buf, xmenu_statload, i);                  wsprintf(buf, xmenu_statload, i);
                 AppendMenu(hSubMenu, MF_STRING, IDM_FLAGLOAD + i, buf);                  AppendMenu(hSubMenu, MF_STRING, IDM_FLAGLOAD + i, buf);
         }          }
         InsertMenu(hMenu, pos, MF_BYPOSITION | MF_POPUP,          InsertMenu(hMenu, pos, MF_BYPOSITION | MF_POPUP,
Line 262  void xmenu_initialize(void) { Line 351  void xmenu_initialize(void) {
   
         HMENU   hMenu;          HMENU   hMenu;
         HMENU   hSubMenu;          HMENU   hSubMenu;
           UINT    subpos;
         UINT    i;          UINT    i;
   
         hMenu = np2class_gethmenu(hWndMain);          hMenu = np2class_gethmenu(hWndMain);
         if (np2oscfg.I286SAVE) {          if (np2oscfg.I286SAVE) {
                 hSubMenu = GetSubMenu(hMenu, 4);                  hSubMenu = GetSubMenu(hMenu, 3);
                 insertresmenu(hSubMenu, 10, MF_BYPOSITION | MF_STRING,                  insertresmenu(hSubMenu, 10, MF_BYPOSITION | MF_STRING,
                                                                                                 IDM_I286SAVE, IDS_I286SAVE);                                                                                                  IDM_CPUSAVE, IDS_CPUSAVE);
         }          }
   
   #if defined(SUPPORT_PX)
           hSubMenu = GetSubMenu(hMenu, 2);
           hSubMenu = GetSubMenu(hSubMenu, 1);
           insertresmenu(hSubMenu, 14, MF_BYPOSITION | MF_STRING,
                                                                                                   IDM_PX1, IDS_PX1);
           insertresmenu(hSubMenu, 15, MF_BYPOSITION | MF_STRING,
                                                                                                   IDM_PX2, IDS_PX2);
   #endif
   
 #if defined(SUPPORT_WAVEREC)  #if defined(SUPPORT_WAVEREC)
         hSubMenu = GetSubMenu(hMenu, 4);          hSubMenu = GetSubMenu(hMenu, 3);
         insertresmenu(hSubMenu, 2, MF_BYPOSITION | MF_STRING,          insertresmenu(hSubMenu, 2, MF_BYPOSITION | MF_STRING,
                                                                                                 IDM_WAVEREC, IDS_WAVEREC);                                                                                                  IDM_WAVEREC, IDS_WAVEREC);
 #endif  #endif
   
           hSubMenu = CreatePopupMenu();
           subpos = 0;
   #if defined(SUPPORT_IDEIO)
           for (i=0; i<NELEMENTS(side); i++) {
                   insdiskmenu(hSubMenu, subpos++, side + i);
           }
   #else
           for (i=0; i<NELEMENTS(ssasi); i++) {
                   insdiskmenu(hSubMenu, subpos++, ssasi + i);
           }
   #endif
 #if defined(SUPPORT_SCSI)  #if defined(SUPPORT_SCSI)
         hSubMenu = GetSubMenu(hMenu, 1);  
         AppendMenu(hSubMenu, MF_SEPARATOR, 0, NULL);          AppendMenu(hSubMenu, MF_SEPARATOR, 0, NULL);
         for (i=0; i<4; i++) {          subpos++;
                 insdiskmenu(hSubMenu, i + 3, scsimenu + i);          for (i=0; i<NELEMENTS(sscsi); i++) {
                   insdiskmenu(hSubMenu, subpos++, sscsi + i);
         }          }
 #endif  #endif
           insertresmenu(hMenu, 1, MF_BYPOSITION | MF_POPUP,
                                                                                                   (UINT32)hSubMenu, IDS_HDD);
   
         for (i=4; i--;) {          for (i=4; i>0;) {
                   i--;
                 if (np2cfg.fddequip & (1 << i)) {                  if (np2cfg.fddequip & (1 << i)) {
                         insdiskmenu(hMenu, 1, fddmenu + i);                          insdiskmenu(hMenu, 1, fddmenu + i);
                 }                  }
Line 423  void xmenu_setsound(UINT8 value) { Line 537  void xmenu_setsound(UINT8 value) {
         CheckMenuItem(hmenu, IDM_SPEAKBOARD, MFCHECK(value == 0x20));          CheckMenuItem(hmenu, IDM_SPEAKBOARD, MFCHECK(value == 0x20));
         CheckMenuItem(hmenu, IDM_SPARKBOARD, MFCHECK(value == 0x40));          CheckMenuItem(hmenu, IDM_SPARKBOARD, MFCHECK(value == 0x40));
         CheckMenuItem(hmenu, IDM_AMD98, MFCHECK(value == 0x80));          CheckMenuItem(hmenu, IDM_AMD98, MFCHECK(value == 0x80));
   #if defined(SUPPORT_PX)
           CheckMenuItem(hmenu, IDM_PX1, MFCHECK(value == 0x30));
           CheckMenuItem(hmenu, IDM_PX2, MFCHECK(value == 0x50));
   #endif  // defined(SUPPORT_PX)
 }  }
   
 void xmenu_setjastsound(UINT8 value) {  void xmenu_setjastsound(UINT8 value) {

Removed from v.1.19  
changed lines
  Added in v.1.27


RetroPC.NET-CVS <cvs@retropc.net>