CString cs = AfxGetApp()->GetProfileString("menu",strText,strText);//读取菜单项在ini里的文字
menu->ModifyMenu(i,MF_STRING|MF_BYPOSITION,id,cs);
// 下面这行可有可无,用这个免得我们手工编辑ini,发布的版本里注释掉
AfxGetApp()->WriteProfileString("menu",strText,cs);
CMenu* pSub = menu->GetSubMenu(i);
InitMenu(pSub);//递归,遍历popup菜单
}
else
{
CString strText;
menu->GetMenuString (i, strText, MF_BYPOSITION);
CString cs = AfxGetApp()->GetProfileString("menu",strText,strText);
menu->ModifyMenu(i,MF_STRING|MF_BYPOSITION,id,cs);
// 下面这行可有可无,用这个免得我们手工编辑ini,发布的版本里注释掉
AfxGetApp()->WriteProfileString("menu",strText,cs);
}
}
}
函数的调用:
在CMainFrame::OnCreate的中填加上
//multi language menu
CMenu* pMenu = GetMenu();
InitMenu(pMenu);
至此通过ini实现多语言菜单结束了。
具体可以看演示程序。
menu.ini中储存着每个菜单项的文字,你只需要修改值就可以改换菜单语言。
上面程序的不足:
没能修改Prompt的文字(就是在状态栏上显示的提示)
没能显示快捷键(菜单的为new\tCtrl N的话将不正常)
编辑特别推荐: