Calculadora en Visual C++
Introducción
El proyecto actual está compilado en Visual C++ 2005 pero aun conservo e archivo .dsw para compilarlo con Visual C++ 6.0. Voy explicar algunos puntos clave sobre la implementación de esta Calculadora.
El proyecto es Basado en Dialogo (Dialog Based).
Eventos utilizados
Para utilizar la macro es necesario asegurarse de tener los valores de los ID’s de cada grupo de botones en forma correlativa (ver archivo resource.h)
- Code: Seleccionar todo
- #define IDC_0 1000
- #define IDC_1 1001
- #define IDC_2 1002
- #define IDC_3 1003
- #define IDC_4 1004
- #define IDC_5 1005
- #define IDC_6 1006
- #define IDC_7 1007
- #define IDC_8 1008
- #define IDC_9 1009
Los ID’s anteriores corresponden a los botones numéricos, entonces la forma de utilizar la macro en el segmento de código BEGIN_MESSAGE_MAP.
- Code: Seleccionar todo
- BEGIN_MESSAGE_MAP(CCalculadoraDlg, CDialog)
- //...
- ON_COMMAND_RANGE(IDC_0, IDC_9,OnClickNumeros)
- END_MESSAGE_MAP()
Para esta declaración necesitamos también la función que procesará el evento:
afx_msg void OnClickNumeros(UINT nID);
El parámetro nID asume el valor del ID del botón presionado, el cual podemos utilizar a nuestro antojo.
De la misma forma se hizo con los otros grupos de botones, como operaciones unarias, operaciones binarias, etc.
Funcionamiento de la calculadora
- Esperar a que se escriba el número para procesarlo.
- Si se ha presionado sobre un botón de operaciones unarias:
- Realizar la operación sobre el mismo número escrito.
- Mostrar el nuevo valor en el panel.
- Realizar la operación sobre el mismo número escrito.
- Si se ha presionado sobre un botón de operaciones binarias:
- Si hay un número almacenado en memoria:
- Realizar la operación con el número escrito y el número almacenado en memoria.
- Mostrar el resultado en el panel.
- Realizar la operación con el número escrito y el número almacenado en memoria.
- Si no hay un número almacenado en memoria.
- Limpiar el panel y guardar el número obtenido en memoria.
- Si hay un número almacenado en memoria:
Panel numérico
- Code: Seleccionar todo
- HBRUSH CCalculadoraDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
- {
- pDC->SetTextColor(RGB(50, 50, 255));
- pDC->SetBkColor(RGB(255, 255, 255));
- return (HBRUSH)(m_pEditBkBrush);
- }
Uso del teclado
Esta interceptación se puede implementar en la función PreTranslateMessage.
- Code: Seleccionar todo
- BOOL CCalculadoraDlg::PreTranslateMessage(MSG* pMsg)
- {
- if (pMsg->message == WM_KEYDOWN)
- {
- if (pMsg->wParam >= VK_NUMPAD0 && pMsg->wParam <= VK_NUMPAD9 )
- {
- //Teclado numerico
- return TRUE;
- }
- // ... procesar el resto de opciones de teclado
- }
- }
Pueden descargar el proyecto completo en el enlace mas abajo.
Es todo lo que puedo mencionarles, si hay algo que he olvidado explicar por favor expongan su problema/consulta en el foro activado para este artículo.
Archivos Adjuntos
- Calculadora.zip 18,54 KiB

Código Fuente Visual C++ 6.0 y 2005
Debe estar registrado para poder descargar archivos Desea registrarse?
Otros Artículos en esta sección
-
Es una técnica para reducir el parpadeo producido al dibujar en la pantalla, es muy útil para desarrollar juegos por que éstos suelen requerir refrescamiento continuo de pantalla.Es un programa en C++ que implementa la factorización o descomposición LU (del inglés Lower-Upper).Tutorial paso a paso para crear una aplicación basada en dialogo utilizando las librerías MFC con Visual C++ 2010¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:

foro de Visual C++ »
