MFC简易计算器

来源:互联网 发布:砍伐树木的数据 编辑:程序博客网 时间:2024/06/05 17:28

MFC,简易计算器

0)函数:

_T();unicode编码,需要此函数对字符串进行操作

_Wtof();将CString类型转化为double类型

Format();将数据转化为CString类型

UpdataData(TRUE);UpdataData(FALSE);详见上一篇文章


1)domo:

2)cpp:

// MFC_CalculationDlg.cpp : 实现文件//#include "stdafx.h"#include "MFC_Calculation.h"#include "MFC_CalculationDlg.h"#include "afxdialogex.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx{public:CAboutDlg();// 对话框数据enum { IDD = IDD_ABOUTBOX };protected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持// 实现protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()// CMFC_CalculationDlg 对话框CMFC_CalculationDlg::CMFC_CalculationDlg(CWnd* pParent /*=NULL*/): CDialogEx(CMFC_CalculationDlg::IDD, pParent), result(_T("")){m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CMFC_CalculationDlg::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, result);}BEGIN_MESSAGE_MAP(CMFC_CalculationDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON5, &CMFC_CalculationDlg::OnBnClickedButton5)ON_BN_CLICKED(IDC_BUTTON15, &CMFC_CalculationDlg::OnBnClickedButton15)ON_BN_CLICKED(IDC_BUTTON1, &CMFC_CalculationDlg::OnBnClickedButton1)ON_BN_CLICKED(IDC_BUTTON2, &CMFC_CalculationDlg::OnBnClickedButton2)ON_BN_CLICKED(IDC_BUTTON3, &CMFC_CalculationDlg::OnBnClickedButton3)ON_BN_CLICKED(IDC_BUTTON6, &CMFC_CalculationDlg::OnBnClickedButton6)ON_BN_CLICKED(IDC_BUTTON7, &CMFC_CalculationDlg::OnBnClickedButton7)ON_BN_CLICKED(IDC_BUTTON9, &CMFC_CalculationDlg::OnBnClickedButton9)ON_BN_CLICKED(IDC_BUTTON10, &CMFC_CalculationDlg::OnBnClickedButton10)ON_BN_CLICKED(IDC_BUTTON11, &CMFC_CalculationDlg::OnBnClickedButton11)ON_BN_CLICKED(IDC_BUTTON13, &CMFC_CalculationDlg::OnBnClickedButton13)ON_BN_CLICKED(IDC_BUTTON14, &CMFC_CalculationDlg::OnBnClickedButton14)ON_BN_CLICKED(IDC_BUTTON4, &CMFC_CalculationDlg::OnBnClickedButton4)ON_BN_CLICKED(IDC_BUTTON8, &CMFC_CalculationDlg::OnBnClickedButton8)ON_BN_CLICKED(IDC_BUTTON12, &CMFC_CalculationDlg::OnBnClickedButton12)ON_BN_CLICKED(IDC_BUTTON16, &CMFC_CalculationDlg::OnBnClickedButton16)ON_BN_CLICKED(IDC_BUTTON18, &CMFC_CalculationDlg::OnBnClickedButton18)END_MESSAGE_MAP()// CMFC_CalculationDlg 消息处理程序BOOL CMFC_CalculationDlg::OnInitDialog(){CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){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 CMFC_CalculationDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}}// 如果向对话框添加最小化按钮,则需要下面的代码//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,//  这将由框架自动完成。void CMFC_CalculationDlg::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 CMFC_CalculationDlg::OnQueryDragIcon(){return static_cast<HCURSOR>(m_hIcon);}void CMFC_CalculationDlg::OnBnClickedButton5(){// TODO:  在此添加控件通知处理程序代码result += _T("4");UpdateData(FALSE);}void CMFC_CalculationDlg::OnBnClickedButton15(){// TODO:  在此添加控件通知处理程序代码if (n == 1){data += _wtof(result);result.Format(_T("%1f"),data);UpdateData(FALSE);}if (n == 2){data -= _wtof(result);result.Format(_T("%1f"), data);UpdateData(FALSE);}if (n == 3){data *= _wtof(result);result.Format(_T("%1f"), data);UpdateData(FALSE);}if (n == 4){data /= _wtof(result);result.Format(_T("%1f"), data);UpdateData(FALSE);}n = 0;}void CMFC_CalculationDlg::OnBnClickedButton1()//Button 1{// TODO:  在此添加控件通知处理程序代码result += _T("1");UpdateData(FALSE);}void CMFC_CalculationDlg::OnBnClickedButton2(){// TODO:  在此添加控件通知处理程序代码result += _T("2");UpdateData(FALSE);}void CMFC_CalculationDlg::OnBnClickedButton3(){// TODO:  在此添加控件通知处理程序代码result += _T("3");UpdateData(FALSE);}void CMFC_CalculationDlg::OnBnClickedButton6(){// TODO:  在此添加控件通知处理程序代码result += _T("5");UpdateData(FALSE);}void CMFC_CalculationDlg::OnBnClickedButton7(){// TODO:  在此添加控件通知处理程序代码result += _T("6");UpdateData(FALSE);}void CMFC_CalculationDlg::OnBnClickedButton9(){// TODO:  在此添加控件通知处理程序代码result += _T("7");UpdateData(FALSE);}void CMFC_CalculationDlg::OnBnClickedButton10(){// TODO:  在此添加控件通知处理程序代码result += _T("8");UpdateData(FALSE);}void CMFC_CalculationDlg::OnBnClickedButton11(){// TODO:  在此添加控件通知处理程序代码result += _T("8");UpdateData(FALSE);}void CMFC_CalculationDlg::OnBnClickedButton13(){// TODO:  在此添加控件通知处理程序代码result += _T("0");UpdateData(FALSE);}void CMFC_CalculationDlg::OnBnClickedButton14(){// TODO:  在此添加控件通知处理程序代码result += _T(".");UpdateData(FALSE);}void CMFC_CalculationDlg::OnBnClickedButton4(){// TODO:  在此添加控件通知处理程序代码n = 1;//加法操作de标志data = _wtof(result);//将CSting类转为double类存储起来result = _T("");//将文本显示框中显示的结果清零}void CMFC_CalculationDlg::OnBnClickedButton8(){// TODO:  在此添加控件通知处理程序代码n = 2;//减法操作de标志data = _wtof(result);//将CSting类转为double类存储起来result = _T("");//将文本显示框中显示的结果清零}void CMFC_CalculationDlg::OnBnClickedButton12(){// TODO:  在此添加控件通知处理程序代码n = 3;//乘法操作de标志data = _wtof(result);//将CSting类转为double类存储起来result = _T("");//将文本显示框中显示的结果清零}void CMFC_CalculationDlg::OnBnClickedButton16(){// TODO:  在此添加控件通知处理程序代码n = 4;//除法操作de标志data = _wtof(result);//将CSting类转为double类存储起来result = _T("");//将文本显示框中显示的结果清零}void CMFC_CalculationDlg::OnBnClickedButton18(){// TODO:  在此添加控件通知处理程序代码n = 0;data = 0;result = _T("");UpdateData(FALSE);}

(不错的视频教程:http://www.56.com/u16/v_ODE2OTQzNjU.html,不过视频中代码没有写清零以及其他一些细节。)

0 0
原创粉丝点击