遍历所有菜单项

在OnInitDialog中,可以调用 InitMenu( GetMenu()),从配置文件中读取菜单项,或者调用 ExportMenu(GetMenu())导出菜单内容

//加载菜单实现菜单的多语言切换 void InitMenu( CMenu *menu ) { if ( menu==NULL || ( !::IsMenu(menu->m_hMenu))) return ; CString szText; int nCount,subCount, id; nCount = menu->GetMenuItemCount(); //获取该层菜单数 for(int i=0;i<nCount;i++) //遍历所有菜单项 { //查看子菜单 如果有子菜单,返回0,否则返回子菜单项数目,如果是子菜单项,返回资源中的菜单COMMAND ID id= menu->GetMenuItemID(i); //获取菜单文字 menu->GetMenuString (i, szText, MF_BYPOSITION); if ( szText!=_T("")) { //修改菜单文本 menu->ModifyMenu(i, MF_BYPOSITION|MF_STRING,id, GetLanguageString( _T("MENU"), szText )); //GetLanguageString函数根据配置,返回菜单对应的中英文信息 } if ( id==-1 ) { subCount =menu->GetSubMenu(i)->GetMenuItemCount(); if ( subCount>0 ) InitMenu( menu->GetSubMenu(i)); } } } //将所有的菜单文本导出 void ExportMenu(CMenu*menu, int iDlgID ) { if ( menu==NULL || ( !::IsMenu(menu->m_hMenu))) return ; CString szText, szSection, szKeyName, szKeyValue; int nCount,subCount, id; szSection.Format(_T("DLG_%d"),iDlgID); nCount= menu->GetMenuItemCount(); //获取该层菜单数 for(int i=0;i<nCount;i++ ) //遍历所有菜单项 { menu->GetMenuString (i, szText, MF_BYPOSITION);//获取菜单文字 if ( szText!=_T("")) { //导出到配置文件中 szKeyName.Format(_T("MENU_%s"),szText); szKeyValue.Format(_T("%s"),szText); g_CEIniFile.CEWriteIniFile(szSection,szKeyName,szKeyValue); } //查看是否有子菜单项 id= menu->GetMenuItemID(i); if ( id==-1 ) { subCount =menu->GetSubMenu(i)->GetMenuItemCount(); if ( subCount>0 ) ExportMenu( menu->GetSubMenu(i), iDlgID); } } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值