project64/Source/Project64/User Interface/Menu Class.cpp

79 lines
1.9 KiB
C++

#include "..\\User Interface.h"
#include <windows.h>
CBaseMenu::CBaseMenu () :
m_MenuHandle((MENU_HANDLE)CreateMenu())
{
}
bool CBaseMenu::AddMenu(MENU_HANDLE hMenu, MenuItemList Items ) {
if (Items.begin() == Items.end()) { return false; }
UINT ItemID, uFlags;
stdstr Text;
stdstr String;
for (MenuItemList::iterator MenuItem = Items.begin(); MenuItem != Items.end(); MenuItem++) {
ItemID = MenuItem->ID;
uFlags = MF_STRING;
Text = _Lang->GetString(MenuItem->Title).c_str();
if (MenuItem->Title == EMPTY_STRING && MenuItem->ManualString.length() > 0) {
Text = MenuItem->ManualString;
}
if (ItemID == SPLITER) {
uFlags |= MF_SEPARATOR;
}
if (MenuItem->ItemTicked) {
uFlags |= MFS_CHECKED;
}
if (MenuItem->ItemEnabled) {
uFlags |= MFS_ENABLED;
} else {
uFlags |= MFS_DISABLED;
}
MenuItemList * SubMenu = (MenuItemList *)MenuItem->SubMenu;
if (ItemID == SUB_MENU && HIWORD(SubMenu) != 0 && (SubMenu->begin() != SubMenu->end())) {
ItemID = (UINT)CreatePopupMenu();
uFlags |= MF_POPUP;
AddMenu((MENU_HANDLE)ItemID,*SubMenu);
}
if (ItemID == ID_PLUGIN_MENU)
{
ItemID = (UINT)MenuItem->SubMenu;
uFlags |= MF_POPUP;
MENUITEMINFO lpmii;
lpmii.cbSize = sizeof(MENUITEMINFO);
lpmii.fMask = MIIM_STATE;
lpmii.fState = 0;
SetMenuItemInfo((HMENU)ItemID, (DWORD)MenuItem->SubMenu, FALSE,&lpmii);
}
if (MenuItem->ShotCut.empty() == false) {
String = Text;
String += "\t";
String += MenuItem->ShotCut;
Text = String;
}
AppendMenu((HMENU)hMenu,uFlags,ItemID,Text.c_str());
}
return true;
}
/*void MENU_SHORT_CUT::RemoveItem ( MENU_SHORT_CUT_KEY * ShortCut )
{
for (SHORTCUT_KEY_LIST::iterator item = m_AccelList.begin(); item != m_AccelList.end(); item++) {
if (ShortCut == &*item) {
m_AccelList.erase(item);
return;
}
}
}*/