mfc 多文档中怎样动态添加菜单项?

mfc 多文档中怎样动态添加菜单项?,第1张

pDocTemplate = new CSingleDocTemplate(

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上,多文档不共用框架类

ON_COMMAND(ID_MENUOPERATOR,OnOperator)

这句其实是核心, 就是说点击菜单里ID为ID_MENUOPERATOR的子项,会触发OnOperator动作

当仍然了其两步也是必不可少的,可以理解成那是菜单定义的格式

//获得指针

CMenu *pmenu = AfxGetMainWnd()->GetMenu()

pmenu->ModifyMenu(0,MF_BYPOSITION,0, _T("要改的名字"))

pmenu->AppendMenu(MF_STRING,111,"hello")

pmenu->DrawMenuBar()//直接显示,不然要鼠标放在上面才显示

原型:

BOOL AppendMenu(UINT nFlags,UINT_PTR nIDNewItem=0,LPCTSTR lpszNewItem=NULL)

//MF_POPUP那么nIDNewItem就是一个顶层菜单的句柄,否则要添加新菜单项的命令ID


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11698182.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存