Versión 6
El nuevo Visual C++ de
Microsoft
proporciona un entorno general, actualizado, a nivel de producción para el desarrollo de
todas las aplicaciones para Windows
95/98 y Windows NT. La
versión 6 de Visual C++ de
Microsoft
abarca tres configuraciones diferentes: Ediciones Básicas,
Profesionales y para Desarrollo.
Novedades de Visual C++
versión 6
La versión 6.0 de Visual C++ de
Microsoft
proporciona nuevas prestaciones,
tal como AutoCompletion que facilita la codificación, y
Edit y Continue que optimiza las sesiones de depuración.
Otras prestaciones
admiten Active Platform (Plataforma activa), como Dynamic
HTML (HTML
Dinámico) y Active Document Containment (Contención
de documento activo). OLE DB Consumer y Provider Template Support
(Soporte de plantilla del proveedor y consumidor OLE
DB) y ADO Databinding (Atadura de datos ADO) se han
diseñado como ayuda a las bases de datos y
para controlar a los desarrolladores que utilizan MFC y ATL.
Estas nuevas prestaciones
se detallarán a continuación.
La siguiente sección presenta el
objetivo y las
prestaciones
especiales de cada edición. Este libro se
preparó utilizando la Edición para Desarrollo;
sin embargo, todos los materiales
(excepto los que se especifican en el texto) son
portables a las tres ediciones.
Edición
básica
La edición básica de
Visual C++ de Microsoft
permite dominar fácilmente el lenguaje
C++ mientras se utiliza el conjunto de herramientas
de Visual C++ profesional. Esta edición contiene todas las
prestaciones
de la edición profesional, excepto las optimizaciones de
código, el Profiler y el enlace estático a la
biblioteca MFC.
Es una opción perfecta para los estudiantes y su bajo
precio permite
aprender C++ de forma independiente. La licencia para la
edición básica prohibe utilizar el producto para
el desarrollo de
software de
distribución.
Edición
profesional
La edición profesional de
Microsoft
proporciona a los desarrolladores la licencia para distribuir
programas
desarrollados bajo esta herramienta, y tiene la ventaja sobre la
Edición básica de añadir servicios y
controles para plataformas Win32, incluyendo Windows 95/98 y
Windows NT.
Estas prestaciones permiten conseguir la interfaz de usuario
gráfica del sistema operativo
o las API de la consola.
Las nuevas prestaciones incorporadas en
la Edición Profesional incluyen:
· Nuevas palabras clave de C++ bool, explicit,
false, mutable, true y typename, para mejorar el rendimiento de
C++.
· Utilización de _declspec para
declarar si el atributo de la clase de almacenamiento especificada se aplica a un tipo
o a una variable de un tipo.
· El compilador admite archivos
COM.
· Opciones de optimización del nuevo
compilador
· AppWizard actualizado que automatiza la
clase de diálogo en una aplicación basada en
diálogos.
- Monikers asíncronos (URL) MFC
(ofrece comunicaciones vía Internet para
aplicaciones asíncronas).
· Active Documents (Documentos
activos),
visualizándose en la ventana de cliente
completa de un navegador web (por
ejemplo, Internet
Explorer), o en un contenedor OLE (por ejemplo, Microsoft
Word).
- API de Internet para
Win32 (WinInet) hace de Internet una
parte integral de cualquier aplicación, simplificando
los servicios
FTP,
HTTP y
gopher de Internet.
· Biblioteca
de plantillas activas (Active Template Library,
ATL).
· Biblioteca
de tiempo de
ejecución de C.
· Biblioteca
estándar ANSI de C++.
· ERRLOOK, que mejora los mensajes de error
del sistema.
Edición para desarrollo
(Enterprise Edition, usada en este texto)
La Edición para desarrollo tiene
todas las posibilidades de la Edición profesional y,
además, permite a los desarrolladores crear y depurar
aplicaciones cliente/servidor para
Internet e
incluso intranet. Esta
edición posee herramientas
adicionales para trabajar con bases de datos
SQL y depurar
procedimientos
SQL
almacenados. El sistema de
control de
código fuente Visual SourceSafe simplifica el desarrollo
en un entorno de equipo. Las prestaciones exclusivas de la
Edición para desarrollo incluyen:
· Servidor de
transacción de Microsoft especializado.
· Herramientas
de bases de datos
visuales;
· Admite tipos de datos
SQL
extensivos.
-NOTA A menos que se indique
explícitamente, las aplicaciones de este libro se
pueden compilar con cualquier versión del compilador Por
ejemplo, las aplicaciones de los Capítulos 1 al 20 son
aplicaciones estándar C ó C++ de la línea de
órdenes, que se pueden ejecutar en MS-DOS o en un
cuadro compatible bajo Windows 95/98
Windows NT Del
mismo modo, las aplicaciones Windows
desarrolladas en el Capítulo 25 se ejecutarán bajo
Windows 95/98 o
Windows
NT
Esta última versión del
compilador Visual C++ incorpora muchas prestaciones nuevas y de
mayor calidad. Algunas
de las más importantes incluyen el admitir el
estándar AT&T C++2.1, cabeceras precompiladas,
prestaciones en línea y p-código (código
empaquetado).
El compilador Visual C++ de Microsoft
también proporciona herramientas
para la Implementación de programas en
Windows,
generados para otras plataformas. El código puede incluso
tener las ventajas tanto de Apple Macintosh como de otras
máquinas RISC. El compilador C++ incluye todos los
archivos de
cabecera, bibliotecas y
editores de diálogo y de recursos
necesarios para crear una aplicación en Windows
verdaderamente consistente. Microsoft también ha
incorporado los editores de recursos para
mapas de bit,
iconos, cursores, menús y cuadros de diálogo,
directamente integrados en el entorno. Y hablando de integración, la nueva clase de asistentes
(ClassWizards) ayuda a construir aplicaciones OLE utilizando las
bibliotecas
Microsoft Foundation CLass (MFÑ)en tiempo
récord.
En este capitulo se conocerán
varios componentes del compilador de C++, los requerimientos del
sistema y
recomendaciones para establecer el entorno de desarrollo. Este
capítulo explica el sistema Visual
C++ de Microsoft y muestra
cómo ajustarlo a las necesidades particulares del
programador.
Muchos de los temas que se tratan en este
capítulo se verán con mayor detalle a lo largo del
libro. Por
ejemplo, hay capítulos específicos sobre la
biblioteca de
clases Microsoft Foundation Class, ClassWizards (asistentes de
clases), OLE y demás.
Hardware
recomendado
Esta sección indica las
recomendaciones hardware y software que ayudarán
a obtener la mayoría de las salidas del compilador Visual
C++ de Microsoft. Muchas de las sugerencias pretenden mejorar el
rendimiento completo del sistema, mientras
que otras intentan hacer el producto
más agradable de utilizar.
Requisitos mínimos hardware y
software
El compilador Visual C++ estándar
de Microsoft funcionará en un gran rango de computadoras
con procesadores
Intel.
NOTA- Hay versiones especiales del
compilador Visual C++ para los sistemas MIPS
& DEC Alpha AXP y Macintosh.
La siguiente lista muestra los
requerimientos hardware y software mínimos
necesarios para ejecutar la versión de 32 bits del
compilador Visual C++ de Microsoft:
· Microsoft Windows 95/98 o
Windows
NT.
· Microsoft Visual C++
· Intel 486 o superior
· l6MB de RAM.
· Pantalla con resolución 800 x 600 o
superior
· 20 MB de espacio de disco fijo
libre.
· Ratón u otro periférico para
señalar.
· InstallWizard está diseñado
para computadoras
típicas de desarrollo, lo que significa un procesador
Pentium y
una resolución de 800 x 600 o superior. Se puede
ejecutar lnstallWizard en una pantalla de 640 x 480, pero es
posible que se necesite disponer de ventanas diferentes para
ver toda la información.
Hardware y Software
recomendados
Los requerimientos software y hardware mínimos no
siempre son la opción óptima para la facilidad de
uso, rendimiento y disfrute del producto
completo. Recomendamos el siguiente perfil de sistema para
optimizar el ciclo de desarrollo de programas en C y
C++.
· PC con procesador
Pentium, a
velocidad de
200MHz (o superior).
· 32 MB de RAM.
· 1GB de espacio de disco fijo.
· Monitor
Super VGA.
· Unidad de disco de alta densidad (3,5
pulgadas).
· Unidad de CD-ROM (para
documentación en línea).
· Ratón lntelliPoint de
Microsoft.
Será conveniente un microprocesador
rápido que pueda manejar el tamaño y complejidad de
las aplicaciones Windows avanzadas. La cantidad de memoria maximiza
el rendimiento completo tanto de Visual C++ de Microsoft como del
entorno Windows (también se puede obtener un aumento de
este rendimiento teniendo gran cantidad de espacio de disco
libre).
Aparecen dos sistemas
operativos como nuevos estándares para los PC de 32
bits; Windows 95/98, o
su primo más robusto, Windows NT. Si
no se tiene actualizado Windows 95/98 o Windows NT, se
debería hacer antes de instalar el compilador de C++ de
Microsoft.
Las mejoras realizadas a Windows 95/98 y
a Windows NT, proporcionan las prestaciones y el rendimiento
necesario para crear aplicaciones de gran actualidad en Windows.
Conforme se desarrollen estas aplicaciones en un entorno
gráfico, se apreciará la resolución de los
monitores
Super VGA. Se recomienda comprar un monitor con
una pantalla tan grande como sea posible.
Instalación habitual de
Windows
La instalación del compilador
Visual C++ de Microsoft se realiza casi automáticamente.
Sin embargo, existen algunas preguntas que habrá que
responder. En esta sección se echará un vistazo a
una instalación típica para la versión de 32
bits del compilador.
1. Ejecútese el programa
SETUP.ExE del primer disco o del CD-ROM de
Visual C++, desde Windows 95/98 o Windows NT.
2. Se le proporcionará una serie
de opciones para la instalación, tal como Typical,
Custom, Mínimum o CD-ROM. La
cantidad de espacio de disco fijo necesaria depende de la
opción seleccionada. Se recomienda la instalación
Typícal. También es posible establecer la
partición del disco fijo o el subdirectorio donde se va
a realizar la instalación.
3. Se le pedirá que introduzca
el Nombre, Organización y Código del Producto.
Esta información debe introducirse con
cuidado.
4. En este punto, los archivos se
copiarán de los discos o el CD-ROM al
disco fijo. Se puede visualizar el proceso
mostrando el cuadro de diálogo File Copy Process. Esta
instalación tardará unos 20 minutos en un
Pentium a
200MHz utilizando una unidad de CD-ROM
8x.
5. Cuando se hayan instalado todos los
archivos,
habrá que indicar si se va a modificar la
configuración ahora o más tarde. Se recomienda la
primera opción: make changes now and backup current
version (realice los cambios ahora y vuelva a la
versión actual).
6. Se recibirá una
indicación para registrar todas las variables
del entorno.
Ésta aparecerá en forma
de cuadro de verificación, con el cuadro ya verificado.
En este momento, se acepta el que hay por omisión:
and register the environment variables (Y registre las variables
del entorno). Registrando las variables
del entorno, se le proporcionará al compilador una
información muy importante sobre el
sistema.
7. Con la instalación terminada,
reinicie el sistema completo para que todos los cambios tengan
efecto.
Documentación
La documentación en línea
de Visual C++ consta de Quick Reference (Referencia
rápida) y Books Online (Documentación en
línea). La Referencia rápida permite localizar
rápidamente la información mientras se está
programando. La Documentación en línea es el
conjunto de documentación para Visual C++ en formato en
línea. Todos los temas de Referencia rápida tienen
un enlace a la Documentación en línea, donde
está disponible la información completa.
Dependiendo de la opción de
instalación que se seleccione, Visual C++ instalará
los archivos de
Referencia rápida en el disco fijo, mientras que los
archivos de la Documentación en línea pueden
permanecer en el CD-ROM. (Nota:
seleccione esta configuración de instalación si
necesita conservar espacio en el disco fijo.) Se puede
personalizar dónde establecer los archivos o dónde
obtener la información, o ir directamente a Books Online
(Documentación en línea) para la ayuda sensible al
contexto (FI). Los temas que cubren incluyen:
- Forma de utilizar los Books Online
(Documentación en línea). - Guías de
usuario.
· Microsoft Foundation Class (MFC).
· Programación con la biblioteca de clases
Microsoft Foundation Class.
· Referencia a la biblioteca de
clases.
· Ejemplos de MFC.
· Notas técnicas de MFC.
- C/C++
· Técnicas de programación.
· Referencia al lenguaje
C.
· Referencia al lenguaje
C++
· Referencia a la biblioteca en tiempo de
ejecución.
· Referencia al flujo de E/S.
· Referencia al preprocesador.
· Ejemplos de C/C++
· Win32 Software Development Kit (SDK). (Kit
de desarrollo de software para Win32.)
· Funciones API
32.
· Referencia del programador en
Win32.
· Buzones de Windows.
· OLE Software Development Kit (SDK)
(Kít de desarrollo de software para OLE.)
Directorios
La Tabla 1.1 muestra el
grupo
típico de subdirectorios para la instalación del
compilador Visual C++, realizado en el subdirectorio
MSVC.
También se encontrarán
varios archivos README en el subdirectorio MSDEV. Estos archivos
se utilizan para proporcionar información sobre la
última versión (y errores) del
compilador.
Tabla 1.1. Subdirectorios
importantes de Visual C++
Localización Objetivo
BIN Archivos ejecutables y herramientas
de desarrollo necesarias para implementar aplicaciones de 32
bits.
HELP Archivos de
ayuda.
INCLUDE Archivos de cabecera y de
tiempo de
ejecución de C++
LIB Bibliotecas
de Win32 SDK y de tiempo de
ejecución de C++
MFC Microsoft Foundation Class
(MFC).
Archivos de
Biblioteca
OLE Archivos para el desarrollo de
aplicaciones OLE.
PROJECTS Subdirectorio utilizado para
organizar los proyectos de
desarrollo.
TEMPLATES Subdirectorio utilizado para
organizar las plantillas de objetos.
SAMPLES Programas de
ejemplo.
El sistema de
desarrollo
El compilador Visual C++ de 32 bits de
Microsoft para Windows 95/98 y Windows NT incorpora nuevas
herramientas de desarrollo de Windows completamente integradas y
una interfaz visual. Por ejemplo, las capacidades de
depuración del CodeView original de Microsoft son ahora
directamente accesibles desde el depurador integrado del
compilador Las secciones siguientes muestran aquellas utilidades
que incorpora directamente el compilador Visual C++ de
Microsoft.
El nuevo depurador
integrado
Microsoft extrae directamente la
potencia de su
depurador CodeView original en la plataforma de Visual C++ y la
coloca en su nuevo depurador integrado. Al depurador se accede
desde el menú Debug (Depurar). El depurador integrado
permite ejecutar programas en un
solo paso, visualizar y cambiar contenidos de las variables, e
incluso volver a las secciones de código. Será de
gran ayuda para aquellos programas que se compilan, pero que no
parece que realizan lo que se esperaba.
Los nuevos editores de recursos
integrados
A estos editores se accede desde el
menú Resource (Recurso). Los editores de recursos permiten
diseñar y crear recursos de
Windows, como mapas de bits,
cursores, iconos, menús y cuadros de diálogo. Los
recursos permiten crear interfaces de usuario visualmente
atractivas para las aplicaciones. En las próximas
secciones, se verá información específica
sobre cuatro de los editores de recursos más
conocidos.
El editor de cuadros de
diálogo
El editor Cuadro de diálogo es
una herramienta de desarrollo gráfico importante que
permite crear rápida y fácilmente cuadros de
diálogo de aspecto profesional. El editor Cuadro de
etiquetas de los cuadros de diálogo, marcos, selecciones
de opciones y cuadros de verificación, ventanas de
texto y barras
de desplazamiento.
El editor Cuadro de diálogo
permite combinar numerosos controles en los cuadros de
diálogo personalizados. Los controles combinan una
representación gráfica visual de una característica con un conjunto predefinido
de propiedades que se puede personalizar Por ejemplo, los cuadros
de verificación, los botones de opción y los
cuadros de lista son todos los formatos de controles de
Windows.
Los editores de
imágenes
Los editores de imágenes
gráficas permiten crear fácilmente mapas de bits,
iconos y cursores personalizados. Un mapa de bit es un dibujo de algo
(por ejemplo, una exclamación utilizada en un mensaje de
advertencia). Un icono es una imagen en
color
pequeña utilizada para representar una aplicación
cuando se minimiza. Visual C++ incluso permite utilizar un editor
de imagen para
crear cursores personalizados. Por ejemplo, se podría
diseñar un paquete financiero con un cursor similar al
signo de dólar Los iconos, cursores y mapas de bits
personalizados se pueden guardar en un archivo con
extensión .RC y se pueden utilizar en archivos de
órdenes de recursos. Se conocerá la forma de
utilizar estos recursos en los Capítulos 20 al
23.
El editor
binario
El editor binario permite editar un
recurso a nivel binario en formato hexadecimal o ASCII.
También puede utilizar la orden Find (Buscar) para buscar
cadenas ASCII o bytes
hexadecimales, y utilizar expresiones regulares con la orden Find
para que se ajusten a un patrón. Sólo se deberla
utilizar el editor binario cuando se necesite visualizar o
realizar pequeños cambios sobre los recursos
personalizados o tipos de recursos que no soporte el entorno
Microsoft Developer Studio.
El editor de
cadenas
Una tabla de cadenas es un recurso de
Windows que contiene una lista de identificadores (ID), valores y
nombres para todas las cadenas de la aplicación. Por
ejemplo, el indicador de la barra de estado se
encuentra en la tabla de cadenas. Una aplicación
sólo puede tener una tabla de cadenas. Las tablas de
cadenas facilitan la localización de la aplicación
en diferentes lenguajes Si todas las cadenas están en una
tabla de cadenas, se puede localizar la aplicación
traduciendo las cadenas (y otros recursos) sin modificar el
código fuente.
Herramientas
adicionales
Las herramientas adicionales de Visual
C++ que están integradas en el compilador se encuentran en
el menú Tools (Herramientas). Estas incluyen Spy++, MFC
Tracer, Control Wizard,
AVI Editor, DataObject Viewer y ActiveX Control Test Container.
La utilidad Spy++
será de gran ayuda cuando se trabaje con aplicaciones
Windows de 32 bits.
Active Control Test Container
(Contenedor de prueba de controles activos)
La herramienta Test Container
(Contenedor de prueba) es una aplicación diseñada
por Microsoft que permite probar rápidamente los controles
personalizados. Las propiedades y prestaciones del control se pueden
modificar en el contenedor de prueba.
API Text Viewer (Visor de Texto
API)
API Text Viewer permite visualizar
constantes, variables, declaraciones y tipos que se pueden copiar
desde archivos API a aplicaciones de Visual
Basic.
AVI Editor (Editor
AVI)
AVI Editor permite visualizar, editar y
unir archivos AVI.
Data Object Viewer (Visor de
objetos de datos)
Data Object Viewer muestra la lista
de los formatos de datos ofrecidos
por los objetos de datos OLE y
ActiveX creados por el Portapapeles o por operaciones de
arrastrar y pegar
DDE Spy
DDE Spy se utiliza para hacer un
seguimiento de todos los mensajes.
DocFile Viewer (Visor de
DocFile)
DocFile Viewer muestra los
contenidos de un archivo compuesto
pequeño.
Error
Lookup
Esta herramienta permite visualizar un
análisis detallado de un mensaje de
error.
Help Walk
Utility
La utilidad help
Walk enumera los bloques de memoria en una
pila específica.
Help
Workshop
Esta herramienta ofrece el marco de
trabajo adecuado para navegar desde las interfaces de usuario de
una aplicación a los contextos de ayuda. La
Implementación de la navegación adicional dentro
del archivo de Ayuda
forma parte del dominio de la
edición de ayuda y no del dominio de la
programación. El objetivo de
esta utilidad es
describir el proceso
general sobre la edición de archivos de
Ayuda.
Cliente OLE, Herramientas y
Vistas
El OLE Viewer muestra los objetos OLE y
ActiveX instalados en la computadora
y las interfaces que admiten. También permite editar el
registro y ver
las bibliotecas de
tipos.
Process Víewer (Visor del
proceso)
El Process Viewer permite establecer y
visualizar rápidamente todas las opciones necesarias para
seguir los procesos
elementos de proceso y de
intervalo temporal del procesador
actual. Para iniciar el Process Viewer simplemente se pulsa dos
veces con el ratón sobre el icono Process Viewer en el
cuadro de grupo Visual
C++.
El Process Viewer puede ayudar a resolver
algunas cuestiones:
· ¿Cuánta memoria asigna el
programa en
distintos puntos de su ejecución?
· ¿Cuánta memoria
está siendo paginada?
· ¿Qué procesos y
elementos de proceso
están utilizando el mayor tiempo de CPU?
· ¿Cómo se ejecuta el programa para
diferentes prioridades del sistema?
· ¿Qué sucede si un elemento de
proceso o un proceso se detiene respondiendo a un DDE, un OLE o
una E/S canalizada?
· ¿Qué porcentaje de tiempo se
emplea en la ejecución de llamadas API?
Resource Viewer (Visor de
recursos)
Esta herramienta permite acceder a los
recursos del proyecto.
ROT Viewer (Visor
ROT)
ROT Viewer muestra información
sobre los objetos ActiveX y OLE que actualmente están en
memoria.
Spy++
Spy++ es una utilidad que
proporciona una visión gráfica de los procesos,
elementos de proceso, ventanas y mensajes de ventanas del
sistema.
Stress Utility (Utilidad Stress)
La aplicación Stress permite la
adquisición de recursos del sistema para las pruebas
difíciles con pocos recursos. Los recursos obtenidos
incluyen la pila global, la pila de usuario, la pila GDI, el
espacio de disco y los descriptores de archivos. Stress ofrece las
asignaciones de estos recursos de forma fija, aleatoria y
dependientes del mensaje. Además proporciona varias
opciones de incidencias para ayudar a localizar y reproducir los
errores.
MFC
Tracer
MFC Tracer es una herramienta que permite
al programador configurar los indicadores de
seguimiento de AFX.INI. Estos indicadores se
utilizan para definir la categoría de los mensajes Trace
que se envían desde la aplicación a la ventana de
depuración. Por tanto, Tracer es una herramienta de
depuración. La herramienta MFC Tracer se utilizará
al desarrollar aplicaciones MFC en los Capítulos 23 al
27.
UUID Generator (Generador
UUID)
UUID Generator se utiliza para generar
un identificador único (UUID) que permite que las
aplicaciones del cliente y del
servidor se
reconozcan mutuamente.
WinDiff
La utilidad WinDiff también se
encuentra en el grupo Visual
C++ Esta herramienta permite comparar gráficamente y
modificar dos archivos o dos directorios. Todas las opciones de
WinDiff funcionan como sus equivalentes en el Explorador de
Windows 95/98 o en el Explorador de Windows NT.
Zoomin
La utilidad Zoomin (ZOOMIN.EXE) se puede
utilizar para capturar y ampliar una parte del escritorio de
Windows.
Nuevas herramientas y
utilidades
El nuevo Developer Studio ha incorporado
nuevas y mejores prestaciones para hacerlo más
fácil incluso que desarrollar aplicaciones de clase
universal. Las nuevas incorporaciones incluyen la posibilidad de
acceder a Visual J++ 1.1 y Visual lnterDev, así como
Visual C++ 6.0 y MSDN.
Automatización y
macros
Con 1as secuencias de ordenes (Script)
de Visual Basic se
pueden automatizar rutinas o tareas repetitivas. Mientras que el
almacenamiento de
una macro permite editar de forma sencilla y rápida.
Developer Studio permite manipular componentes Studio como
objetos, permitiendo automatizar tareas que incluyen apertura,
edición y cierre de documentos o
modificar el tamaño de las ventanas. También se
pueden crear entradas integradas utilizando el modelo de
objetos de Developer Studio.
Visor de clases
(Classview)
El nuevo Visor de clases mejorado
funciona tanto con las clases de Java como con las
clases de C++. Se pueden crear nuevas clases utilizando la MFC la
ATL o clases personalizadas. El visor de clases también
presenta la posibilidad de visualizar y editar interfaces para
objetos COM implementados en MFC o ATL. También se pueden
utilizar carpetas para organizar las clases de la forma
deseada.
Barras de herramientas y
menús personalizables
Developer Studio facilita la
personalización de las barras de herramientas y de los
menús para ajustarse a la forma de trabajo del usuario Por
ejemplo. se puede:
· Añadir un menú a una barra de
herramientas.
· Añadir o eliminar órdenes de
un menú o botones de una barra de
herramientas.
· Cambiar un botón de una barra de
herramientas dentro de una orden de un menu.
· Copiar un botón de un menú o
de una barra de herramientas desde una barra de herramientas a
otra, de forma que siempre esté accesible.
· Diseñar nuevas barras de herramientas
o menús.
· Personalizar un menú o una barra de
herramientas existente.
· Volver a asignar una orden de un
menú, convirtiéndola en un botón de una
barra de herramientas.
Conectivídad con
Internet
La visualización de
páginas Word Wide
Web en el
Developer Studio es bastante rápida con el novedoso
InfoViewer o con el propio navegador web registrado
para visualizar Microsoft en el Web. Con una
dirección web en la ventana
URL, se puede pulsar con el ratón la dirección para visualizar la página
web. Esta prestación permite a los usuarios de Visual
Studio asegurar la obtención de las últimas
noticias, documentación, localizaciones y/o mejoras
conforme se encuentren disponibles.
Archivos y áreas de trabajo
de proyectos
El nuevo sistema de proyecto flexible
de Developer Studio permite, de forma sencilla, disponer de un
espacio de trabajo con diferentes tipos de proyectos. Por
ejemplo, se puede crear un espacio de trabajo que contenga un
proyecto de
Visual ínterDev y una applet (pequeña
aplicación) de J++.
NOTA- Los archivos del espacio de
trabajo tienen ahora la extensión.DSW (anteriormente
era.MDP). Los archivos del proyecto tienen
ahora la extensión DSP (anteriormente
era.MAk).
Ahora existen dos tipos de archivos
Build: internos (.DSP) y externos (.MAK). Todos los archivos DSP
se crean al crear un nuevo proyecto dentro
del entorno Developer Studio o cuando convierte un proyecto de
una versión anterior. (Nota: los archivos DSP no son
compatibles con NMAKE.) Se puede crear un archivo
externo.MAK, compatible con NMAKE, seleccionando la opción
Export Makefile del menú Project.
Los proyectos pueden
incluir ahora documentos
activos, como
archivos de hojas de cálculo y
documentos de
Word. Incluso
se pueden editar sin abandonar el entorno integrado de desarrollo
de Visual Studio.
Cuando se inicia un nuevo espacio de
trabajo, el Developer Studio crea un archivo con el
nombre MINOMBREESPACIOTRABAJO.DSW, que tiene una nueva
extensión, . DSW. Los archivos del espacio de trabajo ya
no incluyen datos
específicos de la computadora
local. En este momento es posible:
· Añadir el archivo del espacio de
trabajo a un proyecto fuente de control definido
previamente.
· Copiar un espacio de trabajo de otra
computadora
o de un directorio de la red y abrir directamente
la copia del espacio de trabajo, sin crear un nuevo archivo de
espacio de trabajo para la
computadora local.
· Utilizar editores de recursos.
· Utilizar el WizardBar con cuadros de
diálogo para enlazar el código con los elementos
visuales del programa.
Asistentes
(Wizards)
El nuevo Developer Studio de Microsoft
incorpora muchos asistentes nuevos, incluyendo algunos para el
nuevo Visual J++ integrado y los paquetes Visual InterDev
(disponibles sí se tienen instalados estos paquetes). Se
pueden utilizar estos asistentes para crear archivos, controles y
nuevos tipos de proyectos.
Prestaciones importantes del
compilador
El compilador Visual C++ contiene muchas
mejoras, nuevas prestaciones y opciones útiles. Las
siguientes secciones introducen estas mejoras y explican
brevemente sus utilizaciones.
Código P
(P-code)
El código-P (abreviatura
de "código empaquetado") se genera para optimizar la
velocidad y el
tamaño del código. El código-P puede reducir
de forma significativa el tamaño de un programa y la
velocidad de
ejecución en más de un 60 por lOO. Mejor
aún, todo esto se ejecuta simplemente cuando se activa una
opción específica del compilador Esto significa que
cualquier código escrito en C o en C++ se puede compilar
normalmente o con código-P.
Esta tecnología compila un
código fuente de una aplicación dentro del
"código objeto interpretado", que es una
representación más condensada del código
objeto y con un nivel mayor El proceso finaliza cuando se enlaza
un pequeño módulo intérprete con la
aplicación.
Sin embargo, la utilización
eficiente de esta tecnología requiere
cierta habilidad. Como el intérprete genera código
objeto en tiempo de ejecución, el código-P se
ejecuta más lentamente que el código objeto origen.
Con una utilización muy cuidadosa de la directiva #pragma,
una aplicación puede generar código-P para funciones
críticas en cuanto a espacio y pasar a generar
código origen para funciones de
velocidad
crítica.
Las mejores candidatas para la
generación de código-P son aquellas rutinas que
tratan con la interfaz de usuario, y como muchas aplicaciones
Windows emplean el 50 por 100 de su tiempo generando la
interfaz de usuario, el código-P proporciona las características de rendimiento
óptimas.
Cabeceras y tipos
precompilados
Visual C++ coloca tipos
genéricos, prototipos de funciones,
referencias externas y declaraciones de funciones miembro
en unos archivos especiales denominados archivos de cabecera.
Éstos contienen muchas de las definiciones críticas
necesarias por los múltiples archivos fuente que
actúan conjuntamente para crear la versión
ejecutable del programa. Algunas de las partes de estos archivos
de cabecera normalmente vuelven a ser compiladas por cada
módulo que la incluye. Desafortunadamente, repetir la
compilación de parte del código puede hacer
más lento el compilador.
Visual C++ aumenta la velocidad del
proceso de compilación, permitiendo precompilar los
archivos cabecera. Aunque el concepto de
cabeceras precompiladas no es nuevo, la forma en que Microsoft ha
implementado esta característica sí lo es. La
precompilación guarda el estado de
la compilación de una aplicación en un cierto punto
y representa la relación que se establece entre el archivo
fuente y la cabecera precompilada. Es posible crear más de
un archivo de cabecera precompilado por archivo
fuente.
Una de las mejores aplicaciones de esta
tecnología
afecta al ciclo de desarrollo de una aplicación que tiene
frecuentes cambios en el código pero no frecuentes
definiciones de la clase base. Si el archivo de cabecera
está precompilado, el compilador puede concentrar su
tiempo en los cambios del código fuente. Las cabeceras
precompiladas también proporcionan un aumento en el tiempo
de compilación para aplicaciones con cabeceras que constan
de grandes porciones de código para un módulo dado,
como suele suceder con los programas en C++.
El compilador de Visual C++ supone que
el estado
actual del entorno del compilador es el mismo que cuando se
compilaron algunas de las cabeceras precompiladas. El compilador
mostrará un aviso si detecta alguna inconsistencia. Tal
inconsistencia podría resultar de una modificación
en los modelos de
memoria, de un cambio en
el estado de
las constantes definidas o de la elección de las
diferentes opciones para la depuración o la
generación de código.
A diferencia de otros muchos compiladores de
C++, el compilador de C++ de Microsoft no limita la
precompilación a los archivos de cabecera. Como el proceso
permite precompilar un programa hasta un punto especifico, puede
incluso precompilar el código fuente. Esto es
extremadamente significativo para los programas en C++ ya que
contienen la mayoría de las definiciones de la
función miembro en archivos cabecera. En general, la
precompilación está reservada para aquellas partes
del programa que son consideradas estables; se diseña para
minimizar el tiempo necesario para compilar las partes del
programa en el desarrollo.
La biblioteca Microsoft Foundation
Class (MFC)
Las aplicaciones Windows son
fáciles de utilizar, pero no de desarrollar. Muchos
programadores están cansados de tener que manejar cientos
de funciones API de Windows, que son necesarias para escribir
aplicaciones Windows.
La solución de Microsoft a este
paso de aprendizaje
angosto es la biblioteca fundation Class orientada a objetos. Las
clases reutilizables de C++ son mucho más fáciles
de dominar y utilizar La biblioteca Microsoft Foundation Class
(MFC) tiene todas las ventajas de la abstracción de datos
ofrecida por C++ y su uso simplifica la programación en Windows. Los programadores
principiantes pueden utilizar las clases a modo de un "recetario"
y los programadores experimentados en C++ pueden extender las
clases o integrarlas en su propia jerarquía de
clases.
La biblioteca MFC contiene clases para la
gestión
de objetos Windows y ofrece una serie de clases de
propósito general que se pueden utilizar en aplicaciones
tanto MS-DOS como
Windows. Por ejemplo, existen clases para crear y gestionar
archivos, cadenas, tiempo, almacenamiento
permanente y manejo de excepciones.
En efecto, la biblioteca MFC representa
casi todas las prestaciones API de Windows e incluye un
código sofisticado que simplifica el procesamiento de
mensajes, diagnósticos y otros detalles que son partes
normales de todas las aplicaciones Windows. Esta
combinación lógica
y el aumento de funciones API de Windows tiene diez ventajas
claves:
- La encapsulación de las API de
Windows es lógica y completa. La biblioteca MFC
presta apoyo para todas las funciones API de Windows utilizadas
con frecuencia, incluyendo funciones de ventanas; mensajes;
controles; menús; cuadros de diálogo; objetos GDI
(interfaz de dispositivos gráficos) tales como fuentes,
brochas, lápices y mapas de
bits; enlace de objetos y la interfaz de documento
múltiple (MDI).
· Las funciones MFC son sencillas de
aprender Microsoft ha hecho un gran esfuerzo para mantener
los nombres de las funciones MFC y los parámetros
asociados son lo más similar posible a las clases padre
API de Windows. Esto minimiza la confusión para los
programadores de Windows experimentados que deseen obtener las
ventajas de la plataforma MFC simplificada. También
facilita a los programadores que se inician en Windows el
crecimiento dentro del superconjunto de las funciones API de
Windows cuando se esté preparado o cuando la
aplicación lo requiera.
· El código C++ es más
eficiente. Una aplicación utilizará
sólo un poco de RAM extra
cuando utilice las clases de la biblioteca MFC. La velocidad de
ejecución de una aplicación MFC es casi
idéntica a la misma aplicación escrita en C y
utilizando el estándar API de Windows.
· La biblioteca MFC ofrece un manejo
automático del mensaje. La biblioteca Microsoft
Foundation Class elimina una fuente frecuente de errores de
programación, el bucle del mensaje API de
Windows. Las clases MFC están diseñadas para
manejar de forma automática cada uno de los mensajes de
Windows. En lugar de utilizar las instrucciones sensibles al
contexto estándares, cada uno de los mensajes de Windows
se proyecta directamente a una función miembro, que toma
la acción apropiada.
· La biblioteca MFC permite
diagnósticos propios. Incorporada a la biblioteca
MFC se encuentra la posibilidad de realizar diagnósticos
propios. Esto significa que puede verter información
sobre varios objetos a un archivo y validar un miembro del
objeto variable, todos en un formato fácil de
entender
· La biblioteca MFC incorpora una arquitectura
robusta. Anticipando la gran necesidad del estándar
ANSI de C, la biblioteca Microsoft Foundation Class ya
incorpora una amplia arquitectura
del manejo de excepciones. Esto permite que un objeto MFC
recupere elocuentemente a partir de condiciones de errores
estándar, tales como "sin memoria", selección de
opción no válida y problemas
cargando el recurso o el archivo. Cada componente de la
arquitectura
es más compatible con las recomendaciones ANSI de C
propuestas.
· La biblioteca MFC ofrece la
introducción de objetos dinámicos. Esta
prestación extremadamente potente retrasa la
introducción de un objeto asignado dinámicamente
hasta el tiempo de ejecución. Esto permite manipular un
objeto sin tener que preocuparse de su tipo de datos
subyacente. Como la información sobre el tipo de objeto
se devuelve en tiempo de ejecución, el programador
está exento de un nivel de detalle adicional.
· La biblioteca MFC puede coexistir en
armonía con aplicaciones de Windows basadas en C. La
prestación más importante de la biblioteca
Microsoft Foundation Class es la posibilidad de coexistir con
aplicaciones de Windows basadas en C que utilizan las API de
Windows. Los programadores pueden utilizar una
combinación de clases MFC y llamadas a API de Windows
dentro del mismo programa. Esto permite que una
aplicación MFC se desarrolle fácilmente dentro
del código orientado a objetos de C++ como la
experiencia o la demanda
requiera. Este entorno transparente es posible debido a los
convenios de denominación comunes entre las dos
arquitecturas. Esto significa que las cabeceras MFC, los tipos
y las definiciones globales no tengan conflictos
Con los nombres de las API de Windows. La gestión transparente de la memoria
es otro componente clave para que esta relación tenga
éxito.
· La biblioteca MFC se puede utilizar con
MS-DOS
La biblioteca Microsoft Foundation Class se
diseñó específicamente para desarrollar
aplicaciones en Windows. Sin embargo, muchas de las clases
proporcionan frecuentemente los objetos necesarios para la
manipulación de cadenas y de archivos de E/S. Por esta
razón, estas clases de propósito general pueden
utilizarlas tanto los desarrolladores de Windows como los de
MS-DOS.
· La biblioteca MFC y los asistentes.
Los asistentes de Control y de Clases sólo crean un
código compatible con MFC. Estos desarrolladores de
programas dinámicos son necesarios para el desarrollo de
aplicaciones OLE.
Funciones inline (Funciones en
línea)
El compilador de Visual C++ de Microsoft
admite completamente las funciones en línea. Esto
significa que las funciones de cualquier tipo o
combinación de instrucciones pueden ser expandidas en
línea. Muchos de los compiladores de
C++ conocidos restringen la característica en línea a ciertos
tipos de instrucciones o expresiones (por ejemplo, la
opción en línea podría ser ignorada por
cualquier función que contenga una instrucción
switch, while o
for). El compilador de Visual C++ permite controlar las rutinas
más críticas en velocidad (incluyendo los
constructores o funciones miembro de las clases muy pocas veces
utilizadas) sin restringir su contenido. Esta opción se
establece en el menú Project, seleccionando la
opción Settings…, a continuación la carpeta C/C++
y, finalmente, Optimizations en la lista
Category.
Opciones del
compilador
Los compiladores de
Visual C++ utilizados en este libro son
compiladores de
optimización global que permiten obtener todas la ventajas
de las distintas opciones de velocidad o tamaño del
código para cada tipo de programa desarrollado. En esta
sección, se tratarán aquellas opciones directamente
relacionadas con el compilador C++ de Microsoft de 32 bit,
versión 4.0. Si se está utilizando un compilador de
16 y/o 32 bit, versión 2.0, las opciones serán
similares, pero situadas en diferentes fichas.
Las siguientes opciones del compilador
permiten optimizar el código del ejecutable en
tamaño, velocidad o tiempo de desarrollo. Si no se observa
un aumento del rendimiento apreciable, es posible que la
aplicación de prueba no contenga suficiente código.
Todas las opciones se establecen a partir del menú Build
seleccionando la opción de menú
Settings.
Generales
En la ficha General se puede especificar
la utilización o no de la biblioteca Microsoft Foundation
Class. También se pueden indicar los directorios de
salida para archivos compilados en C/C++ intermedios y
finales.
Debug
(Depuración)
En la ficha Debug se puede especificar
la ubicación de un archivo ejecutable junto con el
directorio de trabajo, los argumentos opcionales del programa y
un nombre de archivo y camino para ejecutables remotos.
Además, utilizando la lista Category, se pueden
especificar las bibliotecas de
enlace dinámicas adicionales (DLL).
Custom Build (Construcción
personalizada)
En la ficha Custom Build se pueden
especificar herramientas personalizadas para utilizar en proyectos de
desarrollo. Esto incluye herramientas para la ejecución
del archivo resultante de la configuración del
proyecto.
La ficha C/C++ permite seleccionar de
entre las siguientes categorías: General, C++ Language
(Lenguaje C++),
Code Generation (Generación de código),
Customization (Personalización), Listing Files (Listado de
archivos), Optimizations (Optimizaciones), Precompiled Headers
(Archivos de cabecera precompilados) y Preprocessor
(Preprocesador).
General
La categoría General permite
definir el nivel de advertencias, especificar la
información de depuración, establecer las
optimizaciones del compilador indicar las definiciones del
preprocesador y listar las opciones del
proyecto.
C++ Language (Lenguaje
C++)
La categoría C++ Language
(Lenguaje C++)
permite especificar el método de
representación, establecer el manejo de excepciones, el
tipo de información en tiempo de ejecución y los
cambios en los desarrollos, así como listar las opciones
del proyecto.
Code Generation (Generación
de código)
La categoría Code Generation
(Generación de código) permite determinar el
microprocesador
(de 80386 a Pentium), indicar
los convenios de llamada, especificar la biblioteca de tiempo de
ejecución, anotar la alineación de los miembros de
la estructura y
listar las opciones del proyecto.
Customization
(Personalización)
La categoría Customization
permite activar o desactivar los siguientes
elementos:
· Extensiones del lenguaje.
· Enlace a nivel de función.
· Cadenas duplicadas.
· Reconstrucción
mínima.
· Compilación incremental.
· Supresión del mensaje de
información y la identificación.
Listing Files (Listado de
archivos)
La categoría Listing Files
(Listado de archivos) permite la generación de
información de visualización. Además, se
puede establecer el destino del archivo de visualización.
En este archivo se permiten variables locales. Los tipos de
archivo se pueden establecer de forma opcional. Se listan las
opciones del proyecto.
Optimizations
(Optimizaciones)
La categoría Optimizations
(Optimizaciones) permite definir varias optimizaciones del
código, tales como velocidad, tamaño, y otras.
También se puede indicar la expansión de las
funciones en línea. Se listan las opciones del
proyecto.
Precompiled Headers (Archivos de
cabecera precompilados)
La categoría Precompiled Headers
(Archivos de cabecera precompilados) permite la
utilización de archivos de cabecera precompilados. Estos
son archivos con extensiones PCH. Los archivos de cabecera
precompilados aumentan la velocidad del proceso de enlace y
compilación, pero deben eliminarse del directorio donde se
encuentra el proyecto completo debido a su gran tamaño. Se
listan las opciones del proyecto.
Preprocessor
(Preprocesador)
La categoría Preprocessor
(Preprocesador) permite indicar las definiciones del
preprocesador También es posible incluir directorios
adicionales (subdirectorios que contienen los archivos de
cabecera) e ignorar caminos estándar. Se listan las
opciones del proyecto.
Línk
(Enlace)
La ficha Link (Enlace) permite
seleccionar de entre las siguientes categorías: General
(General), Customization (Personalización), Debug
(Depuración), Input (Entrada) y Output
(Salida).
General
(General)
En la categoría General se pueden
especificar el nombre y la extensión del archivo. Lo
más normal es que la extensión sea EXE. Sin
embargo, en este libro se
aprenderán a desarrollar aplicaciones con extensiones de
archivo.DLL y .SCR. También se pueden introducir los
módulos de objetos/biblioteca. Estos son muy importantes
para las aplicaciones multimedia, donde
se supone que no se utilizan bibliotecas específicas.
También se pueden incluir los siguientes
elementos:
· Depuración de
información.
· Enlace incremental.
- Asignación de un
perfil.
· Ignorar las bibliotecas por
omisión.
· Generación de un archivo de
seguimiento.
Customization
(Personalización)
La categoría Customization
permite incluir los siguientes elementos:
· Enlace incremental.
· Base de datos
del programa.
· Nombre de los archivos de salida.
- Proceso de impresión de
mensajes.
· Identificación de inicio.
Debug
(Depuración)
La categoría Debug permite la
generación de un archivo de seguimiento y la
información de depuración en varios
formatos.
lnput
(Entrada)
La categoría Input permite la
especificación de módulos de objetos/biblioteca. De
forma adicional, se indican las referencias a símbolos y
los nombres de los archivos de resguardo de MS-DOS.
Output
(Salida)
La categoría Output permite
establecer las direcciones base, el punto de entrada, la
ubicación de la pila y la información de la
versión para el proyecto.
Resources
(Recursos)
La ficha Resources (Recursos) permite
asignar el archivo de recursos (normalmente un archivo con
extensión RES).
Las prestaciones adicionales incluyen
el lenguaje,
los directorios de inclusión de recursos y las
definiciones del preprocesador
OLE Types (Tipos
OLE)
La ficha OLE Types (Tipos OLE) permite
especificar el nombre del archivo de salida, el nombre del
archivo de cabecera de salida, las definiciones del preprocesador
y el identificador de inicio.
Browse Info (información de
exploración)
La tecla Browse Info permite especificar
el nombre del archivo de información de
exploración. Además, se pueden comprobar el archivo
de información de exploración (Browse Info) y el
identificador de inicio.
Representación del EID (Entorno
integrado de desarrollo)
El EID de Microsoft Visual C++ es un
Entorno integrado de desarrollo que permite, de forma sencilla,
crear, abrir, visualiza editar, guardar, compilar y depurar todas
las aplicaciones C y C++. Al tratarse de un componente decisivo
de Microsoft Development Studio, el entorno de C/C++ opera como
una parte más dentro de la familia
completa de lenguajes de Microsoft, incluyendo Visual Basic y
Visual J++. La ventaja de esta colección de lenguajes de
desarrollo radica en la facilidad de aprendizaje y uso
que proporciona un conjunto compacto de herramientas y utilidades
de desarrollo. ¡Por regla general, excepto para la sintaxis
específica del lenguaje, una
vez que se entienden la utilidades de un entorno (por ejemplo,
Visual C++), automáticamente se tiene conocimiento
de cómo utilizar las otras! La integración del lenguaje de
Microsoft Development Studio, permite desarrollar y combinar
fácilmente archivos fuentes de
múltiples lenguajes en un único
programa.
Al igual que todas las componentes del
Development Studio, el EID de Visual C++ contiene opciones para
personalizar el entorno de trabajo en función de las
preferencias personales y ajustarse a los requerimientos hardware específicos
para la aplicación. Muchas de las utilidades que se tratan
en las siguientes secciones se presentan, de forma más
detallada, en el Capitulo 3.
Inicio del EID (Entorno integrado
de desarrollo) de Visual C++
El inicio del EID de Visual C++ es
sencillo. Si se está utilizando un ratón, se pulsa
dos veces sobre el icono de Visual C++, que aparece en el
grupo
Microsoft Visual C++. La Figura 2.1 muestra la pantalla inicial
del EID (Entorno integrado de desarrollo) de Visual
C++.
Acceso a la ayuda sensible al
contexto
Se puede acceder fácilmente a la
ayuda de cada utilidad del EID (Entorno integrado de desarrollo)
de Visual C++, dado que toda la documentación del
compilador se encuentra en línea. La utilización de
este recurso tan valioso es tan sencillo como colocar el cursor
sobre la utilidad en cuestión y pulsar la tecla
F1.
No obstante, la ayuda sensible al
contexto no está restringida a las utilidades del EID de
Visual C++. Si se coloca el cursor sobre una construcción del lenguaje C/C++ y
se pulsa la tecla F1, automáticamente la utilidad de ayuda
muestra una descripción de la sintaxis de la construcción, una explicación de su
uso y, a menudo, un ejemplo ejecutable para
clarificarlo.
Este capitulo se ha diseñado
para proporcionar una amplia visión de cada una de las
opciones del EID de Visual C++. No hay que desesperarse por el
número de utilidades y opciones
disponibles.
Se pueden utilizar los parámetros
por omisión de muchas de las posibilidades del EID de
Visual C++, para hacer más fácil cl proceso de
preparar y ejecutar una aplicación.
Al aumentar la experiencia e
incrementar en complejidad los requerimientos de una
aplicación, gradualmente se ganará experiencia en
el manejo de las posibilidades más sofisticadas de este
potente entorno. Durante la lectura de
este capítulo, se puede coger un lápiz y marcar las
características del EID de Visual C++ que
parezcan más interesantes. (cuando surja la necesidad de
utilizar una de estas utilidades, fácilmente se puede
volver a hacer referencia a esta sección para obtener la
explicación sobre cómo utilizar la correspondiente
opción.
Funcionamiento de los
menús
Antes de comenzar a explicar cada una de
las utilidades de Visual C++, se van a examinar algunas
características comunes a todos los elementos de
menú. Por ejemplo, existen dos formas de acceder a los
elementos de un menú. La aproximación más
habitual consiste en colocar el puntero del ratón sobre la
opción deseada y pulsar el botón izquierdo del
ratón. La segunda opción consiste en utilizar la
tecla abreviada que aparece subrayada. Por ejemplo, se puede
acceder directamente, desde el teclado, al
menú File (Archivo) pulsando al mismo tiempo la tecla ALT
y la letra F.
A los elementos del menú se
puede acceder utilizando la misma secuencia descrita
anteriormente y, a menudo, existe un mecanismo adicional de
seleccionarlos. Algunos elementos de menú se pueden
activar directamente desde cualquier lugar del entorno integrado,
utilizando sus combinaciones especificas de teclas abreviadas. Si
un elemento de menú dispone de esta posibilidad, se
muestra a la derecha del elemento en el menú, la
combinación específica de teclas abreviadas para la
opción determinada. Por ejemplo, la primera opción
que aparece en el menú File (Archivo) es New (Nuevo)… Se
puede seleccionar esta opción, de forma inmediata,
pulsando simplemente CTRL-N, sin la necesidad de seleccionar
primero el menú File (Archivo).
A continuación, se muestran
algunos comentarios adicionales que conciernen al funcionamiento
de los menús: primero, si un elemento de menú
aparece desactivado, el entorno integrado está advirtiendo
sobre el hecho de que esa opción particular no está
disponible actualmente. Esto significa que el entorno integrado
ha detectado que falta algún prerequisito necesario para
que esta opción particular sea válida. Por ejemplo,
la opción Save (Guardar) del menú File (Archivo)
estará desactivada si la ventana de edición aparece
vacía. La opción detecta que no se puede guardar
algo que no existe e indica este hecho desactivando y colocando
como no disponible la orden Save (Guardar).
Segundo, cualquier elemento de
menú que aparezca seguido de tres puntos (…) indica una
opción que, cuando se selecciona, muestra
automáticamente un cuadro de diálogo o un
submenú. Por ejemplo, la orden Open… (Abrir) del
menú File (Archivo), cuando se selecciona, provoca que
aparezca el cuadro de diálogo Open
(Abrir).
Por último, indicar que se
pueden activar algunos elementos de menú pulsando sobre
sus botones asociados en las barras de herramientas, que aparecen
debajo de la barra del menú principal.
Obsérvense la utilidades tan
interesantes del EID (Entorno integrado de desarrollo) que,
normalmente, están disponibles a través de una
selección de menú.
Barras de herramientas acopladas o
flotantes
Se puede hacer que la barra de
herramientas estándar (situada justo debajo de la barra de
título de Visual C++), o cualquier otra barra de
herramientas aparezca acoplada o flotante. En modo
acoplado, una barra de herramientas aparece fija a
cualquiera de los cuatro bordes de la ventana de la
aplicación. El tamaño de una barra de herramientas
no se puede modificar cuando está
acoplada.
En modo flotante, una barra de
herramientas tiene una barra de título estrecha y puede
aparecer en cualquier lugar de la pantalla. Una barra de
herramientas flotante aparece siempre por encima del resto de
ventanas. Se puede modificar el tamaño o la
posición de una barra de herramienta flotante cuando se
encuentra en modo flotante.
Para modificar una barra de herramientas
acoplada en una barra de herramientas flotante:
· Se pulsa (recuérdese que no se debe
soltar el botón izquierdo del ratón) sobre la
barra de título o sobre un área donde no haya
botones de la barra de herramientas.
· Se arrastra la barra de herramientas desde
la zona de acople hacia la posición deseada.
Para acoplar una barra de herramientas
flotante:
- Se pulsa (recuérdese que no se
debe soltar el botón izquierdo del ratón) sobre
la barra de título o sobre un área donde no haya
botones de la barra de herramientas.
· Se arrastra la barra de herramientas hacia
cualquiera de los cuatro bordes de la ventana de la
aplicación.
Para situar una barra de herramientas
flotante sobre una barra de herramientas
acoplada:
· Se pulsa (recuérdese que no se debe
soltar el botón izquierdo del ratón) sobre la
barra de título o sobre un área donde no haya
botones de la barra de herramientas.
· Manteniendo pulsada la tecla CTRL, se
arrastra la barra de herramientas sobre cualquier área
de acople dentro de la ventana de la
aplicación.
El menú File
(Archivo)
El menú File (Archivo) del EID de
Visual C++ engloba el conjunto estándar de órdenes
habituales de manipulación de archivos para la
mayoría de aplicaciones de Windows. La Figura 2.2 muestra
las opciones de órdenes disponibles en el menú File
(Archivo).
New…
(Nuevo…)
El elemento de menú New…
(Nuevo…) abre una ventana nueva con un cuadro de diálogo
de edición. Normalmente cualquier aplicación nueva
comienza en este punto. El EID (Entorno integrado de desarrollo)
automáticamente asigna un titulo y número a cada
ventana que se abre. La numeración comienza por 1 y por
tanto, el título de la primera ventana siempre será
xxx1, el título de la segunda ventana xxx2 y
así sucesivamente. xxx es una etiqueta que identifica el
tipo de archivo con el que se está trabajando
(código, proyecto, recurso, mapa de bits, binario, icono o
cursor).
Si se tienen abiertas una serie de
ventanas con títulos desde xxx1 hasta xxx6 y se decide
cerrar la ventana con titulo xxx2, la siguiente vez que se
seleccione la opción New…, no se volverá a
utilizar este título (en este caso, xxx2). Windows
asigna automáticamente el siguiente número
más alto (en este ejemplo, xxx7).
La forma más rápida de
abrir un nuevo cuadro de diálogo de edición es
pulsar sobre el botón que se encuentra más a la
izquierda de la barra de herramientas. Este botón presenta
la imagen de un
archivo. Se puede seleccionar directamente la opción
New… (Nuevo) pulsando sobre este control.
Open…
(Abrir..)
A diferencia de New…, que abre una
ventana con un cuadro de diálogo de edición para un
archivo que previamente no existe, el elemento de menú
Open… (Abrir…) abre un cuadro de diálogo que solicita
información acerca de un archivo previamente guardado.
Este cuadro de diálogo es el cuadro de diálogo
estándar Open File (Abrir Archivo), que muestra la unidad
por omisión, vía de acceso y los parámetros
para búsqueda del archivo, permitiendo seleccionar
nuestros propios parámetros.
El cuadro de diálogo tiene una
utilidad de autoguardado que automáticamente recuerda las
preferencias del usuario y las utiliza, por omisión, cada
vez que se utilice la orden Open… (Abrir…). El intento de
abrir un archivo que ya está abierto provoca
automáticamente una señal de alarma sonora y un
mensaje de advertencia. ¡Esta útil
notificación evita que se abran, de forma accidental, dos
o más copias del mismo archivo, editando sólo uno
de ellos y, a continuación, guardar la versión no
actualizada!
El segundo botón a la izquierda de
la barra de herramientas, que presenta la imagen de una
carpeta abierta con una flecha, se puede utilizar para llamar
directamente a la opción Open…
(Abrir…).
Close
(Cerrar)
El elemento de menú Close
(Cerrar) se utiliza para cerrar un archivo abierto. Si se tienen
múltiples archivos abiertos, esta orden cerrará la
ventana activa o seleccionada. Se puede identificar la ventana
activa, observando el borde de la ventana. Las ventanas activas o
seleccionadas tienen el enfoque del ratón y teclado (esto
significa que la ventana recibe actualmente entrada de
ratón y teclado) y se
muestran con los parámetros de configuración del
color
seleccionados para el sistema. Estos parámetros
normalmente incluyen las barras de título con color y los
bordes de la ventana oscuros. Normalmente, en las ventanas
inactivas aparecen en gris las barras de titulo y los bordes de
la ventana.
Si de una manera accidental se intenta
cerrar un archivo que no ha sido guardado, no debe existir
ninguna preocupación. El entorno integrado
automáticamente protege al usuario de esta
situación altamente peligrosa, avisándole que el
archivo no se ha guardado anteriormente y preguntándole si
desea guardar el archivo en ese momento.
Save
(Guardar)
El elemento de menú Save
(Guardar) guarda los contenidos de la ventana actualmente activa
o seleccionada asociada al archivo especificado. Se puede
distinguir si el contenido de una ventana ha sido previamente
guardado o no, simplemente comprobando la barra de título
de la ventana. Si el titulo que tiene es el que por
omisión le asigna el programa, como puede ser xxx1,
indicará que los contenidos de la ventana actual no tienen
asignado un nombre de archivo válido y, por tanto, no se
han guardado. Cuando se guarda un archivo que no se ha guardado
previamente, se activará automáticamente el cuadro
de diálogo Save As… (Guardar como…).
También se puede utilizar el
botón Save (Guardar) de la barra de herramientas. Este
botón es el tercero de la izquierda y presenta la imagen de un
disco flexible. Si un archivo se abre en modo de sólo
lectura
(véase la descripción de la orden View (Ver)
Properties (Propiedades)), se observa que la imagen del control
aparecerá atenuada, indicando que la opción no
está disponible actualmente.
Save As… (Guardar
como…)
El elemento de menú Save As…
(Guardar como…) permite guardar una copia de los contenidos de
la ventana activa con un nuevo nombre. A continuación, se
plantea un caso que justifica la situación en la que se
podría seleccionar esta opción. Se acaba de
finalizar un proyecto. Se tiene un programa de trabajo. No
obstante, se quieren llevar a cabo algunas modificaciones. Por
motivos de seguridad, no se
desea modificar la versión actual. La selección de
la opción Save As… (Guardar como…) permite copiar los
contenidos del archivo con un nuevo nombre y, por tanto, poder
modificar el archivo duplicado. En caso de que ocurriera un
desastre, siempre se podría volver al archivo
original.
Save All (Guardar
todo)
Si nunca se ha escrito una
aplicación C/C++, Windows 98/95
o Windows NT, puede resultar sorprendente el número real
de archivos que se utilizan para la creación de un archivo
ejecutable de un proyecto. El problema con la opción Save
es que únicamente guarda los contenidos de la ventana
activa. El elemento de menú Save All (Guardar Todo) guarda
los contenidos de cada ventana. Si una ventana contiene texto que no
se ha guardado previamente, la orden Save ALL (Guardar Todo)
llamará automáticamente al cuadro de diálogo
Save As… (Guardar Como…), solicitando un nombre de archivo
válido para cada ventana.
Page Setup… (Configurar
página…)
La utilización más
habitual del elemento de menú Page Setup… (Configurar
página…..) es para documentar y dar formato a las copias
impresas. El cuadro de diálogo Page Setup (Configurar
página) permite seleccionar un encabezado y un pie para
cada página a imprimir y se puede utilizar para
especificar los márgenes de impresión superior,
inferior, izquierdo y derecho.
La Tabla 2.1 muestra los códigos
de formato disponibles para seleccionar el tipo de encabezado y
pie.
Print..
(Imprimir…)
La obtención de una copia impresa
de los contenidos de la ventana activa es tan sencillo como
seleccionar el elemento de menú Print… (Imprimir…). El
cuadro de diálogo Print (Imprimir) proporciona al usuario
diferentes opciones. Primero, se puede seleccionar entre imprimir
los contenidos completos de la ventana o imprimir sólo el
texto seleccionado pulsando sobre el botón de
opción apropiado. También se puede seleccionar la
impresora a
utilizar y configurar la impresora
seleccionada eligiendo la opción Setup
(Configurar).
Si se desea imprimir una parte del
contenido de una ventana, primero se debe seleccionar el texto
deseado. Seleccionar el texto es tan sencillo como colocar el
puntero del ratón en el primer carácter del texto
que se desea imprimir y, manteniendo pulsado el botón
izquierdo del ratón, arrastrar el ratón hacia la
derecha y/o hacia abajo a través del texto. Esto provoca
que el texto seleccionado se muestre en modo inverso. Cuando se
ha seleccionado el texto, el cuadro de diálogo Print
mostrará el botón de opción Print Range
Selection (Imprimir selección) en modo normal (no
atenuado), indicando que la opción está
disponible.
Recent File List (Lista de archivos
recientes)
Justo debajo del elemento Print… del
menú aparece una lista de los archivos más
recientemente editados. La característica más
importante de estas listas (a menudo denominadas listas de
histórico) es que son sensibles al contexto. Las
listas de histórico guardan la fecha para recordar los
últimos elementos que se han seleccionado para una
opción particular En el caso de este menú, los
elementos recientes se corresponden con archivos abiertos
previamente. La primera vez que se utiliza el EID de Visual C++,
esta parte del menú File aparece vacía, puesto que
no existe histórico de archivos
abiertos.
Tabla 2.1. Códigos de formato de
Page Setup (Configurar página)
Códigos de
formato Utilización asociada
&c Centrar texto.
&d Añadir la fecha actual del
sistema.
&f Utilizar el nombre del
archivo.
&l Justificar el texto a
izquierda.
&p Añadir números de
página.
&r Justificar el texto a
derecha.
&t Añadir la hora actual del
sistema.
Recent Workspace List (Lista de
áreas de trabajo recientes)
La lista de los proyectos recientes
aparece en el menú inmediatamente debajo de la lista de
archivos recientes. Esta lista de histórico es similar a
la lista de archivos recientes, excepto que la lista de proyectos
recientes contiene solamente archivos de proyecto. Para abrir
cualquier archivo, en ambas listas, se pulsa dos veces con el
botón izquierdo del ratón sobre el elemento
seleccionado.
Exit
(Salir)
El elemento de menú Exit (Salir)
permite abandonar el EID de Visual C++. No es motivo de
preocupación el hecho de olvidar guardar los contenidos de
una ventana antes de seleccionar Exit (Salir). EID
automáticamente muestra un mensaje de advertencia para
cada ventana que contiene texto no guardado, permitiendo guardar
esta información antes de salír.
El menú Edit
(Edicíón)
Los elementos del menú Edit
(Edición) permiten editar o buscar, de forma
rápida, los contenidos de una ventana activa de la misma
forma que se realizaría con cualquier programa de
tratamiento de textos estándar. La Figura 2.3 muestra el
menú Edit (Edición) del EID (Entorno integrado de
desarrollo) de Visual C++ y el menú emergente Advanced
(Avanzado).
Undo
(Deshacer)
El elemento de menú Undo
(Deshacer) permite deshacer la modificación de
edición más reciente que se haya realizado.
También, se puede utilizar la opción Undo
(Deshacer) desde la barra de herramientas. La opción Undo
(Deshacer) aparece en la barra de herramientas en forma de flecha
apuntando hacia la izquierda. Se trata del séptimo icono
empezando por la izquierda en nuestro sistema.
Redo
(Rehacer)
El elemento de menú Redo
(Rehacer) permite deshacer la acción de la última
operación Undo. Esta opción se utiliza para volver
a considerar una modificación de edición
válida que fue considerada como una modificación
incorrecta. La opción Redo (Rehacer) también se
puede utilizar desde la barra de herramientas. La opción
Redo (Rehacer) aparece en la barra de herramientas en forma de
flecha apuntando a la derecha. Se trata del octavo icono
empezando por la izquierda en nuestro sistema.
Cut
(Cortar)
El elemento de menú Cut (Cortar)
copia en el Portapapeles el texto seleccionado en la ventana
activa y, a continuación, lo elimina de la ventana activa.
Seleccionar el texto es tan sencillo como situar cl puntero del
ratón sobre el primer carácter del texto que se
desea cortar y, manteniendo pulsado el botón izquierdo del
ratón arrastrarlo hacia la derecha y/o hacia abajo a
través del texto. Esto provoca que el texto seleccionado
se muestre en modo inverso.
La orden Cut (Cortar) se utiliza, a
menudo, conjuntamente con la orden Paste (Pegar) para mover texto
de una posición a otra. Cuando el texto cortado se coloca
en el Portapapeles, se observa que todos los contenidos
existentes en el mismo se eliminan.
La opción Cut (Cortar)
también se puede utilizar desde la barra de herramientas.
En la barra de herramientas, la opción Cut (Cortar) se
corresponde con el icono de las tijeras. Se trata del cuarto
icono empezando por la izquierda en el sistema.
Copy
(Copiar)
Al igual que Cut, el elemento de
menú Copy (Copiar) coloca el texto seleccionado en el
Portapapeles. Sin embargo, a diferencia de Cut, Copy (Copiar)
mantiene el texto original seleccionado en su lugar Una buena
utilización de esta opción podría ser la
reproducción de secuencias de código complicadas o
aclarar comentarios necesarios en varios archivos
fuente.
La orden Copy (Copiar) se utiliza, a
menudo, conjuntamente con la orden Paste (Pegar) para copiar
texto de una posición a otra. Cuando el texto copiado se
coloca en el Portapapeles, se observa que todos los contenidos
existentes en el mismo se eliminan.
La opción Copy (Copiar)
también se puede utilizar desde la barra de herramientas.
En la barra de herramientas, esta opción se corresponde
con el icono que contiene una página duplicada. Se trata
del quinto icono empezando por la izquierda en el
sistema.
Paste
(Pegar)
El elemento de menú Paste (Pegar)
se utiliza para insertar los contenidos del Portapapeles en la
posición actual del cursor El Portapapeles sólo
puede pegar información que previamente se haya colocado
en él mediante una orden Cut o Copy.
La opción Paste (Pegar)
también se puede utilizar desde la barra de herramientas.
En la barra de herramientas, esta opción se corresponde
con el icono que contiene una página y el Portapapeles. Se
trata del sexto icono empezando por la izquierda en el
sistema.
Delete
(Borrar)
El elemento de menú Delete
(Borrar) borra el texto seleccionado sin que se copie la
información al Portapapeles. Seleccionar el texto es tan
sencillo como situar el puntero del ratón sobre el primer
carácter del texto que se desea eliminar y, manteniendo
pulsado el botón izquierdo del ratón arrastrarlo
hacia la derecha y/o hacia abajo a través del texto. Esto
provoca que el texto seleccionado se muestre en modo
inverso.
Aunque el texto borrado no se copia en el
Portapapeles, todavía se puede deshacer una orden Delete
seleccionando la orden Edit Undo.
Select All (Seleccionar
todo)
El elemento de menú Select All
(Seleccionar todo) se utiliza para seleccionar todos los
contenidos de la ventana activa de forma que se pueda cortar,
copiar o borrar.
Find…
(Buscar..)
El elemento de menú Find…
(Buscar..) funciona de forma muy parecida a la opción de
búsqueda de los programas de tratamiento de texto
estándar. No obstante, dado que el Lenguaje
C/C++ distingue entre mayúsculas y minúsculas, la
orden Find… (Buscar…) se puede adaptar para realizar
búsquedas sensibles al contexto, no sensibles al contexto
y de palabra completa. El cuadro de diálogo Find (Buscar)
también permite establecer la dirección de búsqueda (hacia arriba
o hacia abajo) a partir de la posición actual del
cursor.
Una opción muy útil y
sofisticada de Find… (Buscar…), que normalmente no aparece en
las posibilidades de búsqueda de los programas de
tratamiento de texto, es la opción Regular Expression
(Expresión regular). La Tabla 2.2 muestra y describe los
símbolos de patrones de búsqueda asociados con
Regular Expression que se pueden utilizar en la ventana Find
What: (Buscar qué:).
Find in Files… (Buscar en
archivos…)
Find in Files… (Buscar en archivos…)
es una de las herramientas más valiosas que se van a
utilizar una vez que se conozcan sus capacidades. Aun teniendo la
misma potencia que
Find…, Find in Files… (Buscar en archivos) incorpora una
ventaja especial, permite realizar la búsqueda en
múltiples archivos. El usuario se puede plantear la
siguiente pregunta, ¿por qué podría resultar
necesaria esta utilidad? La respuesta sería: si se
está aprendiendo una nueva característica del
lenguaje C/
C++, se puede utilizar esta opción para examinar todos los
programas que contienen dicha característica. Si se
está modificando un programa, se puede utilizar Find in
Files… (Buscar en archivos…) para asegurar que se ha accedido
a todas las ocurrencias de la sintaxis antigua. Sí se
está trabajando con un proyecto grande, se puede utilizar
Find in Files… (Buscar en archivos…) para localizar todo el
código escrito por un programador o grupo
particular. Además es necesario recordar que, Find in
Files… (Buscar en archivos…) no sólo tiene la
capacidad de buscar en un subdirectorio o en una unidad de disco.
Find in Files… (Buscar en archivos…) puede examinar una
red de computadoras
completa, una intranet o
Internet, localizar cualquier nombre, cadena, palabra reservada y
mucho más.
Tabla 2.2. Patrones de búsqueda
de cadenas para Regular Expression
Patrón Significado
* Sustituye cualquier número de
caracteres.
Ejemplo: Datos*1
Busca: Datos, DatosEn1,
DatosSal1
. Sustituye un único
carácter
Ejemplo: Datos.
Busca: Datos1, Datos2, pero no
DatosEn1
^ Comienza una búsqueda de una
línea que comienza con la cadena.
Ejemplo: ^hacer
Busca: cada línea que comienza
con "hacer"
+ Sustituye cualquier número de
caracteres que preceden a la cadena.
Ejemplo: +valor
Busca: i_valor, f_valor,
lng_valor
$Comienza la búsqueda de
cada línea que finaliza con la cadena.
Ejemplo: alguna_var_n);$
Busca: cada línea que finaliza
con "alguna_var_n);"
[ ]Comienza una búsqueda de
un conjunto de caracteres determinado.
Ejemplo: Datos[A.
.Z]
Busca: DatosA, pero no
Datos1
Ejemplo: Datos[ 1248]
Busca: Datos2, pero no
Datos3
Comienza una búsqueda para
aquellas cadenas donde el carácter que precede al
patrón debe coincidir exactamente.
Ejemplo: Datos[A..ZiO.
.9]
Busca: DatosAil, pero no
DatosDo3
{} Comienza una búsqueda de
cualquier secuencia de los caracteres que aparecen entre
llaves.
Ejemplo: {no}*_respuesta
Busca: respuesta, no_respuesta,
nono_respuesta nonono_respuesta
Replace…
(Reemplazar…)
El elemento de menú Replace…
(Reemplazar…) activa el cuadro de diálogo Replace
(Reemplazar), que permite reemplazar texto. Simplemente se
introduce la cadena a localizar, a continuación se escribe
la cadena por la que se reemplaza y, finalmente, se seleccionan
los diferentes criterios de coincidencia. La opciones de
coincidencia incluyen sólo palabras completas,
distinción entre mayúsculas y minúsculas, no
distinción entre mayúsculas y minúsculas y
Regular Expressions (Expresiones regulares) (véase la
explicación anterior).
Se debe tener cuidado cuando se
selecciona la opción Replace ALL (Reemplazar todo), puesto
que puede generar resultados peligrosos. Existen dos aspectos a
tener en cuenta cuando se realiza una operación de
reemplazamiento: primero, guardar el archivo antes de
ejecutar la orden; segundo, si algo provoca una mala
realización del proceso de reemplazamíento,
recuérdese que siempre se puede utilizar la opción
Undo (Deshacer).
Go to… (ir
a…)
Se puede desplazar el cursor, de forma
rápida, a una posición específica dentro de
la ventana de edición activa con el elemento de
menú Go To… (Ir a…). La selección de esta
opción activa el cuadro de diálogo Line
(Línea) que permite introducir el número de
línea asociado a la línea de código a la que
se desea saltan El hecho de introducir un número de
línea superior al número actual de líneas de
código fuente disponibles, implica que la orden coloca el
cursor al final del archivo de texto que aparece en la
ventana.
Bookmarks…
(Marcadores…)
La opción Bookmarks…
(Marcadores…) permite especificar marcadores para marcar las
líneas a las que se accede con mayor frecuencia en el
archivo fuente. Una vez que se define un marcador, se pueden
utilizar las órdenes del menú o del teclado para
desplazarse a dicho marcador. Un marcador se puede eliminar
cuando ya no sea necesario. Se pueden utilizar marcadores con
nombre y marcadores sin nombre. Los marcadores con nombre se
guardan entre diferentes sesiones de edición. Cuando se
crea un marcador con nombre, el usuario se puede desplazar a esta
posición siempre que el archivo este abierto. Los
marcadores con nombre se guardan junto con el número de
línea y el número de columna de la posición
en la que se encuentra el cursor cuando se crea dicho marcador
Esta posición se ajusta siempre que se edita el archivo.
El marcador permanece en la posición actual, incluso si se
borran los caracteres que rodean dicho marcador
ActiveX Control in HTML… (Control
ActiveX en HTML) y HTML Layout…
(Esquema HTML…)
Estas dos opciones permiten editar un
control ActiveX integrado en HTML o el propio esquema
HTML.
Advanced
(Avanzado)
Las opciones Advanced
(Avanzado) permiten refinar el código fuente. Las opciones
más útiles incluyen la eliminación de
tabuladores en la selección, visualización de
espacios en blanco y búsquedas
incrementales.
Breakpoints… (Puntos de
ruptura…)
La opción Breakpoints… (Puntos
de ruptura…) permite especificar puntos de ruptura en
posiciones específicas, en elementos de datos
seleccionados o en mensajes.
Líst Members (Miembros de la
lista)
Esta utilidad muestra una lista de
variables o funciones miembro válidas para la clase o
estructura
seleccionada.
Type Info (información de
tipo)
La opción Type Info
(Información de tipo) muestra una $$ToolTip que contiene
la declaración completa para cualquier
identificador
Parameter Info (información
de los parámetros)
Esta utilidad muestra la
declaración completa, incluyendo una lista de
parámetros, de la función que aparece a la
izquierda del cursor El parámetro en negrita indica el
siguiente parámetro que se requiere cuando se escribe la
función.
Complete Word (Palabra
completa)
La opción Complete Word (Palabra
completa) completa el resto del nombre de una variable o
función. Esta opción puede ahorrar el hecho de
tener que repetir la escritura de
nombres largos.
El menú View
(Ver)
El menú View (Ver) contiene las
órdenes que permiten modificar la vista del Query Designer
(Diseñador de consultas) (véase la Figura
2.4).
Scrípt Wízard…
(Asistente de Scripts…)
Una forma sencilla de comenzar con la
creación de scripts es utilizando una herramienta
autorizada HTML como puede ser Microsoft ActiveX Control Pad. La
herramienta Microsoft ActiveX Control Pad está disponible
gratuitamente para descargarla desde la sección de
herramientas autorizadas en Microsoft Site Builder Workshop, a la
que se puede acceder a través de www.microsoft.com. Se
puede utilizar la opción Script Wizard… (Asistente de
Scripts. ..) para comenzar el diseño
una VBScript (Script de Visual Basic) o
JavaScript
(Script de Java). Una vez
que se activa el Script Wizard (Asistente de Scripts), primero se
selecciona el Default Script Language (Lenguaje de
Scripts por omisión) y, a continuación, se
selecciona un evento (Select Event), se carga (Load) y
posteriormente se inserta el evento (Insert
Event).
ClassWizard… (Asistente de
clases…)
El ClassWizard (Asistente de clases) de
Microsoft C++ hace más fácil la realización
de tareas repetitivas como pueden ser la creación de
nuevas clases, la definición de descriptores de mensajes,
sustitución de funciones virtuales de la MFC y la
recolección de datos de controles en un cuadro de
diálogo, una vista formulario o una vista de registros. Un
aspecto muy importante es que ClassWizard (Asistente de clases)
sólo funciona con aplicaciones que utilicen clases de la
MFC a diferencia de ClassView y WizardBar, que funcionan con MFC,
ATL o con las propias clases del usuario. Además,
ClassVíew no reconoce las clases a menos que aparezcan
registradas en el archivo de la base de datos de
ClassView. Estos archivos tienen la extensión CLW. Con
ClassWizard (Asistente de clases), se puede:
· Incorporar métodos
y propiedades automáticas (Automation) cuando se crean
nuevas clases.
· Crear nuevas clases a partir de muchas de
las clases base del marco de trabajo que controlan los mensajes
y conjuntos de
registros de
Windows.
· Crear nuevas funciones miembro de control de
mensajes.
· Declarar variables miembro que
automáticamente inicializan, reúnen y validan
datos introducidos en cuadros de diálogo o vistas de
formularios.
· Eliminar funciones miembro de control de
mensajes.
· Asignar mensajes a funciones asociadas con
ventanas, cuadros de diálogo, controles, elementos de
menú y abreviaturas.
· Determinar los mensajes que ya tienen
definidos controladores de mensaje y desplazarse al
código del programa asociado al controlador.
· Trabajar con bibliotecas de clases y tipos
existentes.
Resource Symbols…
(Símbolos de recursos…) y Resources Includes…
(Archivos de cabecera de recursos…)
Se puede descubrir rápidamente
que cuando un programa se hace más grande en tamaño
y sofisticación, también aumenta en el
número de recursos y símbolos. Esto supone que
aparezca un incremento en el número de símbolos
dispersos en los diferentes archivos dificultosos. La opciones
Resource Symbols… (Símbolos de recursos) y Resources
Includes… (Archivos de cabecera de recursos…) simplifican la
gestión
de los símbolos, proporcionando una herramienta central
que permite realizar lo siguiente:
· Modificar el nombre y el valor de un
símbolo que no está en uso.
· Definir nuevos símbolos.
· Eliminar un símbolo si no se
está utilizando.
· Localizar rápidamente el editor de
recursos apropiado cuando se está utilizando el
símbolo.
· Examinar las definiciones de los
símbolos existentes para comprobar el valor de
cada símbolo, la lista de símbolos que se
está utilizando y los recursos asignados a cada
símbolo.
Full Screen (Pantalla
completa)
Si se tienen las mismas costumbres que
la mayoría de los programadores, cuando se comienza a
profundizar en el desarrollo y/o edición del
código, se desea ver, al mismo tiempo, la mayor parte de
código que sea posible. La opción Full Screen
(Pantalla completa) es ideal para estas situaciones, permitiendo
acercar la ventana de edición (o cualquier otra ventana,
por ejemplo las pantallas de ayuda) a su máxima capacidad
de visualización.
Workspace (Espacio de
traba/o)
Imagínese un escritorio como
entorno de desarrollo. Se tienen editores, compiladores,
manuales,
anotaciones, libros de
texto, mensajes de teléfono y e-mail esparcidos por el
escritorio y monitor, todos
relacionados con el proyecto a manejan Se podría
interpretar la opción Workspace (Espacio de trabajo) como
una secretaria electrónica que intenta organizar esta
información. La opción Workspace (Espacio de
trabajo) abre la vista Workspace (Espacio de trabajo)
(normalmente en la parte superior izquierda de la pantalla),
proporcionando acceso instantáneo a las clases actuales,
archivos, recursos y a los manuales de
referencia a los que se ha accedido más recientemente. La
conmutación entre las diferentes presentaciones es tan
sencilla como pulsar sobre las fichas que
aparecen en la parte inferior de la vista del Workspace (Espacio
de trabajo).
Output
(Salida)
El elemento de menú Output
(Salida) coloca en primer plano la ventana Output (Salida). La
ventana Output contiene los informes del
progreso que siguen los procesos
relacionados con la generación, compilación y
enlazado y, muestra cualquier mensaje de error o advertencia
generado.
Debug Windows (Ventanas de
depuración)
La selección de esta
opción activa un menú que proporciona acceso a
varias opciones del depurador integrado, incluyendo la Watch
Window (Ventana para la visualización de los contenidos),
Register Window (Ventana de registro), CalI
Stack (Llamada a la pila), Memory (Memoria), Variables
(Variables) y Dísassembly Code (Código no
ensamblado).
Refresh
(Refresco)
Se puede utilizar Refresh (Refresco)
para volver a dibujar y actualizar el panel de la vista activa de
forma similar a como se redibuja y se actualiza el contenido del
Explorador de Windows cuando se pulsa F5.
Propertíes
(Propiedades)
Si es aplicable, la orden Properties
(Propiedades) muestra las estadísticas del archivo actual, como
pueden ser la fecha de creación, tamaño del
archivo, tipo de archivo, características de
edición y mucho más dependiendo del tipo de
archivo.
El menú lnsert
(insertar)
El menú Insert (Insertar) accede
a una lista de órdenes que permiten incluir en el espacio
de trabajo nuevos archivos, recursos u objetos (véase la
Figura 2.5).
New Class… (Nueva
Clase…)
Cuando se selecciona esta opción,
el EID (Entorno integrado de desarrollo) crea una nueva MFC, ATL
o clase genérica. Aparece el cuadro de diálogo New
Class (Nueva Clase) que permite definir el nombre de la clase y
la clase base. Se crea un archivo de cabecera y un archivo de
Implementación para la clase.
Resource…
(Recurso…)
Esta opción permite insertar en
el espacio de trabajo alguno de los diferentes recursos,
incluyendo los recursos Accelerator (Abreviatura), Bitmap (Mapa
de bits), Cursor (Cursor), Dialogo
(Diálogo), Icon (Icono), Menu (Menú), String Table
(Tabla de cadenas), Toolbar (Barra de herramientas) y Version
(Identificador de versión).
Resource Copy… (Copia del
recurso…)
Visual C++ permite copiar recursos
mientras se modifica el lenguaje de
recursos, los requerimientos de sus propiedades o ambos. Cuando
se crea o se copia un recurso con un lenguaje o
condición diferente, éste se muestra después
del nombre del símbolo en la ventana Project (Proyecto).
Language (Lenguaje) identifica el lenguaje
utilizado para el texto del recurso. Property Condition
(Condición propia) es un símbolo que identifica la
condición bajo la que se utiliza esta copia del
recurso.
NOTA- También se puede copiar a
partir de una plantilla.
Into HTML (En
HTML)
La opción Into HTML (En HTML)
permite insertar recursos para mejorar una página
web.
File As Text… (Archivo como
texto…)
Utilizada normalmente para insertar
código fuente, la opción File As Text… (Archivo
como texto…) solicita primero el nombre del nuevo archivo y, a
continuación, activa una ventana de edición
vacía preparada para introducir texto. (Esta orden
requiere tener abierta una ventana de edición e inserta el
archivo en la posición actual.)
New ATL Object… (Nuevo objeto
ATL…)
La opción New ATL Object…
(Nuevo objeto ATL…) permite insertar una clase Active Template
Library en el espacio de trabajo. Los objetos ATL son un conjunto
de clases C++ basadas en plantillas que permiten crear
fácilmente sencillos objetos COM (Modelo de
objeto componente). Proporcionan soporte especial para
características clave asociadas a COM, incluyendo
implementaciones existentes de IUnknown, IClassFactory,
IClassFactory2 e IDispatch; interfaces dobles; interfaces de
enumeración de COM estándar; puntos de
conexión; interfaces de $$arranque; y controles
ActíveX. El código ATL se puede utilizar para crear
objetos de entrelazado sencillo, objetos del modelo en
apartamento (apartment-model objects), objetos del modelo de
entrelazado libre (free-threaded model objects) y, tanto objetos
del modelo de
entrelazado libre como del modelo en
apartamento.
El menú Project
(Proyecto)
La órdenes del menú Project
(Proyecto) permiten administrar todos los proyectos
abiertos.
-NOTA La orden Data Connection
(Conexión de datos) está incorporada al
submenú Add To Project (Añadir al proyecto) cuando
se activa Microsoft Visual Database Tools (Herramientas de
Microsoft Visual Database). Data Connection activa el cuadro de
diálogo Select Data Source (Seleccionar datos Fuente) de
forma que se pueda agragar una conexión de datos a nuestro
proyecto actual de base de datos.
Véase la Figura 2.6.
Set Active Project (Establecer
proyecto activo)
En el desarrollo de programación
avanzada llega un momento donde es mejor dividir un proyecto
grande en subproyectos. Un subproyecto establece una dependencia
de un proyecto sobre otro con una estructura
jerárquica. Los subproyectos se utilizan en proyectos de
Visual C++, por ejemplo, cuando un proyecto genera un programa
ejecutable que depende de una biblioteca estática.
Si la biblioteca estática
es un subproyecto del proyecto que genera el programa ejecutable,
se verá que la biblioteca se actualizará antes de
que se genere el programa ejecutable. La opción Set Active
Project (Establecer proyecto activo) determina el proyecto o
subproyecto que está activo actualmente.
Add to Project (Añadir al
proyecto)
Se utiliza esta opción siempre
que se desea agregar un archivo a un proyecto. El archivo se
incorpora al proyecto especificado y a todas las configuraciones
asociadas a dicho proyecto. Por ejemplo, si se tiene un proyecto
denominado míPrimerProy, con las configuraciones Debug y
Release, y una configuración adicional de proyecto
denominada miFinalProy basada en la configuración Release,
la incorporación de un archivo implica que se incorpora a
todas estas configuraciones del proyecto. Si se agregan archivos
desde directorios superiores al directorio de trabajo del
proyecto, se verá que Microsoft Developer Studio utiliza
en los nombres de los archivos los caminos de acceso absolutos
para aquellos archivos que aparezcan en el archivo DSP del
proyecto. Debido a la utilización de caminos de acceso
absoluto, resulta difícil compartir el archivo (.DSP) del
proyecto.
Source Control (Control de
fuente)
Proporciona opciones para la administración de archivos de proyecto en
un proyecto controlado a nivel de fuente. Este submenú
sólo aparece si se tiene instalado un programa de control
de fuente como puede ser Visual SourceSafe.
Dependences
(Dependencias)
En el diseño
de la programación avanzada donde un proyecto está
constituido por diferentes subproyectos, se utiliza la orden
Dependencies (Dependencias) para mostrar la relación
jerárquica.
Settings… (Parámetros de
configuración…)
La orden Settings… (Parámetros
de configuración…) activa un cuadro de diálogo
muy sofisticado que permite definir la totalidad de los
parámetros de configuración del proyecto, de las
clases utilizadas, las opciones del compilador de C/C++, las
opciones del enlazador, visualizador tipos OLE, recursos,
parámetros del visualizador y opciones del proceso de
generación.
Export MakeFile… (Exportar
archivo Make…)
La opción Export MakeFile…
(Exportar archivo Make…) almacena toda la información
requerida para generar el proyecto y se puede utilizar desde la
línea de órdenes. Los archivos Make definen los
mismos parámetros de configuración para la
generación del proyecto que se establecen en el entorno
del Developer Studio (Estudio de desarrollo).
lnsert Project into Workspace…
(insertar proyecto en el espacio de
trabajo)
Esta opción inserta un proyecto
en el espacio de trabajo. Sin embargo, esto puede resultar algo
confuso si no se establece la comparación entre qué
es un proyecto y en qué se diferencia de un espacio de
trabajo. Un espacio de trabajo del proyecto es el área
definida que contiene los proyectos y sus configuraciones. Un
proyecto se define como una configuración y un grupo de
archivos que generan un programa o archivo(s) binario(s)
final(es). Por otro lado, un espacio de trabajo puede contener
múltiples proyectos, incluso de diferentes tipos (por
ejemplo, Microsoft Visual C++).
El menú Build
(Generación)
La opciones del menú Build
(Generación) proporcionan acceso a las utilidades del EID
que se incluyen en la generación de código real, la
depuración y la ejecución del programa
(véase la Figura 2.7).
Compile
(Compilar)
La selección de esta
opción indica al EID que compile los contenidos de la
ventana activa. La compilación en este sentido está
indicando al entorno que compruebe la sintaxis del archivo
activo, por ejemplo el código fuente en C o
C++.
Build
(Generar)
Los programas habituales de C/C++
están constituidos por muchos archivos. Algunos de estos
archivos pueden ser suministrados por el compilador, el sistema
operativo, el programador o incluso terceros como pueden ser
vendedores. Puede hacerse más complicado si 105 archivos
del proyecto han sido creados por equipos de programación
diferentes. Teniendo en cuenta que puede haber muchos archivos y
que el proceso de compilación puede tardar un tiempo
excesivamente largo, el elemento de menú Build (Generar)
se convierte en una herramienta extremadamente útil. Build
(Generar) examina todos los archivos del proyecto y, a
continuación, compila y enlaza solamente aquellos archivos
que tienen una dependencia cuyas fechas y horas son más
recientes que el archivo ejecutable del
proyecto.
Una decisión que se debe tomar
cuando se selecciona Build (Generar) es sí el archivo
resultante va a incorporar información de la
depuración (Modo Debug) o no (Modo Release). Estos modos
se seleccionan a partir del elemento de menú Project
Settíngs…. Una vez que se tiene un programa listo y
ejecutándose, normalmente se debería realizar un
Buíld (Generar) sin la opción Debug, puesto que la
incorporación de la información genera un archivo
ejecutable innecesariamente grande.
Sí el proceso Build (de
generación) detecta cualquier error de sintaxis,
advertencias no fatales o errores fatales, se muestran en la
ventana Output (Salida). Se utilizan los elementos de menú
Next Error (Error siguiente) o Previous Error (Error anterior)
para desplazarse hacia adelante o hacia atrás a
través de la lista de errores.
Sí se tiene visible la barra de
herramientas, se puede utilizar el sexto botón empezando
por la derecha para realizar el proceso Build. Este botón
incluye una imagen de un cubo pintado con dos colores oscuros y
con dos flechas hacia abajo apuntando al citado
cubo.
Rebulid All (Volver a generar
todo)
La única diferencia que existe
entre Build (Generar) y Rebuild All (Volver a generar todo) es
que Rebuíld All ignora las fechas de todos los archivos de
un proyecto, y compila y enlaza todos ellos
concienzudamente.
Imagínese la siguiente
situación. La compañía, por motivos
económicos, ha decidido continuar sin ningún
personal de
mantenimiento
de los sistemas. Esta
decisión, junto con el cambio de hora
estacional, la hora de cierre del sistema y demás
aspectos, provoca que los sistemas de la
red de computadoras
tengan diferentes configuraciones de reloj del sistema.
¡Por tanto, los archivos creados recientemente
podrán aparecer con la fecha de días anteriores! En
este caso, la utilización de la opción Build
(Generar) podría no considerar estos archivos actualizados
en la versión final del archivo ejecutable. No obstante,
la utilización de Rebuild ALL (Volver a generar todo),
evita cualquier comprobación de fecha y hora, creando un
archivo ejecutable que refleja exactamente el estado
actual de todos los archivos incluidos.
Cuando el proceso Rebuíld All
(Volver a generar todo) detecta cualquier error de sintaxis,
advertencias no fatales o errores fatales, los muestra en la
ventana Output (Salida). Se utilizan los elementos de menú
Next Error (Error siguiente) o Previous Error (Error anterior)
para desplazarse hacia adelante o hacia atrás a
través de la lista de errores.
Si se tiene la barra de herramientas
visible, se puede utilizar el quinto botón empezando por
la derecha para realizar el proceso Rebuild ALL. Este
botón incluye una imagen de un cubo pintado con tres
colores claros y
con dos flechas hacia abajo apuntando hacia
él.
Batch Build… (Generación
por lotes…)
Esta opción es similar al
elemento de menú Build, salvo que permite realizar el
proceso de generación para múltiples destinos
asociados al proyecto.
Clean
(Limpiar)
Con la orden Clean (Limpiar) se pueden
eliminar fácilmente todos los archivos de los directorios
intermedios de cualquier configuración de proyecto en el
espacio de trabajo asociado al proyecto. La eliminación de
los archivos obliga al entorno de desarrollo a generar estos
archivos si seguidamente se pulsa la orden
Build.
Update All
Dependencíes…(Actualizar todas las
dependencias…)
La utilización de esta
opción indica al EID que lea las dependencias generadas
por el compilador y examine las dependencias entre los archivos
con código fuente distinto de C/C++. Por tanto, la
información de dependencia para los archivos de C++ no
reflejará ninguna modificación realizada antes del
último proceso de generación.
Start Debug (inícíar
depuración)
A diferencia de una ejecución
rápida del programa, esta opción indica al EID que
comience la ejecución del programa línea a
línea, o hasta cualquier punto de ruptura
establecido.
Debugger Remote Connection…
(Conexión remota del
depurador…)
Una vez configurada la conexión
en ambos puntos finales, seleccionando esta opción, se
puede iniciar la depuración remota.
Execute
(Ejecutar)
Una vez que se ha generado el proyecto
con O errores, la orden Execute (Ejecutar) permite ejecutar el
programa de forma bastante rápida.
Set Active Configuration…
(Establecer la configuración
activa…)
Cuando se trabaja con proyectos grandes
que están constituidos por muchos subproyectos, es
necesario especificar a las órdenes Build o Rebuild las
necesidades para la creación del archivo ejecutable del
proyecto. La orden Set Active Configuration… (Establecer la
configuración activa)… realiza esta
tarea.
Configurations…
(Configuraciones…)
La opción Configurations…
(Configuraciones) permite insertar o eliminar configuraciones
asociadas al ciclo de generación activo. Por ejemplo, se
podría comenzar con una única configuración
de depuración y después incorporar una
versión definitiva.
Pro file…
(PerfiL..)
Esta opción está
disponible solamente en las Ediciones Professional (Profesional)
y Enterprise (Empresa). Antes
de utilizar el generador de perfiles (profiler), se debe generar
el proyecto actual con la opción de generación de
perfiles activada. Si se desea ejecutar el perfil a nivel de
funciones sólo en el proyecto actual, se necesita activar
la opción de generación de perfiles para el
enlazador. Si se desea generar un perfil a nivel de línea,
también se necesita incluir información sobre el
proceso de depuración.
Profiler se utiliza para examinar el
comportamiento
de los programas en tiempo de ejecución. Profiler permite
determinar las secciones del código que están
funcionando de forma eficiente, generando información que
muestra las áreas de código que no se están
ejecutando o que tardan mucho tiempo en
ejecutarse.
El menú Tools
(Herramientas)
El menú Tools (Herramientas)
accede a las órdenes que permiten trabajar con las
consultas. Las órdenes del menú Tools
(Herramientas), como se describe a continuación, se
aplican al Query Designer (Diseñador de consultas)
(véase la Figura 2.8).
Source Browser…
(Vísualízador de fuentes..)
Esta opción se utiliza para
visualizar los archivos de información. Se puede indicar
al compilador que genere un archivo con extensión.SBR para
cada archivo objeto (.OBJ) que compila. Cuando se genera o
actualiza el archivo que contiene información de
visualización, todos los archivos SBR del proyecto deben
estar disponibles en disco. Para crear un archivo.SBR con toda la
información posible, se específica Generate Browse
Info (Generar información de visualización) en el
cuadro de diálogo Project Settings (o /FR). Para crear un
archivo .SBR que no contenga símbolos locales, se
específica Generate Browse Info y, a continuación,
se activa la opción Exclude Local Variables de la ficha
Browse Info (/FR en la línea de órdenes del
compilador). Si el archivo .SBR contiene símbolos locales,
todavía se pueden omitir del archivo .BSC utilizando la
opción /El de BSCMAKE.
Close Source Browser File (Cerrar
el archivo del Vísualízador de fuentes)
Esta opción cierra el archivo .SBR
actualmente activo.
Error Lookup (Localizar
errores)
La orden Error Lookup (Localizar
errores) se utiliza para recuperar un mensaje de error del
sistema o un mensaje de error de un módulo en
función del valor
introducido. Esta opción recupera el texto del mensaje de
error automáticamente si se arrastra e inserta un valor
hexadecimal o decimal a partir del depurador del Developer Studio
u otra aplicación OLE habilitada. Se puede introducir un
valor
escribiéndolo o pegándolo directamente desde el
Portapapeles y seleccionando Look Up (Localizar). Si primero se
selecciona el texto, se pueden utilizar las abreviaturas de
teclado para
Copiar (CTRL-c), Cortar (CTRL-x) y Pegar (CTRL-v) en los cuadros
Value y Error Messages.
ActiveX Control Test Container
(Contenedor de prueba para controles
ActiveX)
Esta orden activa la aplicación
Test Container
(Contenedor de prueba), que se incorpora con Visual C++. El
programa es un contenedor de controles que permite probar
controles ActiveX. Test Container (Contenedor de prueba) permite
al desarrollador de controles probar la funcionalidad del control
modificando sus propiedades, invocando sus métodos y
disparando sus eventos.
Además, el Test Container (Contenedor de prueba) puede
mostrar registros de
notificaciones de enlace de datos y ofrece facilidades para
comprobar la funcionalidad de persistencia de los controles
ActiveX.
OLE/COM Object Viewer (Visor de
objetos OLE/COM)
OLE/COM Object Viewer muestra los
objetos ActiveX y OLE instalados en la computadora
y las interfaces que admiten. Además, permite editar el
registro y
comprobar las bibliotecas de tipos.
Spy++
La opción Spy++ activa una
utilidad Wín32 que ofrece una vista gráfica de los
procesos del
sistema, elementos de proceso, ventanas y mensajes de ventana. La
utilidad Spy++ dispone de una barra de herramientas e
hiperenlaces para hacer más rápido el trabajo.
Spy++ que también permite refrescar la vista activa,
ofrece una herramienta de localización de ventanas (Window
Finder Tool) para realizar este proceso de una forma más
sencilla y proporciona un cuadro de diálogo Font (de
fuentes) para
personalizar las ventanas de
visualización.
MFC Tracer (Trazador
MFC)
Para ayudar a realizar la
depuración de los programas de Windows, MFC proporciona la
orden MFC Tracen Ésta mostrará, en un terminal o
ventana de salida de la depuración, mensajes acerca de la
operación interna de la biblioteca MFC, así como
las advertencias y errores que se producen si algo no se ha
ejecutado correctamente en la
aplicación.
Visual Component Manager (Gestor
de componentes visuales)
La pantalla principal de Visual Component
Manager presenta una barra de herramientas que permite
seleccionar las órdenes más habituales y tres
paneles para visualizar las bases de datos,
las carpetas y subcarpetas, y los elementos individuales que
almacena Visual Component Manager. Posteriormente, se
describirán brevemente estos elementos.
Register Control (Control de
registros)
A los controles OLE, al igual que a otros
objetos del servidor OLE, se
puede acceder mediante otras aplicaciones relacionadas con OLE.
Esto se consigue registrando la clase y biblioteca de tipos
asociada al control. Para este propósito, se utiliza la
orden Register Control (Control de registros).
Customize…
(Personalizar…)
El elemento de menú Customize…
(Personalizar..) selecciona el cuadro de diálogo
Customize, que permite incorporar, eliminar y personalizar las
herramientas utilizadas en el menú Tools. Las opciones
adicionales permiten asignar abreviaturas de teclado a diversas
órdenes.
Options…
(Opciones…)
El elemento de menú Options…
(Opciones…) activa el submenú Options, que proporciona
órdenes que permiten personalizar el EID de Visual C++ o
modificar la forma de desarrollar la aplicación. Si se
utiliza Microsoft Visual C++ por primera vez, se puede examinar
sin problemas el
contenido del submenú Options. Sin embargo, hasta que no
se tenga un conocimiento
exacto de la complejidad que conllevan las modificaciones de las
opciones por omisión para la instalación, es
conveniente que no se modifiquen. Muchas de las modificaciones
que se pueden realizar a este nivel tienen efectos globales, y
establecer, de forma incorrecta, una opción puede
interrumpir, literalmente, el desarrollo de las
aplicaciones.
Macro… (Macro…)Record…
(Grabar..)Play… (Ejecutar…)
Esta opción se utiliza para crear
macros de
VBScript. Estas macros son
procedimientos
escritos en lenguaje Visual Basic
Scripting Edition. Con las macros de
VBScript, se puede simplificar el trabajo a
realizar en el Developer Studio (Estudio de desarrollo). Por
ejemplo, en una macro se pueden combinar diferentes
órdenes, agilizar la edición de rutinas o
automatizar una serie de tareas complejas.
El menú Wíndow
(Ventana)
A excepción de la orden Docking
View (Acoplamiento de vista), el resto de las opciones del
menú Window (Ventana) son similares a las que aparecen
normalmente en todos los productos
estándar para Windows (véase Figura
2.9).
New Window (Ventana
nueva)
La orden New Window (Ventana nueva)
proporciona una de las muchas formas de comenzar a introducir y
editar un archivo nuevo.
Split (Dividir)
La opción Split (Dividir) activa
un panel con cuatro cuadrantes sobre la vista Edit
(Edición), permitiendo establecer el punto de
división de forma horizontal o vertical.
Docking Víew (Acoplamiento
de vista)
Un barra de herramientas acoplada se
puede adjuntar, o acoplar, a cualquier lado de su ventana padre,
o se puede separar, o desligar, de su propio marco de ventana. No
todas las vistas son acoplables, pero si la ventana activa es,
por ejemplo la vista Workspace, esta opción permite
acoplar y desacoplar el panel.
Close
(Cerrar)
Esta opción cierra la ventana
activa. Si los contenidos de la ventana no se han guardado
previamente, se pregunta al usuario si desea
hacerlo.
Close All (Cerrar
todo)
Esta opción cierra todas las
ventanas abiertas. Si alguno de los archivos individuales no se
ha guardado previamente, el EID pregunta al usuario si desea
hacerlo antes de cerrarlo y eliminar su
contenido.
Next
(Siguiente)
En lugar de pulsar sobre una ventana
para activarla, se puede seleccionar la orden Window Next para ir
desplazándose a través de los contenidos de las
ventanas abiertas.
Previous
(Anterior)
Es similar a la orden Next, con la
diferencia de que funciona de forma inversa.
Cascade
(Cascada)
Esta opción muestra todas las
ventanas abiertas de forma similar a una sección
desplegable de tarjetas. Esto
permite visualizar fácilmente los títulos de las
ventanas.
Tile Horizontally (Distribución
horizontal)
Distribuye en la pantalla las ventanas
abiertas con una configuración de anchura máxima.
Es la mejor forma de visualizar código
fuente.
Tile Vertícally (Distribución
vertical)
Distribuye en la pantalla las ventanas
abiertas con una configuración de altura máxima. Es
la mejor forma de mostrar análisis
jerárquicos.
History List (Lista de
histórico)
Se trata de una lista dinámica de las ventanas abiertas, por
nombres, permitiendo seleccionar la ventana que se desea
activan
El menu Help
(Ayuda)
El menú Help (Ayuda) comienza con
las opciones Contents (Contenidos) y Search… (Buscar…) que
actúan sobre la documentación en línea
estándar y, a continuación, muestra un conjunto de
nuevas utilidades de ayuda, por ejemplo, la opción
Documentation home page (Página de inicio de la
documentación) (véase la Figura
2.10).
Contents (Contenidos) y Search…
(Buscar.) 1 índex (Indice)
Estos controles de navegación a
través de la documentación en línea
estándar ofrecen el acceso esperado a la
documentación en línea extensiva de
Microsoft.
Use Extension Help
(Utilización de la ayuda
completa)
Esta opción permite conmutar a la
opción de la ayuda completa.
Documentation Home Page
(Página de inicio de la
documentación)
La orden Documentation Home Page
(Página de inicio de la documentación) presenta al
usuario la página de más alto nivel para el tema de
ayuda activo actualmente. Es similar a la selección de la
primera página de un capítulo que comienza con un
esquema de contenidos. Los temas de Documentation Home Page se
corresponden con enlaces a archivos de ayuda sobre temas
específicos.
Readme…
(Léeme…)
Esta opción permite mostrar el
archivo README.
Tip of the Day… (Sugerencias…)
y Technical Support (Soporte
técnico)
El texto de estas dos opciones describe
perfectamente su funcionalidad.
Microsoft on the Web (Microsoft en
el Web)
Esta opción está activa si
la computadora
tiene conexión al World Wide Web; permite visualizar
páginas
web mediante InfoViewer El acceso al web se puede realizar
desde las siguientes localizaciones del Developer
Studio:
- Una dirección URL en una ventana
fuente.
· Enlaces de hipertexto que aparecen dentro de
una ventana lnfoViewer Topic.
· A través de la opción
Microsoft on the Web (Microsoft en el Web) del menú
Help (Ayuda).
· A partir del cuadro Current URL (URL actual)
de la barra de herramientas lnfoVíewer
Se deberían seguir todos los
pasos necesarios para configurar la computadora de
forma que se pueda realizar la conexión al World Wide Web.
Por ejemplo, se debe tener instalado el hardware de comunicaciones
apropiado, conectado a un conector telefónico o a otra
línea de comunicaciones
y configurado de forma apropiada. El acceso al World Wide Web se
debe realizar a través de algún proveedor de
servicios de
Internet. Si se está trabajando con una red corporativa que dispone
de un cortafuegos (firewall)
de seguridad,
resulta imprescindible seguir los pasos necesarios para
establecer la
comunicación con otras computadoras
que se encuentren al otro lado del cortafuegos (firewall).
About Visual C++ (Acerca de
Visual C++)
Se trata de un cuadro About (Acerca de)
estándar que muestra la versión, el identificador
del producto y los
números de identificación de las componentes
instaladas.
Escritura, compilación y
depuración de programas
sencillos
La componente Visual C++ del Microsoft
Developers Studio, al igual que cualquier entorno de desarrollo
nuevo que utiliza tecnología actual,
puede parecer al principio un producto que intimida bastante.
Aunque la ventana inicial pueda parecer sencilla, en el momento
en que se empiecen a manejar los diferentes submenús, y
hurgar por ellos y sus ventanas de diálogo relacionadas,
se descubre la facilidad contundente de manejo que existe en el
entorno por las opciones y la aparente complejidad de este nuevo
mundo.
Se puede observar que el proceso de
desarrollar una aplicación multitarea, orientada a
objetos, GUI (Interfaz gráfica de usuario), multimedia, para
Internet no se trata de un proceso sencillo (es decir se tiene
que realizar todo partiendo de cero). No obstante, los entornos
de lenguajes de desarrollo de hoy en día generan, de forma
automática, el código para la mayoría de
estos objetivos.
Este libro se ha diseñado para ofrecer al usuario un
entendimiento completo de los Lenguajes C y C++ y poder trabajar
en el entorno de desarrollo número uno de hoy en
día (Microsoft Visual C++) mientras se aprende la lógica,
construcciones y herramientas necesarias para desarrollar
programas actuales.
Este capítulo se ha
diseñado para que el usuario aprenda a manejar aquellas
órdenes necesarias para crear, editar, guardar, compilar y
depurar programas sencillos. En este momento, si no se ha
aprendido todavía a manejarlos, puede resultar muy
interesante utilizar un rotulador para marcar texto. Dado que el
entorno integrado permite iniciar cada operación de muchas
formas, es conveniente destacar el texto donde aparezca el
método que
se prefiera. Por ejemplo, hay quien prefiere utilizar las
órdenes de teclado, mientras que otros prefieren la
interacción ratón/menú (apuntar y
pulsar).
Inicio del Develo per
Studio
En el Capítulo 2, se ha demostrado
que comenzar a trabajar con el FID (Entorno integrado de
desarrollo) de Visual C++ resulta sencillo. Si se está
utilizando un ratón, se puede pulsar dos veces sobre el
icono Visual C++, que aparece en el grupo de programas Microsoft
Visual C++.
Alternativamente, se puede acceder al
sistema de menús de Windows mediante los siguientes
pasos:
1. Se pulsa CTRL-ESC.
2. Se pulsa P para acceder al grupo
Programas.
3. Se pulsa, varias veces, la tecla de
FLECHA HACIA ABAJO hasta que aparezca resaltado el grupo
Microsoft Visual C++
4. A continuación, se pulsa la
tecla de FLECHA HACIA LA DERECHA.
5. Se pulsa la tecla de FLECHA HACIA
ABAJO hasta que aparezca resaltado el programa Microsoft Visual
C++.
6. Ahora, se pulsa la tecla
INTRO.
(Ahora, se presenta la primera
oportunidad para seleccionar las preferencias personales del
usuario.) Se utiliza el método que
se prefiera y, ahora se debe iniciar Microsoft Visual
C++.
Creación de un primer
programa
Lo primero que se debe realizar antes de
escribir un programa es abrir un archivo nuevo. En el menú
File (Archivo), se selecciona el elemento de menú New…
(Nuevo…). Esta opción abre el cuadro de diálogo
New que se muestra en la Figura 3.1.
Este cuadro de diálogo se utiliza
para seleccionar el tipo de archivo que se desea crear. Para este
ejemplo, selecciónese la opción Win32 Console
Application. Una vez que se la asigna al proyecto un nombre,
Visual Development Studio presenta al usuario las opciones
relativas a la aplicación (Application) que se muestran en
la Figura 3.2.
Para este ejemplo, se selecciona el
botón de opción Empty Project (Proyecto
vacío) y se pulse el botón Finish (Finalizar). Para
abrir una ventana de edición vacía, se pulsa sobre
el icono Página (primer icono comenzando por el extremo
izquierdo de la barra de herramientas Edit). Con el área
de edición vacía, ya se está preparado para
comenzar a escribir un programa. Introdúzcase el siguiente
programa de ejemplo:
/*NOTA: Este programa contiene
errores *1
1* introducidos a propósito
para aprender *1
1* a manejar ci Integrated
Debugger! *1
#include
<stdio.h>
/* La siguiente constante
simbólica se utiliza paca establecer la
dimensión del array */
#define TAM 5
/* Prototipo de la función
*/
void nostrar_elem(int despl, char
continue, int iarray[TAM]);
void main (void)
{
int despl; /* indicador del elemento
del array */
int iarray[TAM] /* array de enteros
*/
char continue = O; /* se utiliza para
controlar la respuesta del usuario */
/ * Esta primera llamada a la
función muestra el contenido actual de la variable
*/
mostrar_elem(despl, continue,
iarray);
/* Mensaje de bienvenida y solicitud de
respuesta por parte del usuario */
Printf (nnBienvenido a esta
demostración ¡");
printf (n¿Desea continue
(S/N)?")
scanf ("%c" ,
continue)
/* Entrada por parte del usuario de un
nuevo array de datos enteros */
if (continue ==
‘s’)
for <despl == O; despl < TAM;
despl++){
printf("n Por favor introduzca
un entero: ");
scanf ("%d",
&iarray[despl]);
}
*/ La segunda llamada a la
función muestra los datos introducidos por el usuario
*/
mostrar_elem(despl, continue,
iarray);
}
/*La función muestra por
pantalla les contenidos de todas las variables
*/
void mostrar_elem(int despl, char
continue, int iarray[TAM])
{
printf("nn%d",
despl);
printf ("nn%d",
continue);
for <despl= 0; despl < TAM,
despl++)
printf ( 'n%d",
iarray[despl])
}
El programa se debe introducir tal y
como aparece en el texto. Sí se está familiarizado
con el lenguaje C, se
observará que existen errores en el programa. No deben
corregirse. Los errores se colocaron de forma intencionada para
que el usuario aprenda a manejar varias utilidades del entorno
integrado.
Edición del código
fuente
Una de las razones principales que
garantizan el éxito de Microsoft Windows es la presencia
de la Interfaz gráfica de usuario (GUI). Windows 9X/95
introduce una GUI modificada, que resulta intuitiva para los
usuarios expertos en Windows. De esta manera, una GUI de usuario
consistente significa que cuando aparece una utilidad particular
en dos aplicaciones diferentes, por ejemplo en un programa de
tratamiento de texto de Windows y en el editor del EID de Visual
C++, esta utilidad normalmente tendrá las mismas
órdenes de menú y teclado y, además, en las
mismas posiciones, para ambas aplicaciones.
Esto supone que aunque nunca se haya
utilizado el editor del EID de Visual C++, el usuario debe saber
que el proceso de corregir errores o desplazarse al comienzo o
final de una línea, o al final de la ventana de
edición resulta tan sencillo o familiar como hacerlo en el
programa de tratamiento de textos que se suele utilizar en
Windows.
Aquí radican algunos de los
aspectos más útiles a la hora de trabajar con el
editor del EID de Visual C++. Para desplazarse rápidamente
a través de una línea, manteniendo pulsada la tecla
CTRL, se pulsa la tecla de FLECHA HACIA LA IQUIERDA o HACIA LA
DERECHA. Esto supone que el cursor de edición se desplaza
una a la derecha o a la izquierda palabra a palabra (una palabra
se define como cualquier texto delimitado por espacios en blanco
o caracteres de puntuación).
Para borrar una palabra completa en
lugar de hacerlo carácter a carácter, se coloca el
cursor en el espacio que aparece antes o después de la
palabra que se desea eliminar y se pulsa CTRL-SUPR (para borrar
la palabra situada a la derecha) o CTRL-RETROCESO (para borrar la
palabra situada a la izquierda).
Para permitir la edición de la
máxima cantidad de contenido del espacio de trabajo, se
pueden desactivar las barras de desplazamiento vertical y
horizontal (véase Tools Options). Si se selecciona esta
opción, no se puede utilizar el ratón para
desplazarse horizontal y verticalmente por la ventana. Por esta
razón, es necesario conocer las dos combinaciones de
teclado: CTRL-AvPAG}, que desplaza el cursor al comienzo del
programa y CTRL-FIN, que desplaza el cursor al final del
programa. ¿Está considerando todo con el
rotulador?
Quizás surja la duda acerca del
por qué no se ha hecho mención a los movimientos
horizontales de teclado equivalentes. La razón consiste en
que el código escrito por la mayoría de los
profesionales se ajusta a un monitor
estándar con 80 columnas de anchura. Esto facilita
la lectura y
depuración del código (puesto que cada línea
de código está completamente visible, no pueden
aparecen errores en la columna 95).
Almacenamiento de
archivos
Normalmente existe un conflicto
importante entre el usuario y el compilador El usuario puede
pensar que escribe un código impecable, mientras que el
compilador opina todo lo contrario. Si esta apreciación no
es lo suficientemente dura, surge la opinión del enlazador
sobre nuestro ingenio a la hora de realizar algoritmos. No
obstante, el revés final a nuestro ego llega por parte del
propio microprocesador
que, después de filtrar el archivo ejecutable a
través del compilador y enlazador, se ve saturado con
nuestras instrucciones digitales.
Aunque esta discrepancia entre el
usuario y el compilador o el enlazador no es catastrófica,
las diferencias con el microprocesador
silo son. Por tanto, la conclusión a esta situación
consiste en: guardar el archivo antes de compilar, antes de
enlazar y, definitivamente, antes de intentar ejecutar el
programa. A los programadores les han sucedido muchas historias
tristes cuando ejecutan un archivo sin guardarlo previamente, se
produce una caída de la aplicación o del propio
sistema y, a continuación, tienen que reescribir el
programa completo.
Si todavía no se ha realizado,
guárdese el programa ejemplo con el que se está
trabajando. Esto se puede realizar pulsando sobre el tercer
botón de la barra de herramientas comenzando por la
izquierda (la imagen de este botón tiene el aspecto de un
disquete flexible de 3.5"), utilizando la orden File Save o
pulsando la combinación de teclas
CTRL-5.
La primera vez que se guarda un archivo,
el EID mostrará el cuadro de diálogo Save.
Guárdese este archivo con el nombre
ERROR.C.
La Figura 3.3 muestra la ventana de
edición que aparece justo antes de guardar el archivo.
Después de guardar el archivo, el título que
aparece en la barra de títulos mostrará el nombre
del archivo guardado.
Creación del archivo
ejecutable
La mayoría de los programas de
Windows 3.x, Windows 98/95 y Windows NT contienen muchos
archivos. No obstante, para comenzar, los programas más
sencillos tienen un único archivo, el archivo mamo de
C/C++. Conforme se vaya adquiriendo una mayor experiencia en la
programación, se comprobará que esta
aproximación introductoria es
ineficiente.
A medida que se entienda mejor el
lenguaje C/C++
y el desarrollo de aplicaciones en Windows, se comenzará a
dividir las soluciones en
múltiples archivos C/ C++, lógicamente
relacionados. A estos se les añadirán nuestros
propios archivos de cabecera (los archivos de cabecera tienen
como extensión .h). Cuando el lector alcance el final de
este libro, será capaz de crear aplicaciones con archivos
de código fuente, archivos de cabecera, archivos de
recursos y demás.
Por tanto, aunque el programa de ejemplo
contiene un único archivo, las siguientes secciones
presentan los pasos necesarios para construir una
aplicación en C/C++ constituida por muchos archivos para
trabajar bajo entorno Windows.
Utilización de los
Workspaces
Antes de poder compilar
un programa típico en C/C++, el EID de Visual C++ necesita
tener información de los nombres de todos los archivos de
C/C++ y de los recursos necesarios para crear el archivo
ejecutable. Anteriormente, este proceso se realizaba normalmente
en un archivo make (los archivos make tienen la
extensión de archivo .MAK).
Los archivos make son archivos de texto
que siguen una sintaxis especial, detallando las dependencias
entre los archivos. Dicho de otra forma, la sintaxis de los
archivos make define los archivos que deben estar presentes y
compilados antes de que el archivo destino se pueda utilizar en
otra etapa del proceso de compilación o enlazado. Por
tanto, debido a lo sofisticado de este proceso, ya no se
considera como "compilación y enlazado". La nueva palabra
que se utiliza para describir este paso es "generación"
(building).
Tradicionalmente, los archivos make se
tenían que ejecutar desde la línea de
órdenes mediante un programa de utilidad independiente
denominado NMAKE.
Microsoft ha perfeccionado este proceso
completo en el compilador de Visual C++, incluyendo una nueva
utilidad denominada utilidad Proyecto.
Mientras que un programador tenía
que crear el archivo de texto .MAK independiente y ejecutar la
utilidad NMAKE, ahora la utilidad Proyecto permite conseguir el
mismo resultado sin tener que abandonar el EID de Visual C++. La
utilidad Proyecto crea, edita y utiliza los archivos make con
extensión .MAK. Esto es incluso mejor que crear el archivo
del proyecto que es un proceso sencillo.
Creación de un nuevo
proyecto
Para crear un nuevo proyecto, se
selecciona el elemento de menú File | New… Esta orden
activa el cuadro de diálogo New File. En este momento, se
selecciona la ficha Projects (véase la Figura 3.4).
Después de seleccionar este elemento, aparecerá el
cuadro de diálogo New Projects, que se considera el primer
paso en la creación de un archivo de
proyecto.
La primera información que
requiere la utilidad Proyecto es el nombre del archivo de
proyecto. El nombre del archivo de proyecto es importante, puesto
que se trata de la etiqueta que se utilizará para
identificar el archivo ejecutable final.
La mayoría de los programadores
que trabajan por primera vez con C/C++ se sorprenden al comprobar
que el nombre del archivo ejecutable del programa no coincide con
el nombre del archivo fuente que contiene la función main(
) o WinMain( ). Recuérdese que todos 105 archivos de
proyecto deben tener extensión .MAK y, sin embargo, sus
nombres reales pueden diferir de los nombres asociados a los
archivos del código fuente. En el programa de ejemplo,
utilícese el nombre de archivo de proyecto
ERROR.
La segunda información que se
requiere es el tipo de proyecto. Las opciones incluyen
bibliotecas de enlace dinámico (DLL) y varios formatos
ejecutables. En este ejemplo, se debería seleccionar la
opción Win32 Console Application (Aplicación de
consola para Win32).
Si se introduce una entrada en la
categoría Location:, esta opción indica al EID de
Visual C++ que cree automáticamente un subdirectorio nuevo
para el nuevo proyecto.
La cuarta opción hace referencia
a la plataforma destino del proyecto. Para la versión de
32 bits del compilador de Visual C++, está activa la
opción Win32. La Figura 3.4, mostrada anteriormente,
presenta la información necesaria para un archivo de
proyecto de ejemplo completo. Para aceptar esta
información, se debe pulsar sobre el botón
OK.
Incorporación de archivos a
un proyecto
Una vez que se define el archivo del
nuevo proyecto, la utilidad Proyecto permite añadir
archivos fácilmente. La Figura 3.5 muestra el elemento de
menú Add Files to Project… seleccionado. El acceso a
este menú emergente es tan sencillo como pulsar con el
botón derecho del ratón dentro de
FileView.
La selección de esta
opción abre una ventana estándar File Manager
(Administración de archivos) que permite al
usuario localizar e incluir fácilmente todos los archivos
necesarios para crear el programa ejecutable. Una nota importante
acerca de los tipos de archivos incluidos, es que los archivos de
cabecera (aquéllos con extensión .H) no aparecen en
la lista de archivos del proyecto. Los archivos de cabecera se
incorporan directamente al proceso de generación mediante
instrucciones #include del preprocesador.
El cuadro de diálogo Insert Files
into Project (insertar archivos en el proyecto) (véase la
Figura 3.6) es muy parecido al cuadro de diálogo
estándar File (Archivo) de Windows. Permite seleccionar
una unidad y el camino de acceso por omisión y,
automáticamente, lista todos los nombres de archivo del
camino de acceso seleccionado. Para el programa de ejemplo,
simplemente se pulsa dos veces sobre el nombre de archivo ERROR
en la lista File name (Nombre de archivo:). Esto agregará
automáticamente el nombre del archivo en el archivo del
proyecto.
Si este proyecto fuera un archivo de
proyecto formado por muchos archivos, como podría ser un
proyecto para el desarrollo de aplicaciones Windows, en este
momento se debería continuar con la selección de
los archivos necesarios el proyecto. Para el programa de ejemplo,
sin embargo, sólo se realizará un archivo. En este
punto, se está preparado para finalizar correctamente la
definición del archivo de proyecto pulsando el
botón OK.
Selección de Build (Generar)
o Rebuild Ah (Volver a generar todo)
Una vez que se ha creado el archivo del
proyecto, se está preparado para indicar al EID que genere
el archivo ejecutable. Recuérdese, que este proceso en
Visual C++ se conoce como generación
(build).
La Figura 3.7 muestra el menú
Build (Generación) con la orden Rebuíld Ah (Volver
a generar todo) seleccionada.
En el Capitulo 2, se vio que la
única diferencia existente entre las órdenes Build
y Rebuild All, es que Rebuild All no comprueba las fechas de los
archivos utilizados en el proyecto. Esta orden siempre recompila
y enlaza todos los archivos del proyecto.
Debido a que un mantenimiento
incorrecto del sistema puede generar errores en las
configuraciones internas del reloj, lo más seguro es
seleccionar siempre la opción Rebuild All para las
aplicaciones pequeñas. Ahora, se activa el proceso de
generación pulsando sobre la orden Rebuild All o pulsando
INTRO cuando aparece esta orden resaltada.
Depuración de
programas
Si el programa contiene errores
sintácticos, la ejecución de la orden Build o
Rebuild All abre automáticamente la ventana de mensajes de
salida del compilador, como se puede observar en la parte
inferior de la pantalla que aparece en la Figura
3.8.
Cada mensaje comienza con el nombre del
archivo fuente, que para este ejemplo es
C:ArchívosdeprogramaDevStudioMíProyectoErrorErron.c.
Este nombre de archivo es importante, puesto que las aplicaciones
típicas de Windows contienen muchos archivos
fuente.
-NOTA Probablemente tendrá que
establecer la resolución de la pantalla del monitor a una
configuración que permita visualizar los mensajes de error
o advertencia descritos en el texto
siguiente.
Inmediatamente después, a la
derecha del nombre del archivo fuente, aparece el número
de línea, entre paréntesis, en donde se ha
detectado la advertencia o error. En nuestro ejemplo, el primer
mensaje de error se ha generado en la línea trece (13). A
la derecha del número de línea aparecen dos puntos,
seguidos inmediatamente por la palabra 'error" o la palabra
warning, que precede al número de error
asociado.
Si sólo aparecen mensajes de
advertencia se puede ejecutar el programa, pero no se
podrá si aparece algún mensaje de error. La
última información que aparece en cada línea
de mensaje es una breve descripción del error
sintáctico detectado.
Diferencias entre los mensajes de
error y los de advertencia
Los mensajes de advertencia pueden
indicar la utilización de una regla automática
estándar de C/C++. Por ejemplo, se podría hacer
referencia a una regla automática cuando se tiene un valor
float truncado automáticamente para asignarlo a una
variable entera. Esto no significa que el código
esté escrito incorrectamente, sino que la
instrucción está utilizando alguna
característica de C/C++ que puede generar efectos
laterales.
Por ejemplo, todas las funciones con
prototipo en MATH.H tienen argumentos formales de tipo
double y devuelven el tipo double. Si el programa
pasa a alguna de estas funciones un argumento de tipo
float, el compilador generará una advertencia. Esta
advertencia informará que va a tener lugar una
conversión del tipo float al tipo double,
cuando el argumento se introduzca en la llamada a la
pila.
Se pueden eliminar la mayoría de
los mensajes de advertencia anulando automáticamente las
opciones por omisión del lenguaje. Esto se puede realizar
colocando en primer plano aquellos operadores o funciones
diseñados para ejecutar las operaciones que
pueden generar efectos laterales. El ejemplo de mensaje de
advertencia descrito en el párrafo anterior se
podría eliminar, realizando una conversión
explícita del argumento para pasarlo del tipo float
a tipo double.
El primer error
inesperado
El primer mensaje de error, mostrado
anteriormente en la Figura 3.8, muestra lo que puede ocurrir
cuando se utiliza un lenguaje por primera vez. Aquí, el
programador intenta utilizar una variable con el nombre de una
palabra reservada, o del lenguaje. Si se está utilizando
un lenguaje de
programación con el que se esta familiarizado,
probablemente no se tendrá este
problema.
En C/C++, la palabra continne es una
palabra reservada, o del lenguaje. En el programa de ejemplo, se
eligió el nombre de la variable por razones de
legibilidad; sin embargo, este nombre tropieza con una
restricción del lenguaje.
Visualización de las
ventanas Output (Salida) y Source
(Fuente)
Una vez visualizada la lista de mensajes
de errores y advertencias, se conmuta a la ventana de
edición para realizar las modificaciones necesarias en el
código. Se puede seleccionar la ventana de edición
pulsando con el ratón dentro de la propia ventana o bien
activando el menú Wíndow y pulsando sobre el nombre
del archivo ERROR.C. Cualquiera de las dos opciones que se
prefiera (¿está ya seco el rotulador?) activa la
ventana de edición.
Utilización de Fínd
(Buscar) y Replace (Reemplazar)
En muchas ocasiones nos encontramos con
la situación de intentar localizar rápidamente algo
en el programa. Esto se podría realizar activando el
cuadro de diálogo Edit Replace…, pero el EID de Visual
C++ proporciona una manera más rápida. Sí se
observa con detenimiento la barra de herramientas de la Figura
3.9, se verá la palabra continue en el cuadro de
lista Quick Find (Búsqueda
rápida).
Para utilizar Quick Fínd,
simplemente se pulsa con el botón izquierdo del
ratón en cualquier lugar en el interior del control y se
escribe la etiqueta que desea localizan Ahora, Quíck Find
se puede activar pulsando INTRO. La Figura 3.9 muestra los
resultados de esta acción. Se resalta la primera
ocurrencia de la variable continue.
Este enfoque es adecuado para localizar
las primeras ocurrencias, pero en este caso resulta ineficiente
puesto que se necesitan buscar todas las ocurrencias de la
variable contintie. Por esta razón, es más
conveniente utilizar el cuadro de diálogo que aparece al
seleccionar la opción Edit Replace…, mostrado en la
Figura 3.10.
La forma más sencilla de utilizar
Replace. . es colocar primero el cursor sobre la palabra que se
desea buscar antes de seleccionar la opción Edit
Replace…. Sí se siguen estos pasos, cuando se ejecute
esta orden, aparecerá automáticamente en la lista
Find what: la palabra que se desea buscar.
En la Figura 3.10, se observa este
hecho, colocando primero el cursor sobre la variable
continue, que aparece resaltada en la figura anterior.
Practíquese esta secuencia y obsérvese si la
pantalla tiene un aspecto similar al de la Figura
3.10.
Para el programa de ejemplo, queremos
que la variable que se denomina continue permanezca por
razones de legibilidad, pero resulta necesario asignarle un
nombre distinto al de la palabra reservada. En este momento, se
necesita introducir manualmente la palabra continu en la
lista Replace with: del cuadro de diálogo
Replace.
Téngase en cuenta que este cuadro
de diálogo contiene la mayoría de las opciones de
búsqueda y reemplazamíento de los programas de
tratamiento de textos estándar, como pueden ser la
posibilidad de encontrar sólo palabras completas y
especificar que se haga distinción entre mayúsculas
y minúsculas. Sí es la primera vez que se trabaja
con el lenguaje C/C++,
puede resultar sorprendente que C/C++ distinga entre
mayúsculas y minúsculas. Por esta razón, dos
variables denominadas TOTAL y total son tratadas de
forma diferente.
Un consejo: antes de llevar a cabo una
operación de búsqueda y reemplazamiento,
guárdese el archivo. Esto permitirá recuperar
fácilmente una búsqueda de un patrón que se
haya realizado incorrectamente. Otra posibilidad es utilizar la
orden Edit Undo. No obstante, si el buffer asociado a Undo no es
lo suficientemente grande para guardar todas las modificaciones
realizadas por la operación de búsqueda y
reemplazamíento, podría ser incapaz de restaurar el
programa completo.
Ahora que se ha introducido la
información apropiada en el cuadro de diálogo
Replace, se está preparado para llevar a cabo la
operación de reemplazamiento. Sin embargo, existe un
problema. El programa contiene la instrucción de salida
"n¿Desea contínue (S/N)?". Si se hubiera
seleccionado la opción Replace All del cuadro de
diálogo Replace, la instrucción de salida
tendría un error de ortografía, puesto que una operación
Replace ALL podría modificar la palabra "continue" en la
salida por pantalla del programa. Por esta razón, ahora se
debe pulsar sobre el botón Fínd
Next.
Utilización de las opciones
de Replace
El cuadro de diálogo Replace
presenta las diferentes opciones de búsqueda. Find Next
localiza la siguiente ocurrencia de la cadena buscada. Replace
inserta la cadena que sustituye. La opción Replace All
recorre el código sin interrupción, buscando y
reemplazando el texto deseado.
En este ejemplo, se necesita seleccionar
la opción Replace de forma repetida, seguida por Find
Next, hasta que se haya reemplazado cada ocurrencia de la
variable continue por la nueva palabra, continu.
Recuérdese que no se debe modificar la palabra "continue"
de la instrucción printf( ).
Abreviaturas para
conmutación entre vistas
Anteriormente se ha visto que para
cambiar entre la ventana de mensajes de salida y la ventana de
edición se requería la realización de alguna
acción con el teclado o con el ratón. Existe una
forma más sencilla de interactuar entre estas dos
ventanas. Ahora, si se está siguiendo el ciclo de
desarrollo del ejemplo, no es necesario detener el proceso y
volver a generar todo el programa. Si se han realizado todas las
sustituciones necesarias de la palabra continu descritas
anteriormente, la ventana de mensajes de salida tendrá un
aspecto similar al de la Figura 3.11.
La mejor forma de interactuar con estas
dos ventanas es muy sencilla. Primero, se debe colocar el cursor
sobre el mensaje de error o de advertencia que interese. En
nuestro ejemplo, se pulsa sobre el primer mensaje de la nueva
ventana de mensajes de salida:
warning c4013: 'Prinft'
umdetined;…
Ahora se debe pulsar INTRO.
¡Atención! El entorno integrado conmuta
automáticamente a la ventana de edición y resalta,
de forma automática, el segmento de código
sospechoso (con una flecha), como se muestra en la Figura
3.12.
Utilidad de los mensajes de error
y de advertencia
Cuando se aprende un lenguaje nuevo,
realmente se encuentran dos curvas de aprendizaje
principales. Primero, existe el momento en el que se aprende la
sintaxis y los matices del nuevo lenguaje. Sin embargo, en
segundo lugar, aparece la curva de aprendizaje
más sutil que incluye la comprensión de esta nueva
ayuda del entorno como son los mensajes de error y de
advertencia. En otras palabras, el lector tiene que aprender la
forma en que este nuevo compilador procesa el código
fuente.
La buena noticia es que el compilador de
Visual C++ genera algunos de los mensajes más exactos que
producen los entornos asociados a cualquier lenguaje. En el
ejemplo el compilador detecta hábilmente los problemas
debidos a una mala utilización de una palabra reservada
del lenguaje en concreto
continue.
Como ya se sabe, C/C++ distingue entre
mayúsculas y minúsculas. Una vez mas, el compilador
detectó correctamente un error. La función printf(
), que proporciona el compilador está definida con todas
las letras minúsculas. Dado que esta función se ha
escrito, de túrma accidental, con una "P"
mayúscula, el compilador no ha sido capaz de localizar una
función de la biblioteca que coincida con Printf( ) Con
esta palabra resaltada en la ventana de edición, se debe
realizar el cambio de
edición reemplazando la 'P" mayúscula por una p"
minúscula equivalente. No se debe olvidar guardar el
archivo.
Más trabajo con el
Depurador
En este momento, el programa está
preparado para llevar a cabo un nuevo intento de
generación de un archivo ejecutable. Debemos volver al
menú Project y seleccionar el elemento de menú
Rebuild ALL. La Figura 3.13 muestra los mensajes de salida
actualizados.
¿Se recuerda la forma sencilla de
conmutar a la ventana de edición y localizar
automáticamente la secuencia ilegal identificada en el
mensaje de error? (todo lo que se necesita hacer es colocar el
cursor sobre el mensaje de error y pulsar
INTRO).
Cuando se realiza la corrección,
la misma línea en la que aparecía la función
printf( ) incorrecta presenta un segundo error. En C/C++, todas
las cadenas de formato deben comenzar con comillas dobles. Se
debe editar la línea colocando una comilla doble (it)
después de abrir el paréntesis de la función
printf( ), es decir después de printf(.
Asegúrese de que la primera
instrucción printf( ) coincide en su formato con la que
aparece en la Figura 3.14. Ahora, se guarda el archivo y se
intenta realizar otra operación de volver a generar todo.
La Figura 3.14 muestra la tercera ventana de mensajes de salida
actualizada.
Nuestro último mensaje de error
fue:
syntax error : missing ‘;’
before ‘)‘
Coloque el cursor sobre el mensaje y
pulse INTRO. En el lenguaje C/C++ a diferencia del Pascal, un punto
y coma se considera como un terminador de instrucción, no
un separador de instrucciones. Por esta razón, la
instrucción de la expresión del bucle for
necesita un punto y coma como terminador, y no una coma. Se debe
modificar la coma que aparece después de la constante TAM
por un punto y coma, guardar el archivo y ejecutar de nuevo la
orden Rebuild All.
¿Se ha tenido éxito?
Teniendo en cuenta la ventana de mensajes de salida, no
deberían aparecer ni errores ni advertencias, y la orden
Rebuild all ha generado con éxito el archivo ejecutable
ERROR.EXE.
NOTA- En este instante si la ventana
de mensajes de error y advertencia delcompilador no muestra O
errores y 1 advertencia (O error(s) and 1 warning(s) – puede
ignorar este mensaje de advertencia-), se tiene que se han
incorporado, de forma inadvertida, algunos errores propios
nuestros. Volvemos a realizar los pasos anteriores y editamos
las instrucciones de código
necesarias.
Ejecutar el primer
programa
Para ejecutar un programa una vez
completado con éxito la operación Build o Rebuild
all, simplemente se pulsa sobre la orden Execute (Ejecutar) del
menú Project. Si se realiza este proceso con el programa
ejemplo, y se introduce S cuando indica si desea continuar, la
pantalla debería mostrar lo siguiente:
-85993460
o
-858993460
-858993460
-858993460
-858993460
-858993460
¡Bienvenido a esta
demostración ¡
¿ Deseas continue (2/N) ?
S
La Figura 3.1 5 muestra lo que ocurre
después de introducir S y pulsar INTRO.
Utilización del Integrated
Debugger (Depurador integrado)
La salida del programa ejemplo comienza
mostrando el contenido del array sin inicializar. A
continuación, pregunta si se desea continuar. Una
respuesta "S" (sí) indica lógicamente que ahora se
desea completar el array con nuestros propios valores y, por
último, vuelve a mostrar en pantalla los contenidos del
array.
En la ejecución de este ejemplo,
se respondió con una "S". Sin embargo, si se comprueba la
salida generada por el programa, se puede observar
fácilmente que no se ha solicitado ninguna entrada por
parte del usuario. Además, los contenidos del array no se
han modificado, como se evidenció anteriormente por la
salida duplicada.
En otras palabras, aunque se tenga un
programa que aparentemente está correcto desde el punto de
vista sintáctico (no existen errores), no significa que la
aplicación se ejecute de la forma esperada. Estos tipos de
errores se denominan errores lógicos.
Afortunadamente, el depurador integrado del EID de Visual C++
tiene diferentes utilidades listas para solucionar estos problemas.
Aunque el depurador integrado tiene
muchas utilidades, normalmente se utilizan sólo un
pequeño subconjunto de órdenes. Básicamente,
un depurador proporciona dos poderosas posibilidades. Primero,
permite ejecutar un programa línea a línea, en
lugar de hacerlo de una forma totalmente rápida. Segundo,
permite examinar los contenidos de cualquier variable en
cualquier punto del programa.
Con la utilización correcta de
posibilidades se permite localizar rápidamente una
línea de código errónea. Desafortunadamente,
el depurador no corrige automáticamente el código.
(Por el momento, no está todavía amenazada la
seguridad del
trabajo como programador.)
Las diferencias sutiles entre
Step Into y Step Over
La Figura 3.16 muestra el menú
Start Debug (Iniciar depuración). Cuando se inicia el
depurador, normalmente pulsando F11, aparece la barra de
herramientas Debug (Depuración). Dos de los botones que
más se utilizan, representan las opciones Step Into
(quinto botón empezando por la izquierda en la barra de
herramientas Debug) y Step Over (sexto botón). Ambas
órdenes ejecutan el programa línea a
línea.
El aspecto de la ventana de
edición es diferente en función de la orden que se
esté utilizando. Cuando se depura un programa utilizando
Step Into o Step Over, el depurador integrado resalta la
línea de código que se está ejecutando en
ese instante.
La única diferencia entre
Step Into y Step Over se produce si la instrucción que se
va a ejecutar es una llamada a una función. Si se
selecciona Step Into en una llamada a una función, el
depurador se sitúa en la cabecera de la función y
continua depurando el código que aparece dentro de la
función. Si se selecciona Step Over en una llamada a una
función, el depurador ejecuta la función asociada
en sólo paso y, a continuación, sigue con la
depuración en la siguiente instrucción que aparece
tras la llamada a la función. Se debería utilizar
esta orden siempre que se está depurando un programa que
incorpore subrutinas probadas anteriormente.
Utilizando cualquiera de las
órdenes Step, ejecútese la orden tres veces. La
Figura 3.17 muestra como aparece el programa ejemplo
después de haber realizado tres veces una operación
Step Into o Step Over.
Como se puede ver en la Figura 3.17, la
flecha de paso a paso (también denominada flecha de
seguimiento) se posiciona en la instrucción que
contiene la primera llamada a la función
mostrar_elem().
Por ahora, nosotros vamos ejecutar la
función en un sólo paso. Para hacer esto, se
selecciona la orden Step Over. Si se observa con
detenimiento, podrá darse cuenta el lector que se ejecuta
la función y la flecha de seguimiento se detiene en la
primera instrucción printf( ). Se detiene en la
posición idónea. Ahora, se pulsa F1O tres veces,
hasta que la flecha de seguimiento se detenga en la
instrucción scanf( ).
En este instante, se necesita conmutar a
la ventana de ejecución del programa. Esto se puede
realizar pulsando la combinación de teclas ALT-TAB. (Puede
que sea necesario utilizar esta combinación de teclas
varias veces, en función del número de tareas que
se tengan cargadas.) Cuando se está en la ventana de
ERROR, como muestra la Figura 3.18, se responde a la pregunta
¿Desea continue (S/N)? con un S y se pulsa
INTRO.
El depurador integrado responde, de
forma inmediata con el mensaje de error que se muestra en la
Figura 3.19.
Este mensaje está relacionado con
la instrucción scanf() que se acaba de ejecutan
Obsérvese con detenimiento, si se está
familiarizado lo suficiente con el lenguaje C, para detectar el
tipo de problema que aparece.
Este problema está relacionado
con la utilización incorrecta de la función
scanf(). La función scanf() espera recibir la dirección de una posición de memoria
a rellenan Examínese la siguiente
instrucción:
scanf ("%c",&
cotinu);
Como se puede observar, esta
instrucción no utiliza una dirección. La
solución pasa por colocar el operador de dirección
(&) delante de la variable continu. Corrijase la
instrucción de forma que tenga la siguiente
forma:
scanf ("%c",
&continu);
Guárdense los cambios, y
ejecútese una operación Rebuild
All.
Técnicas avanzadas de
depuración
Se puede pensar en un punto de ruptura
como una señal de parada para el depurador integrado.
Lógicamente, los puntos de ruptura le indican al depurador
que todas las instrucciones anteriores al punto de ruptura
están correctas por tanto, el depurador no debería
gastar tiempo en ejecutar paso a paso estas
instrucciones.
La forma más sencilla de
especificar un punto de ruptura es pulsar con el ratón
sobre el control de puntos de ruptura, que se podrá
realizar siempre y cuando la barra de herramientas esté
visible. Este botón aparece el primero por la derecha en
la barra de herramientas. La imagen que contiene el botón
parece una mano indicando "parar".
El botón Breakpoint se comporta
como un conmutadon Si la línea donde está el cursor
no contiene un punto de ruptura, la orden activa uno. Si la
línea actual tiene especificado un punto de ruptura, la
orden lo elimina. Se pueden establecer tantos puntos de ruptura
como se necesiten repitiendo esta secuencia. La orden Go, cuando
se selecciona, siempre ejecutará el programa desde la
línea actual hasta el siguiente punto de
ruptura.
Para el programa ejemplo, debemos saber
que todas los instrucciones anteriores a la llamada a la
función scanf( ) están correctas. Acabamos de
editar esta línea y, ahora, estamos interesados en
comprobar si la nueva instrucción funciona adecuadamente.
Por cuestiones de eficiencia en el
proceso depuración, vamos a establecer un punto de ruptura
en la línea 31, en la función
scanf().
La Figura 3.20 muestra otra forma de
establecer los puntos de ruptura: utilizando la orden Edit |
Breakpoints…
Este menú activa el cuadro de
diálogo Breakpoints (Puntos de ruptura). El tipo de punto
de ruptura por omisión es Break at Location (Ruptura en la
posición). Todo lo que se necesita hacer es escribir el
número de línea en el cuadro Location:. Para
nuestro ejemplo, esta es la línea 31. (Si la
instrucción scanf() aparece en un número de
línea diferente, posiblemente debido a la existencia de
líneas en blanco en el código fuente, se debe
introducir el número de línea apropiado del archivo
para la instrucción scanf().) Ahora, se debe seleccionar
el botón OK.
Utillzación de los puntos
de ruptura
Para depurar un programa de una sola
vez, sin incluir los puntos de ruptura, se puede utilizar el
elemento de menú Debug Go, como muestra la Figura
3.21.
Suponiendo que se ha especificado el
punto de ruptura anteriormente descrito, actívese la orden
la orden Go. (Puede seleccionar esta orden con el ratón,
con el teclado para acceder mediante menús o pulsando F5.)
Téngase en cuenta que la flecha de seguimiento se
sitúa rápidamente en la instrucción que
contiene la llamada a la función scanf( ) y, a
continuación se detiene.
Una vez que el depurador se detiene en
un punto de ruptura, se puede comenzar a depurar el programa paso
a paso o incluso examinar los contenidos de las variables. Por
ahora, estamos interesados en comprobar silos cambios de sintaxis
realizados en la instrucción scanf( ) funcionan.
Seleccione la opción Step Over cámbiese a la
ventana de ejecución del programa, escriba una S
mayúscula y pulse INTRO. (Se utiliza la opción Step
Over para que el depurador no intente realizar la
ejecución paso a paso de la función scanf( ).) El
hecho de realizar la ejecución paso a paso
solicitará la ubicación del archivo SCANF.C. Si se
Cancela esto, se genera una descordinación y la ventana no
estará preparada para aceptar una entrada,
etc.).
¡Correcto! El depurador integrado
ya no muestra la ventana de mensajes de advertencias. Sin
embargo, ¿esto significa realmente que el problema del
código está resuelto? La forma más sencilla
de responder a esta cuestión es comprobar los contenidos
actuales de la variable continue.
lntroducción a Quickwatch
(Visualización rápida de
contenidos)
La orden Quickwatch… activa el cuadro
diálogo Quickwatch, que permite visualizar y modificar de
forma instantánea, los contenidos de una variable. La
forma más rápida de colocar una variable en la
ventana QuickWatch es situar el cursor sobre la variable en el
código fuente y pulsar MAYÚSC-F9. Si se realiza
esto con el programa ejemplo, se activará un cuadro de
diálogo QuickWatch similar al de la Figura
3.22.
Ahora que sabe que los contenidos de
continu son correctos, se puede ejecutar el programa de
una sola vez hasta el final, utilizando la orden Debug 1 Go, como
se muestra en la Figura 3.23.
Prestaciones avanzadas de Visual
c++
El compilador Visual C++ de Microsoft
incluye una serie de herramientas avanzadas que son de gran
utilidad para el desarrollo del programa. Este capitulo examina
la creación de mapas de bits, cursores e iconos desde
dentro del Entorno de desarrollo integrado (IDE) de Visual C++ y
revisa algunas utilidades de diagnóstico, como Books Online
(Documentación en línea), Spy++, Process Viewer
(Visor de procesos) y WinDiff.
Conforme se comiencen a desarrollar
programas en C, C++ y Windows, se observará que el
compilador Visual C++ ayudará a localizar errores de
sintaxis durante la operación de desarrollo
(compilación y enlace). Los errores de sintaxis suelen ser
errores sencillos de detectar debido a la ayuda que proporcionan
las prestaciones de ayuda en línea. Sin embargo, el que
una aplicación esté exenta de errores de sintaxis
no significa que funcione como se espera.
Es posible que se desee imprimir la hora
en la pantalla, pero no resaltaría; o quizás se
desee ver un archivo en un formato particular, teniéndolo
en otro formato. Es posible que se suponga que el fondo de la
pantalla es azul, con una figura dibujada en blanco, pero lo que
realmente se tenga sea la pantalla en blanco con la figura en
blanco (difícil de ver). Incluso puede ser una
cuestión de rendimiento: el programa se ejecuta
correctamente cuando sólo se encuentra cargada una
aplicación, pero si hay más de un programa
ejecutándose, el programa fracasa. Todas estas situaciones
se encuentran fuera del ámbito de los errores simples de
sintaxis. Las herramientas de desarrollo avanzadas son necesarias
para corregir estos problemas.
Este capitulo presenta las herramientas
diseñadas para ayudar a localizar estos tipos de
problemas. Se conocerá el objetivo de
cada una de las herramientas y cómo utilizarlas. Conforme
se avance posteriormente con los ejemplos de programación,
se encontrará una mayor utilidad en estas
herramientas.
Iconos, cursores y mapas de bits
personalizados
La personalización de una
aplicación Windows con iconos, cursores, mapas de bits y
cuadros de diálogo propios es sencilla de realizar con el
IDE de Visual C++ de Microsoft. El IDE de Visual C++ no es
sólo un compilador También es un potente editor de
recursos, sencillo de utilizar.
Diseño de mapas de
bits
Esta sección presenta la forma de
utilizar el IDE de Visual C++ para dibujar un mapa de bits. Las
demás figuras gráficas, como iconos y cursores se
crean de forma similar
El IDE de Visual C++ permite
diseñar imágenes
de mapas de bits en color,
independientes del dispositivo que se utilice. Estos mapas de
bits son funcionalmente independientes del dispositivo desde el
punto de vista de la resolución. El formato del archivo de
imagen permite crear un mapa de bits que siempre parezca el
mismo, independientemente de la resolución del dispositivo
de visualización en el que aparezca.
Por ejemplo, un mapa de bits
podría constar de cuatro definiciones (DIB): una
diseñada para dispositivos de visualización
monocromo, otra para CGA, otra para EGA y otra para VGA. Si la
aplicación muestra el mapa de bits, simplemente se hace
referencia por su nombre; Windows selecciona, de forma
automática, la imagen del icono que sea más
adecuada para el dispositivo actual.
La Figura 4.1 muestra la ventana inicial
del IDE de Visual C++. El primer paso que se debe seguir para
crear un recurso de la aplicación, como un mapa de bits,
es seleccionar la opción Resource del menú
Insert.
El cuadro de diálogo que aparece,
mostrado en la Figura 4.2, muestra la lista desplegable con los
tipos de recursos disponibles. Lo que se pretende es crear un
mapa de bits, por tanto se debe seleccionar el recurso Bitmap
(Mapa de bits) y, a continuación, pulsar INTRO para
confirmar su selección.
La creación de un mapa de bits
con el editor de recursos de Visual C++ es tan sencillo como
crear un dibujo con el
Paintbrush de Windows. En primer lugar, el editor de recursos de
C++ presenta una rejilla del mapa de bits vacía y la barra
de herramientas Drawing Tools (Herramientas de dibujo).
Con la barra de herramientas se puede
seleccionar el tamaño del pincel, el color y los
diferentes modos de dibujo, como
rellenos y formas predefinidas. La Figura 4.3 muestra un mapa de
bits completo.
Para establecer las propiedades de los
recursos, se pulsa ALT-INTRO. Este paso muestra el cuadro de
diálogo con las propiedades de un recurso concreto. La
figura 4.4 muestra el cuadro de dialogo de
propiedades del mapa de bits, con detalles sobre la anchura,
altura, color, nombre del del archivo y almacenamiento
comprimido.
Diseño de cuadros de
diálogo
Los pasos iniciales necesarios para
crear un cuadro de diálogo son idénticos a los
descritos anteriormente para crear un mapa de bits. En primer
lugar, se selecciona el tipo de recurso que se desea crear;
consúltese la Figura 4.2, mostrada anteriormente. Sin
embargo, esta vez se selecciona la opción Dialog
(Diálogo).
La Figura 4.5 muestra un cuadro de
diálogo completo, la caja de herramientas Objects del
cuadro de diálogo (en la parte derecha de la pantalla) y
el cuadro de diálogo Text Properties (Propiedades del
texto).
La caja de herramientas Objects permite
colocar una gran cantidad de controles en el diseño
del cuadro de diálogo. Éstos incluyen [empezando en
la parte superior y siguiendo de izquierda a derecha, sin incluir
el control de selección arrow ("cursor')]; Bitmap
(Mapa de bits), Label (Etiqueta), Edit box (Cuadro de
edición), Group Box (Cuadro de grupo), Button
(Botón), Checkbox (Cuadro de verificación),
Radio button
(Botón de opción), Combo box (Botón de
órdenes), List box (Cuadro de lista), Horizontal scroll
bar (Barra de desplazamiento horizontal), Vertical scroll bar
(Barra de desplazamiento vertical), Spim (Incremento), Progress
(Avance), Slider (Deslizador), Hotkey (Tecla abreviada), List
Control (Control de lista), Tree Control (Control de
árbol), Tab Control (Control de ficha), Animate
(Animación), Rich Edit (Edición enriquecida), Date
Time (Fecha hora), Month Calendar (Calendario), IP Address
(Dirección IP), Custom
(Personalizado) y Extended Combo box (Cuadro de
combinación extendido).
La Figura 4.5, mostrada anteriormente,
muestra el objeto etiqueta del nombre de la
compañía seleccionada. El cuadro de diálogo
Properties (Propiedades) aparece en primer plano pulsando dos
veces con el ratón en el objeto etiqueta. Esta es una
buena alternativa para volver a la ventana principal de recursos.
Cada control tiene su propio conjunto de
propiedades.
Editor de los puntos de
selección del cursor
Un cursor difiere de un mapa de bits o
de un icono fundamentalmente en la capacidad para contener un
punto de selección. Un punto de selección del
cursor representa la parte de la imagen que registra las
coordenadas de pantalla del cursor.
La creación de un cursor implica
los mismos pasos iniciales utilizados para crear mapas de bits y
cuadros de diálogo. Este proceso se inicia seleccionando
la opción Resource del menú Insert y escogiendo el
recurso cursor. La Figura 4.6 muestra un diseño
completo de un cursor semejante al cursor UP.
El punto de selección de un
cursor se establece pulsando con el ratón en el
botón punto de selección situado a la derecha de la
etiqueta Hotspot: de la barra de herramientas Design. Una vez que
se haya pulsado con el ratón en el botón,
simplemente se debe mover el puntero del ratón sobre el
diseño
del mapa de bits del cursor y pulsar en la celda
apropiada.
Documentación en
línea
La Documentación en línea
(que se encuentra en el menú Help (Ayuda) del IDE de
Visual C++ o en el grupo Visual C++) tiene una interfaz
gráfica sencilla de utilizar que permite acceder a cientos
de páginas de la revista
Microsoft y a artículos de libros. La
Figura 4.7 muestra la ventana inicial de la Documentación
en línea (la ventana podría aparecer con un formato
diferente, dependiendo de la última actualización
suministrada con el compilador).
Obsérvese que cada entrada tiene
un icono con un libro cerrado seguido por el título del
libro. Seria conveniente dedicar un momento al estudio de la
figura anterior, pensando en los libros que
puedan resultar útiles en un futuro próximo. Para
que la búsqueda de un tema sea eficiente, mediante
palabras clave o temas de C/ C++, es necesario tener conocimiento
del tipo de información que se encuentra
disponible.
Búsqueda de un tema desde
la ventana Contents (Contenidos)
La búsqueda de un tema se puede
realizar pulsando dos veces con el ratón sobre el
título del libro en el que está interesado. La
Figura 4.8 muestra lo que sucede en la ventana de
Documentación en línea cuando se pulsa dos veces
con el ratón sobre el título del libro
What’s New/ What's New For Visual C++ Version 6.0
(Novedades / Novedades de la versión 6.0 de Visual
C++).
Cuando se pulsa dos veces con el
ratón sobre el titulo del libro, cambia el cuadro de
diálogo de la Documentación en línea. En
primer lugar, el icono de libro cerrado situado a la izquierda
del título del libro aparece como un libro abierto. Debajo
del titulo aparece una lista desplegable expandida de
títulos asociados.
Obsérvese que el icono del
subtítulo cambia a un libro abierto. Los subtítulos
que aparecen por debajo son todos 105 nombres de las
páginas o capítulos disponibles. En este momento,
una vez que se haya encontrado una página o
capítulo interesante, simplemente se pulsa dos veces con
el ratón sobre el título. La Figura 4.9 muestra la
página de inicio de Visual C++.
Búsqueda de un tema de
ayuda utilizando Search
(Búsqueda)
Un segundo método
para ejecutar una búsqueda se inicia pulsando dos veces
con el ratón en el botón Search (Búsqueda)
del menú Help (Ayuda). Cuando se selecciona esta
opción, aparece un cuadro de diálogo
estándar para búsquedas en Windows, como se muestra
en la Figura 4.10. Esta figura muestra un cuadro de
diálogo con las opciones necesarias para iniciar un
búsqueda sobre los Requerimientos del sistema (System
Requirements) de Visual C++.
Simplemente se selecciona el
botón List Topics (Lista de temas) para actualizar el
espacio de trabajo de forma que muestre los temas
seleccionados.
Impresión de temas de
ayuda
Aunque es cierto que la
Documentación en Línea y sus vistas asociadas
facilitan las búsquedas, también es cierto que esta
utilidad puede cansar la vista. Además, ¿qué
sucede si se desea tener una copia de la documentación o
se desea analizar algo una vez que se haya apagado el sistema?
Por estas y otras razones, muchas personas prefieren leer una
página impresa que pasarse gran cantidad de horas pegado
al monitor de la computadora.
La Documentación en línea
utiliza un método
realmente sencillo para imprimir un documento. Simplemente se
utiliza la orden Print Topic (Imprimir tema) del menú File
(Archivo). La Documentación en línea
imprimirá el tema que se esté visualizando en la
ventana activa cuando se seleccione esta orden.
Impresión de una parte
concreta de los Temas de ayuda
A menudo no es necesario imprimir una
copia de un tema completo, especialmente si el título
seleccionado es un capitulo completo. Con la orden Copy (Copiar)
del menú Edit (Editar) se pueden decidir las partes de un
tema que se desean imprimir
En primer lugar se selecciona la parte
del texto de ayuda que se desea imprimir Para seleccionar el
texto se coloca el puntero del ratón dentro de la ventana
de texto al principio del texto que se desea seleccionar y se
pulsa el botón izquierdo del ratón,
arrastrándolo hasta que se resalte (se muestra en
vídeo inverso) el texto deseado.
La operación se completa pulsando
con el ratón en el botón Copy (Copiar) del
menú Edit (Editar). Copy coloca la información en
el portapapeles de Windows. El contenido del portapapeles se
puede pegar en cualquier procesador de
textos de Windows para poder editarlo
e imprimirlo.
Depurací6n y
prueba
Las secciones siguientes explican el uso
de las utilidades para la depuración y prueba de
Microsoft. Estas utilidades se utilizan para localizar errores
lógicos de la aplicación o errores que se generan
cuando la aplicación se ejecuta de forma simultánea
con otros programas.
Spy++
Spy++ es una de las herramientas
más dinámicas de Visual C/C++ de Microsoft. Esta
utilidad permite 'espiar" una o todas las aplicaciones de Windows
que se encuentren cargadas en ese momento. Esta opción de
Windows permite ver el nombre de cada una de las aplicaciones, la
clase, el módulo, el origen, las coordenadas de pantalla
de la ventana de visualización, el estilo de la ventana
(por ejemplo, WS_CHILD) y el número de
identificación (ID) de la ventana.
Spy++ también permite visualizar
los mensajes que se están enviando a través del
entorno. Hay nueve cuadros de verificación que permiten
predefinir los tipos de mensajes presentados:
Mouse
(Ratón) Input (Entrada) System (Sistema)
Window (Ventana) mit
(Inicialización) Clipboard
(Portapapeles)
Other
(Otros) DDE Non-Client
La salida generada se puede visualizar
de modo síncrono o asincrono y enviar a una ventana de
Spy++, a un archivo o al puerto COM1 para una depuración
remota.
La Figura 4.11 muestra el cuadro de
diálogo Message Options (Opciones de mensaje) de Spy++ con
los datos introducidos en la selección de la
ventana.
Después de haber seleccionado los
tipos de ventanas que se desean visualizar, se utiliza el
menú Window (Ventana) para decidir silos mensajes se van a
visualizar sólo en una o en todas las
ventanas.
Process Víewer (Visor de
procesos)
La Figura 4.12 muestra un ejemplo de la
ventana Process Viewer (Visor de procesos). El cuadro de
diálogo Process Viewer permite establecer y visualizar
rápidamente todas las opciones necesarias para hacer un
seguimiento de los procesos actuales, los elementos de proceso y
el intervalo temporal del procesador.
Para iniciar Process Viewer, simplemente
se pulsa dos veces con el raton sobre el icono PVieb en el grupo
Visual C++. Process Viewer puede ayudar a contestar preguntas
como:
· ¿Cuánta memoria asigna el
programa en distintos puntos de su ejecución y
cuánta memoria va a ser paginada?
· ¿Qué procesos y elementos de
proceso están utilizando más tiempo de CPU?
· ¿Cómo se ejecuta el programa
para diferentes prioridades del sistema?
· ¿Qué sucede si un elemento de
proceso o un proceso se detiene respondiendo a un DDE, un OLE o
a una E/S canalizada?
· ¿Qué porcentaje de tiempo se
emplea en la ejecución de llamadas API?
-NOTA Puesto que Process Viewer
permite modificar el estado de
los procesos que se están ejecutando en el sistema, se
pueden detener los procesos y potencialmente interrumpir el
sistema completa Se debe asegurar de que se guardan los archivos
editados antes de ejecutar Process Viewer.
WinDiff
La utilidad WinDíff que se
encuentra en el grupo Visual C++, permite comparar y modificar
gráficamente dos archivos o dos directorios. Todas las
opciones de WinDiff funcionan de forma similar a las
órdenes que se encuentran en el File Manager (Administrador de
archivos).
La Figura 4.13 muestra un cuadro de
diálogo WinDiff con las selecciones necesarias para
comenzar el proceso de localización del primer archivo a
comparar.
Autor:
Vivas Henry