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 展开
对话框继承CDialog类,类名PrinterHWSetting,h文件和cpp文件都自动生成好了。
子菜单中的那一项我也创建好事件处理程序了,CMainFrame::OnHardwaresettingSettingtheprinter()
在主界面文件MainFrm.cpp中添加了如下代码:
void CMainFrame::OnHardwaresettingSettingtheprinter(){
PrinterHWSetting dlg;
dlg.DoModal(); }
最后生成,没有报错,运行程序也正常运行。但是我点开子菜单中的Setting the Printer项的时候,就是弹不出那个对话框,请问这是怎么回事?
我创建的是单文档程序,环境为VS2010 展开
3个回答
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. 其他两项也一样的做法
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. 其他两项也一样的做法
展开全部
void CMainFrame::OnHardwaresettingSettingtheprinter(){
AfxMessageBox(_T("here!"));////////
PrinterHWSetting dlg;
dlg.DoModal(); }
如上添加代码,通过弹出消息,确认菜单映射正确。
如果弹出,那么应该是对话框初始化出现问题,可能有控件初始化失败或者OnInitDialog中代码失败造成的,逐一删除控件和代码试试。
如果不弹出,说明映射错误。单文档放在MainFrame中是可以的,但要确保AFX中正确的消息映射关系。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有图有真相
追问
你要什么图?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询