能力值:
( LV9,RANK:330 )
|
-
-
2 楼
可以请教firstrose试试,最近我认为他是这里比较牛的人,当然高人们最近都潜水去了。
|
能力值:
(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"));
|
能力值:
(RANK:10 )
|
-
-
4 楼
AppendMenu函数的第二个参数是控制,它的那个CNewMenu重载了
|
能力值:
( 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.
结果是打开一个已经有定义好的程序功能(表现为弹出一个菜单).
而不是只有一个正常显示的功能.换句话说,你给出的是一个偷换的功能而不是一个真正的正常标识.
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
不过你把一个问题给弄错了,那就是AppendMenu的第二个参数,那是用来处理消息的时候要用到的,最好不要直接用数字表示,换成用#define语句进行宏定义的值比较好,那样一来,就可以在各个地方进行实用,而且比数字更容易记,何乐而不为……
另外,在mfc7中,对于菜单的处理有一个规则,就是如果用户没有编写相应的菜单消息的处理函数/映射的话,框架会自动禁用相应的菜单。
另另外,在mfc7中,对于菜单和工具栏的禁用/启用,是通过ON_UPDATE_COMMAND_UI定义的消息映射进行相应的函数调用、消息处理的,具体可以参考应用程序对于cut/copy等的处理
以上仅供参考,如有错误之处,望指出,大家共同进步
|
能力值:
( LV12,RANK:650 )
|
-
-
7 楼
最初由 xbeggar 发布 另外,在mfc7中,对于菜单的处理有一个规则,就是如果用户没有编写相应的菜单消息的处理函数/映射的话,框架会自动禁用相应的菜单。 另另外,在mfc7中,对于菜单和工具栏的禁用/启用,是通过ON_UPDATE_COMMAND_UI定义的消息映射进行相应的函数调用、消息处理的,具体可以参考应用程序对于cut/copy等的处理
对MFC一窍不通的人正在学习中……
|
|
|