IDR_MAINFRAME,
RUNTIME_CLASS(CMyScrollViewDoc),
RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口
RUNTIME_CLASS(CMyScrollViewView))这个函数将文档类视类和框架类结合在一起,这个是单文档的组织形式,所以在单文档中框架类始终没有改变,所以可以动态加载菜单;
pDocTemplate = new CMultiDocTemplate(IDR_questionTYPE,
RUNTIME_CLASS(CquestionDoc),
RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架
RUNTIME_CLASS(CquestionView))而这个是多文档的组织形式,可以看到第三个参数变成了CChildFrame,而不是CMainFrame,第一个参数也有所改变看,所以每新建一个多文档就会对应一个CChildFrame,所以动态添加的菜单不会显示在CMainFrame上,多文档不共用框架类
菜单分为 d出式 和 菜单栏 两种。d出式:CMenu m
a 自己创建菜单的每一项 m.CreatePopupMenu() 。。。
b;通过资源来创建 m.LoadMenu(IDR_MENU)
菜单栏:
在OnInitDialog或者OnCreate中 SetMenu(&m_menu)
1. 用LoadMenu函数从资源加载menuMain.LoadMenu(IDR_MAINFRAME)//从资源加载,这里使用SDI的主菜单资源
2. 用CreateMenu函数创建
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|MF_STRING,
(UINT)ID_TEST1,"ID_TEST1")// 在第二项菜单项前添加新菜单项
三、 添加子菜单
同样用AppendMenu()、InsertMenu()函数。不过要注意参数的设置。
menu1.AppendMenu(MF_BYPOSITION|MF_POPUP|MF_STRING,
(UINT) menuMain.GetSubMenu(0) ->m_hMenu,"子菜单")
//第二个参数是菜单的句柄HMENU
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)