VC2008中如何动态改变菜单的显示文本! 我用GetMenu(),返回的是空,vc2008 和vc6.0不一样吗?怎么获取不了呢?有没有什么好的解决办法! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有代码 现在就是 在 frame类 里getmenu 返回的 为空 好像 vc2008 用的是CMFCMenubar , 怎么用这个改变菜单的文本啊!有没有用过的! http://topic.csdn.net/u/20101210/11/fed26155-ae04-4e1b-827d-7e2c8036e4a4.html2楼... http://topic.csdn.net/u/20110311/08/c31cba01-5fdd-4dfb-ab3e-c3d4062491d8.html参考上面这个VS2008 单文档菜单问题的 帖子 我用 VS 2010 新建了个单文档的工程,第1步的项目类型里选择"标准MFC”在 后面的 命令栏里我选择了"使用经典菜单",在主菜单里,我增加了一个 ID为ID_32771 的子菜单,在ID_32771 这个子菜单的响应函数里,依次修改其它所有主菜单下面的各个子菜单的名字为“修改的菜单名字1”、“修改的菜单名字2”,、“修改的菜单名字3”,、、、、可以实现,代码如下,void C修改菜单View::On32771(){ // TODO: 在此添加命令处理程序代码 //动态修改菜单: // Get the Main Menu CMenu* pMainMenu = AfxGetMainWnd()->GetMenu(); CMenu* pSubMenu = NULL; CString menustr,numstr; int i=0,j=0,k=0; for (i=0; i<(int)pMainMenu->GetMenuItemCount(); i++) { pSubMenu = pMainMenu->GetSubMenu(i); if (pSubMenu) { for (int j=0;j<pSubMenu->GetMenuItemCount();j++) { k++; numstr.Format(_T("%d"),k); pSubMenu->GetMenuStringW(j,menustr,MF_BYPOSITION);//通过 序号来获取 MessageBox(menustr,_T("修改前的菜单内容:"),MB_OK); menustr=_T("修改的菜单名字")+numstr; pSubMenu->ModifyMenuW(j,MF_BYPOSITION,0,menustr); MessageBox(menustr,_T("修改后的菜单内容:"),MB_OK); } } }}楼主可以试一下在 VC2008 里可否实现,我觉得应该是可以的。 BOOL ModifyMenu( UINT nPosition, UINT nFlags, UINT_PTR nIDNewItem = 0, LPCTSTR lpszNewItem = NULL ); 这样做应该可以吧: CMenu m_Menu; m_Menu.CreatePopupMenu(); GetParent()->GetMenu()->AppendMenu(MF_POPUP,(UINT)m_Menu.m_hMenu,"sunxin"); GetParent()->DrawMenuBar(); 如何取得FTP服务器下指定目录中的所有文件的名字 怎么在tab control子页面中使用tab control 迷茫了 不知道为什么会报错,请教高手! 如何判断设备(比如USB端口)是否被启用 虽然很多人都问过error link 2005.. 把一个对话框的一部分拖出父窗口和拖出桌面,系统对它的处理有什么不同? 消除马赛克? 急死了。关于zip 怎么实现vc编写的控件在VB中实现imagelist的接口 求助!急需解决Visual Studio 2008 单文档 动态添加菜单冲突问题! 怎么在VC中实时显示进度条
2楼...
void C修改菜单View::On32771()
{
// TODO: 在此添加命令处理程序代码
//动态修改菜单:
// Get the Main Menu
CMenu* pMainMenu = AfxGetMainWnd()->GetMenu();
CMenu* pSubMenu = NULL;
CString menustr,numstr;
int i=0,j=0,k=0;
for (i=0; i<(int)pMainMenu->GetMenuItemCount(); i++)
{
pSubMenu = pMainMenu->GetSubMenu(i);
if (pSubMenu)
{
for (int j=0;j<pSubMenu->GetMenuItemCount();j++)
{
k++;
numstr.Format(_T("%d"),k);
pSubMenu->GetMenuStringW(j,menustr,MF_BYPOSITION);//通过 序号来获取
MessageBox(menustr,_T("修改前的菜单内容:"),MB_OK);
menustr=_T("修改的菜单名字")+numstr;
pSubMenu->ModifyMenuW(j,MF_BYPOSITION,0,menustr);
MessageBox(menustr,_T("修改后的菜单内容:"),MB_OK);
}
}
}
}楼主可以试一下在 VC2008 里可否实现,我觉得应该是可以的。
UINT nPosition,
UINT nFlags,
UINT_PTR nIDNewItem = 0,
LPCTSTR lpszNewItem = NULL
);
CMenu m_Menu;
m_Menu.CreatePopupMenu();
GetParent()->GetMenu()->AppendMenu(MF_POPUP,(UINT)m_Menu.m_hMenu,"sunxin");
GetParent()->DrawMenuBar();