用Tab控件实现加减乘除

242 篇文章 8 订阅
83 篇文章 0 订阅

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

这里写图片描述
图(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)所示:
  
这里写图片描述
图(3)设置对话框的字体: 宋体,大小:9

这里写图片描述
图(4) 设置对话框的Style: child, Border : None

  3)为加减乘除对话框,分别拖曳3个Static Txt控件、3个Edit控件、1个Button按钮,它们的ID号、成员变量,如表(1)、表(2)所示:
  
表(1) 12个编辑框控件

类型成员变量
IDC_EDIT_afloatm_a
IDC_EDIT_bfloatm_b
IDC_EDIT_cfloatm_c
IDC_EDIT_a2floatm_a2
IDC_EDIT_b2floatm_b2
IDC_EDIT_c2floatm_c2
IDC_EDIT_a3floatm_a3
IDC_EDIT_b3floatm_b3
IDC_EDIT_c3floatm_c3
IDC_EDIT_a4floatm_a4
IDC_EDIT_b4floatm_b4
IDC_EDIT_c4floatm_c4

表(2) 4个按钮

ID号响应函数
按钮[求和]IDC_BTN_ADDOnBtnAdd()
按钮[求差]IDC_BTN_SUBOnBtnSub()
按钮[求积]IDC_BTN_multiOnBTNmulti()
按钮[求商]IDC_BTN_divOnBTNdiv()

  
  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)所示:

这里写图片描述
图(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)所示:
  
这里写图片描述
图(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
  

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值