描述:
在网上找到了很多类似的贴子,但都是在原来的菜单中添加.我是想整个菜单均有程序自动生成,请问高手如何实现?
最好有源代码?这件事我已经试了好长的时间,请各位帮帮忙!!!!!!
解决方案1:
给你一个程序片断,你分析一下看.
for(cur = m_mapMenuItem.begin(); cur != m_mapMenuItem.end(); cur++)
{
if ((*cur).second.sMenuID[6] != _T('0'))
continue;
mtype = GetMenuType((*cur).second.sMenuID.c_str());
TString strMenuShowName;
switch ((MENU_LANGUAGE) m_nLanguage)
{
case FCMENU_CN:
strMenuShowName = (*cur).second.sCnName;
break;
// case FCMENU_EN:
// strMenuShowName = (*cur).second.sEnName;
// break;
default:
strMenuShowName = (*cur).second.sEnName;
break;
}
//快捷键
if ((*cur).second.sShortCutKey.length() > 0)
strMenuShowName += _T("\t") + (*cur).second.sShortCutKey;
switch(mtype)
{
case MENU_FIRST: //检查是否还有子菜单,如果没有,则创建MF_STRING
if(hasChild((*cur).second.sMenuID.c_str()))
{
hMainMenu = ::CreateMenu();
bFlag = pMenu->AppendMenu(MF_POPUP,(UINT)hMainMenu,strMenuShowName.c_str());
}
else
bFlag = pMenu->AppendMenu(MF_STRING,(*cur).second.nResID,strMenuShowName.c_str());
break;
case MENU_SECOND:
hSubMenu = ::CreateMenu();
::AppendMenu(hMainMenu,MF_POPUP,(UINT)hSubMenu,strMenuShowName.c_str());
break;
case MENU_THIRD:
if(hasParent((*cur).second.sMenuID.c_str())) hTmpMenu = hSubMenu;
else hTmpMenu = hMainMenu;
switch ((*cur).second.nMenuID)
{
case 0: //separator
::AppendMenu(hTmpMenu,MF_SEPARATOR,0,_T(""));
break;
default:
::AppendMenu(hTmpMenu,MF_STRING,(*cur).second.nResID,strMenuShowName.c_str());
break;
}
break;
}