Red de conocimiento informático - Descarga de software - Escribir una calculadora con interfaz gráfica en C++

Escribir una calculadora con interfaz gráfica en C++

Una calculadora muy sencilla que contiene varios operadores.

//Archivo de encabezado MyDlg

// Cuadro de diálogo CMyDlg

#include "afxwin.h"

clase CMyDlg: CDialog público

{

DECLARE_DYNAMIC(CMyDlg)

public:

CMyDlg(CWnd* pParent = NULL // Constructor estándar

virtual ~CMyDlg();

BOOL PreTranslateMessage(MSG* pMsg);

//Datos de diálogo

enum { IDD = IDD_LOGIN_DIALOG } ;

protegido:

virtual void DoDataExchange(CDataExchange* pDX); // soporte DDX/DDV

DECLARE_MESSAGE_MAP()

público; :

afx_msg void OnBnClickedButton1();

public:

void Calc1();//Presiona la tecla numérica

void Calc2 ();//Presiona la tecla de símbolo

protected:

char m_sign;//Registra qué operador se presiona

int m_numb;/ /Registra qué operador numérico se presionó la tecla

bool point;//Si se presionó el punto decimal

bool es igual;//Si se presionó el signo igual

bool num; /Si se presiona la tecla numérica

bool funs; //Si se presiona la tecla de función

int nums;//Valor de operación después del punto decimal

double number1 ;//El valor después de presionar el operador

double number2;//El valor antes de que no se presione el operador

int m_edit;//Registra el valor de lo presionado tecla numérica

char c_edit;//Registra el operador presionado

CString m_EDIT1;

CString n_EDIT1;

protegido:

afx_msg void OnClose();

público:

afx_msg void OnBnClickedButton17();

afx_msg void OnBnClickedButton18();

afx_msg void OnBnClickedButton21();

afx_msg void OnBnClickedButton2();

afx_msg void OnBnClickedButton3();

afx_msg void OnBnClickedButton4();

afx_msg void OnBnClickedButton5();

afx_msg void OnBnClickedButton6();

afx_msg void OnBnClickedButton7();

afx_msg void OnBnClickedButton8();

p>

afx_msg void OnBnClickedButton9();

afx_msg void OnBnClickedButton10

();

afx_msg void OnBnClickedButton12();

afx_msg void OnBnClickedButton13();

afx_msg void OnBnClickedButton14();

afx_msg void OnBnClickedButton15();

afx_msg void OnBnClickedButton19();

afx_msg void OnBnClickedButton11();

afx_msg void OnBnClickedButton16();

afx_msg void OnBnClickedButton20();

afx_msg void OnBnClickedButton22();

afx_msg void OnBnClickedButton25();

afx_msg void OnBnClickedButton24();

afx_msg void OnBnClickedButton23();

afx_msg void OnBnClickedButton26();

CEdit m_EDIT;

// afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd * pWnd, UINT nCtlColor);

};

#pragma once

// MyDlg.cpp: archivo de implementación

#include "stdafx.h"

#include "MyDlg.h"

#include "math.h"

// Cuadro de diálogo CMyDlg

IMPLEMENT_DYNAMIC(CMyDlg, CDialog)

CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/)

: CDialog(CMyDlg::IDD, pParent)

{

número1 = 0;

número2 = 0;

núms =-1;

núm = falso;

punto = falso;

igual = falso;

funs = falso;

m_sign = '=';

}

CMyDlg::~CMyDlg()

{

}

void CMyDlg::DoDataExchange(CDataExchange* pDX )

{

CDialog::DoDataExchange(pDX);

/*DDX_Control(pDX, IDC_USERNAME, m_EDIT);*/

}

BEGIN_MESSAGE_MAP(CMyDlg, CDialog)

/*ON_BN_CLICKED(IDC_BUTTON1, &CMyDlg::OnBnClickedButton1)*/

ON_WM_CLOSE()

ON_BN_CLICKED(IDC_BUTTON17, &CMyDlg::OnBnClickedButton17)

ON_B

N_CLICKED(IDC_BUTTON18, &CMyDlg::OnBnClickedButton18)

ON_BN_CLICKED(IDC_BUTTON21, &CMyDlg::OnBnClickedButton21)

ON_BN_CLICKED(IDC_BUTTON2, &CMyDlg::OnBnClickedButton2)

ON _BN_CLICKED( IDC_BUTTON3, &CMyDlg::OnBnClickedButton3)

ON_BN_CLICKED(IDC_BUTTON4, &CMyDlg::OnBnClickedButton4)

ON_BN_CLICKED(IDC_BUTTON5, &CMyDlg::OnBnClickedButton5)

ON_BN_CLICKED( BOTÓN6, &CMyDlg::OnBnClickedButton6)

ON_BN_CLICKED(IDC_BUTTON7, &CMyDlg::OnBnClickedButton7)

ON_BN_CLICKED(IDC_BUTTON8, &CMyDlg::OnBnClickedButton8)

ON_BN_CLICKED(IDC_BUTTON9, Dlg: :OnBnClickedButton9)

ON_BN_CLICKED(IDC_BUTTON10, &CMyDlg::OnBnClickedButton10)

ON_BN_CLICKED(IDC_BUTTON12, &CMyDlg::OnBnClickedButton12)

ON_BN_CLICKED(IDC_BUTTON13, &CM yDl g:: OnBnClickedButton13 )

ON_BN_CLICKED(IDC_BUTTON14, &CMyDlg::OnBnClickedButton14)

ON_BN_CLICKED(IDC_BUTTON15, &CMyDlg::OnBnClickedButton15)

ON_BN_CLICKED(IDC_BUTTON19, &CMyD lg::OnBnC hizo clic en el botón 19 )

ON_BN_CLICKED(IDC_BUTTON11, &CMyDlg::OnBnClickedButton11)

ON_BN_CLICKED(IDC_BUTTON16, &CMyDlg::OnBnClickedButton16)

ON_BN_CLICKED(IDC_BUTTON20, &CMyDlg::OnBnClick edBotón20)

ON_BN_CLICKED(IDC_BUTTON22, &CMyDlg::OnBnClickedButton22)

ON_BN_CLICKED(IDC_BUTTON25, &CMyDlg::OnBnClickedButton25)

ON_BN_CLICKED(IDC_BUTTON24, &CMyDlg::OnBnClicked Pero ton24)

ON_BN_CLICKED(IDC_BUTTON

23, &CMyDlg::OnBnClickedButton23)

ON_BN_CLICKED(IDC_BUTTON26, &CMyDlg::OnBnClickedButton26)

// ON_WM_CTLCOLOR()

END_MESSAGE_MAP()

// Controlador de mensajes CMyDlg

// void CMyDlg::OnBnClickedButton1()

// {

// // TODO: Agregar aquí Notificación de control código del controlador

// }

void CMyDlg::OnBnClickedButton17()

{

// TODO: aquí Agregar controlador de notificación de control código

si (es igual a)

{

número1 = sqrt(número1);

m_EDIT1.Format( "%lg", número1);

}

else

{

número2 = sqrt(número2);

m_EDIT1. Formato("%lg",número2);

/*IDC_EDIT1.SetWindowText(m_EDIT1);*/

}

funs = true;

SetDlgItemText(IDC_EDIT1,m_EDIT1);

UpdateData(FALSE);

}

void CMyDlg::OnBnClickedButton18()

{

// TODO: Agregue el código del controlador de notificación de control aquí

if (igual a)

{

if (número1! =0)

{

número1 = 1/número1;

m_EDIT1.Format("%lg",número1

); }

else

{

m_EDIT1 = "El divisor no puede ser 0";

}

}

p>

}

si no

{

si (¡número2!=0)

{

número2 = 1/número2;

m_EDIT1.Format("%lg",número2);

}

else

{

m_EDIT1 = "El divisor no puede ser 0";

}

}

SetDlgItemText(IDC_EDIT1 ,m_EDIT1);

UpdateData(FALSE);

}

void CMyDlg::OnBnClickedButton21()

{

// TODO: en Esto agrega el código del controlador de notificaciones de control

m_numb = 1;

Calc1();

}

void CMyDlg::OnBnClickedButton2( )

{

// TODO: Agregue el código del controlador de notificaciones de control aquí

m_numb = 2;

Calc1();

}

void CMyDlg::OnBnClickedButton3()

{

// TODO: Agregue el código del controlador de notificaciones de control aquí

m_numb = 3;

Calc1();

}

void CMyDlg::OnBnClickedButton4()

{

// TODO: Agregue el código del controlador de notificaciones de control aquí

m_numb = 4;

Calc1();

}

void CMyDlg::OnBnClickedButton5()

{

// TODO: Agregue el código del controlador de notificaciones de control aquí

m_numb = 5;

Calc1();

}

void CMyDlg::OnBnClickedButton6()

{

// TODO: Agregue el código del controlador de notificaciones de control aquí

m_numb = 6;

Calc1();

}

void CMyDlg::OnBnClickedButton7()

{

// TODO: Agregar controles aquí Código del controlador de notificaciones

m_numb = 7;

Calc1();

}

void CMyDlg::OnBnClickedButton8()

p>

{

// TODO: Agregue el código del controlador de notificaciones de control aquí

m_numb = 8;

Calc1();

}

void CMyDlg::OnBnClickedButton9()

{

// TODO: Agregue el código del controlador de notificaciones de control aquí

m_numb = 9;

Calc1();

}

void CMyDlg::OnBnClickedButton10()

{

// TODO: Agregar notificación de control código del controlador aquí

m_numb = 0;

Calc1();

}

void CMyDlg::OnBnClickedButton12()

{

// TODO: Agregue el código del controlador de notificaciones de control aquí

Calc2();

m_sign = '+';

}

void CMyDlg::OnBnClickedButton13()

{

/ / TODO: Agregue el código del controlador de notificaciones de control aquí

Calc2();

m_sign = '-';

}

void CMyDlg::OnBnClickedButton14()

{

// TODO: Agregue el código del controlador de notificaciones de control aquí

Calc2();

m_sign = '*';

}

void CMyDlg::OnBnClickedButton15()

{

// TODO: en Esto agrega el código del controlador de notificaciones de control

Calc2();

m_sign = '/';

}

void CMyDlg:: OnBnClickedButton19()

{

// TODO : Agregue el código del controlador de notificación de control aquí

número1 = 0;

n

número2 = 0;

núms =-1;

núm = falso;

punto = falso;

es igual a = falso;

funs = false;

m_sign = '=';

m_EDIT1.Format("%lg",number1);

SetDlgItemText (IDC_EDIT1,m_EDIT1);

}

void CMyDlg::OnBnClickedButton11()

{

// TODO: Agregar aquí Control código del controlador de notificaciones

Calc2();

m_sign = '=';

equals = true;

}

void CMyDlg::OnBnClickedButton16()

{

// TODO: Agregue el código del controlador de notificaciones de control aquí

if (es igual a)

{

if (punto == verdadero)

{

m_EDIT1.Format("%lg",número1);

}

else

{

m_EDIT1.Format("%lg",número1);

m_EDIT1 += ". ";

}

}

si no

{

si (punto == verdadero)

{

m_EDIT1.Format("%lg",número2);

}

else

{

m_EDIT1.Format("%lg",número2);

m_EDIT1 += ".";

}

}

punto = verdadero;

SetDlgItemText(IDC_EDIT1,m_EDIT1);

UpdateData(FALSE);

}

void CMyDlg::Calc1()//Haga clic en la tecla numérica

{

cambiar(m_numb)

{

caso 0:

m_edit = 0;

romper;

caso 1:

m_edit = 1;

romper;

caso 2:

m_edit = 2;

descanso;

caso 3:

m_edit = 3 ;

descanso;

caso 4:

m_edit = 4;

descanso;

caso 5:

m_edit = 5;

romper;

caso 6:

m_edit = 6;

romper;

caso 7:

m_edit = 7;

descanso;

caso 8:

m_edit = 8 ;

romper;

caso 9:

m_edit = 9;

romper;

}

si (es igual a)

{

es igual a falso

;

núm = false;

}

si (punto)

{

número2 = número2+ m_edit *pow((double)10,(double)(nums--));

if (m_edit == 0)

{

if (nums == -2)

{

m_EDIT1.Format("%lg",número2);

m_EDIT1 += ".0";

p>

}

else

{

m_EDIT1.Format("%lg",número2);

m_EDIT1 + = "0";

}

}

else

m_EDIT1.Format("%lg",número2);< / p>

}

else

{

número2 = número2 * 10 + m_edit;

m_EDIT1.Format(" % lg",número2);

}

SetDlgItemText(IDC_EDIT1,m_EDIT1);

UpdateData(FALSE);

}< / p>

void CMyDlg::Calc2()//Operador de clic

{

if (!equals)

{

if (num)//Después de presionar el operador, si se presionó la tecla numérica

{

interruptor (m_sign)

{

caso '+':

número1 = número1+número2;

descanso;

caso '-':

número1 = número1-número2;

descanso;

case '*':

número1 = número1*número2;

descanso

caso '/':

si (número2 != 0)

{

número1 = número1/número2;

}

romper;

}

}

si no

{

número1 = número2;

núm = verdadero;

}

}

else

{

equals = false;

}

if (m_sign == '/'&& number2 == 0)

m_EDIT1 = " El divisor no puede ser cero";

else

m_EDIT1.Format("%lg",número1);

número2 = 0;

punto = false;

nums = -1;

SetDlgItemText(IDC_EDIT1,m_EDIT1);

UpdateData(FALSE);

}

void CMyDlg::OnBnClickedButton20()//Tecla de retroceso

{

// TODO: Agregue el código del controlador de notificaciones de control aquí

si (!(equ

als||funs))

{

m_EDIT1.Format("%lg",number2);

int n = m_EDIT1.GetLength()-1 ;

CString c1 = m_EDIT1.Left(n);

if (n)

SetDlgItemText(IDC_EDIT1,c1);

else

SetDlgItemText(IDC_EDIT1,"0");

número2 = atof(c1);

}

UpdateData(FALSE) ;

}

void CMyDlg::OnBnClickedButton22()

{

// TODO: Agregue el código del controlador de notificaciones de control aquí

si (es igual a)

{

número1 = sin(número1);

m_EDIT1.Format("%lg",número1);

}

else

{

número2 = sin(número2);

m_EDIT1.Format (" %lg",número2);

/*IDC_EDIT1.SetWindowText(m_EDIT1);*/

}

funs = true;

SetDlgItemText(IDC_EDIT1,m_EDIT1);

UpdateData(FALSE);

}

void CMyDlg::OnBnClickedButton25()

{

// TODO: agregue aquí el código del controlador de notificaciones de control

if (equals)

{

número1 = exp (número1);

m_EDIT1.Format("%lg",número1);

}

else

{

número2 = exp(número2);

m_EDIT1.Format("%lg",número2);

/*IDC_EDIT1.SetWindowText(m_EDIT1);*/

}

funs = true;

SetDlgItemText(IDC_EDIT1,m_EDIT1);

UpdateData(FALSE);

}

void CMyDlg::OnBnClickedButton24()

{

// TODO: Agregue el código del controlador de notificaciones de control aquí

if (es igual a)

{

número1 = log(número1);

m_EDIT1.Format("%lg",número1);

}

else

{

número2 = log(número2);

m_EDIT1.Format("%lg",número2);

/*IDC_EDIT1.SetWindowText(m_EDIT1);*/

}

funs = true;

SetDlgItemText(IDC_EDIT1,m_EDIT1);

>UpdateData(FALSE);

}

void CMyDlg::OnBnClickedButton23()

{

// TODO: Agregar aquí Control código del controlador de notificaciones

if (igual a)

{

número1 = cos(número1);

m_EDIT1.Format(" %lg ",número1);

}

else

{

número2 = cos(número2);

m_EDIT1.Format("%lg",número2);

/*IDC_EDIT1.SetWindowText(m_EDIT1);*/

}

funs = true ;

SetDlgItemText(IDC_EDIT1,m_EDIT1);

UpdateData(FALSE);

}

void CMyDlg::OnBnClickedButton26()

{

// TODO: Agregue el código del controlador de notificación de control aquí

if (es igual a)

{

número1 = pow(número1,2);

m_EDIT1.Format("%lg",número1);

}

else

{

número2 = pow(número2,2);

m_EDIT1.Format("%lg",número2);

/*IDC_EDIT1. ;*/

}

funs = true;

SetDlgItemText(IDC_EDIT1,m_EDIT1);

UpdateData(FALSE);

}

void CMyDlg::OnClose()

{

if ( MessageBox(_T("¿Salir del programa? "),_T ("Preguntar"),MB_YESNO|MB_ICONQUESTION) == IDYES )

{

CDialog::OnClose();

}

}

BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)

{

if(pMsg->message == WM_KEYDOWN)

{

if(pMsg->wParam == VK_ESCAPE)

{

devuelve verdadero

}

if(pMsg->wParam == VK_RETURN)

{

devuelve verdadero

}

}

volver CDialog::PreTranslateMessage(pMsg);

}