|
|
| version 1.30, 2007/12/17 14:52:54 | version 1.31, 2007/12/28 20:36:39 |
|---|---|
| Line 7 | Line 7 |
| #include "pccore.h" | #include "pccore.h" |
| BOOL menu_searchmenu(HMENU hMenu, UINT uID, HMENU *phmenuRet, int *pnPos) | |
| #define MFCHECK(a) ((a)?MF_CHECKED:MF_UNCHECKED) | |
| static BOOL searchchildmenu(HMENU hMenu, UINT uID, | |
| HMENU *phmenuRet, UINT *puPos) | |
| { | { |
| UINT nCount; | int nCount; |
| UINT i; | int i; |
| MENUITEMINFO mii; | MENUITEMINFO mii; |
| nCount = GetMenuItemCount(hMenu); | nCount = GetMenuItemCount(hMenu); |
| Line 31 static BOOL searchchildmenu(HMENU hMenu, | Line 27 static BOOL searchchildmenu(HMENU hMenu, |
| { | { |
| *phmenuRet = hMenu; | *phmenuRet = hMenu; |
| } | } |
| if (puPos) | if (pnPos) |
| { | { |
| *puPos = i; | *pnPos = i; |
| } | } |
| return TRUE; | return TRUE; |
| } | } |
| else if ((mii.hSubMenu) && | else if ((mii.hSubMenu) && |
| (searchchildmenu(mii.hSubMenu, uID, phmenuRet, puPos))) | (menu_searchmenu(mii.hSubMenu, uID, phmenuRet, pnPos))) |
| { | { |
| return TRUE; | return TRUE; |
| } | } |
| Line 47 static BOOL searchchildmenu(HMENU hMenu, | Line 43 static BOOL searchchildmenu(HMENU hMenu, |
| return FALSE; | return FALSE; |
| } | } |
| #if 0 | |
| static BOOL searchsubmenu(HMENU hMenu, HMENU hmenuTarget, | static BOOL searchsubmenu(HMENU hMenu, HMENU hmenuTarget, |
| HMENU *phmenuRet, UINT *puPos) | HMENU *phmenuRet, int *pnPos) |
| { | { |
| UINT nCount; | int nCount; |
| UINT i; | int i; |
| MENUITEMINFO mii; | MENUITEMINFO mii; |
| nCount = GetMenuItemCount(hMenu); | nCount = GetMenuItemCount(hMenu); |
| Line 68 static BOOL searchsubmenu(HMENU hMenu, H | Line 65 static BOOL searchsubmenu(HMENU hMenu, H |
| { | { |
| *phmenuRet = hMenu; | *phmenuRet = hMenu; |
| } | } |
| if (puPos) | if (pnPos) |
| { | { |
| *puPos = i; | *pnPos = i; |
| } | } |
| return TRUE; | return TRUE; |
| } | } |
| if (searchsubmenu(mii.hSubMenu, hmenuTarget, phmenuRet, puPos)) | if (searchsubmenu(mii.hSubMenu, hmenuTarget, phmenuRet, pnPos)) |
| { | { |
| return TRUE; | return TRUE; |
| } | } |
| Line 82 static BOOL searchsubmenu(HMENU hMenu, H | Line 79 static BOOL searchsubmenu(HMENU hMenu, H |
| } | } |
| return FALSE; | return FALSE; |
| } | } |
| #endif // 0 | |
| // これってAPIあるのか? | // これってAPIあるのか? |
| static UINT addmenu(HMENU hMenu, UINT uPos, HMENU hmenuAdd, BOOL bSeparator) | int menu_addmenu(HMENU hMenu, int nPos, HMENU hmenuAdd, BOOL bSeparator) |
| { | { |
| UINT uCount; | int nCount; |
| UINT uAdded; | int nAdded; |
| UINT i; | int i; |
| MENUITEMINFO mii; | MENUITEMINFO mii; |
| TCHAR szString[128]; | TCHAR szString[128]; |
| HMENU hmenuSub; | HMENU hmenuSub; |
| uCount = GetMenuItemCount(hmenuAdd); | if (nPos < 0) |
| uAdded = 0; | { |
| for (i=0; i<uCount; i++) | nPos = GetMenuItemCount(hMenu); |
| } | |
| nCount = GetMenuItemCount(hmenuAdd); | |
| nAdded = 0; | |
| for (i=0; i<nCount; i++) | |
| { | { |
| ZeroMemory(&mii, sizeof(mii)); | ZeroMemory(&mii, sizeof(mii)); |
| mii.cbSize = sizeof(mii); | mii.cbSize = sizeof(mii); |
| Line 108 static UINT addmenu(HMENU hMenu, UINT uP | Line 110 static UINT addmenu(HMENU hMenu, UINT uP |
| if (mii.hSubMenu) | if (mii.hSubMenu) |
| { | { |
| hmenuSub = CreatePopupMenu(); | hmenuSub = CreatePopupMenu(); |
| (void)addmenu(hmenuSub, 0, mii.hSubMenu, FALSE); | (void)menu_addmenu(hmenuSub, 0, mii.hSubMenu, FALSE); |
| mii.hSubMenu = hmenuSub; | mii.hSubMenu = hmenuSub; |
| } | } |
| if (bSeparator) | if (bSeparator) |
| { | { |
| bSeparator = FALSE; | bSeparator = FALSE; |
| InsertMenu(hMenu, uPos + uAdded, MF_SEPARATOR, 0, NULL); | InsertMenu(hMenu, nPos + nAdded, MF_BYPOSITION | MF_SEPARATOR, |
| uAdded++; | 0, NULL); |
| nAdded++; | |
| } | } |
| InsertMenuItem(hMenu, uPos + uAdded, TRUE, &mii); | InsertMenuItem(hMenu, nPos + nAdded, TRUE, &mii); |
| uAdded++; | nAdded++; |
| } | } |
| } | } |
| return uAdded; | return nAdded; |
| } | } |
| static UINT addmenures(HMENU hMenu, UINT uPos, UINT uID, BOOL bSeparator) | int menu_addmenures(HMENU hMenu, int nPos, UINT uID, BOOL bSeparator) |
| { | { |
| UINT uCount; | int nCount; |
| HMENU hmenuAdd; | HMENU hmenuAdd; |
| uCount = 0; | nCount = 0; |
| hmenuAdd = LoadMenu(g_hInstance, MAKEINTRESOURCE(uID)); | hmenuAdd = LoadMenu(g_hInstance, MAKEINTRESOURCE(uID)); |
| if (hmenuAdd) | if (hmenuAdd) |
| { | { |
| uCount = addmenu(hMenu, uPos, hmenuAdd, bSeparator); | nCount = menu_addmenu(hMenu, nPos, hmenuAdd, bSeparator); |
| DestroyMenu(hmenuAdd); | DestroyMenu(hmenuAdd); |
| } | } |
| return uCount; | return nCount; |
| } | } |
| static UINT addmenubyid(HMENU hMenu, UINT uByID, UINT uID) | int menu_addmenubyid(HMENU hMenu, UINT uByID, UINT uID) |
| { | { |
| UINT uCount; | int nCount; |
| HMENU hmenuSub; | HMENU hmenuSub; |
| UINT uSubPos; | int nSubPos; |
| uCount = 0; | nCount = 0; |
| if (searchchildmenu(hMenu, uByID, &hmenuSub, &uSubPos)) | if (menu_searchmenu(hMenu, uByID, &hmenuSub, &nSubPos)) |
| { | { |
| uCount = addmenures(hmenuSub, uSubPos + 1, uID, FALSE); | nCount = menu_addmenures(hmenuSub, nSubPos + 1, uID, FALSE); |
| } | } |
| return uCount; | return nCount; |
| } | } |
| BOOL menu_insertmenures(HMENU hMenu, int nPosition, UINT uFlags, | |
| static void insertresmenu(HMENU hMenu, UINT uPosition, UINT uFlags, | UINT_PTR uIDNewItem, UINT uID) |
| UINT_PTR uIDNewItem, UINT uID) | |
| { | { |
| BOOL bResult; | |
| TCHAR szString[128]; | TCHAR szString[128]; |
| if (LoadString(g_hInstance, uID, szString, NELEMENTS(szString))) | bResult = FALSE; |
| if (loadstringresource(uID, szString, NELEMENTS(szString))) | |
| { | { |
| InsertMenu(hMenu, uPosition, uFlags, uIDNewItem, szString); | bResult = InsertMenu(hMenu, nPosition, uFlags, uIDNewItem, szString); |
| } | } |
| return bResult; | |
| } | } |
| void menu_addmenubar(HMENU popup, HMENU menubar) | void menu_addmenubar(HMENU popup, HMENU menubar) |
| { | { |
| (void)addmenu(popup, 0, menubar, FALSE); | (void)menu_addmenu(popup, 0, menubar, FALSE); |
| } | } |
| Line 182 void sysmenu_initialize(void) | Line 187 void sysmenu_initialize(void) |
| uPos = 0; | uPos = 0; |
| #if defined(SUPPORT_KEYDISP) | #if defined(SUPPORT_KEYDISP) |
| uPos += addmenures(hMenu, uPos, IDR_SYSKEYDISP, FALSE); | uPos += menu_addmenures(hMenu, uPos, IDR_SYSKEYDISP, FALSE); |
| #endif | #endif |
| #if defined(SUPPORT_SOFTKBD) | #if defined(SUPPORT_SOFTKBD) |
| uPos += addmenures(hMenu, uPos, IDR_SYSSOFTKBD, FALSE); | uPos += menu_addmenures(hMenu, uPos, IDR_SYSSOFTKBD, FALSE); |
| #endif | #endif |
| uPos += addmenures(hMenu, uPos, IDR_SYS, FALSE); | uPos += menu_addmenures(hMenu, uPos, IDR_SYS, FALSE); |
| if (np2oscfg.I286SAVE) | if (np2oscfg.I286SAVE) |
| { | { |
| #if defined(CPUCORE_IA32) && defined(SUPPORT_MEMDBG32) | #if defined(CPUCORE_IA32) && defined(SUPPORT_MEMDBG32) |
| uPos += addmenures(hMenu, uPos, IDR_SYSDEBUG32, FALSE); | uPos += menu_addmenures(hMenu, uPos, IDR_SYSDEBUG32, FALSE); |
| #endif | #endif |
| uPos += addmenures(hMenu, uPos, IDR_SYSDEBUG, FALSE); | uPos += menu_addmenures(hMenu, uPos, IDR_SYSDEBUG, FALSE); |
| } | } |
| } | } |
| Line 267 void sysmenu_setscrnmul(UINT8 value) { | Line 272 void sysmenu_setscrnmul(UINT8 value) { |
| void xmenu_initialize(void) | void xmenu_initialize(void) |
| { | { |
| HMENU hMenu; | HMENU hMenu; |
| UINT uPos; | int nPos; |
| HMENU hmenuSub; | HMENU hmenuSub; |
| UINT i; | UINT i; |
| UINT uSubPos; | int nSubPos; |
| hMenu = np2class_gethmenu(g_hWndMain); | hMenu = np2class_gethmenu(g_hWndMain); |
| uPos = 1; | nPos = 1; |
| #if defined(SUPPORT_STATSAVE) | #if defined(SUPPORT_STATSAVE) |
| if (np2oscfg.statsave) | if (np2oscfg.statsave) |
| { | { |
| uPos += addmenures(hMenu, uPos, IDR_STAT, FALSE); | nPos += menu_addmenures(hMenu, nPos, IDR_STAT, FALSE); |
| } | } |
| #endif | #endif |
| Line 286 void xmenu_initialize(void) | Line 291 void xmenu_initialize(void) |
| { | { |
| if (np2cfg.fddequip & (1 << i)) | if (np2cfg.fddequip & (1 << i)) |
| { | { |
| uPos += addmenures(hMenu, uPos, IDR_FDD1MENU + i, FALSE); | nPos += menu_addmenures(hMenu, nPos, IDR_FDD1MENU + i, FALSE); |
| } | } |
| } | } |
| hmenuSub = CreatePopupMenu(); | hmenuSub = CreatePopupMenu(); |
| if (hmenuSub) | if (hmenuSub) |
| { | { |
| uSubPos = 0; | nSubPos = 0; |
| #if defined(SUPPORT_IDEIO) | #if defined(SUPPORT_IDEIO) |
| uSubPos += addmenures(hmenuSub, uSubPos, IDR_IDEMENU, FALSE); | nSubPos += menu_addmenures(hmenuSub, nSubPos, IDR_IDEMENU, FALSE); |
| #else | #else |
| uSubPos += addmenures(hmenuSub, uSubPos, IDR_SASIMENU, FALSE); | nSubPos += menu_addmenures(hmenuSub, nSubPos, IDR_SASIMENU, FALSE); |
| #endif | #endif |
| #if defined(SUPPORT_SCSI) | #if defined(SUPPORT_SCSI) |
| uSubPos += addmenures(hmenuSub, uSubPos, IDR_SCSIMENU, TRUE); | nSubPos += menu_addmenures(hmenuSub, nSubPos, IDR_SCSIMENU, TRUE); |
| #endif | #endif |
| insertresmenu(hMenu, uPos, MF_BYPOSITION | MF_POPUP, | menu_insertmenures(hMenu, nPos, MF_BYPOSITION | MF_POPUP, |
| (UINT_PTR)hmenuSub, IDS_HDD); | (UINT_PTR)hmenuSub, IDS_HDD); |
| } | } |
| #if defined(SUPPORT_PX) | #if defined(SUPPORT_PX) |
| (void)addmenubyid(hMenu, IDM_SPARKBOARD, IDR_PXMENU); | (void)menu_addmenubyid(hMenu, IDM_SPARKBOARD, IDR_PXMENU); |
| #endif | #endif |
| #if defined(SUPPORT_WAVEREC) | #if defined(SUPPORT_WAVEREC) |
| (void)addmenubyid(hMenu, IDM_S98LOGGING, IDR_WAVEREC); | (void)menu_addmenubyid(hMenu, IDM_S98LOGGING, IDR_WAVEREC); |
| #endif | #endif |
| if (np2oscfg.I286SAVE) | if (np2oscfg.I286SAVE) |
| { | { |
| #if defined(SUPPORT_PC9821) | #if defined(SUPPORT_PC9821) |
| (void)addmenubyid(hMenu, IDM_SSTP, IDR_CPUSAVE32); | (void)menu_addmenubyid(hMenu, IDM_SSTP, IDR_CPUSAVE32); |
| #else // defined(SUPPORT_PC9821) | #else // defined(SUPPORT_PC9821) |
| (void)addmenubyid(hMenu, IDM_SSTP, IDR_CPUSAVE16); | (void)menu_addmenubyid(hMenu, IDM_SSTP, IDR_CPUSAVE16); |
| #endif // defined(SUPPORT_PC9821) | #endif // defined(SUPPORT_PC9821) |
| } | } |
| } | } |