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

2024-11-12 21:30:23
推荐回答(3个)
回答1:

方法有很多
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. 其他两项也一样的做法

回答2:

void CMainFrame::OnHardwaresettingSettingtheprinter(){
    AfxMessageBox(_T("here!"));////////
    PrinterHWSetting dlg;
    dlg.DoModal(); }

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

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

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

回答3:

有图有真相