MFC创建模态对话框 | 您所在的位置:网站首页 › vC对话框菜单栏类名 › MFC创建模态对话框 |
本篇文章完成一个模态对话框的创建。 在菜单“查看”下面添加菜单项“模态对话框”,选择该菜单项弹出左面的对话框,作出各种选择后,单击“确定”按钮后,程序将选择的信息显示在文本框中,单击“退出”按钮,结束程序的运行。 程序实现步骤: 1.编辑菜单资源 2.编辑对话框资源,创建类 3.显示对话框 4.添加控件关联变量 5.添加消息响应函数 步骤1 添加菜单资源在菜单中添加以下菜单项菜单中添加以下菜单项 Separator ID_VIEW_MODALDIALOG 模态对话框 ID_VIEW_MODALLESSDIALOG 非模态对话框 ID_VIEW_PROGRESSDIALOG 进度条对话框 ID_VIEW_PROPERTIES 属性页对话框 ID_VIEW_COMMONDIALOG 通用对话框 步骤2 编辑对话框资源ID: IDD_MODAL_DIALOG Caption: “Modal Dialog” Class: CDialogModal 注意:一组单选钮的TAB ORDER连续,且选中第一个单选钮的GROUP属性。 IDC_SEX1 Radio Button Caption: 男 Group:选中 IDC_SEX2 Radio Button Caption: 女 IDC_INSTEREST1 Check Box Caption: 登山 Group:选中 IDC_INSTEREST2 Check Box Caption: 游泳 IDC_INSTEREST3 Check Box Caption: 看书 IDC_INSTEREST4 Check Box Caption: 玩游戏 IDC_COMBO Combo Box IDC_EDIT Edit Box 将对话框中OK按钮的标题改为“确定”,ID改为ID_OK。CANCE按钮标题改为“退出” 步骤3 显示对话框使用类向导在主框架类中添加菜单的消息响应函数: Class name:CDialogView Object IDs:ID_VIEW_MODALLESSDIALOG Messages:COMMAND 在文件DialogView.cpp中包含头文件:#include "DialogModal.h" void CDialogView::OnViewModaldialog() { // TODO: Add your command handler code here CDialogModal cDlg; cDlg.DoModal(); } 步骤4 添加控件关联变量使用类向导的Menber Variable标签添加 IDC_COMBO CComboBox m_Combo; IDC_SEX1 CButton m_Radio; IDC_EDIT CString m_Edit; 值型控件关联变量:int, char, CString, float等 控制型控件关联变量:每个控件都有对应的类管理,如CComboBox, CButton,CEdit等。也可以添加这些类型的关联变量,称为控制型控件关联变量。 步骤5 添加消息响应函数初始化: Class name: CDialogModal Objects: CDialogModal Message: WM_INITDIALOG BOOL CDialogModal::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_Radio.SetCheck(1); //把"男"设置为默认值 m_Combo.InsertString(0,TEXT("小学"));//往Combo Box加入选项 m_Combo.InsertString(1,TEXT("初中")); m_Combo.InsertString(2,TEXT("高中")); m_Combo.InsertString(3,TEXT("大学")); m_Combo.InsertString(4,TEXT("本科以上...")); m_Combo.SetCurSel(0);//把"小学"设置为默认值 return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
单击确定按钮: Class name: CDialogModal Objects: ID_OK Message: BN_CLICKED void CDialogModal::OnOk() { // TODO: Add your control notification handler code here CString str; str.Empty();// if(m_Radio.GetCheck()) str += TEXT("先生"); else str += TEXT("小姐"); str += TEXT("你好,你的爱好:"); BOOL flag=0; CButton *p; //得到指向IDC_INSTEREST1的指针 p = (CButton *)GetDlgItem(IDC_INSTEREST1); if(p->GetCheck())//判断"登山"是否被选中 { str += TEXT("登山 "); flag = 1; } //得到指向IDC_INSTEREST2的指针 p = (CButton *)GetDlgItem(IDC_INSTEREST2); if(p->GetCheck())//判断"游泳"是否被选中 { str += TEXT("游泳 "); flag = 1; } //得到指向IDC_INSTEREST3的指针 p = (CButton *)GetDlgItem(IDC_INSTEREST3); if(p->GetCheck())//判断"看书"是否被选中 { str += TEXT("看书 "); flag = 1; } //得到指向IDC_INSTEREST4的指针 p = (CButton *)GetDlgItem(IDC_INSTEREST4); if(p->GetCheck())//判断"玩游戏"是否被选中 { str += TEXT("玩游戏 "); flag = 1; } if (!flag) str += TEXT("不知道"); str += TEXT(",学历:"); int number; CString temp; number = m_Combo.GetCurSel();//得到当前被选中项的序号 m_Combo.GetLBText(number,temp);//得到序号为number的项的內容 str += temp; m_Edit = str; UpdateData(false);//更新文本框中的内容 }
最后看效果图: 小结1. 单选钮 SetCheck(), GetCheck() 2. 复选框 GetCheck() 3. 组合框 InsertString(),SetCurSel(), GetCurSel(),GetLBText() 4. 对话框 GetDlgItem() |
CopyRight 2018-2019 实验室设备网 版权所有 |