PDF de programación - Apunte de VC++ 6 - Capítulo III

Imágen de pdf Apunte de VC++ 6 - Capítulo III

Apunte de VC++ 6 - Capítulo IIIgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 6 de Febrero del 2018)
507 visualizaciones desde el 6 de Febrero del 2018
171,7 KB
4 paginas
Creado hace 7a (21/11/2016)
Apunte de Visual C++

 

Por: Demian Panello        [email protected]
                 
Capítulo III
Indice rápido del capítulo 3:

Controles Radio Button, Check Box y Group Box.
Clase CWnd, clase CButton.
Función GetCheck().

 

 

CONTROLES: RADIO BUTTON, CHECK BOX Y GROUP BOX.

Cree una aplicación MFC basada en diálogo, tal como se hizo en los ejemplos anteriores y póngale autos como Project
Name.

La  aplicación  hará  uso  de  controles  de  opción  (radio  button),  controles  de  veirficación  (check  box)  y  marcos  (GROUP
BOX).

Los  controles  de  opción  son  esos  "circulitos"  que  uno  selecciona  y  que  automáticamente  otro  queda  sin  efecto  (sin
seleccionar). Esto ocurre cuando los controles de opción se consideran agrupados. En VC se agrupan de acuerdo al orden
en que fueron colocados en el cuadro de diálogo, partiendo de un primer control con la propiedad GROUP activada y hasta
que encuentre otro objeto con la misma propiedad GROUP activada.

Para pasar en claro esto último diseñe la aplicación de acuerdo a los siguientes pasos.

  Seleccione un control GROUP BOX de la barra de herramientas. 

Escriba Marcas en la propiedad Caption del GROUP BOX.
Luego coloque 3 radio buttons dentro del GROUP BOX
Las propiedades de los tres botones de opción serán:

El primero: ID = IDC_BMW, CAPTION = BMW y tildar GROUP.
El segundo: ID = IDC_AUDI, CAPTION = Audi y no tildar GROUP.
El tercero: ID = IDC_OPEL, CAPTION = Opel y no tildar GROUP.

Se  tilda  GROUP  sólo  en  el  primero  para  especificar  que  a  partir  de  ese  control  en  adelante  (de  acuerdo  al  orden  de
tabulación), estarán relacionados los botones de opción hasta encontrar un nuevo control con GROUP tildado.

Agregue otro GROUP BOX a la izquierda de Marcas con la propiedad CAPTION = Tipos.
Coloque 3 radio buttons dentro del GROUP BOX y especifíquele las siguientes propiedades:
El primero: ID = IDC_SEDAN, CAPTION = Sedan, tildar GROUP y en STYLE tildar PUSH LIKE.
El segundo: ID = IDC_COUPE, CAPTION = Coupé, no tildar GROUP y en STYLE tildar PUSH LIKE.

El tercero: ID = IDC_BREAK, CAPTION = Break, no tildar GROUP y en STYLE tildar PUSH LIKE.

Aquí el primero como tiene la propiedad GROUP tildada da por finalizado el agrupamiento anterior y comienza el nuevo de
los Tipos.

Por último coloque 2 CHECK BOX a la izquierda:

El primero ID = IDC_AIRE, Caption = con aire y GROUP tildado (da por finalizado el grupo anterior).
El segundo ID = IDC_CD, Caption = con CD y GROUP sin tildar.

Más o menos así quedaría el diseño:

Una  vez  diseñada  la  ventana  y  los  controles  con  sus  respectivas  propiedades  especificadas;  hay  que  crear  las  variables
asociadas a los controles que manipularán los datos.

Aquí los datos son, básicamente, si un botón de opción está activado o no. Se necesitará una variable por grupo de botones
de opción: una para el grupo "autos", asociada a la primer opción: BMW y otra para el grupo "tipos", asociada a la primer
opción: SEDAN.

Crear variables miembro:

Seleccione el primer radio button del grupo Autos, (BMW) y acceda a ClassWizard.
En ClassWizard vaya a la solapa Member Variables y seleccione IDC_BMW.
Presione Add Variable; aparecerá la ventana Add Member Variable.
Allí ingrese m_Marca como Member Variable Name; seleccione Value en Category y Variable Type = int.
Haga lo mismo para el primer radio button del grupo Tipos (Sedán) y llame a la variable m_Tipo.

La idea es que al presionar Aceptar, de acuerdo a las opciones seleccionadas muestre un mensaje informativo.

Antes  debemos  asignarles  a  las  variables  recién  creadas  un  valor  inicial,  para  que  así,  al  iniciar  la  aplicación,  estén
seleccionados  por  defecto  los  primeros  radio  buttons  de  cada  grupo.  Esto  se  hace  editando  el  constructor  de  la  clase
CAutosDlg:

En la ventana WorkSpace, seleccione la solapa ClassView.
Expanda la rama de la clase CAutosDlg.
Haga doble click en la primer función: CAutosDlg(CWnd *pParent = NULL).
Verá que las variables creadas tienen el valor –1, cámbielo por 0. Esto establece como seleccionada la primer opción,
(BMW en el primer grupo y Sedan en el segundo).

Ahora escribiremos el código del botón Aceptar. Puede acceder al mismo por el ClassWizard o simplemente haciendo doble
click sobre el botón.

Escriba:

void CAutosDlg::OnOK()

{

// TODO: Add extra validation here

CWnd *wndAuto; (1)

CWnd *wndTipo; (2)

CString strMensa; (3)

CString strAuto, strTipo, strExtra; (4)

CButton* bAire; (5)

CButton* bCD; (6)

 

//Convierto los dos Check que originalmente son de

//tipo CWnd a tipo CButton para poder hacer uso de

//las funciones de CButton.

bAire = (CButton*) GetDlgItem(IDC_AIRE); (7)

bCD = (CButton*) GetDlgItem(IDC_CD); (8)

strExtra= " ­"; (9)

if (bAire­>GetCheck () && bCD­>GetCheck ()) (10)

    strExtra = " con Aire y CD."; (11)

else if (bAire­>GetCheck() && !bCD­>GetCheck()) (12)

    strExtra = " con Aire."; (13)

else if (!bAire­>GetCheck() && bCD­>GetCheck()) (14)

    strExtra = " con CD."; (15)

UpdateData(); (16)

wndAuto=GetDlgItem(IDC_BMW + m_Marca); (17)

wndTipo=GetDlgItem(IDC_SEDAN + m_Tipo); (18)

wndAuto­>GetWindowText (strAuto); (19)

wndTipo­>GetWindowText (strTipo); (20)

strMensa = "Su auto es un/a: " + strTipo + " " + strAuto + strExtra; (21)

MessageBox(strMensa); (22)

}

Parecerá un poco extenso y complejo este código, pero no desespere, veamos línea por línea.

En las líneas (1) y (2) se declaran dos punteros a CWnd para luego asociarlos a los primeros radio buttons de cada grupo y
poder obtener el texto (ver líneas 17, 18 19 y 20).

En las líneas (3) y (4) se declaran algunas variables de cadena donde se almacenarán, por un lado los textos de los radio
buttons y check box.

Como  antes  se  comentó,  todos  los  objetos  de  Windows  son  ventanas,  o  sea  de  la  clase  CWnd.  La  clase  CButton  posee
funciones que vamos a necesitar, por ejemplo GetCheck(), entonces en (5) y (6) se declaran dos punteros a CButton que
luego en (7) y (8) se usan para relacionarlos con los checks box.

De 10 a 15 se averigua, por medio de GetCheck(), que check box está marcado para así preparar el texto correspondiente.

Con UpdateData(TRUE) en (16) se transfieren los datos de los controles a las variables.

En (17) y (18) se relacionan los radio buttons con punteros CWnd para después, por medio de GetWindowText() se obtiene
el texto de los controles seleccionados (19 y 20).

Nos detenemos un instante en (17) y (18) y vemos que es precisamente en esas líneas donde se determina que radio button
está seleccionado, pues el parámetro de GetDlgItem es el ID del primer control del grupo más el contenido de la variable
miembro.

En (21) se prepara una variable CString que luego en (22) se muestra por pantalla.

Resumiendo:

Para saber si un Check Box está marcado o no se debe usar la función GetCheck() de la clase Cbutton, por lo tanto de
debe convertir el puntero CWnd que retorna GetDLgItem() a CButton. Es bueno tener en cuenta eso de poder
convertir de una clase a otra en caso de necesitar alguna función en especial.
Se conoce un Radio Button seleccionado perteneciente a un grupo a través de pasar el ID del primer control del grupo
más la variable miembro a GetDlgItem().

Descargar archivos fuentes del ejemplo: autos.zip

Capítulo siguiente (4)

Capítulo anterior (2)
  • Links de descarga
http://lwp-l.com/pdf8642

Comentarios de: Apunte de VC++ 6 - Capítulo III (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad