UNIVERSIDAD DEL ISTMO Ingeniería en computación Compiladores PROFESOR M. en C. J. Jesús Arellano Pimentel NÚMERO DE PRÁCTICA 1 NOMBRE DE LA PRÁCTICA Creación de aplicaciones nativas con Microsoft Visual Studio Express 2012 para escritorio de Windows con C/C++ OBJETIVO GENERAL OBJETIVOS ESPECÍFICOS EQUIPO REQUERIDO SOFTWARE REQUERIDO Conocer los principios básicos del desarrollo de aplicaciones nativas Win32 utilizando el entorno de desarrollo de Microsoft Visual Studio Express 2012 para escritorio de Windows empleando el lenguaje C/C++ - Familiarizarse con el entorno de desarrollo integrado de Microsoft Visual Studio Express 2012 para escritorio de Windows. - Desarrollar un par de aplicaciones nativas Win32. Computadora personal con 512 MB de RAM mínimo. - Windows 7/8 - Microsoft Visual Studio Express 2012 para escritorio de Windows 1.- Fundamentos. 1.1.- Programación clásica (nativa) de Windows La programación clásica de Windows utiliza directamente la interfaz de programación de aplicaciones (API), se trata del camino más duro para la programación de Windows pero también el camino más básico, fundamental, versátil y potente. Literalmente no se puede hacer nada más con Windows utilizando otros enfoques. Al contrario, aprendiendo la programación clásica de Windows a través de C y las API, es posible entender más claramente cómo interactúan Windows y su aplicación, y esto puede ser un conocimiento muy útil [Petzold96]. 1.2.- Microsoft Visual Studio Express 2012 para escritorio de Windows Es una de las versiones gratuitas de la suite de programación de Visual Studio de la empresa Microsoft. Aunque se trata de una versión reducida respecto a versiones más profesionales provee las herramientas y librerías necesarias para crear casi todo tipo de aplicaciones Windows de 32 o 64 bits. En esta práctica se van a utilizar particularmente las tecnologías Win32 para desarrollar aplicaciones de escritorio en una máquina con Windows Vista de 32 bits, sin embargo los procedimientos descritos deben ser completamente compatibles con otras versiones de Windows. Los Sistemas operativos admitidos son: Windows 7 Service Pack 1, Windows 8, Windows Server 2008 R2 SP1 y Windows Server 2012. La instalación se puede realizar en línea, o descargando una imagen ISO para grabar en CD y después instalar1. 1 http://www.microsoft.com/visualstudio/esn/products/visual-studio-express-products Ingeniería en Computación M. C. J. Jesús Arellano Pimentel 1 2.- Desarrollo 2.1 El entorno de desarrollo de Visual Studio 2012 La gama de productos de Visual Studio comparte un único entorno de desarrollo integrado (IDE) que se compone de varios elementos: la barra de herramientas Menú, barra de herramientas Estándar, varias ventanas de herramientas que se acoplan u ocultan automáticamente a la izquierda, parte inferior y a la derecha, así como en el espacio del editor central. Las ventanas de herramientas, menús y barras de herramientas disponibles dependen del tipo de proyecto o archivo en el que esté trabajando [MSDN13]. Figura1. La IDE de MVS Express 2012 Un elemento importante de la interfaz es el Explorador de soluciones el cual obviamente muestra las soluciones, proyectos y elementos incluidos en los proyectos. En el Explorador de soluciones, es posible abrir archivos para editar, agregar nuevos archivos a un proyecto y ver las propiedades de las soluciones, proyectos y elementos. 2.2 Crear una aplicación Win32 de consola Paso 1 Iniciar el MVS Express 2012. Paso 2 Crear un nuevo proyecto de aplicación de consola. Es posible crear proyectos utilizando diferentes elementos que ofrece la interfaz. El más simple es hacer clic sobre el texto que dice Nuevo Proyecto de la página principal ubicada en el centro a la izquierda, o bien mediante el menú Archivo->Nuevo Proyecto. Del cuadro de dialogo Nuevo proyecto en Plantillas seleccionar Visual C++ y Win32; en tipo de aplicación seleccionar Aplicación de consola Win32 Visual C++ (ver Figura 2). El nombre del proyecto o solución podría ser HolaMundo1. Presionar el botón Aceptar. Ingeniería en Computación M. C. J. Jesús Arellano Pimentel 2 Figura 2. Cuadro de diálogo Nuevo Proyecto. En la Figura 2 se puede apreciar la Ubicación del Proyecto, es muy importante recordar este dato para futuras pruebas desde la consola de comandos. Paso 3 Configurar el Proyecto Actual. En el Asistente para aplicaciones Win32 hacer clic sobre Configuración de la aplicación; después deshabilitar la casilla de verificación de Comprobación del ciclo de vida de desarrollo de seguridad(SDL), esto permitirá una mejor compatibilidad con códigos ANSIC antiguos; finalmente oprimir el botón Finalizar (ver Figura 3). Figura 3. Configuración de la aplicación de consola. Al finalizar la configuración el Visual Studio generará una carpeta con un conjunto de archivos y subcarpetas para alojar toda la información referente al proyecto, así como el código fuente generado de forma predeterminada2. La Figura 3 muestra la pantalla principal del Proyecto, en esta es posible observar el Explorador de soluciones con el árbol de Archivos de código fuente generados, así como el de los archivos de encabezado. 2 ACTIVIDAD 1: Inspeccione el contenido de la carpeta generada en la Ubicación del Proyecto. Localice el archivo ReadMe.txt, en él encontrará la información general del proyecto con una descripción de lo que contienen los archivos relacionados con el proyecto. Ingeniería en Computación M. C. J. Jesús Arellano Pimentel 3 Figura 3. Pantalla principal del Proyecto. Paso 4 Adicionar una nueva línea de código. En el archivo HolaMundo1.cpp adicionar la siguiente línea de código dentro de la función principal _tmain: printf("Hola mundo\n"); de tal forma que el código de dicho archivo quede como se muestra en la Figura 5. Figura 5 Código Final de HolaMundo1.cpp. Ingeniería en Computación M. C. J. Jesús Arellano Pimentel 4 Paso 5 Compilar Solución. Seleccionar del menú COMPILAR la opción Compilar solución3 (ver Figura 6). Figura 6 Código para mostrar una caja de mensaje Hecho lo anterior, se visualiza el resultado de la compilación, el cual debería ser el siguiente (con excepción de la Ubicación del Proyecto): 1>------ Operación Compilar iniciada: proyecto: HolaMundo1, configuración: Debug Win32 -----1> HolaMundo1.cpp 1> HolaMundo1.vcxproj -> C:\Users\Jesus\Documents\Visual Studio 2012\Projects\HolaMundo1\Debug\HolaMundo1.exe ========== Compilar: 1 correctos, 0 incorrectos, 0 actualizados, 0 omitidos ========== Paso 6 Ejecutar la aplicación desde la consola Para ejecutar la aplicación primero se debe ejecutar la consola de Windows, la forma más rápida de hacer esto es pulsando las teclas de Windows y R (Win+R) simultáneamente4, aparecerá entonces el cuadro de diálogo Ejecutar, ahí se debe teclear CMD y pulsar Aceptar (ver Figura 7). Hecho lo anterior se obtendrá la consola de comandos de Windows en donde se debe cambiar al directorio de la Ubicación del Proyecto que contiene el archivo ejecutable mediante el comando cd (ver Figura 8). Figura 7 Ejecutar consola de comandos. 3 Observe que la opción Compilar Solución tiene una tecla de inicio rápido (F7), al igual que las otras opciones del menú tienen cada una su propia tecla rápida. 4 Aún cuando es común decir “simultáneamente” quiere decir que primero se oprime la tecla de Windows y sin soltarla oprimir la tecla R. Ingeniería en Computación M. C. J. Jesús Arellano Pimentel 5 Figura 8 Consola de comandos con la sentencia para cambiarse de directorio. Tecleado el comando cd con su respectiva ruta (C:\Users\Jesus\Documents\Visual Studio 2012\Projects\HolaMundo1\Debug\) pulsar enter. Entonces se estará en la ubicación del archivo ejecutable de la aplicación, para comprobar esto se puede ejecutar el comando dir, el resultado deberá ser algo similar a lo mostrado en la Figura 9 en donde también se puede observar el archivo HolaMundo1.exe el cual se debe ejecutar para mostrar el resultado de la aplicación. Figura 8 Consola de comandos con la ejecución del comando dir y la aplicación HolaMundo1.exe. Paso 7 Compilar y Ejecutar Las formas más fáciles de iniciar la ejecución y/o depuración es presionando el botón destinado para ello ( ) o pulsando F5. Iniciada la depuración con el código actual simplemente se verá un pantallazo rápido de la consola de comandos, esto se evita colocando una sentencia getchar(); entre las sentencias 5 printf(); y return 0; . 5 ACTIVIDAD 2: Agregue la sentencia getchar(); y oprima la tecla F5 o el botón del “Depurador local de Windows”. Observe que ahora la consola de comandos se cierra hasta que se presione cualquier tecla para continuar. Ingeniería en Computación M. C. J. Jesús Arellano Pimentel 6 2.2 Crear un Proyecto Win32 Paso 1 Iniciar el MVS Express 2012. Paso 2 Crear un nuevo proyecto Win32. Hacer clic sobre el texto que dice Nuevo Proyecto de la página principal ubicada en el centro a la izquierda, o bien mediante el menú Archivo->Nuevo Proyecto. Del cuadro de dialogo Nuevo proyecto en Plantillas seleccionar Visual C++ y Win32; en tipo de aplicación seleccionar Proyecto Win32 Visual C++ (ver Figura 9). El nombre del proyecto o solución podría ser HolaMundoWin32. Presionar el botón Aceptar. Figura 9. Cuadro de diálogo Nuevo Proyecto para generar un proyecto Win32. Paso 3 Configurar el Proyecto Actual. En el Asistente para aplicaciones Win32 hacer clic sobre Configuración de la aplicación (o presionar el botón siguiente); después deshabilitar la casilla de verificación de Comprobación del ciclo de vida de desarrollo de seguridad(SDL), esto permitirá una mejor compatibilidad con códigos ANSIC antiguos; finalmente oprimir el botón Finalizar (ver Figura 10). Figura 10. Configuración de la aplicación Win32. Ingeniería en Computación M. C. J. Jesús Arellano Pimentel 7 Concluida la configuración se generará en la Ubicación del Proyecto una carpeta que contiene todos los archivos de la aplicación, que en este caso son más archivos de los que se generan para una aplicación de consola6. Paso 4 Compilar y ejecutar. De forma automática el Visual Estudio genera un “esqueleto” de aplicación, que en si ya es una aplicación Win32 con todas las propiedades de una aplicación para escritorio de Windows. Al compilar y ejecutar (presionando la tecla F5) se genera la aplicación mostrada en la Figura 11. Figura 11. Aplicación HolaMundoWin32 y su cuadro de diálogo “Acerca de” Paso 5 Cambiar y agregar un poco de código7 Ubicar la función BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) en la línea 96 del archivo HolaMundoWin32.cpp. Modificar los parámetros CW_USEDEFAULT, 0 en su segunda aparición dentro de la llamada a la función CreateWindow por los valores 400 y 300 respectivamente, estos dos valores permiten definir el tamaño de la ventana a 400 pixeles de ancho por 300 de alto. La invocación de la función debe quedar de la siguiente forma: hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, 400, 300, NULL, NULL, hInstance, NULL); Ubicar la función LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) en la línea 126 del archivo HolaMundoWin32.cpp. Agregar dentro de la sentencia case WM_PAINT: despúes del comentario // TODO: agregar código de dibujo aquí... la siguiente línea de código: TextOut(hdc, 50, 50, L"Hola Mundo", lstrlen(L"Hola Mundo")); 6 ACTIVIDAD 3: Inspeccione el contenido de la carpeta generada en la Ubicación del Proyecto. Localice el archivo ReadMe.txt, en él encontrará la información general del proyecto con una descripción de lo que contienen los archivos relacionados con el proyecto. 7 ACTIVIDAD 4: Inspeccione el código generado en cada uno de los “Archivos de código fuente” y los “Archivos de encabezado”; ponga especial atención en los comentarios inmersos en el código. Ingeniería en Computación M. C. J. Jesús Arellano Pimentel 8 Esta línea de código muestra la cadena Hola Mundo en el área cliente de la aplicación Win32 en la posición 50, 50; el último parámetro que recibe es el tamaño de la cadena. Es importante resaltar que por compatibilidad con UNICODE todas las cadenas a utilizar en el código deben iniciar con la macro L y su tipo debería ser TCHAR. Paso 6 Compilar y ejecutar para visualizar los cambios Una vez realizados los cambios del paso anterior guardar el archivo y compilar presionando la tecla F7 y ejecutar presionando la tecla F5. El resultado debería ser el mostrado en la Figura 12. Figura 12. Aplicación HolaMundoWin32 modificado. 3.- Repaso de actividades ACTIVIDAD 1: Inspeccione el contenido de la carpeta generada en la Ubicación del Proyecto de la aplicación de consola. Localice el archivo ReadMe.txt, en él encontrará la información general del proyecto con una descripción de lo que contienen los archivos relacionados con el proyecto. ACTIVIDAD 2: Agregue la sentencia getchar(); y oprima la tecla F5 o el botón del “Depurador local de Windows”. Observe que ahora la consola de comandos se cierra hasta que se presione cualquier tecla para continuar. ACTIVIDAD 3: Inspeccione el contenido de la carpeta generada en la Ubicación del Proyecto Win32. Localice el archivo ReadMe.txt, en él encontrará la información general del proyecto con una descripción de lo que contienen los archivos relacionados con el proyecto. ACTIVIDAD 4: Inspeccione el código generado en cada uno de los “Archivos de código fuente” y los “Archivos de encabezado”; ponga especial atención en los comentarios inmersos en el código. Ingeniería en Computación M. C. J. Jesús Arellano Pimentel 9 4.- Referencias [Petzold96] [MSDN13] Petzold Charles, et al. Programación en Windows 95. Mc Graw Hill – Microsoft Press. 1996. Microsoft. MSDN. Paseo rápido del entorno de desarrollo integrado (IDE). Web: http://msdn.microsoft.com/es-es/library/ms165088.aspx. Fecha de consulta Mayo 2013 Ingeniería en Computación M. C. J. Jesús Arellano Pimentel 10