Programación Win32 ¿Por qué registrar la clase de ventana? ¿Qué hace exactamente la clase de ventana registrada?
¿Qué tipo de ventana quieres crear? Entonces, ¿qué tipo de ventana se crea? Antes de la creación, el sistema Windows no sabe qué tipo de ventana desea (como qué icono se muestra en la barra de título, cuál es la forma del mouse, el color de fondo de la ventana, etc.). Este tipo de información debe comunicarse al sistema Windows antes de crearlo. Se puede utilizar este método: escribimos un formulario de solicitud para el tipo de ventana que se creará con anticipación y lo enviamos (registramos) al sistema Window. Luego, al crear, puede pedirle a Windows que cree la ventana que desea de acuerdo con este formulario de solicitud. En otras palabras, también debemos enviar primero un formulario de solicitud y luego crear una ventana basada en este formulario una vez que la solicitud sea exitosa.
Cuando usamos la programación Microsoft Platform SDK o MFC, después de crear la clase de ventana, primero debemos usar la función RegisterClass para registrar la clase de ventana. Esta función requiere un puntero a la estructura de clases de ventana. Entonces, ¿qué hace exactamente la función API de Windows RegisterClass? Microsoft no proporcionará el código fuente de esta función porque solo proporciona una interfaz de programación del sistema. No hay ninguna explicación relevante en Internet. Solo presenta brevemente la necesidad de registrar la clase. system, pero encontramos dicha descripción en la descripción de la tabla atom de msdn.
El sistema utiliza tablas de átomos a las que las aplicaciones no pueden acceder directamente. Sin embargo, la aplicación utiliza estos átomos cuando llama a una variedad de funciones. Por ejemplo, los formatos del portapapeles registrados se almacenan en una tabla de átomos interna utilizada por el. Una aplicación agrega átomos a esta tabla de átomos usando.
La respuesta está ahí. Después de construir una estructura de clases de ventana, necesitamos agregar este puntero de estructura de clases a la tabla de átomos del sistema, es decir, SAT, para que el sistema pueda encontrar la estructura definida por el usuario. Al buscar esta tabla Clase de ventana, el puntero de clase de ventana predefinido también está en SAT. SAT en realidad implementa un mapeo para consultas, y el tipo real de átomo es corto, que son datos de 16 bits. Solo el sistema puede acceder directamente a esta tabla, pero al llamar a ciertas funciones de API, como Registerclass, puede indicarle al sistema que acceda a esta tabla. Por supuesto, también hay tablas atómicas locales y tablas atómicas globales, a las que las aplicaciones pueden acceder directamente.