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

举个例子,在菜单栏中单击“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

3个回答

在你的代码开头加上一行
MessageBox(0, "hello", NULL, MB_OK);
或者下一个断点,总之看看你的OnHardwaresettingSettingtheprinter()有没有被执行。

如果没有,用ClassWizard重新来映射一次。

在菜单按钮的响应函数里面添加一段代码:先定义你所要弹出对话框的类的一个对象,比如你的对话框是CSDlg,那就是
{CSDlg dlg;
dlg.DoModal;
}

可以按照楼上的生成模态的对话框,也可以用dlg.Create()来生成非模态的,意义看下孙鑫的深入详解,有详细介绍。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问