Red de conocimiento del abogados - Preguntas y respuestas jurídicas - ¿Cuáles son las características de la programación en Windows?

¿Cuáles son las características de la programación en Windows?

l¡Hola anfitrión! Esto es un poco profesional. Pero sé que el contenido se puede encontrar en detalle en "Programación de Windows (quinta edición) Tsinghua University Press". Todos somos entusiastas de Windows, puedes echarle un vistazo. 1. Programación basada en eventos

1\Los programas tradicionales de MS-DOS utilizan principalmente métodos de programación secuenciales, asociativos y basados ​​en procesos. Un programa es una combinación de una secuencia predefinida de operaciones, que tiene un principio, un desarrollo y un final determinados. El programa controla directamente la secuencia de eventos y procedimientos del programa. Este tipo de método de programación está más orientado al programa que al usuario, tiene poca interactividad y la interfaz de usuario no es lo suficientemente amigable porque obliga a los usuarios a trabajar de acuerdo con un cierto modo inmutable.

2\La programación basada en eventos es un método de programación completamente nuevo. No está controlado por la secuencia de eventos, sino por la ocurrencia de eventos, y la ocurrencia de dichos eventos es aleatoria. No existe un orden predeterminado, lo que permite al usuario del programa organizar el flujo del programa en varios órdenes razonables.

Para aplicaciones que requieren la interacción del usuario, la programación basada en eventos tiene ventajas que no pueden ser reemplazadas por métodos basados ​​en procesos.

Es un método de programación orientado al usuario, además de completar las funciones requeridas durante el proceso de programación, también considera las diversas entradas posibles del usuario y diseña el controlador en consecuencia.

Es un método de programación "pasivo". Cuando el programa comienza a ejecutarse, está en un estado de espera a que el usuario ingrese un evento, luego obtiene el evento y responde en consecuencia, y luego regresa después del procesamiento. y está en estado de espera por el evento.

2. Entrada y bucle de mensajes

El desarrollo impulsado por eventos gira en torno a la generación y el procesamiento de mensajes. Un mensaje es un mensaje sobre un evento que ocurrió.

El control por eventos se implementa mediante el mecanismo de bucle de mensajes.

Un mensaje es una notificación que informa sobre la ocurrencia de un evento.

Los mensajes son similares a los ingresados ​​por el usuario en DOS, pero las fuentes de entrada son más amplias que en DOS. Hay cuatro fuentes de mensajes para aplicaciones de Windows:

(1) Mensajes de entrada: incluidos el teclado y. entrada del ratón. ----------Este tipo de mensaje se coloca primero en la cola de mensajes del sistema y luego Windows los envía a la cola de mensajes de la aplicación y la aplicación procesa el mensaje.

(2) Mensaje de control: se utiliza para la comunicación bidireccional con objetos de control de Windows, como cuadros de lista, botones, casillas de verificación, etc. Este mensaje se emite cuando el usuario cambia la selección actual en un cuadro de lista o cambia el estado de una casilla de verificación. Este tipo de mensaje generalmente no pasa por la cola de mensajes de la aplicación, sino que se envía directamente al objeto de control.

(3) Mensajes del sistema: responden a eventos programados o interrupciones del reloj del sistema. Algunos mensajes del sistema, como los mensajes DDE (mensajes de intercambio dinámico de datos), pasan por la cola de mensajes del sistema de Windows, mientras que otros se envían directamente a la cola de mensajes de la aplicación sin pasar por la cola de mensajes del sistema, como la creación de mensajes de ventana.

(4) Mensaje de usuario: lo define el propio programador y lo emite activamente en la aplicación. Generalmente es procesado internamente por una determinada parte de la aplicación.

El sistema operativo Windows incluye tres componentes básicos del kernel: GDI, KERNEL y USER.

GDI (Interfaz de dispositivo gráfico) es responsable de dibujar píxeles en la pantalla, imprimir resultados impresos y dibujar interfaces de usuario que incluyen ventanas, menús, cuadros de diálogo, etc.

El kernel del sistema KERNEL admite funciones estrechamente relacionadas con el sistema operativo: como carga de procesos, cambio de texto, E/S de archivos, gestión de memoria, gestión de subprocesos, etc.

USUARIO proporciona soporte para todos los objetos de la interfaz de usuario. Se utiliza para recibir y administrar todos los mensajes de entrada, mensajes del sistema y enviarlos a la cola de mensajes de la ventana correspondiente. La cola de mensajes es un bloque de memoria definido por el sistema que se utiliza para almacenar mensajes temporalmente o para enviar mensajes directamente al procedimiento de ventana. Cada ventana mantiene su propia cola de mensajes, recupera mensajes de ella y utiliza funciones de ventana para su procesamiento.

3. Salida gráfica

Los programas de Windows no solo son diferentes de los programas de DOS en términos de entrada, sino también muy diferentes de DOS en términos de salida del programa, principalmente de la siguiente manera:

p>

1. El programa DOS ocupa toda la pantalla, mientras que otros programas esperan en segundo plano.

2. Todos los resultados de los programas de Windows son gráficos.

3.La salida en Windows es independiente del dispositivo. -------Las aplicaciones en Windows utilizan la interfaz de dispositivo gráfico (GDI) para la salida de gráficos. GDI protege las diferencias entre diferentes dispositivos y proporciona capacidades de salida de gráficos independientes del dispositivo. Las aplicaciones de Windows solo necesitan emitir solicitudes GDI independientes del dispositivo (como llamar a Rectángulo para dibujar un rectángulo), y GDI completará la operación de salida de gráficos real. Para una impresora PostScript con la función de imprimir rectángulos, es posible que GDI solo necesite pasar los datos del rectángulo al controlador, y luego el controlador genera comandos PostScript para dibujar el rectángulo correspondiente para una impresora sin la función de salida rectangular Para una matriz de puntos; impresora, es posible que GDI necesite convertir el rectángulo en cuatro líneas y luego enviar instrucciones de dibujo de líneas al controlador para generar el rectángulo en la impresora.

4. Introducción a GDI (Interfaz de dispositivo gráfico):

GDI proporciona dos servicios básicos: creación de resultados gráficos y almacenamiento de imágenes.

GDI proporciona una gran cantidad de funciones para la salida de gráficos. Estas funciones reciben solicitudes de dibujo de aplicaciones, procesan datos de dibujo y llaman al controlador de dispositivo correspondiente según el dispositivo utilizado actualmente para generar salida de dibujo. Estas funciones de dibujo se dividen en tres categorías: una es salida de texto, la otra son funciones de gráficos vectoriales para dibujar líneas, círculos y otras figuras geométricas, y la tercera son funciones de gráficos rasterizados (mapas de bits) para dibujar mapas de bits.

GDI reconoce cuatro tipos de dispositivos: pantallas de visualización, dispositivos de copia impresa (impresoras, trazadores), mapas de bits y metarchivos.

Los dos primeros son dispositivos físicos, y los dos últimos son pseudodispositivos.

Un pseudodispositivo proporciona una forma de almacenar imágenes en la RAM o en el disco.

El mapa de bits almacena la información de puntos de los gráficos, que ocupa más memoria, pero es muy rápido; el metarchivo almacena las llamadas y parámetros de llamada de la función GDI, que ocupa menos memoria, pero depende de; Gracias a GDI, no es posible utilizar un dispositivo para crear metarchivos y es más lento que los mapas de bits.

La salida de gráficos de GDI está orientada a ventanas, lo que tiene dos significados:

(1) Cada ventana se procesa como una interfaz de dibujo independiente y tiene sus propias coordenadas de dibujo. Cuando el programa dibuja en una ventana, primero establece las coordenadas de dibujo predeterminadas, con el origen (0, 0) ubicado en la esquina superior izquierda del área de usuario de la ventana. Cada ventana debe mantener su propia salida de forma independiente.

(2) El dibujo solo es válido para esta ventana y los gráficos se recortarán automáticamente en el límite de la ventana, lo que significa que todos los gráficos en la ventana no irán más allá del límite. Incluso si desea cruzar el borde, es imposible. La ventana evitará automáticamente los píxeles de otras ventanas. De esta manera, cuando dibujas dentro de la ventana, no tienes que preocuparte por tapar accidentalmente las ventanas de otros programas, asegurando así la independencia de cada ventana al ejecutar múltiples tareas al mismo tiempo en Windows.

5. Compartir recursos

Para un programa de DOS, monopoliza todos los recursos del sistema cuando se está ejecutando, incluida la pantalla, la memoria, etc., y solo libera los recursos cuando el programa termina. Windows es un sistema operativo multitarea. Cada aplicación solo comparte los recursos proporcionados por el sistema. Los recursos comunes incluyen: contexto del dispositivo, pincel, lápiz, fuente, control de diálogo, cuadro de diálogo, icono, temporizador, símbolos de inserción, puertos de comunicación, teléfono. líneas, etc

Windows requiere que las aplicaciones se diseñen de manera que les permita disfrutar plenamente de los recursos de Windows. Su modo básico es el siguiente:

1. /p>

2. Usar el recurso;

3. Liberar el recurso a Windows para que lo utilicen otros programas.

Incluso los programadores de Windows más experimentados suelen pasar por alto el paso tres.

Si ignora este paso, al menos no habrá ningún error en ese momento, pero después de un tiempo el programa se ejecutará de manera anormal o, en el peor de los casos, interferirá con el funcionamiento normal de otros programas y se bloqueará inmediatamente, como cuando el dispositivo; El contexto no se publica.

En el diseño de aplicaciones de Windows, la CPU también es un recurso muy importante, por lo que la aplicación debe evitar ocupar recursos de la CPU durante mucho tiempo (como un bucle particularmente largo si realmente es necesario); También se deben tomar algunas medidas para permitir que el programa responda a la entrada del usuario. La memoria principal también es un recurso compartido, es necesario evitar que varias aplicaciones que se ejecutan al mismo tiempo se queden sin recursos de memoria debido a una mala coordinación.

Las aplicaciones generalmente no deben acceder directamente a la memoria ni a otros dispositivos de hardware, como teclado, ratón, contador, pantalla o puerto serie, puerto paralelo, etc. Los sistemas Windows requieren un control absoluto de estos recursos para garantizar un funcionamiento justo e ininterrumpido de todas las aplicaciones. Si realmente desea acceder a los puertos serie y paralelo, debe utilizar las funciones proporcionadas por Windows para un acceso seguro.

6. Composición de programas de Windows

Escribir una aplicación típica de Windows generalmente requiere:

1.C, archivo de programa fuente CPP: archivo de programa fuente Contiene la definición de los datos, clases y módulos de lógica funcional de la aplicación (incluido el procesamiento de eventos, la inicialización de objetos de la interfaz de usuario y algunas rutinas auxiliares).

2.H, archivo de encabezado HPP: el archivo de encabezado contiene las declaraciones de todos los datos, módulos y clases en los archivos fuente CPP y C. Cuando un archivo fuente CPP o C quiere llamar a la función del módulo definida en otro CPP o C, debe incluir el archivo de encabezado correspondiente a ese archivo CPP o C.

3. Archivo de recursos: Contiene todas las definiciones de recursos utilizadas por la aplicación, normalmente con el sufijo .RC. El recurso aquí es un objeto en una clase de herramientas predefinidas que la aplicación puede usar, que incluyen: recursos de cadena, tablas de acelerador, cuadros de diálogo, menús, mapas de bits, cursores, barras de herramientas, íconos, información de versión y recursos definidos por el usuario, etc.

En el proceso de programación de DOS, todo el trabajo de diseño de la interfaz se completa en el programa fuente. En el proceso de programación de Windows, los objetos visuales como menús, cuadros de diálogo, mapas de bits, etc. se separan y definen por separado, se almacenan en archivos fuente de recursos y luego el compilador de recursos los compila en objetos que pueden ser utilizados por las aplicaciones. La compilación de recursos permite que las aplicaciones lean imágenes binarias y estructuras de datos concretas de objetos, lo que puede reducir el esfuerzo de programación necesario para crear objetos complejos.

El programador define los recursos que necesita la aplicación en el archivo de recursos, y el compilador de recursos compila estos recursos y los almacena en el archivo ejecutable o biblioteca de enlaces dinámicos de la aplicación.

7. Los beneficios de hacer referencia a recursos en el programa:

1. Reducir los requisitos de memoria: cuando la aplicación se está ejecutando, los recursos no se cargan en la memoria junto con la aplicación. pero en la aplicación, estos recursos se cargan en la memoria solo cuando realmente se utilizan. Cuando los recursos se cargan en la memoria, tienen su propio segmento de datos y no residen en el segmento de datos de la aplicación; cuando la memoria es escasa, estos recursos se pueden descartar para que otros puedan utilizar el espacio de memoria que ocupan y cuando la aplicación; usos Estos recursos se cargan automáticamente solo cuando se alcanzan. Este método reduce los requisitos de memoria de la aplicación y permite ejecutar más programas al mismo tiempo. Esta es también una de las ventajas de la administración de memoria de Windows.

2. Facilite la gestión y la reutilización unificadas: organice mapas de bits, iconos, cadenas, etc. en archivos de recursos para facilitar la gestión y la reutilización unificadas. Por ejemplo, es muy conveniente colocar toda la información de error en un archivo de recursos y usar una función para generar mensajes de error. Si necesita utilizar un mapa de bits del logotipo de una empresa varias veces en su aplicación, puede almacenarlo en un archivo de recursos y cargarlo desde el archivo de recursos cada vez que lo utilice. Este método es más sencillo y eficaz que colocar el mapa de bits en un archivo externo.

3. La aplicación y la interfaz tienen un cierto grado de independencia, lo que favorece la internacionalización del software: dado que el archivo de recursos es independiente del diseño de la aplicación, cuando se modifica el archivo de recursos (como ajustando el tamaño del cuadro de diálogo y la posición de control del cuadro de diálogo), no es necesario modificar el programa fuente, lo que simplifica el diseño de la interfaz de usuario. Además, las herramientas de diseño de recursos proporcionadas actualmente generalmente adoptan un enfoque de "lo que ves es lo que obtienes", de modo que la interfaz de la aplicación se puede diseñar de manera más intuitiva y visual.

Debido a la independencia de los archivos de recursos, el trabajo de internacionalización del software también es muy sencillo. Por ejemplo, si ha desarrollado una versión en inglés de una aplicación y desea convertirla en chino, solo necesita modificar el archivo de recursos y convertir en chino los cuadros de diálogo, menús, recursos de cadenas, etc., sin modificar directamente el programa fuente.

Sin embargo, los recursos de la aplicación sólo definen la apariencia y organización del recurso, no sus características funcionales. Por ejemplo, editar un recurso de cuadro de diálogo puede cambiar la disposición y la apariencia del cuadro de diálogo, pero no cambia ni puede cambiar la forma en que la aplicación responde a los controles del cuadro de diálogo. Se pueden lograr cambios en la apariencia editando recursos, pero cambios en la funcionalidad solo se pueden lograr cambiando el código fuente de la aplicación y luego recompilándolo.

El compilador de C y CPP compila el programa fuente de C en un programa de destino y luego utiliza un vinculador para conectar todos los programas de destino (incluidas varias bibliotecas) para generar un programa ejecutable. Al crear una aplicación de Windows, el compilador también genera el código de entrada y salida correcto para las funciones exportadas.

El archivo ejecutable generado por el vinculador aún no se puede ejecutar en el entorno de Windows y debe procesarse mediante un compilador de recursos. El compilador de recursos procesa los archivos ejecutables de esta manera: si el programa tiene un archivo de descripción de recursos, agrega los recursos que se han compilado en datos binarios al archivo ejecutable; de ​​lo contrario, solo realiza compatibilidad en el logotipo del archivo ejecutable; El compilador de recursos debe procesar las aplicaciones antes de que puedan ejecutarse en el entorno de Windows.

8. Programación estructurada y programación orientada a objetos

La tecnología orientada a objetos es actualmente una tecnología popular de diseño y desarrollo de sistemas, que incluye análisis orientado a objetos y programación orientada a objetos. La tecnología de programación orientada a objetos se propuso principalmente para resolver el problema de reutilización de código que no se puede resolver mediante el método de programación tradicional: programación estructurada.

La programación estructurada comienza desde la función del sistema y lo descompone en varios módulos funcionales de acuerdo con estándares de ingeniería y especificaciones estrictas. El sistema es una colección de "funciones y procesos que realizan las funciones del módulo". Debido al continuo desarrollo y a los cambios de las necesidades de los usuarios y de las tecnologías de software y hardware, los módulos del sistema diseñados según la división funcional seguramente serán volátiles e inestables. Los módulos desarrollados de esta manera no son altamente reutilizables.

La programación orientada a objetos comienza a partir de los datos que se procesan y describe el sistema con los datos como centro en lugar del centro de servicios (funciones). Trata los problemas de programación como una colección de datos y los datos son más estables que las funciones.

La mayor diferencia entre la programación orientada a objetos y la programación estructurada es que la primera se ocupa primero de los datos a procesar, mientras que la segunda se ocupa primero de las funciones.

La programación orientada a objetos es un método de programación que organiza modelos en torno a conceptos del mundo real. Utiliza objetos para describir las entidades del espacio del problema. Generalmente se cree que un objeto es una entidad abstracta que contiene las características de los objetos del mundo real, lo que refleja la capacidad del sistema para guardar información y/o interactuar con ella. Es una encapsulación de algunas propiedades y servicios. En el campo de la programación, se puede expresar mediante la fórmula "objeto = datos + operaciones que actúan sobre estos datos".

"Clase" es una colección de objetos con las mismas funciones operativas y el mismo formato de datos (propiedades).

Una clase puede considerarse como una implementación concreta de un tipo de datos abstracto.

Un tipo de datos se refiere a una colección de datos y una colección de operaciones que actúan sobre ellos, mientras que los tipos de datos abstractos no se preocupan por los detalles de la implementación de la operación.

Desde el exterior, el comportamiento del tipo se puede especificar mediante operaciones recién definidas.

Una clase es una abstracción de una colección de objetos, que especifica los atributos y métodos públicos de estos objetos; un objeto es una instancia de una clase. Apple es una clase y la manzana sobre la mesa es un objeto.

La relación entre objetos y clases es equivalente a la relación entre variables y tipos de variables en los lenguajes de programación generales.

Un mensaje es una expresión de solicitud de servicios a un "objeto". Hay métodos y datos en el objeto. Las solicitudes de servicio realizadas por usuarios u objetos externos al objeto se pueden llamar enviando mensajes al objeto.

"Cooperación" se refiere a la responsabilidad compartida y división del trabajo entre dos objetos.

En Windows, la unidad básica de un programa no es un proceso o una función, sino una ventana. Una ventana es una colección de datos, métodos y funciones de ventana para procesar estos datos.

Desde una perspectiva orientada a objetos, la ventana en sí es un objeto. El proceso de ejecución de un programa de Windows en sí es la creación, procesamiento y destrucción de ventanas y otros objetos. El envío de mensajes en Windows puede entenderse como el proceso de servicio en el que un objeto de ventana solicita un objeto de otro objeto de ventana. Por lo tanto, es extremadamente conveniente y natural utilizar métodos orientados a objetos para diseñar y desarrollar programas de Windows. ¡Por último te deseo mucha suerte! ! !