VS2010中多文档怎么修改菜单文本 我找了好几天资料,也看到CSDN上的高手说什么VS2010用了BCG,但就是没有找到例子...不知道怎么搞,VC6里能修改,2010中我不知道怎么改高手,help。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接在资源改?还是说动态修改,动态改的话,ON_UPDATE_COMMAND_UI() pCmd->SetText()应该可以,可以试一下 动态修改,因为是要实现一个语言切换的功能,不可能每个菜单按钮都弄一个ON_UPDATE吧,不知道多文档菜单的怎么弄求高手 void SetMenu(BOOL bVal){ CMenu *pMenu = CMenu::FromHandle(m_wndMenuBar.GetHMenu()); CString strConnectTitle = _T("修改名称"); pMenu->ModifyMenu(ID_CON_CONNECT, MF_BYCOMMAND, ID_CON_CONNECT, strConnectTitle); m_wndMenuBar.CreateFromMenu(pMenu->GetSafeHmenu(), bVal, bVal);}最后一句很关键 其他的操作和经典菜单一样 2010菜单与2005或者vc6不一样 谢谢QiuXin425,多文档中第一个菜单可以获得,但是新建文档之后,另一个菜单呢,怎么取得然后用来修改文本 这个m_wndMenuBar类里面应该有系统菜单和当前菜单的 再说新建文档的菜单id应该相同的 是这样没错,但是如果要做成多语言切换的话,我有个地方解决不了,比如刚开始启动,是英文菜单,新建一个文档后,要怎么获得新菜单,然后修改文本,必须得在新建完,菜单显示出来时一并把文本改成英文的,如果是在用的过程中,那就可以直接获得m_wndMenuBar,然后来用改动了 我曾经也想创建多语言切换,但子窗口一出来菜单就会是开始的默认状态,这个我一直没有解决。我感觉在程序启动的doc里面就把菜单和窗口关联了。要是用编码修改好像菜单就会闪烁不同的语言。最后我做的语言包。 悲剧...我看到有个帖子在子框架的OnCreate函数中,CMenu* pMenu = CMenu::FromHandle(m_hMenuShared);这时得到的指针应该就是新的菜单了,因为我尝试得到他菜单个数,个数确实是没错,但是又是改不了,把CMFCToolBar那个对象去掉就可以改了...qiuxin425...怎么回事唉该网址如下http://hi.baidu.com/kiropower/blog/item/1c71cc7ba267bee70bd1870c.html 你要是非要用2010来做的话 在创建工程时选择经典菜单就可以啦 别用BCG技术 这个现在资料太少 CString Str; CBCGPToolbarButton *pButton = NULL; int Index = 0; do { pButton = m_wndMenuBar.GetMenuItem(Index); if(pButton) { //由于无ID,就只能按索引来修改了,索引为0的菜单项在单文档中是"文件"菜单项,索引为1的菜单项在 switch (Index) { case 0: Str.LoadStringA(LngIndex+101); pButton->m_strText = Str; break; case 1: Str.LoadStringA(LngIndex+201); pButton->m_strText = Str; break; case 2: Str.LoadStringA(LngIndex+301); pButton->m_strText = Str; break; case 3: Str.LoadStringA(LngIndex+401); pButton->m_strText = Str; break; case 4: Str.LoadStringA(LngIndex+499); pButton->m_strText = Str; break; case 5: Str.LoadStringA(LngIndex+601); pButton->m_strText = Str; break; case 6: Str.LoadStringA(LngIndex+701); pButton->m_strText = Str; break; break; case 7: Str.LoadStringA(LngIndex+801); pButton->m_strText = Str; break; } } ++Index; } while( pButton != NULL ); DrawMenuBar(); 1、2、3....7分别对应主菜单的'文件'、‘编辑’、‘视图’、‘工具’、‘帮助’等等,这个方法可以修改主菜单的语言(如英文、中文、瑞典文等等),LngIndex是个全局变量,对应于StringTable中字符串的索引,设置它就可以实现多国语言版本软件 CMenu *pMenu = CMenu::FromHandle(m_wndMenuBar.GetHMenu())无法获取到啊 关于汉字编码范围 如何编程对word模板进行修改 两年没来过了 如何让 Cedit 自动的每10个字符换行? 删除指针问题! 有谁可以详细解释一下ANSI字符和Unicode字符 简单MAPI中MAPIReadMail函数读取邮件后,怎么取得邮件里的附件? MFC listControl 鼠标经过某一行动态高亮这一行,怎么实现? 怎样将默认焦点设置在LIST CONTROL的第一项选择项上?setfocus()不起作用! ASP中调用COM组件返回一二进制文件内容,如何定义接口? MFC SetWindowText(...)造成的死循环 vs2010怎么用LoadImage装载BMP图片
{
CMenu *pMenu = CMenu::FromHandle(m_wndMenuBar.GetHMenu());
CString strConnectTitle = _T("修改名称");
pMenu->ModifyMenu(ID_CON_CONNECT, MF_BYCOMMAND, ID_CON_CONNECT, strConnectTitle);
m_wndMenuBar.CreateFromMenu(pMenu->GetSafeHmenu(), bVal, bVal);
}最后一句很关键 其他的操作和经典菜单一样 2010菜单与2005或者vc6不一样
这个m_wndMenuBar类里面应该有系统菜单和当前菜单的 再说新建文档的菜单id应该相同的
我曾经也想创建多语言切换,但子窗口一出来菜单就会是开始的默认状态,这个我一直没有解决。我感觉在程序启动的doc里面就把菜单和窗口关联了。要是用编码修改好像菜单就会闪烁不同的语言。
最后我做的语言包。
我看到有个帖子
在子框架的OnCreate函数中,
CMenu* pMenu = CMenu::FromHandle(m_hMenuShared);
这时得到的指针应该就是新的菜单了,因为我尝试得到他菜单个数,个数确实是没错,但是又是改不了,把CMFCToolBar那个对象去掉就可以改了...
qiuxin425...怎么回事唉该网址如下
http://hi.baidu.com/kiropower/blog/item/1c71cc7ba267bee70bd1870c.html
你要是非要用2010来做的话 在创建工程时选择经典菜单就可以啦 别用BCG技术 这个现在资料太少
CBCGPToolbarButton *pButton = NULL;
int Index = 0;
do
{
pButton = m_wndMenuBar.GetMenuItem(Index);
if(pButton)
{
//由于无ID,就只能按索引来修改了,索引为0的菜单项在单文档中是"文件"菜单项,索引为1的菜单项在
switch (Index)
{
case 0:
Str.LoadStringA(LngIndex+101);
pButton->m_strText = Str;
break;
case 1:
Str.LoadStringA(LngIndex+201);
pButton->m_strText = Str;
break;
case 2:
Str.LoadStringA(LngIndex+301);
pButton->m_strText = Str;
break;
case 3:
Str.LoadStringA(LngIndex+401);
pButton->m_strText = Str;
break;
case 4:
Str.LoadStringA(LngIndex+499);
pButton->m_strText = Str;
break;
case 5:
Str.LoadStringA(LngIndex+601);
pButton->m_strText = Str;
break;
case 6:
Str.LoadStringA(LngIndex+701);
pButton->m_strText = Str;
break;
break;
case 7:
Str.LoadStringA(LngIndex+801);
pButton->m_strText = Str;
break;
}
}
++Index;
}
while( pButton != NULL );
DrawMenuBar();
CMenu *pMenu = CMenu::FromHandle(m_wndMenuBar.GetHMenu())无法获取到啊