método de operación vc 6.0
Guía de funcionamiento de la computadora VC 6.0
Escuela de Ciencias y Tecnología de la Computación, Universidad de Guizhou
Zhang Zhiming
Septiembre de 2006
Índice de contenidos
1. Pasos para implementar la aplicación de consola Visual C en el ordenador
2. Ejemplo de implementación de aplicación de diálogo MFC
3. Ejemplo de implementación de aplicación de documento único MFC
4. Utilice un depurador de 32 bits para comprender las imágenes de memoria de clases y objetos
1 Aplicación de consola Visual C (Proyecto de aplicación de consola Win32)
Pasos para la implementación en computadora
1. Implementación de programas de un solo archivo
Todos los programas de este libro de texto se implementan como proyectos de aplicación de consola Win32 en el entorno Visual C y todos son programas de un solo archivo, es decir, solo contienen un programa fuente. (.cpp) archivo.
Los pasos principales para implementar un programa de un solo archivo en Visual C IDE son: (1) Crear un nuevo proyecto (2) Crear un nuevo archivo (3) Ingresar el código fuente (4) Compilar, conectar y generar archivos de programa ejecutables. Los pasos anteriores se pueden completar mediante la entrada interactiva a través de cuadros de diálogo bajo la guía del Asistente de Visual C.
1. Crear un nuevo proyecto:
Cada implementación de un programa en C debe crear un proyecto. El llamado proyecto es la unidad de gestión de un proceso de generación de archivos. El nombre del proyecto es el nombre del archivo ejecutable finalmente implementado. Un proyecto es una colección de todos los archivos fuente y archivos intermedios relacionados con la generación de este archivo de programa ejecutable, almacenados en. un archivo que lleva el nombre del proyecto en la carpeta.
Figura 1 Interfaz inicial del sistema Microsoft Visual C 6.0
Ejecute el comando de menú Filegt Nuevo para abrir el cuadro de diálogo Nuevo:
Figura 2 Abra el cuadro de diálogo Nuevo. box
p>Seleccione la opción Aplicación de consola Win32 en la pestaña Proyecto del cuadro de diálogo Nuevo, luego ingrese el nombre del proyecto de la ubicación de almacenamiento del proyecto y confirme.
Figura 3 Ingrese la ubicación y el nombre del proyecto
Seleccione Un proyecto vacío en el cuadro de diálogo Win32 ConsoleApplication-Step 1 of 1 y regrese después de finalizar. El sistema muestra el cuadro de diálogo Nuevo informe de información del proyecto.
Figura 4 Cuadro de diálogo Aplicación de consola Win32: paso 1 de 1
Figura 5 Informe de información del nuevo proyecto
Crea un nuevo archivo:
Ejecute el comando de menú Filegt; Nuevo nuevamente para abrir el cuadro de diálogo Nuevo, seleccione la opción Archivo fuente C en la pestaña Archivo y luego ingrese el nombre del archivo del programa fuente. Una vez completado, el sistema abre la ventana de edición del archivo del programa fuente (.cpp).
Figura 6 Ingrese el nombre del archivo del programa fuente en el cuadro de diálogo Nuevo
3. Ingrese el código fuente:
En este momento, puede ingresar la fuente. archivo de programa (.cpp) Introduzca el código fuente del programa en la ventana de edición.
Figura 7 Ventana de edición de archivos del programa fuente (.cpp)
4. Generar y ejecutar archivos de programa ejecutables:
11 Generar archivos ejecutables a partir de archivos de programa fuente Necesidades de archivo Para pasar por dos pasos de compilación y conexión. En el entorno de programación VC 6.0, existen las siguientes operaciones:
(1) Abra el menú Generar, primero ejecute el comando Compilar y luego ejecute el Orden de compilación. .
(2) Abra el menú Construir y ejecute el comando Reconstruir todo.
(3) Abra el menú Construir y emita directamente el comando Ejecutar ejecución para completar las tareas de compilar, conectar e iniciar la ejecución del programa al mismo tiempo.
(4) Haga clic directamente en el botón de comando "!" (BuildExecute) para completar las tareas de compilar, conectar e iniciar la ejecución del programa al mismo tiempo.
Figura 8 Menú Construir
Figura 9 Resultados de ejecución del programa
Abra la carpeta del proyecto para encontrar todos los archivos de trabajo del proyecto.
Abra la subcarpeta Depurar en la carpeta del proyecto para encontrar el archivo ejecutable (.exe) generado.
2. Implementación de programas de múltiples archivos
Un programa C más grande a veces necesita contener múltiples archivos de programa fuente. Una situación común es colocar la definición de la clase en el archivo de encabezado (.h) y la implementación de la clase o el acceso a la clase en el archivo fuente (.cpp).
La implementación de programas de varios archivos requiere los mismos pasos que la implementación de programas de un solo archivo. La diferencia es que antes de la compilación, debe usar el cuadro de diálogo Nuevo archivo para agregar todos los archivos necesarios al archivo. proyecto uno por uno.
1. Crear un nuevo proyecto:
2. Crear un nuevo archivo:
(1) Agregar y editar archivos de encabezado:
En el cuadro de diálogo Nuevo, seleccione la opción Archivo de encabezado C/C en la pestaña Archivo y luego ingrese el nombre del archivo de encabezado. Una vez completado, el sistema abrirá la ventana de edición del archivo del programa fuente (.h).
(2) Agregar y editar archivos de programa fuente
Abra el cuadro de diálogo Nuevo, seleccione la opción Archivo fuente C en la pestaña Archivo y luego ingrese el nombre del archivo del programa fuente. Una vez completado, el sistema abre la ventana de edición del archivo del programa fuente (.cpp).
Nota: El archivo de encabezado debe incluirse en el archivo del programa fuente mediante el comando file include. Por ejemplo, la primera línea del archivo de programa fuente s719.cpp es la siguiente: #include "h719.h"
3. Genera y ejecuta el archivo de programa ejecutable:
El. Los pasos son los mismos que para los programas de un solo archivo Generar y ejecutar.
#
2. Ejemplos de implementación de aplicaciones de diálogo MFC
Esta guía brinda tres ejemplos de implementación de aplicaciones de diálogo MFC. El ejemplo 1 es un programa simple para encontrar la puntuación promedio. de tres temas. El ejemplo 2 es implementar una calculadora simple con cuatro funciones aritméticas. El ejemplo 3 es un programa de máquina de lotería (se proporcionan dos versiones del programa de máquina de lotería, lotería manual y lotería automática).
A través de estos programas se pueden lograr los siguientes propósitos:
Dominar el uso de AppWizard.
Domina el uso de varias vistas en Workshop y cómo cambiar entre diferentes vistas.
Aprenda a utilizar los controles en la caja de herramientas de control para personalizar la interfaz del cuadro de diálogo.
Aprenda a configurar variables de control y otras variables miembro de la clase.
Aprende los conceptos y métodos de operación del mapeo de mensajes.
Aprende a ver y editar código.
Aprende a compilar, ejecutar y depurar aplicaciones de diálogo.
Ejemplo 1. Implementar una aplicación de diálogo MFC que calcula la puntuación media de tres materias. Supongamos que la interfaz de tiempo de ejecución es la siguiente:
Pasos de implementación:
1. En el entorno de desarrollo de trabajo de Visual C 6.0, seleccione el proyecto MFC AppWizard [exe] en el cuadro de diálogo Nuevo. e ingrese el nombre del proyecto y especifique la ubicación de almacenamiento.
2. Seleccione el tipo de programa Diálogo (diálogo básico) en el Paso 1 del Asistente de MFC e ingrese el título del cuadro de diálogo "Buscar calificación promedio" en el Paso 2 del Asistente de MFC.
Una vez finalizada la conversación con AppWizard, abra la ventana de edición del cuadro de diálogo de la siguiente manera:
3. Personalice la interfaz: agregue controles y establezca propiedades.
Elimine el original ". "Aceptar" y un control de Texto estático con el contenido "TODO: Establezca el control de diálogo aquí".
Elija un control Cuadro de grupo en la caja de herramientas de control, ajústelo a un tamaño apropiado, haga clic derecho en el borde del control y abra el cuadro de diálogo de propiedades en el menú desplegable emergente. Cambie el título del control del cuadro de grupo de "Estático" a "Puntuación promedio".
Agregue 4 controles de Texto estático en el cuadro de grupo y modifique sus atributos de título a "Grado 1", "Grado 2", "Grado 3" y "Puntuación promedio" de la misma manera.
Agregue 4 controles del cuadro de edición al cuadro de grupo, abra la pestaña Estilos extendidos del cuadro de diálogo de propiedades y configúrelos en el modo de texto alineado a la derecha (texto alineado a la derecha). La propiedad Estilos del cuarto control Cuadro de edición está establecida en Sólo lectura.
Agregue un botón Botón1 en el cuadro de grupo, abra el cuadro de diálogo de propiedades y cambie la propiedad del título del botón a "Calcular puntuación promedio".
Haga clic derecho en el borde del botón "Cancelar" para abrir el cuadro de diálogo de propiedades en el menú desplegable emergente. Cambie el título del botón a "Salir".
La interfaz diseñada es como se muestra en la figura y la lista de propiedades de control es la siguiente:
Control
Número de identificación
Título
Atributos
Cuadro de grupo
IDC_STATIC
Calcular la puntuación media
Texto estático
IDC_STATIC
Grado 1
Texto estático
IDC_STATIC
Grado 2
Texto estático
IDC_STATIC
Grado 3
Texto estático
IDC_STATIC
Puntuación promedio
Editar Cuadro
IDC_EDIT1
Alinear texto: Derecha
Editar Cuadro
IDC_EDIT2
Alinear texto: Derecha p>
Cuadro de edición
IDC_EDIT3
Alinear texto: Derecha
Cuadro de edición
IDC_EDIT4
Alinear texto: Derecha; Sólo lectura
Botón
IDC_BUTTON1
Calcular puntuación promedio
Botón
IDCANCEL
Salir
4. Agregar variables miembro
Haga clic en el menú Ver > ClassWizard (Asistente para crear clases) para ingresar a ClassWizard, abra la pestaña Variables miembro: configurada para 4 controles del cuadro de edición Variables correspondientes:
Mismo método para establecer variables para los otros tres controles del cuadro de edición:
ID de control
Nombre de la variable
Tipo de variable
Rango de valores
IDC_EDIT1
m_S1
int
0~100
IDC_EDIT2
m_S2
int
0~100
IDC_EDIT3
m_S3
int
0~100
IDC_EDIT4
m_Sav
CString
5. mapeo (dos mensajes)
Ingrese a ClassWizard, abra la pestaña Mapas de mensajes, seleccione CAverageDlg en ID de objeto, haga clic en WM_INIDIALOG en Mensajes y el mensaje OnInitDialog de la función miembro del mapa de mensajes generado aparecerá en Funciones miembro: p>
Seleccione IDC_BUTTON1 en ID de objeto, haga clic en BN_CLIKED en Mensajes y haga clic en el botón Aceptar en el cuadro de diálogo emergente: la segunda función miembro de asignación de mensajes generada, OnButton1, aparece en Funciones miembro.
6. Agregar código
Haga doble clic en la función OnInitDialog en ClassWizard, abra el código de la función OnInitDialog() en el editor de código, busque // TODO: Agregar inicialización adicional aquí. y agregue las 3 líneas de código que aparecen en negrita a continuación:
BOOL CDlgDlg::OnInitDialog()
{
CDialog::OnInitDialog(); p >
…;
// TODO: Agregue inicialización adicional aquí
m_Sav="0.00"
m_S1=m_S2=m_S3
p >
UpdateData(FALSE);
return TRUE; // devuelve TRUE a menos que establezca el foco en un control
}
Doble clic en la función ClassWizard OnButton1(), abra el código de la función OnButton1() en el editor de código, busque // TODO: Agregue inicialización adicional aquí, agregue las siguientes 4 líneas de código en negrita:
void CDlgDlg : :OnButton1()
{
// TODO: Agregue inicialización adicional aquí
UpdateData();
double ave=( double )(m_S1 m_S2 m_S3)/3.0;
m_Sav.Format("6.2f",ave
UpdateData(FALSE); p>
7. Compile y ejecute el programa:
Notas:
La función de UpdateData() es permitir la actualización de las variables de control,
UpdateData(FALSE) prohíbe actualizar el valor de una variable de control.
Ejemplo 2. Diseñe una aplicación de diálogo MFC para implementar una calculadora simple con cuatro funciones aritméticas.
1. Cree un nuevo proyecto:
2. Personalice la interfaz:
(1) Modifique la plantilla del proyecto del cuadro de diálogo creada automáticamente por MFC AppWizard. Elimine los tres controles que se crearon automáticamente en la plantilla.
(2) Agregue tres cuadros de texto estáticos: "Calculadora simple", "Ingrese datos:" y "Resultado" y los 3 cuadros de edición correspondientes.
(3) Agregue un cuadro de grupo, cambie el título a "Seleccione un operador:", coloque 4 botones de opción en él y cambie los títulos a " ", "-" y "*". respectivamente, "/".
(4) Continúe usando el mouse para agregar controles de 3 botones al cuadro de diálogo desde la caja de herramientas y cambie los títulos de los botones a "Calcular", "Borrar" y "Cerrar".
3. Agregar variables
En este ejemplo, se utilizan las siguientes cuatro variables miembro de la clase CSimpleCalcDlg:
Tipo de variable
Nombre
flotador
m_N1
flotador
m_N2
flotador
m_ Resultado p>
char
Operador
Utilice ClassWizard para agregar variables al cuadro de edición: m_N1, m_N2, m_Result
Cómo agregar variables char Operador: p>
Ingrese a la vista ClassView en WorkSpace, haga clic con el botón derecho en CSimpleCalcDlg, seleccione "Agregar variable miembro..." en el menú.
Luego ingrese el tipo y nombre de la variable en la ventana emergente. Cuadro de diálogo de inicio: p>
4. Agregar asignación de mensajes
Utilice ClassWizard para agregar asignación de mensajes al control de botón:
Continúe usando ClassWizard para agregar asignación de mensajes al control del botón de opción:
5. Agregue el código de respuesta del evento cuando se haga clic en el botón
Agregue el código de respuesta del evento cuando se haga clic en el botón en el archivo de implementación (archivo cpp) .
(Haga doble clic en un botón para ingresar directamente a la edición de funciones)
//Seleccionar operador
void CSimpleCalcDlg::OnRadio1()
{ Operador=' '; }
void CSimpleCalcDlg::OnRadio2()
{ Operador='-' }
void CSimpleCalcDlg::OnRadio3()
{ Operador='*'; }
void CSimpleCalcDlg::OnRadio4()
{ Operador='/' }
//Cálculo p >
void CSimpleCalcDlg::OnButton1()
{
UpdateData();
switch(Operador)
{
caso ' ':
m_Result=m_N1 m_N2
descanso
caso '-':
m_Result=m_N1-m_N2;
ruptura;
caso '*':
m_Result=m_N1*m_N2;
case '/':
if(m_N2 == 0 )
MessageBox("¡El divisor no puede ser cero!");
else
{
m_Result = m_N1/m_N2;
descanso
}
predeterminado:
p>
m_Result=m_N1 m_N2
}
UpdateData(FALSE); p>//Borrar
p>void CSimpleCalcDlg::OnButton2()
{
UpdateData()
m_N1=0; ;
m_N2 =0
m_Result=0
ActualizarDatos(FALSO); //Cerrar
void CSimpleCalcDlg::OnButton3()
{ CDialog::OnOK() }
6. >
Ejemplo 3. Programa de máquina de lotería:
Este ejemplo proporciona dos versiones del programa de máquina de lotería: lotería manual y lotería automática.
1. Interfaz de la máquina de lotería:
Personalice la interfaz del cuadro de diálogo que contiene 7 cuadros de edición, 1 control de progreso (barra de progreso) y 3 botones de detección de la siguiente manera:
2. >
(1) Establecer variables de la barra de progreso:
(2) Establecer 7 variables del cuadro de edición:
(3) Agregar variable miembro de clase m_x:
3. Mapeo de mensajes:
Genere cuatro funciones de mapeo de mensajes OnInitDialog, OnButton1, OnButton2 y OnOK en ClassWizard:
4 Agregar código:
//. Inicialización
BOOL CLotusDlg::OnInitDialog()
{
CDialog::OnInitDialog();
……
// TODO: Agregue inicialización adicional aquí
m_x=0;
m_pProg.SetRange(0, 70);
srand( (sin firmar) time(NULL));
return TRUE; // devuelve TRUE a menos que establezcas el foco en un control
}
(1) Lotería manual
p>
//Lotería manual, cada vez que se presione el botón de lotería aparecerá un número
void CLotusDlg::OnButton1()
{
// TODO: Agregue aquí el código del controlador de notificaciones de control
switch(m_x/10)
{
caso 0:
m_N1 =rand()36 1;
m_pProg.SetPos(m_x =10);
ruptura
caso 1:
m_N2 =rand()36 1;
m_pProg.SetPos(m_x =10);
ruptura
caso 2:
m_N3 =rand()36 1;
m_pProg.SetPos(m_x =10);
ruptura
caso 3:
m_N4 =rand()36 1;
m_pProg.SetPos(m_x =10);
ruptura
caso 4:
m_N5 =rand()36 1;
m_pProg.SetPos(m_x =10);
ruptura
caso 5:
m_N6 =rand()36 1;
m_pProg.SetPos(m_x =10);
ruptura
caso 6:
m_N7 =rand()36 1;
m_pProg.SetPos(m_x =10);
romper
}
Actualizar;
ateData(FALSE);
}
void CLotusDlg::OnButton2()
{
// TODO: Agrega tu notificación de control código de controlador aquí
m_x=0
m_N1=0
m_N2=0
m_N3=0; >
m_N4=0;
m_N5=0;
m_N6=0;
m_N7=0; FALSO);
m_pProg.SetPos(1);
}
void CLotusDlg::OnOK()
{
CDialog::OnOK();
}
(2) Lotería automática
Modificar el programa de lotería manual implementado anteriormente a una lotería automática cronometrada .
Agregue la función de mapeo de mensajes de OnTimer:
//Presione el botón de lotería para iniciar la lotería
void CLotusDlg::OnButton1()
{
SetTimer(1, 2000, NULL
}
void CLotusDlg::OnButton2()
{ p>
m_x=0;
m_N1=0;
m_N2=0;
m_N3=0; =0;
m_N5=0;
m_N6=0;
m_N7=0; p>
m_pProg.SetPos(0);
KillTimer(1);
}
void CLotusDlg::OnTimer(UINT nIDEvent) p>
{
cambiar(m_x/10)
{
caso 0:
m_N1=rand()36 1;
m_pProg.SetPos(m_x =10);
ruptura
caso 1:
m_N2=rand()36 1;
m_pProg.SetPos(m_x =10);
ruptura
caso 2:
m_N3=rand()36 1;
m_pProg.SetPos(m_x =10);
ruptura
caso 3:
m_N4=rand()36 1;
m_pProg.SetPos(m_x =10);
ruptura
caso 4:
m_N5=rand()36 1;
m_pProg.SetPos(m_x =10);
ruptura
caso 5:
m_N6=rand()36 1;
m_pProg.SetPos(m_x =10);
ruptura
caso 6:
m_N7=rand()36 1;
m_pProg.SetPos(m_x =10);
ruptura
}
UpdateData(FALSE); >
CDialog::OnTimer(nIDEvent);
}
void CLotusDlg::OnOK()
{
KillTimer (1) ;
CDialog::OnOK();
}
5. Notas:
(1) Método de generación números aleatorios
La función unsigned int rand() genera números aleatorios.
La función void srand(unsigned int seed) establece la semilla del generador de números aleatorios, donde semilla es la semilla del generador de números aleatorios. En este ejemplo, se utiliza el valor actual del reloj del sistema. la semilla de número aleatorio:
srand((unsigned)time(NULL));
La expresión rand()36 1 genera un número aleatorio entre 1-36
(3) Cómo utilizar los temporizadores
El uso de temporizadores implica tres funciones: OnTimer, SetTimer y KillTimer.
SetTimer se utiliza para configurar el tiempo e iniciar el temporizador. El primer parámetro es el número de tiempo y el segundo parámetro es el número de milisegundos del tiempo. En este ejemplo, el temporizador número 1 está configurado en 2 segundos:
SetTimer(1, 2000, NULL
El temporizador seguirá funcionando después de que se inicie; , y continuará funcionando cada vez que se alcance la hora programada, inicia la ejecución de la función de mensaje OnTimer una vez. La función de KillTimer es detener el trabajo del temporizador especificado.
3.
Ejemplo de implementación de una aplicación de documento único MFC
Pasos generales para crear una aplicación de documento único:
Utilice AppWizard para crear un marco de aplicación de documento único.
Declare los objetos de datos necesarios para guardar los datos del documento en la clase de documento.
Complete la función OnNewDocument de la clase de documento e inicialice el nuevo documento.
Complete la función Serializar de la clase de documento para mantener y cargar datos del documento.
Complete la función OnInitialUpdate de la clase de vista e inicialice la visualización.
Complete la función OnDraw de la clase de vista para mostrar el contenido del documento actual.
Agregue el código necesario para permitir a los usuarios editar datos del documento en la clase de vista.
Esta guía experimental demostrará las operaciones básicas de creación de una aplicación de un solo documento paso a paso a través de los siguientes cuatro experimentos. Las operaciones practicadas en el ejemplo anterior no se repetirán cuando aparezcan en los siguientes ejemplos.
Ejemplo 1 Una aplicación sencilla para un solo documento: programa Bloc de notas
Ejemplo 2 Salida de texto y gráficos simples
Ejemplo 3 Uso de un temporizador para generar subtítulos continuos p>
Ejemplo 4 Programación de serialización de documentos
Ejemplo 1.
Una aplicación sencilla para un solo documento: programa Bloc de notas
1. Mientras la Base La clase está configurada en EditView en el paso 6 de AppWizard, AppWizard completará automáticamente el diseño de un programa Bloc de notas:
2. Ejecute el programa para probar varias funciones del Bloc de notas:
3. Descripción:
(1) Abra la vista Clase en Workshop, puede ver que un asistente de aplicación simple de un solo documento crea automáticamente cinco clases:
Clases creadas automáticamente por el asistente
p>
Archivos fuente correspondientes
Otros archivos fuente
Archivos de encabezado correspondientes
Otros encabezados