2011-12-14 12 views

Respuesta

5

La separación de la ventana de atributos en CreateWindow() cosas y RegisterClass() cosas se hizo desde el principio para permitir la creación de manera uniforme comportándose ventanas. Los controles de diálogo (botones, cuadros de lista, etc.) son un excelente ejemplo: todos comparten una clase. Eso significa que comparten un procedimiento de ventana, es decir, comparten lógica de pintura, reacciones de entrada, mensajes personalizados, notificaciones, etc.

En el nivel de la aplicación, el caso más típico cuando tiene muchas ventanas de la misma clase es documentos dentro de una interfaz de múltiples documentos. A veces las personas introducen controles específicos de la aplicación. Entonces la distinción sirve su propósito.

5

El propósito principal es darle al sistema el derecho WndProc para llamar cuando hay algo en la cola de mensajes para procesar.

Hay algunos indicadores, pero el punto principal es el anterior.

clases de ventana corresponden a tipos de widgets 'en la interfaz de usuario:

  • botón
  • casilla
  • barra de desplazamiento
  • cuadro combinado
  • cuadro de lista

WndProc es el único controlador del comportamiento del widge t.

De ahí la creación de mapas: Reproductor (tipo de control) ->wndclass ->WndProc

+0

Entre otras cosas, también se usa para especificar algunos atributos de ventana como la cantidad de memoria de ventana adicional disponible para ['GetWindowLongPtr()'] (http://msdn.microsoft.com/en-us/library/windows/desktop/ ms633585.aspx). La cantidad de bytes de ventanas adicionales que utiliza una ventana se fija una vez que la haya creado. –

+0

¿Existe alguna razón histórica para registrar la clase de ventana por separado? Teóricamente, el WndProc() se puede pasar como parte de CreateWindow(). ¿Cuál es el propósito del registro en el sistema de Windows? –

+0

Existe algún mecanismo que le permitirá registrar clases de Windows globalmente, y usarlas en cualquier aplicación desde ese momento. De hecho, todos los controles de ventanas incorporados se registran de esa manera. No recuerdo detalles, pero puedes buscar 'Wndclass global' –

Cuestiones relacionadas