Tabla de contenido
- Introducción
- Requisitos previos
- Independencia de la máquina
- Recursos
- Ventanas
- Eventos
- Proyectos
- Convenciones
- Controles
- 1 Componentes de una ventana
- El borde de la ventana
- Barra de título
- Caja de minimizar
- Caja de maximizar
- Caja de cerrar
- Caja de control de menú
- Menú
- Barra de menú
- Barra de desplazamiento horizontal
- Barra de desplazamiento vertical
- El área de cliente
- 2 Notación húngara
- 3 Estructura de un programa Windows GUI
- Ficheros de cabecera
- Prototipos
- Función de entrada, WinMain
- Parámetros de entrada de WinMain
- Función WinMain típica
- Declaración
- Inicialización
- Bucle de mensajes
- Definición de funciones
- 4 El procedimiento de ventana
- Sintaxis
- Prototipo de procedimiento de ventana
- Implementación de procedimiento de ventana simple
- Primer ejemplo de programa Windows GUI
- 5 Menús 1
- Usando las funciones para inserción ítem a ítem
- Uso básico de MessageBox
- Respondiendo a los mensajes del menú
- Ejemplo 2
- Ficheros de recursos
- Cómo usar los recursos de menú
- Ejemplo 3
- 6 Diálogo básico
- Ficheros de recursos
- Procedimiento de diálogo
- Sintaxis
- Prototipo de procedimiento de diálogo
- Implementación de procedimiento de diálogo para nuestro ejemplo
- Pasar parámetros a un cuadro de diálogo
- Ejemplo 4
- 7 Control básico Edit
- Fichero de recursos
- El procedimiento de diálogo y los controles edit
- Variables a editar en los cuadros de diálogo
- Iniciar controles edit
- Devolver valores a la aplicación
- Añadir la opción de cancelar
- Ejemplo 5
- Editar números
- Fichero de recursos para editar enteros
- Variables a editar en los cuadros de diálogo
- Iniciar controles edit de enteros
- Devolver valores a la aplicación
- Ejemplo 6
- 8 Control básico ListBox
- 9 Control básico Button
- Ficheros de recursos
- Iniciar controles button
- Tratamiento de acciones de los controles button
- Ejemplo 8
- 10 Control básico Static
- Ficheros de recursos
- Iniciar controles static
- Tratamiento de acciones de los controles static
- Ejemplo 9
- 11 Control básico ComboBox
- 12 Control básico Scrollbar
- Ficheros de recursos
- Iniciar controles Scrollbar
- Iniciar controles scrollbar: estructura SCROLLINFO
- Procesar los mensajes procedentes de controles Scrollbar
- Procesar mensajes de scrollbar usando SCROLLINFO
- Devolver valores a la aplicación
- Ejemplo 11
- Ejemplo 12
- 13 Control básico Groupbox
- 14 Control básico Checkbox
- Ficheros de recursos
- Iniciar controles CheckBox
- Procesar mensajes de los CheckBox
- Devolver valores a la aplicación
- Ejemplo 14
- 15 Control básico RadioButton
- Ficheros de recursos
- Iniciar controles RadioButton
- Procesar mensajes de los RadioButtons
- Devolver valores a la aplicación
- Ejemplo 15
- 16 El GDI
- 17 Objetos básicos del GDI: El Contexto de dispositivo, DC
- 18 Objetos básicos del GDI: La pluma (Pen)
- Plumas de Stock
- Plumas cosméticas y geométricas
- Crear una pluma
- Seleccionar una pluma
- Destruir una pluma
- Ejemplo 16
- 19 Funciones para el trazado de líneas
- Trazado de arcos, función Arc
- Curvas Bézier
- Funciones Poly<tipo>
- Función LineDDA y funciones callback LineDDAProc
- Ejemplo 17
- 20 Objetos básicos del GDI: El pincel (Brush)
- 21 Funciones para el trazado de figuras rellenas
- 22 Objetos básicos del GDI: La paleta (Palette)
- Capacidades de Color de los dispositivos
- Definiciones de valores de color
- Aproximaciones de colores y mezclas de pixels (dithering)
- Mezclas de colores (ROP)
- Paletas de colores
- La paleta por defecto
- Paleta lógica
- Paleta de sistema
- Ejemplo 20
- 23 Objetos básicos del GDI: El Mapa de Bits (Bitmap)
- Tipos de mapas de bits
- Crear un mapa de bits
- Fichero de recursos
- Fichero BMP
- Mostrar un mapa de bits
- Funciones de visualización de mapas de bits
- Códigos ROP ternarios
- Códigos ROP cuádruples
- Pinceles creados a partir de mapas de bits
- Estructuras de datos
- Modos de estiramiento (stretch modes)
- Mapas de bits de stock
- Ejemplo 21
- 24 Objetos básicos del GDI: La Fuente (Font)
- Mostrar un texto simple
- Cambiar el color del texto
- Ejemplo 22
- Crear fuentes personalizadas
- Altura y anchura media de carácter
- El ángulo de escape
- El ángulo de orientación
- Peso
- Cursiva
- Subrayado
- Tachado
- Conjunto de caracteres
- Precisión de salida
- Precisión de recorte
- Calidad
- Paso y familia
- Nombre
- Fuentes de stock
- Alineamientos de texto
- Separación de caracteres
- Medidas de cadenas
- Justificar texto
- Ejemplo 23
- 25 Objetos básicos del GDI: Rectángulos y Regiones
- Rectángulos
- Funciones para trabajar con rectángulos
- Ejemplo 24
- Regiones
- Funciones para regiones
- Crear regiones
- Combinar regiones
- Comparar regiones
- Rellenar regiones
- Mover una región
- Comprobar posiciones
- Destruir regiones
- Ejemplo 25
- 26 Objetos básicos del GDI: El camino (Path)
- 27 Objetos básicos del GDI: El recorte (Clipping)
- Regiones de recorte y el mensaje WM_PAINT
- Funciones relacionadas con el recorte
- Seleccionar regiones de recorte
- Caminos de recorte
- Ejemplo 27
- 28 Objetos básicos del GDI: Espacios de coordenadas y transformac
- Definiciones
- Transformaciones
- Aplicar transformaciones
- Combinar transformaciones
- Cambios de escala y plumas
- Ejemplo 28
- Ventanas y viewports
- Mapeos
- Modos de mapeo predefinidos
- Modo por defecto
- Transformaciones definidas por el usuario
- Modos gráficos y sentido de los arcos
- Otras funciones
- Ejemplo 29
- 29 Objetos básicos del GDI: Plumas geométricas
- Atributos de las plumas geométricas
- Crear una pluma geométrica
- Seleccionar una pluma geométrica
- Destruir una pluma geométrica
- 30 Objetos básicos de usuario: El Caret
- Recibir y perder el foco
- Crear y destruir carets
- Mostrar y ocultar carets
- Procesar mensajes WM_PAINT
- Cambiar posición de un caret
- Cambiar velocidad de parpadeo de un caret
- Ejemplo 31
- 31 Objetos básicos del usuario: El icono
- Punto activo
- Tamaños
- Asociar iconos a una aplicación
- Tipos
- Iconos en ficheros de recursos
- Iconos en controles estáticos
- Mostrar iconos
- Destrucción de iconos
- Ejemplo 32
- 32 Objetos básicos del usuario: El cursor
- Cursor de clase
- Cursores de recursos
- Cursores estándar
- Similitud entre iconos y cursores
- El punto activo (Hot Spot)
- Crear cursores
- Posición del cursor
- Apariencia
- Modificar el cursor de clase
- El mensaje WM_SETCURSOR
- Ocultar y mostrar
- Confinar el cursor
- Destrucción de cursores
- Ejemplo 33
- 33 El ratón
- Capturar el ratón
- Configuración
- Mensajes
- Mensajes del área de cliente
- Mensajes del área de no cliente
- Mensaje WM_NCHITTEST
- Mensaje WM_MOUSEACTIVATE
- Otros mensajes de ratón
- Trazar eventos del ratón (Windows NT)
- Ejemplo 34
- Arrastrar objetos
- Ejemplo 35
- 34 El teclado
- El Foco del teclado
- Ventanas inhibidas
- Ejemplo 36
- Mensajes de pulsación de teclas
- Nombres de teclas
- El bucle de mensajes
- Ejemplo 37
- Mensajes de carácter
- Estado de teclas
- Ejemplo 38
- Hot keys
- Ejemplo 39
- Códigos de teclas virtuales
- 35 Cadenas
- 36 Aceleradores
- Recursos de aceleradores
- Bucle de mensajes para usar aceleradores
- Crear tablas de aceleradores sin usar recursos
- Combinar aceleradores y menús
- Aceleradores globales
- Diferencia entre acelerador y menú
- Ejemplo 41
- 37 Menús 2
- Marcas en menús
- Ejemplo 42
- Inhibir y oscurecer ítems
- Ejemplo 43
- Más sobre ficheros de recursos
- Sentencia MENUITEM y POPUP
- Detalles sobre cadenas de ítems
- Sentencia MENUEX
- Items marcados y no marcados
- Items activos, inactivos u oscurecidos
- Separadores y líneas de ruptura
- Cargar recursos
- Ítems por defecto
- Ejemplo 44
- Menús flotantes o contextuales
- Ejemplo 45
- Acceso por teclado
- Modificar menús
- El menú de sistema
- Ejemplo 46
- Destrucción de menús
- Mensajes de menú
- Mapas de bits en ítems de menú
- Ejemplo 47
- 38 La memoria
- Memoria virtual
- Un poco de historia
- Memoria local y global
- Otros atributos de la memoria en Windows
- Objetos móviles y fijos
- Objetos descartables y no descartables
- Funciones clásicas para manejo de memoria
- Desventajas de este modelo de memoria
- Funciones para manejo de memoria virtual
- Reservar direcciones de memoria virtual
- Liberar direcciones de memoria virtual
- Bloquear páginas de memoria asignada
- Establecer atributos de protección de acceso
- Obtener información sobre páginas de memoria
- Ejemplo 48
- 39 Control edit avanzado
- Insertar controles edit durante la ejecución
- Cambiar la fuente de un control edit
- Cambiar los colores de un control edit
- Ejemplo 49
- Contoles edit de sólo lectura
- Ejemplo 50
- Leer contraseñas
- Ejemplo 51
- Mayúsculas y minúsculas
- Ejemplo 52
- Mensajes de notificación
- Modificación
- Actualización
- Falta espacio
- Desplazamiento horizontal y vertical
- Pérdida y recuperación de foco
- Texto máximo
- El buffer de texto
- Controles multilínea
- Ejemplo 53
- Operaciones sobre selecciones de texto
- Deshacer cambios (undo)
- Modificación del texto
- Márgenes y tabuladores
- Desplazar texto
- Ejemplo 54
- Caracteres y posiciones
- Ejemplo 55
- 40 Control list box avanzado
- Insertar controles list box durante la ejecución
- Cambiar la fuente de un control list box
- Cambiar los colores de un control list box
- Ejemplo 56
- Mensajes de notificación
- Mensajes más comunes
- Ejemplo 57
- El dato del ítem
- Ejemplo 58
- Funciones para ficheros y directorios
- Ejemplo 59
- Listbox de selección sencilla y múltiple
- Ejemplo 60
- List box sin selección
- List box multicolumna
- Ejemplo 61
- Paradas de tabulación
- Ejemplo 62
- Actualizaciones de gran número de ítems
- Ejemplo 63
- Responder al teclado
- Ejemplo 64
- Aspectos gráficos del list box
- Ejemplo 65
- Localizaciones
- Ejemplo 66
- Otros estilos
- List box a medida (owner-draw)
- Estilos owner-draw para list box
- List box owner-draw de altura fija
- List box owner-draw de altura variable
- Dibujar cada ítem
- El mensaje WM_DELETEITEM
- Ejemplo 67
- Otros mensajes para list box con estilos owner-draw
- Definición del orden
- 41 Control button avanzado
- Insertar botones durante la ejecución
- Cambiar fuente
- Cambiar colores
- Modificar el bucle de mensajes
- Botones con iconos o mapas de bits
- Otros estilos para botones
- Ejemplo 68
- Mensajes de notificación
- Estilos de cada tipo de botón
- Estados de un botón
- Funciones para controles botón
- Modificar el estilo de un botón
- Botones owner-draw
- Ejemplo 69
- 42 Control estático avanzado
- Insertar controles estáticos durante la ejecución
- Cambiar fuente
- Cambiar colores
- Estilos estáticos gráficos
- Estilos estáticos de texto
- Imágenes
- Modificador de hundido
- Mensajes de notificación
- Controles estáticos owner-draw
- Ejemplo 70
- 43 Control combo box avanzado
- Tipos de combo boxes
- Insertar controles combo box durante la ejecución
- Cambiar la fuente de un control combo box
- Cambiar colores en combo box
- Mensajes de notificación
- Cambio en selección de lista
- Validar selección
- Despliegue de lista
- Doble clic
- Falta espacio
- Modificación
- Actualización
- Pérdida y recuperación de foco
- Otros estilos para combo box
- Ejemplo 71
- Mensajes correspondientes a la lista
- Ejemplo 72
- El dato del ítem
- Interfaces de usuario
- Funciones para ficheros y directorios
- Selección actual
- Ejemplo 73
- El control de edición
- Actualizaciones de gran número de ítems
- Aspectos gráficos del combo box
- Localizaciones
- Combo boxes owner draw
- Otros mensajes para combo box con estilos owner-draw
- Dimensiones de la lista desplegable
- Definición del orden
- Ejemplo 74
- 44 Control scrollbar avanzado
- Controles de barra de desplazamiento y barras estándar
- Insertar controles scrollbar durante la ejecución
- Cambiar colores
- Estilos de scrollbar
- Estilos de orientación
- Alineamiento con los bordes
- Opciones para cajas de tamaño
- Alineamiento de cajas de tamaño
- Mostrar u ocultar barras de desplazamiento
- Deshabilitar o habilitar un control de barra de desplazamiento
- Deshabilitar o habilitar flechas
- Mensajes de barras de desplazamiento
- Respuesta al teclado
- Ejemplo 75
- Desplazar contenido de ventanas
- Colores y medidas
- Otros mensajes
- Ejemplo 76
- 45 Capítulo 45 La impresora
- Proceso de impresión
- El spooler de impresión (print spooler)
- El procesador de impresión (print processor)
- La máquina de gráficos (graphics engine)
- El monitor
- Obtener una lista de impresoras
- Contexto de dispositivo
- Ejemplo 79
- 46 Capítulo 46 Controles comunes
- 47 Capítulo 47 Control animación
- Ficheros de recursos
- Insertar durante la ejecución
- Manipular la animación
- Mensajes de notificación
- Ejemplo 80
- 48 Capítulo 48 Listas de imágenes
- Crear una lista de imágenes
- Añadir y eliminar imágenes
- Crear listas con imágenes
- Obtener iconos
- Mostrar imágenes
- El color de fondo
- Imágenes superpuestas
- Ejemplo 81
- Arrastre de imágenes
- Ejemplo82
- Información de imagen
- 49 Capítulo 49 Ventana de estado
- Cómo crear ventanas de estado
- Estilos
- Ayuda para menús
- Ejemplo 83
- Tamaño y altura
- Ventanas de estado con varias partes
- Manejar texto
- Ejemplo 84
- Ventanas de estado owner-draw
- Ejemplo 85
- Ventanas de estado simples
- 50 Capítulo 50 Barra de progreso
- 51 Capítulo 51 Control Tooltip
- Creación de tooltip
- Estilos
- Activar y desactivar tooltips
- Cambios de color
- Asignar título e icono
- Limitar anchura
- Asignar a herramienta
- Asignar tooltip a un control
- Asignar tooltip a un rectángulo
- Eliminar un control de un tooltip
- Usar cadenas de recursos
- Ejemplo 87
- Notificaciones
- Ejemplo 88
- Notificaciones de mostrar y ocultar
- Personalización
- Ejemplo 89
- Otros mensajes
- 52 Capítulo 52 Control UpDown
- Creación de un control UpDown
- Especificar una ventana amiga
- Estilos
- Rango y posición actual
- Ficheros de recursos
- Aceleradores
- Bases de numeración
- Mensajes de notificación
- Ejemplo 90
- 53 Control de cabecera
- Creación de un control de cabecera
- Añadir columnas
- Cambio de tamaño de la ventana padre
- Estilos
- Mensajes de gestión de columnas
- Mensajes relacionados con el orden de columnas
- Mensajes de arrastre de items
- Arrastre de divisores
- Mensajes de filtros
- Indicativos de orden
- Mensajes de foco de teclado
- Mensajes de situación en ventana
- Botón de desplegar
- Cajas de chequeo
- Overflow
- Mensajes de gestión de mapas de bits
- Mensajes de codificación de caracteres
- Acción del ratón sobre items
- Notificaciones de modificación de item
- Pulsaciones de tecla
- Inserción con datos incompletos
- Otros mensajes de notificación
- Ejemplo 91
- Ejemplo 92
- Ejemplo 93
- 54 Control ComboBoxEx
- Insertar durante la ejecución
- Estilos
- Lista de imágenes
- Insertar items
- Modificar un item
- Obtener información de un item
- Eliminar un item
- Edición de valores
- Ejemplo 94
- Ficheros de recursos
- Mensajes de formato de caracteres
- Controles base
- Operaciones de arrastre
- Temas de Windows
- Ejemplo 95
- 55 Control de selección de fecha y hora
- Insertar durante la ejecución
- Desde fichero de recursos
- Estilos
- Asignar un valor
- Obtener un valor
- Establecer rangos
- Obtener rangos
- Atributos del calendario mensual
- Obtener el manipulador de ventana
- Cambiar la fuente
- Cambio de estilos
- Cambio de colores
- Cerrar calendario
- Asignar formato
- Calcular el tamaño del control
- Obtener información
- Códigos de notificación
- Notificación de cambio de fecha y hora
- Control de calendario mensual desplegado
- Campos de retrollamada
- Cadenas de usuario
- Ejemplo 96
- Ejemplo 97
- 56 Control de calendario
- Insertar durante la ejecución
- Desde fichero de recursos
- Estilos
- Control de calendario de selección simple
- Selección múltiple
- Asignación de varias fechas
- Obtener asignación múltiple
- Rango máximo de selección
- Selección fuera de la vista
- Fechas seleccionables
- Aspecto gráfico
- Calendarios contenidos
- Obtener información
- Tipos de calendario
- Navegacion
- Hoy
- Vistas
- Formato de juego de caracteres
- Puntos de prueba
- Notificaciones
- Ejemplo 98
- 57 Control Trackbar
- Insertar durante la ejecución
- Insertar desde fichero de recursos
- Partes del control trackbar
- Establecer rango de valores
- Modificar y leer posición del deslizador
- Estilos
- Que afectan a la orientación
- Obtener marcas
- Relacionados con los rangos
- Relacionados con el deslizador
- Eliminar marcas
- Posiciones de marcas
- Relacionados con los rangos
- Relacionados con el deslizador
- Tooltips
- Desplazamientos
- Ventanas compañeras
- Delimitadores de áreas
- Formato de caracteres
- Trackbar custom draw
- Ejemplo 99
- 58 Control Hot Key
- Insertar durante la ejecución
- Insertar desde fichero de recursos
- Asignar valor al control
- Eecuperar valor del control
- Reglas
- Asignar una hot key a una ventana
- Obtener hot key de una ventana
- Ejemplo 100
- 59 Control IP Address
- Insertar durante la ejecución
- Insertar desde fichero de recursos
- Asignar valor al control
- Vaciar el contenido del control
- Recuperar valor IP del control
- Asignar el foco a un campo
- Notificaciones
- Rangos
- Ejemplo 101
- 60 Control List Box de arrastre
- A Glosario