CREACIÓN DE UN PROYECTO VC++ MODIFICACIÓN DEL

Anuncio
CREACIÓN DE UN PROYECTO VC++
1. En el escritorio pulsar sobre el icono Microsoft Visual C++.
2. Seleccionar el menú File->New
3. Sobre el asistente AppWizard que aparece seleccionar la opción de proyecto
MFCAppWizard(exe) y rellenar los campos Project Name con el nombre a
asignar a nuestro proyecto (ej VC) y Location para indicar el directorio del disco
donde se salvará el proyecto, a continuación pulsar sobre el botón OK.
4. Sobre la ficha MFC AppWizard-Step1 seleccionar la opción Dialog based y
pulsar sobre el botón Finísh.
5. Por último pulsar el botón OK sobre la ficha New Project Information.
6. Pulsar sobre el texto A HACER: Colocar aquí controles de cuadro de diálogo y
pulsar la tecla “supr” para eliminar el texto del diálogo
MODIFICACIÓN DEL PROYECTO
Una vez creado el proyecto, podemos modificarlo añadiendo controles y eventos en la
ventana de diálogo.
En la ventana de la parte izquierda del proyecto aparece una estructura de navegación
del proyecto con tres pestañas en la parte inferior: ClassView, ResourceView y
FileView. Si pulsamos sobre estas pestañas vemos que el contenido de la ventana
cambia mostrando en su interior la estructura en árbol de los elementos seleccionados.
Si pulsamos sobre ClassView y pulsamos sobre los símbolos + para expandir el árbol
observamos las 3 clases creadas por el asistente de aplicaciones AppWizard;
CAboutDlg, CVCApp y CVCDlg. En el interior de estas clases un símbolo celeste
identifica a una variable y uno violeta a una función (Método). Si existe el símbolo
adicional de una llave, se indica que la variable o método tienen el atributo de
protegido.
Sí hacemos dobleClick sobre el título de la clase el compilador nos muestra en la
ventana central el código fuente de la definición de la clase en el fichero asociado *.h, y
si hacemos dobleClick sobre el nombre de un método de la clase en la ventana central
aparece el código fuente de la misma en el fichero asociado *.cpp
Si seleccionamos en el panel de navegación la pestaña ResourceView, aparece una lista
de los recursos visuales disponibles en el proyecto. Si abrimos el árbol de Dialog se
muestra la lista de los diálogos disponibles en nuestro proyecto, En este caso
IDD_ABOUTBOX e IDD_VC_DIALOG. Si hacemos dobleClick sobre
IDD_VC_DIALOG se mostrará en la ventana central la ventana del diálogo.
Creación de Controles
Vamos a añadir al diálogo tres elementos: dos botones y un texto editable. Para ello
vamos a proceder de la siguiente manera:
• Sobre el panel flotante de controles seleccionar el control Button haciendo clic
sobre él.
• Pulsar sobre el diálogo para situar el control
• Modificar el tamaño pulsando el ratón sobre una de los indicadores de borde y
arrastrar el ratón para cambiar el tamaño.
• Para modificar el texto del botón pulsar sobre el botón para que esté
seleccionado, pulsar el botón derecho del ratón y seleccionar la opción
Properties. Modificar el contenido del campo Caption para cambiar el texto y el
campo ID para cambiar el manejador del botón y pulsar Intro.
Repetir el proceso de creación de un segundo botón y cambiar los textos asociados a
Marcha y Paro y los ID a ID_MARCHA e ID_PARO.
Añadimos a continuación un texto de edición al diálogo. Para ello:
• Seleccionamos de la paleta de controles el control EditBox
• Pulsamos sobre el diálogo para situar el control.
• Con el botón derecho del ratón accedemos a Properties del control y
modificamos el ID a ID_RELOJ.
Creación de eventos de los controles
•
•
•
•
•
•
•
Seccionar la opción del menú View->ClassWizard
Seleccionar la pestaña superior Message Maps
En el control Class name seleccionar la clase CVCDlg
En la lista Object IDs seleccionar el control IDC_MARCHA
En la lista de Messages seleccionar BN_CLICKED
Pulsar el botón Add Function
Aceptar el nombre del evento a crear OnMarcha pulsando OK
Repetir el procedimiento con el botón IDC_PARO
Creación de variables de los controles
•
•
•
•
•
•
•
•
En la ventana MFC ClassWizard seleccionar la pestaña superior Member
Variables
En el control Class name seleccionar la clase CVCDlg
En la lista Object IDs seleccionar el control IDC_RELOJ
Pulsar sobre el botón AddVariable
Sobre el campo member variable name escribir m_reloj
Sobre el campo Category seleccionar el valor control
Sobre el campo Variable type seleccionar CEdit
Pulsar sobre el botón aceptar para crear la variable
Acceso a los valores de los controles CEdit
Cuando se utilizan controles CEdit en un diálogo, se puede acceder a su contenido de
dos formas distintas:
1. Como control CEdit
2. Como cadena de caracteres CString
Cuando se accede a un CEdit en modo control se debe crear una variable de este tipo:
por ejemplo CEdit m_ed;
Una vez que disponemos de esta variable se pueden utilizar los siguientes métodos para
acceder a su contenido:
• Escritura: m_ed.SetWindowText(“hola”);
• Lectura: CString cs;m_ed.GetwindowText(cs);
Cuando se accede al control como cadena de caracteres u otro tipo de variable (int, long
etc.) se debe crear la variable asociada en modo Value generándose una definición de la
variable de la forma: CString m_ed;
Para leer el valor del control se debe proceder a introducir el valor del control dentro de
la variable m_ed para ello se utilizará el método UpdateData(TRUE);
A partir de este momento m_ed contiene la información que se mostraba en el diálogo.
Este método refresca los valores de todas las variables de un diálogo.
Cuando se usa UpdateData con el valor FALSE se cambian los valores de todos los
controles del diálogo con los valores de sus variables asociadas.
Por ejemplo:
m_ed=”hola”;
UpdateData(FALSE);
MessageBox
Windows utiliza una ventana de información para mostrar mensajes que se denomina
MessageBox. La forma de la ventana se puede ajustar indicando el tipo de icono y los
botones que se deben mostrar.
Dentro de las librerías de clases MFC hay una versión simplificada de este método que
se denomina AfxMessageBox.
Su forma más simple de utilización es: AfxMessageBox(“Hola”);
Esta sentencia muestra en pantalla una ventana con el texto “Hola” y el botón Aceptar.
Revisión de la aplicación
•
•
•
•
Cerrar la ventana MFC ClassWizard pulsando sobre el botón OK
Sobre el panel de navegación seleccionar la pestaña ClassView
Abrir le árbol de la clase CVCDlg pulsando sobre el símbolo + de la misma
Observar que se han creado en la clase los eventos OnParo() y OnMarcha() y la
variable m_reloj
Creación de temporizadores
Un temporizador se crea con la función SetTimer(id_ timer, tiempo_ms, NULL);
Si se crea un solo timer lo identificaremos por el nº 1.
El segundo parámetro de la función es el tiempo que transcurre entre dos eventos
consecutivos del timer. El tiempo se expresa en milisegundos, de forma que si
especificamos 1000 en este parámetro indicaremos que los eventos del timer se
generarán cada 1000 ms=1segundo.
Para cancelar un timer se llama a la función KillTimer(id_timer);
Las funciones SetTimer y KillTimer crean y destruyen un temporizador pero
necesitamos crear también la función que gestionará el evento cada vez que transcurra
tiempo_ms.
Para crear el evento usaremos View-> ClassWizard->MessageMaps.Sobre la lista
Object iDs seleccionaremos el objeto CVCDlg y sobre la lista Messages elegiremos el
evento WM_TIMER y pulsaremos sobre el botón AddFunction.
Se generará entonces el evento del timer con la siguiente estructura:
void CVCDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CDialog::OnTimer(nIDEvent);
}
El parámetro nIDEvent que recibe OnTimer es el id_timer del timer que genera el
evento. En nuestro caso si solo hay un timer ignoraremos ese argumento. Si se han
creado varios timer en la aplicación, deberemos usar una estructura Switch-Case para
crear el código específico para cada timer.
El código creado se ha de insertar antes de la línea CDialog::OnTimer(nIDEvent) que
será siempre la última sentencia de la función.
Creación de código
Una vez creada la estructura de la aplicación es necesario escribir el código de la
aplicación.
Nuestra aplicación debe crear el código necesario para contar segundos y mostrar el
valor correspondiente en el texto de edición. Los botones Marcha y Paro iniciarán y
terminarán la acción de contar.
Necesitamos realizar las siguientes acciones:
•
•
•
•
Crea una variable global para mantener el valor de cuenta
Crear un temporizador de intervalo 1 seg cuando se pulsa el botón marcha
Destruir el temporizador de 1 seg cuando se pulsa el botón Paro
Actualizar el valor de los segundos acumulados y mostrarlos en el control
IDC_RELOJ cuando se reciba el evento de temporizador.
Para crear una variable global hacemos dobleClick sobre el nombre de la clase CVCDlg
en el panel de navegación.
En el fichero VCDlg.h en edición, incluimos la línea int segundos
class CVCDlg : public CDialog
{
// Construction
public:
CVCDlg(CWnd* pParent = NULL); // standard constructor
int segundos;
// Dialog Data
Para crear el temporizador editamos la función OnMarcha. Para acceder a su código
hacemos dobleClick sobre el nombre del método OnMarcha en el panel de navegación.
Incluimos la línea de código SetTimer(1,1000,NULL);
Para destruir el temporizador insertamos la línea de código KillTimer(1) en la función
OnParo()
Para actualizar el valor de cuenta insertamos en el código del evento OnTimer las líneas
de código necesarias para incrementar la variable de cuenta y mostrar el valor en el
diálogo.
Necesitamos además inicializar la variable segundos a cero antes de empezar para ello
escribimos la sentencia segundos=0; en el código de la función OnInitDialog al final de
la misma después del comentario // TODO: Add extra initialization here
CString es una clase de manejo de cadenas de caracteres de las librerías MFC que
contiene el método Format equivalente a la instrucción printf de lenguaje C.
La variable m_reloj es del tipo CEdit que es una clase MFC que contiene el método
SetWindowText que permite actualizar el contenido de texto del control
Compilar y ejecutar la aplicación
El compilador contiene la siguiente barra de herramientas
El primer botón de la barra compila el fichero fuente en edición
El segundo botón Compila y enlaza las librerías creando el ejecutable
El tercer botón crea y lanza la aplicación.
Pulsar este tercer botón y comprobar el funcionamiento de la aplicación creada.
Ficheros del proyecto
Si miramos el contenido del directorio de la aplicación generada veremos fichero fuente
*.cpp y *.h, el fichero *.dsw que contiene el proyecto y los directorios res y debug
En el interior del directorio debug encontramos el ejecutable creado VC.exe y los
fichero intermedios de la compilación.
Para llevarnos el proyecto y compilar en otra máquina recitamos al menos el directorio
principal y el subdirectorio res. El subdirectorio debug no es necesario ya que se vuelve
a crear al compilar nuevamente
Documentación de las clases MFC
Se puede revisar la documentación de las clases MFC en la dirección:
http://msdn.microsoft.com/en-us/library/bk77x1wx(VS.80).aspx
Descargar