78 lines
1.9 KiB
C++
78 lines
1.9 KiB
C++
#include "stdafx.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;
|
|
}
|
|
}
|
|
|
|
}*/
|
|
|