首页
社区
课程
招聘
还是菜单变灰的问题,这次带源码,请高手帮助!
发表于: 2004-11-1 15:00 5079

还是菜单变灰的问题,这次带源码,请高手帮助!

2004-11-1 15:00
5079
痛苦的问题:如何使灰的菜单可用?向高手求助

手中的一个程序中的菜单是使用的用mfc重绘后的菜单.其菜单中有一重要的项是灰色的.想把它重设为可用的色彩.
这个程序用mfc写的,没有加密,也不需要注册.
改rc文件没有用.
下断点enablemenuitem,enablewindow没有用
..
搞了几天了头痛得很.请求高手帮助.重绘菜单有没有什么特点?
谢谢
===================
这次,我将一个vc写的菜单程序找到,并有所有的源代码,但还是没有头绪.可能是我的vc太菜,基本全忘了,请大家帮助.

所有的源代码在上面的包中,是一个很漂亮的menu菜单.请问它在哪儿把菜单变灰?
附件:NewMenu.rar

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (6)
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
2
可以请教firstrose试试,最近我认为他是这里比较牛的人,当然高人们最近都潜水去了。
2004-11-1 17:03
0
雪    币: 16
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
DialogDlg.cpp:

  VERIFY(m_newSubMenu.CreateMenu());
  m_newSubMenu.AppendMenu(MF_STRING,1000,/*灰色*/_T("111111111"));
  m_newSubMenu.AppendMenu(MF_STRING,1001,/*正常*/_T("222222222"));
  m_newSubMenu.AppendMenu(MF_STRING,1001,_T("3333333333"));
2004-11-1 17:06
0
雪    币: 16
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
AppendMenu函数的第二个参数是控制,它的那个CNewMenu重载了
2004-11-1 17:07
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不对吧.兄弟.
appendmenu被重载了三个形式.分别是:
CNewMenu::AppendMenu(UINT nFlags, UINT nIDNewItem, LPCTSTR lpszNewItem, int nIconNormal);
CNewMenu::AppendMenu(UINT nFlags, UINT nIDNewItem, LPCTSTR lpszNewItem, CImageList* il, int xoffset);
AppendMenu(UINT nFlags, UINT nIDNewItem, LPCTSTR lpszNewItem, CBitmap* bmp);
第二个参数为nIDNewItem,表示是对应的有消息映射的功能.
如果你把程序中的:
VERIFY(m_newSubMenu.CreateMenu());
  m_newSubMenu.AppendMenu(MF_STRING,1000,_T("Simple Test for submenu"));改为1001.
结果是打开一个已经有定义好的程序功能(表现为弹出一个菜单).
而不是只有一个正常显示的功能.换句话说,你给出的是一个偷换的功能而不是一个真正的正常标识.
2004-11-1 23:41
0
雪    币: 202
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不过你把一个问题给弄错了,那就是AppendMenu的第二个参数,那是用来处理消息的时候要用到的,最好不要直接用数字表示,换成用#define语句进行宏定义的值比较好,那样一来,就可以在各个地方进行实用,而且比数字更容易记,何乐而不为……
另外,在mfc7中,对于菜单的处理有一个规则,就是如果用户没有编写相应的菜单消息的处理函数/映射的话,框架会自动禁用相应的菜单。
另另外,在mfc7中,对于菜单和工具栏的禁用/启用,是通过ON_UPDATE_COMMAND_UI定义的消息映射进行相应的函数调用、消息处理的,具体可以参考应用程序对于cut/copy等的处理

以上仅供参考,如有错误之处,望指出,大家共同进步
2004-11-2 09:23
0
雪    币: 390
活跃值: (707)
能力值: ( LV12,RANK:650 )
在线值:
发帖
回帖
粉丝
7
最初由 xbeggar 发布
另外,在mfc7中,对于菜单的处理有一个规则,就是如果用户没有编写相应的菜单消息的处理函数/映射的话,框架会自动禁用相应的菜单。
另另外,在mfc7中,对于菜单和工具栏的禁用/启用,是通过ON_UPDATE_COMMAND_UI定义的消息映射进行相应的函数调用、消息处理的,具体可以参考应用程序对于cut/copy等的处理


对MFC一窍不通的人正在学习中……
2004-11-2 12:01
0
游客
登录 | 注册 方可回帖
返回
//