VC朋友么看一下,我已经得到系统菜单的句柄了,当没有修改成功他的菜单名称,这是怎么回事?
CMenu*pMenu=GetSystemMenu(FALSE);//pMenu不是NULLpMenu->ModifyMenu(ID_FILE_NEW,MF_BYCOMM...
CMenu *pMenu = GetSystemMenu(FALSE);//pMenu不是NULL
pMenu->ModifyMenu(ID_FILE_NEW, MF_BYCOMMAND , ID_FILE_NEW, strConnectTitle);//运行后没有修改
int型的,查看一下ID_FILE_NEW的项编号是多少
应该在哪查看?
2楼的方法还是不能修改
系统菜单是我创建MDI时自动生成的,里面有ID_FILE_NEW
4楼说的很好,我是在框架里面处理的,但CMenu *pMenu = this->GetMenu(); 还是空 展开
pMenu->ModifyMenu(ID_FILE_NEW, MF_BYCOMMAND , ID_FILE_NEW, strConnectTitle);//运行后没有修改
int型的,查看一下ID_FILE_NEW的项编号是多少
应该在哪查看?
2楼的方法还是不能修改
系统菜单是我创建MDI时自动生成的,里面有ID_FILE_NEW
4楼说的很好,我是在框架里面处理的,但CMenu *pMenu = this->GetMenu(); 还是空 展开
5个回答
展开全部
你的写法没错,句柄搞错了。告诉你是为什么,一个MDI程序有三个标准菜单:系统菜单,框架窗口菜单和子窗口菜单。当你没有选中任何窗口时,显示的是框架窗口的菜单。如果你选中了一个视图类,那就显示视图类的菜单。而且不同的视图类还可以有不同的菜单。你应该再看下MDI窗口相关的详细介绍。
1、系统菜单就是你在标题栏右击鼠标弹出来菜单,显然你这个调用不能成功,因为系统菜单里边没有ID_FILE_NEW;
2、如果修改框架窗口类的菜单,把下边的代码放倒CMainFrame的处理函数中。如果不是在它的处理函数中,需要先获取框架窗口类的指针再进行菜单操作:
CMenu *pMenu = GetMenu(); //CMenu *pMenu = this->GetMenu();
pMenu->ModifyMenu(ID_FILE_NEW, MF_BYCOMMAND , ID_FILE_NEW, strConnectTitle);
3、如果修改子窗口类的指针,按照上边的规则,把代码放到子窗口类中。
1、系统菜单就是你在标题栏右击鼠标弹出来菜单,显然你这个调用不能成功,因为系统菜单里边没有ID_FILE_NEW;
2、如果修改框架窗口类的菜单,把下边的代码放倒CMainFrame的处理函数中。如果不是在它的处理函数中,需要先获取框架窗口类的指针再进行菜单操作:
CMenu *pMenu = GetMenu(); //CMenu *pMenu = this->GetMenu();
pMenu->ModifyMenu(ID_FILE_NEW, MF_BYCOMMAND , ID_FILE_NEW, strConnectTitle);
3、如果修改子窗口类的指针,按照上边的规则,把代码放到子窗口类中。
展开全部
pMenu->ModifyMenu(ID_FILE_NEW, MF_BYCOMMAND , ID_FILE_NEW, strConnectTitle);//运行后没有修改
第一个ID_FILE_NEW,是不对的,应该改为被修改项的项编号(int型的,查看一下ID_FILE_NEW的项编号是多少)
第二个ID_FILE_NEW,是对的,这一项是被修改项的ID编号(ID编号:ID_FILE_NEW)
例如:
错误写法:pmenu1-> ModifyMenu(IDM_TEST2 ,MF_BYCOMMAND|MF_STRING, 0, (LPCTSTR)_T( "adsf "));
正确写法:pmenu1-> ModifyMenu(0 ,MF_BYCOMMAND|MF_STRING, IDM_TEST2, _T( "adsf "));
第一个ID_FILE_NEW,是不对的,应该改为被修改项的项编号(int型的,查看一下ID_FILE_NEW的项编号是多少)
第二个ID_FILE_NEW,是对的,这一项是被修改项的ID编号(ID编号:ID_FILE_NEW)
例如:
错误写法:pmenu1-> ModifyMenu(IDM_TEST2 ,MF_BYCOMMAND|MF_STRING, 0, (LPCTSTR)_T( "adsf "));
正确写法:pmenu1-> ModifyMenu(0 ,MF_BYCOMMAND|MF_STRING, IDM_TEST2, _T( "adsf "));
参考资料: sername
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
2012菜单结构不一样,那你是怎么获得框架窗口菜单句柄的呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ModifyMenu使用错误。
第二个参数应该为 MF_STRING | MF_BYCOMMAND ,
仔细看下MSDN吧。
第二个参数应该为 MF_STRING | MF_BYCOMMAND ,
仔细看下MSDN吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的 系统菜单 没有ID_FILE_NEW吧
GetSystemMenu是 获取你 程序系统菜单的,例如程序框架左上角图标处点左键的菜单
GetSystemMenu是 获取你 程序系统菜单的,例如程序框架左上角图标处点左键的菜单
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询