The One607 2022-12-28 20:50 采纳率: 0%
浏览 53
已结题

项目《计算器的设计与实现》

需要mfc界面设计,
能通过设计的按钮控件输入并实现简单算术运算,1.表达式在编辑框中显示,能将运算结果,输出在编辑框内显示;
2.能够实现混合运算的求解,算术表达式中包括加、减、乘、除、括号等运算。
希望写好了发我源文件与代码

可参考
https://blog.csdn.net/u013518977/article/details/110368272?spm=1001.2014.3001.5506

  • 写回答

2条回答 默认 最新

  • |__WhoAmI__| 2022-12-28 21:17
    关注
    #include "stdafx.h"
    #include "Calculator.h"
    #include "CalculatorDlg.h"
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    
    // 用于应用程序“关于”菜单项的 CAboutDlg 对话框
    
    class CAboutDlg : public CDialogEx
    {
    public:
        CAboutDlg();
    
    // 对话框数据
    #ifdef AFX_DESIGN_TIME
        enum { IDD = IDD_ABOUTBOX };
    #endif
    
        protected:
        virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
    
    // 用于应用程序“关于”菜单项的 CAboutDlg 对话框
    
    class CAboutDlg : public CDialogEx
    {
    public:
        CAboutDlg();
    
    // 对话框数据
    #ifdef AFX_DESIGN_TIME
        enum { IDD = IDD_ABOUTBOX };
    #endif
    
        protected:
        virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
    
    // 实现
    protected:
        DECLARE_MESSAGE_MAP()
    };
    
    CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
    {
    }
    
    void CAboutDlg::DoDataExchange(CDataExchange* pDX)
    {
        CDialogEx::DoDataExchange(pDX);
    }
    
    BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
    END_MESSAGE_MAP()
    
    
    // CCalculatorDlg 对话框
    
    
    CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=nullptr*/)
        : CDialogEx(IDD_CALCULATOR_DIALOG, pParent)
    {
        m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    }
    
    void CCalculatorDlg::DoDataExchange(CDataExchange* pDX)
    {
        CDialogEx::DoDataExchange(pDX);
        DDX_Control(pDX, IDC_EDIT_EXPRESSION, m_editExpression);
        DDX_Control(pDX, IDC_EDIT_RESULT, m_editResult);
    }
    
    BEGIN_MESSAGE_MAP(CCalculatorDlg, CDialogEx)
        ON_WM_SYSCOMMAND()
        ON_WM_PAINT()
        ON_WM_QUERYDRAGICON()
        ON_BN_CLICKED(IDC_BUTTON_CALCULATE, &CCalculatorDlg::OnBnClickedButtonCalculate)
    END_MESSAGE_MAP()
    
    // CCalculatorDlg 消息处理程序
    
    BOOL CCalculatorDlg::OnInitDialog()
    {
        CDialogEx::OnInitDialog();
    
        // 将“关于...”菜单项添加到系统菜单中。
    
        // IDM_ABOUTBOX 必须在系统命令范围内。
        ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
        ASSERT(IDM_ABOUTBOX < 0xF000);
    
        CMenu* pSysMenu = GetSystemMenu(FALSE);
        if (pSysMenu != nullptr)
        {
            BOOL bNameValid;
            CString strAboutMenu;
            bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
            ASSERT(bNameValid);
            if (!strAboutMenu.IsEmpty())
            {
                pSysMenu->AppendMenu(MF_SEPARATOR);
                pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
            }
        }
    
        // 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
        //  执行此操作
        SetIcon(m_hIcon, TRUE);            // 设置大图标
        SetIcon(m_hIcon, FALSE);        // 设置小图标
    
        // TODO: 在此添加额外的初始化代码
    
        return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
    }
    
    void CCalculatorDlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
        if ((nID & 0xFFF0) == IDM_ABOUTBOX)
        {
            CAboutDlg dlgAbout;
            dlgAbout.DoModal();
        }
        else
        {
            CDialogEx::OnSysCommand(nID, lParam);
        }
    }
    // 如果向对话框添加最小化按钮,则需要下面的代码
    //  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
    //  这将由框架自动完成。
    
    void CCalculatorDlg::OnPaint()
    {
        if (IsIconic())
        {
            CPaintDC dc(this); // 用于绘制的设备上下文
    
            SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
    
            // 使图标在工作区矩形中居中
            int cxIcon = GetSystemMetrics(SM_CXICON);
            int cyIcon = GetSystemMetrics(SM_CYICON);
            CRect rect;
            GetClientRect(&rect);
            int x = (rect.Width() - cxIcon + 1) / 2;
            int y = (rect.Height() - cyIcon + 1) / 2;
    
            // 绘制图标
            dc.DrawIcon(x, y, m_hIcon);
        }
        else
        {
            CDialogEx::OnPaint();
        }
    }
    
    //当用户拖动最小化窗口时系统调用此函数取得光标
    //显示。
    HCURSOR CCalculatorDlg::OnQueryDragIcon()
    {
        return static_cast<HCURSOR>(m_hIcon);
    }
    
    void CCalculatorDlg::OnBnClickedButtonCalculate()
    {
        // TODO: 在此添加控件通知处理程序代码
        CString strExpression;
        m_editExpression.GetWindowText(strExpression);
    
        //使用字符串流和表达式求值函数计算表达式的值
        double dResult = 0;
        std::stringstream ss(strExpression);
        ss >> dResult;
        while (!ss.eof())
        {
            char op;
            double operand;
            ss >> op >> operand;
            if (op == '+')
            {
                dResult += operand;
            }
            else if (op == '-')
            {
                dResult -= operand;
            }
           
        //使用字符串流和表达式求值函数计算表达式的值
        double dResult = 0;
        std::stringstream ss(strExpression);
        ss >> dResult;
        while (!ss.eof())
        {
            char op;
            double operand;
            ss >> op >> operand;
            if (op == '+')
            {
                dResult += operand;
            }
            else if (op == '-')
            {
                dResult -= operand;
            }
            else if (op == '*')
            {
                dResult *= operand;
            }
            else if (op == '/')
            {
                dResult /= operand;
            }
        }
    
        CString strResult;
        strResult.Format(_T("%f"), dResult);
        m_editResult.SetWindowText(strResult);
    }
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月29日
  • 创建了问题 12月28日

悬赏问题

  • ¥15 短剧的sdk在哪里接入
  • ¥15 求:可不可以提供一些 在国内可以用,低代码不要太难 在电脑上可以下载的 制作app的软件
  • ¥60 找人回答kibana8.14.3二次集成开发,自定义插件ui导航栏如何设置
  • ¥15 fluke高精度万用表8845A型号测交流电压一直跳动,且去掉输入后显示不归零
  • ¥15 不同模型怎么用同一个shader
  • ¥15 安卓启动没有ais proxy与v4l2的log打印
  • ¥15 go怎么读取mdb文件里面的数据
  • ¥60 Matlab联合CRUISE仿真编译dll文件报错
  • ¥15 脱敏项目合作,ner需求合作
  • ¥15 脱敏项目合作,ner需求合作