用Tab控件实现加减乘除

  软件环境:Win7 64位 + VC6.0
  使用MFC里的Tab控件,可以实现加减乘除。效果如下:

用Tab控件实现加减乘除_第1张图片 图(1) 用Tab控件实现加减乘除
  详细步骤如下:
  1)打开VC6.0,新建一个基于MFC对话框的工程:addSub,在Resource View里,先清空对话框上的控件,然后,为对话框拖曳一个Tab控件,如图(2)所示:
   图(2) 为对话框拖曳一个Tab控件
  2)插入4个对话框:IDD_DIALOG_add、IDD_DIALOG_div、IDD_DIALOG_multi、IDD_DIALOG_sub,分别代表加、除、乘、减。设置字体:宋体,大小:9,在Styles选项卡里,Style: Child, Border: None,如图(3)、(4)所示:
   用Tab控件实现加减乘除_第2张图片 图(3)设置对话框的字体: 宋体,大小:9
图(4) 设置对话框的Style: child, Border : None
  3)为加减乘除对话框,分别拖曳3个Static Txt控件、3个Edit控件、1个Button按钮,它们的ID号、成员变量,如表(1)、表(2)所示:
   表(1) 12个编辑框控件

类型 成员变量
IDC_EDIT_a float m_a
IDC_EDIT_b float m_b
IDC_EDIT_c float m_c
IDC_EDIT_a2 float m_a2
IDC_EDIT_b2 float m_b2
IDC_EDIT_c2 float m_c2
IDC_EDIT_a3 float m_a3
IDC_EDIT_b3 float m_b3
IDC_EDIT_c3 float m_c3
IDC_EDIT_a4 float m_a4
IDC_EDIT_b4 float m_b4
IDC_EDIT_c4 float m_c4

表(2) 4个按钮

ID号 响应函数
按钮[求和] IDC_BTN_ADD OnBtnAdd()
按钮[求差] IDC_BTN_SUB OnBtnSub()
按钮[求积] IDC_BTN_multi OnBTNmulti()
按钮[求商] IDC_BTN_div OnBTNdiv()

  
  4)为对话框关联一个类,比如,右击IDD_DIALOG_add – 》Class View –》Create class,命名为:CAddNumDlg;依次类推,IDD_DIALOG_div关联类CDivNumbDlg,IDD_DIALOG_multi关联类CMultiNumDlg、IDD_DIALOG_sub关联类CSubNumDlg。分别编写加、减、乘、除的相应函数。如下:  
//相加

void CAddNumDlg::OnBtnAdd() 
{
    // TODO: Add your control notification handler code here
    //获取值
    UpdateData(TRUE);
    m_c = m_a+m_b;

    //显示值
    UpdateData(FALSE);

}

//相减

void CSubNumDlg::OnBtnSub() 
{
    // TODO: Add your control notification handler code here
    UpdateData(TRUE);
    m_c2 = m_a2-m_b2;
    UpdateData(FALSE);

}

//相乘

void CMultiNumDlg::OnBTNmulti() 
{
    // TODO: Add your control notification handler code here
    UpdateData(TRUE);
    m_c3 = m_a3*m_b3;
    UpdateData(FALSE);

}

//相除

void CDivNumDlg::OnBTNdiv() 
{
    // TODO: Add your control notification handler code here
    UpdateData(TRUE);
    if(m_b4 == 0){
        MessageBox("分母不能为0!","提示",MB_ICONSTOP);
        return;
    }
    else{
        m_c4 = m_a4/m_b4;
    }

    UpdateData(FALSE);  

}

  5)初始化Tab控件,为Tab控件关联一个Control类型的变量m_Tab, 设置Tab的TCN_SELCHANGE消息。
  5.1)初始化Tab控件
  右击IDD_ADDSUB_DIALOG –》ClassWizard –》Member Variable –》双击IDC_TAB1 –》关联一个control类型的变量:m_Tab,如图(5)所示:

用Tab控件实现加减乘除_第3张图片 图(5) 为Tab控件关联一个control类型的变量: m_Tab
//初始化Tab控件

BOOL CAddSubDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // Set the icon for this dialog. The framework does this automatically
    // when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);         // Set big icon
    SetIcon(m_hIcon, FALSE);        // Set small icon

    // TODO: Add extra initialization here
    m_Tab.InsertItem(0,"相加",0);
    m_Tab.InsertItem(1,"相减",1);
    m_Tab.InsertItem(2,"相乘",2);
    m_Tab.InsertItem(3,"相除",3);

    m_addDlg = new CAddNumDlg;
    m_subDlg = new CSubNumDlg;
    m_multiDlg = new CMultiNumDlg;
    m_divDlg = new CDivNumDlg;

    //以Tab控件为父窗口,创建四个子对话框
    m_addDlg->Create(IDD_DIALOG_add,&m_Tab);
    m_subDlg->Create(IDD_DIALOG_sub,&m_Tab);
    m_multiDlg->Create(IDD_DIALOG_multi,&m_Tab);
    m_divDlg->Create(IDD_DIALOG_div,&m_Tab);

    //获取客户区大小
    CRect clientRC;
    m_Tab.GetClientRect(clientRC);
    //减少客户区大小
    clientRC.DeflateRect(2,30,2,2);

    //将对话框映射到的客户区中
    m_addDlg->MoveWindow(clientRC);
    m_subDlg->MoveWindow(clientRC);
    m_multiDlg->MoveWindow(clientRC);
    m_divDlg->MoveWindow(clientRC);

    //默认为“相加”
    m_addDlg->ShowWindow(SW_SHOW);

    return TRUE;  // return TRUE unless you set the focus to a control
}

  在CAddSubDlg.h里,引用4个对话框的头文件,和4个对话框指针对象,如图(6)所示:

图(6) 在工程CXXXDlg.h里,引用对话框头文件和声明对话框对象
  5.2)设置Tab的TCN_SELCHANGE消息
  在Resource view面板,右击IDD_ADDSUB_DIALOG —》Classwizard —》Message Maps选项卡里,点击IDC_TAB1,双击TCN_SELCHANGE —》OK —》Edit Code,如图(7)所示:
   用Tab控件实现加减乘除_第4张图片 图(7) 设置Tab的TCN_SELCHANGE消息
//TCN_SELCHANGE消息的响应函数: OnSelchangeTab1

void CAddSubDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) 
{
    // TODO: Add your control notification handler code here
    int index = m_Tab.GetCurSel();
    switch(index){
    case 0:
        m_addDlg->ShowWindow(SW_SHOW);
        m_subDlg->ShowWindow(SW_HIDE);
        m_multiDlg->ShowWindow(SW_HIDE);
        m_divDlg->ShowWindow(SW_HIDE);
        break;
    case 1:
        m_addDlg->ShowWindow(SW_HIDE);
        m_subDlg->ShowWindow(SW_SHOW);
        m_multiDlg->ShowWindow(SW_HIDE);
        m_divDlg->ShowWindow(SW_HIDE);
        break;
    case 2:
        m_addDlg->ShowWindow(SW_HIDE);
        m_subDlg->ShowWindow(SW_HIDE);
        m_multiDlg->ShowWindow(SW_SHOW);
        m_divDlg->ShowWindow(SW_HIDE);
        break;

    case 3:
        m_addDlg->ShowWindow(SW_HIDE);
        m_subDlg->ShowWindow(SW_HIDE);
        m_multiDlg->ShowWindow(SW_HIDE);
        m_divDlg->ShowWindow(SW_SHOW);
        break;
    }

    *pResult = 0;
}

  至此,用Tab控件实现加减乘除的工程,已搭建完毕,详细代码请看:
  http://download.csdn.net/detail/sanqima/9299451
  

你可能感兴趣的:(win7,mfc,加减乘除,四则运算)