动态添加菜单项、子菜单、右键菜单 vc

动态添加菜单项、子菜单、右键菜单 vc

ID:11629037

大小:31.63 KB

页数:6页

时间:2018-07-13

动态添加菜单项、子菜单、右键菜单 vc_第1页
动态添加菜单项、子菜单、右键菜单 vc_第2页
动态添加菜单项、子菜单、右键菜单 vc_第3页
动态添加菜单项、子菜单、右键菜单 vc_第4页
动态添加菜单项、子菜单、右键菜单 vc_第5页
资源描述:

《动态添加菜单项、子菜单、右键菜单 vc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、动态添加菜单项、子菜单、右键菜单VC动态添加菜单项、子菜单、右键菜单(VC)2010-06-2716:56如何动态添加菜单/菜单项、子菜单、右键菜单有关菜单的操作主要用到CMenu类,当然也可用相应API函数,CMenu类只是MFC对API中操作菜单的函数的封装而已。不过能用类就尽量用类,类的组织方式好呗,代码看着也舒服。若是SDK编程,那就用API吧。CMenumenuMain,menu1;//首先定义CMenu对象一、创建菜单,有两种方法1.用LoadMenu函数从资源加载menuMain.LoadMenu(IDR_MAINFRAME);//从资源加载,这里使用SDI的主菜单资源2.用C

2、reateMenu函数创建menu1.CreateMenu();//创建菜单,还没有菜单项二、添加菜单项,可用AppendMenu()在菜单的最后加、InsertMenu()在指定的位置加.//ID_TEST1在Resource.h中定义,随便给个整数值,不要和已有的重复就行了menu1.AppendMenu(MF_STRING,ID_TEST1,"Test1");//第一项菜单项menu1.AppendMenu(MF_STRING,ID_TEST2,"Test2");//第二项菜单项menu1.InsertMenu(1,MF_BYPOSITION

3、MF_STRING,(UINT)ID_TE

4、ST1,"ID_TEST1");//在第二项菜单项前添加新菜单项三、添加子菜单同样用AppendMenu()、InsertMenu()函数。不过要注意参数的设置。menu1.AppendMenu(MF_BYPOSITION

5、MF_POPUP

6、MF_STRING,(UINT)menuMain.GetSubMenu(0)-m_hMenu,"子菜单");//第二个参数是菜单的句柄HMENU四、删除菜单用DeleteMenu()、RemoveMenu()函数来删除指定位置的菜单/菜单项。两者区别:如果菜单项是一个弹出式菜单,那么DeleteMenu和RemoveMenu之间的区别就很重要。Delet

7、eMenu清除弹出式菜单,但RemoveMenu不清除它。一个是彻底的删除,一个只是移除.MSDN:1.TheDeleteMenufunctiondestroysthehandletothemenuorsubmenuandfreesthememoryusedbythemenuorsubmenu.它使菜单或者子菜单的handle无效(destroys)。2.RemoveMenudoesnotdestroythemenuoritshandle,allowingthemenutobereused.可以再利用,并不从内存中将menu删除。五、添加右键菜单CMenumenu1;menu1.Create

8、PopupMenu();//动态创建弹出式菜单对象menu1.AppendMenu(MF_STRING,ID_TEST1,"菜单项1");menu1.AppendMenu(MF_STRING,ID_TEST2,"菜单项2");menu1.InsertMenu(2,MF_BYPOSITION

9、MF_POPUP

10、MF_STRING,(UINT)menuMain.m_hMenu,"子菜单");//添加子菜单CPointpt;GetCursorPos(&pt);menu1.TrackPopupMenu(TPM_RIGHTBUTTON,pt.x,pt.y,this);menu1.DestroyMenu

11、();六、响应菜单的事件1.若是资源中添加的菜单可用ClassWizard添加菜单的响应事件。2.若是通过代码创建的菜单,要手工实现菜单的消息映射。本例是在CmainFrame类中,当然也可在View类、Doc类中,基于对话框的同样也可以。1)在.h文件中//Generatedmessagemapfunctionsprotected://{{AFX_MSG(CMainFrame)afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);afx_msgvoidOnChangmenuitem();//这里添加菜单命令处理函数的声明//}}AFX_MSGDE

12、CLARE_MESSAGE_MAP()2)在.cpp文件中,BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)//{{AFX_MSG_MAP(CMainFrame)ON_WM_CREATE()ON_COMMAND(IDM_CHANGMENUITEM,OnChangmenuitem)//这里添加,注意没有';'//}}AFX_MSG_MAPEND_MESSAGE_MAP()voidC

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。