MFC中怎么设置单击菜单弹出对话框?

举个例子,在菜单栏中单击“Setting”菜单下,“Hardwaresetting”子菜单中“Settingtheprinter”项(ID为ID_HARDWARESETT... 举个例子,在菜单栏中单击“Setting”菜单下,“Hardware setting”子菜单中“Setting the printer”项(ID为ID_HARDWARESETTING_SETTINGTHEPRINTER),要弹出对话框“PrinterHWSetting”(ID为IDD_PrinterHWSetting)
对话框继承CDialog类,类名PrinterHWSetting,h文件和cpp文件都自动生成好了。
子菜单中的那一项我也创建好事件处理程序了,CMainFrame::OnHardwaresettingSettingtheprinter()
在主界面文件MainFrm.cpp中添加了如下代码:
void CMainFrame::OnHardwaresettingSettingtheprinter(){
PrinterHWSetting dlg;
dlg.DoModal(); }
最后生成,没有报错,运行程序也正常运行。但是我点开子菜单中的Setting the Printer项的时候,就是弹不出那个对话框,请问这是怎么回事?
我创建的是单文档程序,环境为VS2010
展开
 我来答
千锋教育
2016-01-09 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
方法有很多
1. 在工程的资源里面加1个菜单和3个对话框(假设ID是IDR_MENU1, IDD_DIALOG1, IDD_DIALOG2, IDD_DIALOG3);
2. 在菜单添加要的选项, 对话框里面拖你要的控件
3. 在主对话框的OnInit函数里写以下代码
CMenu* menu = new CMenu;
menu->LoadMenu(MAKEINTRESOURCE(IDR_MENU1));
this->SetMenu(menu);
到现在我们已经把菜单加到主对话框里了, 节下来是响应菜单项
4. 对menu的某一项右键, 添加一个COMMEND MESSAGE, 系统会自动生成一个函数, 在函数里面写以下代码
// TODO: Add your command handler code here
CDialog* dlg = new CDialog;
dlg->Create(MAKEINTRESOURCE(IDD_DIALOG1));
dlg->ShowWindow(1);
5. 其他两项也一样的做法
bhtzu
推荐于2017-11-27 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4212万
展开全部
void CMainFrame::OnHardwaresettingSettingtheprinter(){
    AfxMessageBox(_T("here!"));////////
    PrinterHWSetting dlg;
    dlg.DoModal(); }

如上添加代码,通过弹出消息,确认菜单映射正确。

如果弹出,那么应该是对话框初始化出现问题,可能有控件初始化失败或者OnInitDialog中代码失败造成的,逐一删除控件和代码试试。

如果不弹出,说明映射错误。单文档放在MainFrame中是可以的,但要确保AFX中正确的消息映射关系。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
轩辕泪1020
2015-01-28
知道答主
回答量:38
采纳率:0%
帮助的人:12.2万
展开全部
有图有真相
追问
你要什么图?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式