winuser.h


CreateWindow

Esta función crea ventanas superponibles (ventanas normales: overlapped), ventanas pop-up y ventanas hijas. Especifica la clase, título, estilo y opcionalmente la posición y tamaño de la ventana. También especifica la ventana padre o propietaria, si existe y el menú de la ventana.

Sintaxis

HWND CreateWindow( 
    LPCTSTR lpClassName,   // puntero al nombre de la clase registrada
    LPCTSTR lpWindowName,  // puntero al nombre de la ventana
    DWORD dwStyle,         // estilo de ventana
    int x,                 // posición horizontal de la ventana
    int y,                 // posición vertical de la ventana
    int nWidth,            // anchura de la ventana
    int nHeight,           // altura de la ventana
    HWND hWndParent,       // manipulador de la ventana padre o propietaria
    HMENU hMenu,           // manipulador de menú o identificador de ventana hija
    HANDLE hInstance,      // manipulador de la instancia de la aplicación
    LPVOID lpParam         // puntero a los datos para la creación de la ventana
   );

Parámetros:

lpClassName: puntero a una cadena terminada con cero o un átomo entero. Si el parámetro es un átomo, debe ser un átomo global creado previamente con una llamada a la función GlobalAddAtom. El átomo, un valor de 16 bits menor de 0xC000, debe estar en la palabra de menor orden de lpClassName; la palabra de mayor orden debe ser cero.

Si lpClassName es una cadena, debe especificar el nombre de una clase de ventana. Este debe ser un nombre previamente registrado con la función RegisterClass o uno de los nombre de controles predefinidos. Para ver una lista completa, mira la siguiente sección de observaciones.

lpWindowName: puntero a una cadena terminada con NULL que especifica el nombre de la ventana.

dwStyle: especifica en estilo de la ventana que se creará. Este parámetro debe ser una combinación de los estilos de ventana y de los estilos de controles que se listan en el apartado de observaciones.

x: especifica la posición inicial horizontal de la ventana. Para una ventana "superpuesta" o una pop-up, este parámetro es la coordenada x inicial de la esquina superior izquierda de la ventana en coordenadas de pantalla. Para ventanas hija, x es la coordenada x de la esquina superior izquierda de la ventana relativa a la esquina superior izquierda del área de cliente de la ventana padre.

Si se usa el valor CW_USEDEFAULT para este parámetro, Windows seleccionará la posición por defecto para la ventana e ignorará el parámetro y. CW_USEDEFAULT sólo es válido para ventanas "superpuestas"; si se especifica para una ventana pop-up, tanto el parámetro x como el y serán puestos a cero.

y: especifica la posición inicial vertical de la ventana. Para una ventana "superpuesta" o una pop-up, este parámetro es la coordenada y inicial de la esquina superior izquierda de la ventana en coordenadas de pantalla. Para ventanas hija, y es la coordenada y de la esquina superior izquierda de la ventana relativa a la esquina superior izquierda del área de cliente de la ventana padre. Para un list-box, y es la coordenada y inicial de la esquina superior izquierda del área de cliente del list-box relativa al área de cliente de la ventana padre.

Si una ventana "superpuesta" se crea con el bit de estilo WS_VISIBLE y para el parámetro x se especifica CW_USEDEFAULT, Windows ignora el parámetro y.

nWidth: especifica el ancho de la ventana, en unidades de dispositivo. Para ventanas "superpuestas", nWidth puede ser el ancho de la ventana en coordenadas de pantalla, o CW_USEDEFAULT. Si es CW_USEDEFAULT, Windows elige un ancho y alto por defecto para la ventana; el valor de anchura por defecto es desde la coordenada x inicial hasta el borde derecho de la pantalla, y la altura por defecto desde la coordenada y hasta la parte superior del área de iconos. CW_USEDEFAULT sólo es válido para ventanas "superpuestas"; si se especifica CW_USEDEFAULT para una ventana pop-up o una ventana hija tanto nWidth como nHeight serán cero.

nHeight: especifica la altura de la ventana en unidades de dispositivo. Para ventanas "superpuestas", nHeight es la altura de la ventana en coordenadas de pantalla. Si se especifica CW_USEDEFAULT para nWidth, Windows ignorará nHeight.

hWndParent: identifica la ventana padre o propietaria de la ventana creada. Debe indicarse un manipulador de ventana válido cuando se crea una ventana hija o con dueño. Una ventana hija estará confinada al área de cliente de su ventana padre. Una ventana con dueño es una ventana "superpuesta" que será destruida cuando su ventana padre sea destruida u ocultada cuando su ventana padre sea minimizada; además siempre se mostrará encima de su ventana padre. A pesar de que este parámetro debe ser un manipulador válido si el parámetro dwStyle incluye el estilo WS_CHILD, es opcional si dwStyle incluye el estilo WS_POPUP.

hMenu: identifica un menú o el identificador de una ventana hija, dependiendo del estilo de ventana. para una ventana "superpuesta" o una ventana pop-up, hMenu identifica el menú que se usará con la ventana; puede ser NULL si se usa el menú de la clase. Para una ventana hija, hMenu especifica el identificador de ventana hija, un valor entero que se usa por un control de cuadro de diálogo para informar a su ventana padre sobre eventos. Es la aplicación la que determina el identificador de la ventana hija; debe ser único para todas las ventanas hija con la misma ventana padre.

hInstance: identifica la instancia del módulo asociado con la ventana.

lpParam: puntero a un valor pasado a la ventana a través de la estructura CREATESTRUCT referenciada por el parámetro lParam del mensaje WM_CREATE. Si una aplicación llama a CreateWindow para crear una ventana de cliente de una aplicación MDI (multiple document interface), lpParam debe apuntar a una estructura CLIENTCREATESTRUCT.

Valor de retorno

Si al función tiene éxito, el valor de retorno es el manipulador de la nueva ventana.

Si la función falla, el valor de retorno es NULL. Para conseguir información adicional hay que llamar a la función GetLastError.

Observaciones

Antes de volver, CreateWindow envía un mensaje WM_CREATE al procedimiento de ventana.

Para ventanas "superpuestas", pop-up y ventanas hija, CreateWindow envía los mensajes WM_CREATE, WM_GETMINMAXINFO, y WM_NCCREATE a la ventana. El parámetro lParam del mensaje WM_CREATE contiene un puntero a la estructura CREATESTRUCT. Si se especifica el estilo WS_VISIBLE, CreateWindow envía a la ventana todos los mensajes necesarios para activar y mostrar la ventana.

Si el estilo de ventana especifica una barra de título, la cadena con el título de la ventana, apuntada por lpWindowName se muestra en la barra de título. Cuando se usa CreateWindow para crear controles, como buttons, checkboxes, y controles static, lpWindowName se usa para especificar el texto del control.

Las siguientes clases de controles predefinidos pueden ser usados en el parámetro lpClassName:

Clase Significado
BUTTON Designa una pequeña ventana rectangular que representa un botón que el usuario puede pulsar para encenderlo o apagarlo. Estos controles pueden ser usados solos o en grupos, también pueden tener etiquetas o aparecer sin texto. Estos controles normalmente cambian de aspecto cuando el usuario los pulsa.
COMBOBOX

Designa un control que consiste en un list box y un campo de selección similar a un edit. Cuando usa este estilo, una aplicación debe o bien mostrar el list box todo el tiempo o bien habilitar un listbox desplegable.

Dependiendo del estilo del combo box, el usuario podrá o no editar el contenido del campo de selección. Si el list box es visible, tecleando caracteres en el campo de selección, se seleccionará la primera entrada del list box que coincida con los caracteres escritos. Y a la inversa, seleccionando un ítem de la list box se muestra el texto seleccionado en el campo de selección.

EDIT

Se trata de una pequeña ventana hija dentro de la cual el usuario puede escribir texto desde el teclado. El usuario puede seleccionar el control que recibe el foco del teclado haciendo click sobre él, o moviéndose a él usando la tecla TAB. El usuario puede escribir texto cuando el control edit muestra un cursor (caret) intermitente; usar el ratón para mover el cursor, seleccionar caracteres para reemplazarlos, o situar el cursor para insertar caracteres o borrarlos usando la tecla de retroceso.

Los controles Edit usan una fuente de sistema de anchura variable y muestran caracteres del conjunto ANSI. Se puede usar el mensaje WM_SETFONT, enviándolo al control edit para cambiar la fuente por defecto.

Los controles edit expanden los caracteres tab en tantos espacios como se precisen para mover el cursor (caret) a la siguiente columna de tabulación (tab stop). Se asume que hay tab stops cada ocho caracteres.

LISTBOX Se trata de listas de cadenas de caracteres. Se usa cada vez que la aplicación debe presentar una lista de nombres, como nombres de fichero, entre los cuales el usuario puede elegir. El usuario puede elegir una cadena haciendo clic sobre ella. Una cadena seleccionada se realzará y se pasa un mensaje de notificación a la ventana padre. Se usa una barra de scroll vertical u horizontal con list boxes para desplazar aquellas listas demasiado grandes para la ventana de control. El list box oculta o muestra automáticamente los scroll bars cuando sea necesario.
MDICLIENT Se trata de ventanas de cliente MDI. Esta ventana recibirá mensajes para el control de las ventanas hija de una aplicación MDI. Los bits de estilo recomendados son WS_CLIPCHILDREN y WS_CHILD. Se pueden especificar los estilos WS_HSCROLL y WS_VSCROLL para crear una ventana de cliente MDI que permita al usuario desplazar las ventanas hija MDI dentro de ella.
SCROLLBAR

Se trata de un rectángulo que contiene un cuadro de scroll y dos flechas de dirección en sus extremos. Las scroll bars envían un mensaje de notificación a su ventana padre cada vez que el usuario hace clic en el control. La ventana padre es la responsable de actualizar la posición del cuadro de scroll, si es necesario. Los controles scroll bar tienen la misma apariencia y función que los usados en las ventanas corrientes. La diferencia es que los controles scroll bar pueden situarse en cualquier parte de la ventana para ser usados para introducir cualquier tipo de información que requiera la aplicación.

La clase scroll bar también incluye los controles size box. Un size box es un pequeño rectángulo que el usuario puede agrandar para cambiar el tamaño de una ventana.

STATIC Se trata de un simple campo de texto, una caja o un rectángulo usado para etiquetar, enmarcar o separar otros controles. Los controles static no toman entradas ni proporcionan salidas.

Ver estilos de ventanas para el parámetro dwStyle (window styles).

Ver estilos de botones (button styles).

Ver estilos de combo boxes (combobox styles).

Ver estilos de controles edit (control edit styles).

Ver estilos de controles list boxes (list box styles).

Ver estilos de scroll bars (scroll bar styles).

Ver estilos de controles static (static styles).

Ver estilos de dialog boxes (dialog box styles).

Sólo en Windows 95: el sistema puede soportar un máximo de 16,364 manipuladores de ventana.