Versión 3.0

800x600 mínimo
En esta lección:

Usando Visual C++ 6.0
-----


Otras secciones:

Conceptos básicos
-----
Programando en C
-----
Programando en C++
-----
Programando Windows 9x.
-----
Teoría electrónica
-----
Circuitos electrónicos
-----
Actividades adicionales
-----
Hipervínculos
-----


Contácteme:

Dudas y comentarios
-----


Controles estándar en Visual C++ 6.0 (II)

Botones de radio, casillas de verificación y cuadros de grupo

     Para crear un programa funcionalmente similar a control2.c (presentado en el artículo Controles estándar) utilizando MFC y Visual C++ 6.0, seguimos los mismos cinco pasos iniciales presentados en detalle en la primera sección de ésta serie especial, a partir de éste artículo sólo mostraré en texto los pasos a seguir, empezamos creando una área de trabajo de la siguiente manera:

  1. Abra Microsoft Visual C++ 6.0 seleccionando menú inicio||Programas||Microsoft Visual Studio 6.0||Microsoft Visual C++ 6.0

  2. Una vez iniciado Visual C++ 6.0 seleccione menu File||New.... Se abre el cuadro de diálogo New.

  3. En el cuadro de diálogo New seleccione MFC AppWizard(exe), luego asigne el directorio en donde estará ubicado su proyecto en el cuadro de edición marcado como Location, enseguida asigne un nombre para su proyecto en el cuadro de edición marcado como Project name y entonces presione el botón OK.

  4. En la primera etapa del AppWizard seleccione la opción Dialog based y presione el botón marcado Next.

  5. En la segunda etapa del AppWizard deje solamente marcada la opción 3D controls y en el cuadro de edición que se encuentra en a parte inferior introduzca el título de su aplicación. Presione después el botón Next.

  6. En la tercera etapa del AppWizard deje las opciones presentadas por defecto. Presione el botón Next.

  7. En la última etapa del AppWizard presione el botón Finish, aparece el cuadro de diálogo New Project Information el cual resume las operaciones anteriormente ejecutadas. Presione el botón OK.

  8. Aparecerá en el área de trabajo de Visual C++ 6.0 el editor de cuadros de diálogo, elimine los controles presentados por defecto y diseñe la vista de su programa de acuerdo a la siguiente imagen:

Programa que demuestra el uso de los botones de radio, las casillas de verificación y los cuadros de grupo

     Los diferentes controles deberán ser configurados de la siguiente manera, seleccione un control haciendo clic con el botón secundario del ratón y luego escoja en el menú contextual la opción Properties, aparecerá el cuadro de diálogo tipo de control Properties en donde cada control será configurado de acuerdo a las siguientes propiedades:

Control Propiedad Valor
Group Box ID
Caption
Visible
Group
IDC_STATIC
Alimento
Marcada
Marcada
Group Box ID
Caption
Visible
Group
IDC_STATIC
Hora
Marcada
Marcada
Check Box ID
Caption
Visible
Tab stop
IDC_CASILLA1
&Pollo frito
Marcada
Marcada
Check Box ID
Caption
Visible
Tab stop
IDC_CASILLA2
P&escado fresco
Marcada
Marcada
Check Box ID
Caption
Visible
Tab stop
IDC_CASILLA3
&Croquetas
Marcada
Marcada
Radio Button ID
Caption
Visible
Group
IDC_RADIO1
&Mañana
Marcada
Marcada
Radio Button ID
Caption
Visible
IDC_RADIO2
&Tarde
Marcada
Radio Button ID
Caption
Visible
IDC_RADIO3
&Noche
Marcada
Button ID
Caption
Visible
Tab stop
IDC_BOTON1
&Noche
Marcada
Marcada

     Para poder trabajar con los controles que hemos colocado en el cuadro de diálogo se necesita asignar variables para algunos de los controles, en concreto para las tres casillas de verificación y uno de los botones de radio. Habrá observado que se asignó identificadores consecutivos para los botones de radio, dada su naturaleza de funcionamiento, los botones de radio generalmente se agrupan dentro de un control Group Box, para el conjunto de botones de radio basta con asignar a uno de ellos la propiedad Group, para el resto de los botones de radio dentro del conjunto delimitado por el Group Box no se debe asignar la propiedad Group. El resultado de éstas acciones es que el valor devuelto al interactuar con los botones de radio es el identificador de ventana hija en una cuenta consecutiva que empieza en cero. Tomando ésto en consideración necesitamos una variable de tipo int para almacenar el identificador de ventana hija para el control de radio y tres variables de tipo BOOL para almacenar el estado actual de las tres casillas de verificación.

     Para asignar variables a los controles del programa utilizamos el ClassWizard, ábralo seleccionando menú View||ClassWizard..., aparece el cuadro de diálogo MFC ClassWizard, seleccione la pestaña Member Variables. Seleccione el identificador de uno de los controles y presione el botón Add Variable... entonces asigne el nombre y tipo de variable para el control seleccionado de acuerdo a la siguiente tabla:

Control Categoría Tipo Nombre de la variable
IDC_CASILLA1 Value BOOL m_bCasilla1
IDC_CASILLA2 Value BOOL m_bCasilla2
IDC_CASILLA3 Value BOOL m_bCasilla3
IDC_RADIO1 Value int m_iRadio1

     Después de asignar variables para algunos de los controles es necesario inicializarlas, el mejor lugar para hacer ésto es en respuesta al mensaje de MFC ON_WM_INITDIALOG, por lo tanto seleccionamos la pestaña Message Maps del ClassWizard, aquí, en el cuadro de texto marcado como Member functions resaltamos la función OnInitDialog que coresponde al mensaje ON_WM_INITDIALOG y presionamos el botón marcado como Edit Code. Se abre el archivo Nombre_de_su_programaDlg.cpp, luego, localize la porción de código marcada como // TODO: Add extra initialization here y agregue el siguiente código:


// TODO: Add extra initialization here
m_bCasilla1 = FALSE;
m_bCasilla2 = FALSE;
m_bCasilla3 = FALSE;
m_iRadio1 = 0; // Mañana = 0, Tarde = 1, Noche = 2

// Actualiza el dialogo
UpdateData(FALSE);

     Para finalizar basta con agregar el código necesario que permita al programa desplegar un mensaje de acuerdo a la(s) opción(es) seleccionada(s), ésto se hace como respuesta a presionar el botón marcado como Presione Aquí por lo tanto se requiere agregar una función para el control Button, nuevamente abra el ClassWizard y en la pestaña Message Maps seleccione el identificador del botón, IDC_BOTON1, en el cuadro de edición marcado como Messages: seleccione BN_CLICKED y entonces presione el botón marcado como Add Function..., aparecerá el cuadro de diálogo Add Member Function, acepte el nombre sugerido presionando el botón OK. El código que debe agregar para la nueva función miembro de la clase Nombre_de_su_programaDlg llamada OnBoton1() se detalla a continuación:


void CEjemplo2Dlg::OnBoton1() 
{
	// Obtiene valores de variables
	UpdateData(TRUE);
	if((m_bCasilla1 && m_bCasilla2 && m_bCasilla3) && m_iRadio1==0)
		MessageBox("Pollo, pescado y croquetas por la mañana");
	else
	if((m_bCasilla1 && m_bCasilla2 && m_bCasilla3) && m_iRadio1==1)
		MessageBox("Pollo, pescado y croquetas por la tarde");
	else
	if((m_bCasilla1 && m_bCasilla2 && m_bCasilla3) && m_iRadio1==2)
		MessageBox("Pollo, pescado y croquetas por la noche");
	else
	if((m_bCasilla1 && m_bCasilla2) && m_iRadio1==0)
		MessageBox("Pollo y pescado por la mañana");
	else
	if((m_bCasilla1 && m_bCasilla2) && m_iRadio1==1)
		MessageBox("Pollo y pescado por la tarde");
	else
	if((m_bCasilla1 && m_bCasilla2) && m_iRadio1==2)
		MessageBox("Pollo y pescado por la noche");
	else
	if((m_bCasilla1 && m_bCasilla3) && m_iRadio1==0)
		MessageBox("Pollo y croquetas por la mañana");
	else
	if((m_bCasilla1 && m_bCasilla3) && m_iRadio1==1)
		MessageBox("Pollo y croquetas por la tarde");
	else
	if((m_bCasilla1 && m_bCasilla3) && m_iRadio1==2)
		MessageBox("Pollo y croquetas por la noche");
	else
	if((m_bCasilla2 && m_bCasilla3) && m_iRadio1==0)
		MessageBox("Pescado y croquetas por la mañana");
	else
	if((m_bCasilla2 && m_bCasilla3) && m_iRadio1==1)
		MessageBox("Pescado y croquetas por la tarde");
	else
	if((m_bCasilla2 && m_bCasilla3) && m_iRadio1==2)
		MessageBox("Pescado y croquetas por la noche");
	else
	if((m_bCasilla1) && m_iRadio1==0)
		MessageBox("Pollo por la mañana");
	else
	if((m_bCasilla1) && m_iRadio1==1)
		MessageBox("Pollo por la tarde");
	else
	if((m_bCasilla1) && m_iRadio1==2)
		MessageBox("Pollo por la noche");
	else
	if((m_bCasilla2) && m_iRadio1==0)
		MessageBox("Pescado por la mañana");
	else
	if((m_bCasilla2) && m_iRadio1==1)
		MessageBox("Pescado por la tarde");
	else
	if((m_bCasilla2) && m_iRadio1==2)
		MessageBox("Pescado por la noche");
	else
	if((m_bCasilla3) && m_iRadio1==0)
		MessageBox("Croquetas por la mañana");
	else
	if((m_bCasilla3) && m_iRadio1==1)
		MessageBox("Croquetas por la tarde");
	else
	if((m_bCasilla3) && m_iRadio1==2)
		MessageBox("Croquetas por la noche");
	else
		MessageBox("Seleccione un alimento");
}

     Mediante un análisis detallado podrá comprobar la similitud funcional comparada con el programa control2.c, la diferencia fundamental está en el uso de la función UpdateData(), ésta se utiliza para recuperar el estado y valores de los controles utilizados merced de la selección que haya hecho el usuario del programa, para ésto se pasa el valor TRUE como parámetro de la función. En sentido inverso, si deseamos establecer los controles a determinados valores entonces le pasamos a la función UpdateData() el valor de FALSE, ésto lo hice al momento de inicializar las variables.

     Ya sea que programe su aplicación utilizando MFC y Visual C++ 6.0 ó de la manera mostrada en el artículo Controles estándar utilizando C, básicamente el principio de operación y trabajo con los controles de la clase Button es esencialmente el mismo. Resta compilar y ejecutar el programa, seleccione menú Build||Build Nombre_de_su_programa.exe para compilarlo, ejecute el programa presionando la combinación de teclas Ctrl + F5.

     Recuerde, el código fuente para éste programa lo encontrará en la parte inferior del artículo Controles estándar, podrá descargar la totalidad de los programas o si lo prefiere solamente los relacionados con el uso de Visual C++ 6.0.

Volver a Controles estándar

Volver al principio

Hola mundo

© 1999 Virgilio Gómez Negrete, Derechos Reservados