MFC创建模态对话框 您所在的位置:网站首页 vC对话框菜单栏类名 MFC创建模态对话框

MFC创建模态对话框

#MFC创建模态对话框| 来源: 网络整理| 查看: 265

        本篇文章完成一个模态对话框的创建。

        在菜单“查看”下面添加菜单项“模态对话框”,选择该菜单项弹出左面的对话框,作出各种选择后,单击“确定”按钮后,程序将选择的信息显示在文本框中,单击“退出”按钮,结束程序的运行。

         程序实现步骤:

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 实验室设备网 版权所有