爱尔兰B计算器的MFC实现

本文介绍了使用MFC实现爱尔兰B计算器的过程,包括设置操作界面,控件初始化,编写控件程序如计算模式选择,输入参数选择,数字及功能键控制,并详细阐述了显示函数和计算函数的实现。
摘要由CSDN通过智能技术生成

1.设置操作界面

这里写图片描述

2.初始化控件
在函数BOOL CBDlg::OnInitDialog()下初始化

//初始化ComboBox控件显示第一个item
CComboBox *pBox = (CComboBox *)GetDlgItem( IDC_mode ) ;

    pBox->SetCurSel( 0 ) ; 
//B BUTTON控件初始化为灰色
    m_B_ok.EnableWindow(false);

//初始化EditBox,显示mode:B
GetDlgItem(IDC_mode_display)->SetWindowText("mode:");
//EditBox换行显示但不清除前面的显示信息
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_mode_display);
int index=pEdit->GetWindowTextLength();
pEdit->SetSel(index, index);
pEdit->ReplaceSel("B");

//在没有选择计算模式和输入参数之前,所有数字button都不可用.
m_one_ok.EnableWindow(false);
m_two_ok.EnableWindow(false);
m_three_ok.EnableWindow(false);
m_four_ok.EnableWindow(false);
m_five_ok.EnableWindow(false);
m_six_ok.EnableWindow(false);
m_seven_ok.EnableWindow(false);
m_eigth_ok.EnableWindow(false);
m_nine_ok.EnableWindow(false);
m_zero_ok.EnableWindow(false);
m_dot_ok.EnableWindow(false);
m_Bequal_ok.EnableWindow(false);
m_backspace_ok.EnableWindow(false);

3.编写控件程序
3.1 计算模式选择ComboBox控件函数

void CBDlg::OnSelchangemode() 
{
    CString strCBText;   
    int nIndex;   
    GetDlgItem(IDC_display)->SetWindowText("");
    // 获得索引号 
    nIndex = ((CComboBox*)GetDlgItem(IDC_mode))->GetCurSel();
    //获得索引号对应的内容   
    ((CComboBox*)GetDlgItem(IDC_mode))->GetLBText(nIndex,strCBText);



    //模式改变后,模式显示模块显示内容也随着变化
    GetDlgItem(IDC_mode_display)->SetWindowText("mode:");
    CEdit* pEdit = (CEdit*)GetDlgItem(IDC_mode_display);
    int index=pEdit->GetWindowTextLength();
    pEdit->SetSel(index, index);
    pEdit->ReplaceSel(strCBText);
//判断选择的模式
    if (strCBText == "s")
    {
        ctrl_control(IDC_mode_display,"(B<1)");

        mode = 's';
        m_s_ok.EnableWindow(false);
        m_a_ok.EnableWindow(true);
        m_B_ok.EnableWindow(true);

        m_one_ok.EnableWindow(false);
        m_two_ok.EnableWindow(false);
        m_three_ok.EnableWindow(false);
        m_four_ok.EnableWindow(false);
        m_five_ok.EnableWindow(false);
        m_six_ok.EnableWindow(false);
        m_seven_ok.EnableWindow(false);
        m_eigth_ok.EnableWindow(false);
        m_nine_ok.EnableWindow(false);
        m_zero_ok.EnableWindow(false);
        m_dot_ok.EnableWindow(false);
        m_Bequal_ok.EnableWindow(false);
        m_backspace_ok.EnableWindow(false);
    }
    if (strCBText == "a")
    {
        ctrl_control(IDC_mode_display,"(B<1)");
        mode = 'a';
        m_s_ok.EnableWindow(true);
        m_a_ok.EnableWindow(false);
        m_B_ok.EnableWindow(true);

        m_one_ok.EnableWindow(false);
        m_two_ok.EnableWindow(false);
        m_three_ok.EnableWindow(false);
        m_four_ok.EnableWindow(false);
        m_five_ok.EnableWindow(false);
        m_six_ok.EnableWindow(false);
        m_seven_ok.EnableWindow(false);
        m_eigth_ok.EnableWindow(false);
        m_nine_ok.EnableWindow(false);
        m_zero_ok.EnableWindow(false);
        m_dot_ok.EnableWindow(false);
        m_Bequal_ok.EnableWindow(false);
        m_backspace_ok.EnableWindow(false);
    }
    if (strCBText == "B")
    {
        mode = 'B';
        m_s_ok.EnableWindow(true);
        m_a_ok.EnableWindow(true);
        m_B_ok.EnableWindow(false);


        m_one_ok.EnableWindow(false);
        m_two_ok.EnableWindow(false);
        m_three_ok.EnableWindow(false);
        m_four_ok.EnableWindow(false);
        m_five_ok.EnableWindow(false);
        m_six_ok.EnableWindow(false);
        m_seven_ok.EnableWindow(false);
        m_eigth_ok.EnableWindow(false);
        m_nine_ok.EnableWindow(false);
        m_zero_ok.EnableWindow(false);
        m_dot_ok.EnableWindow(false);
        m_Bequal_ok.EnableWindow(false);
        m_backspace_ok.EnableWindow(false);
    }
}

3.2输入参数选择控件
3.2.1 参数a控件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值