Macro CreateWindowA (winuser.h)

Crea una ventana secundaria, emergente o superpuesta. Especifica la clase de ventana, el título de la ventana, el estilo de ventana y (opcionalmente) la posición inicial y el tamaño de la ventana. La función también especifica el propietario o primario de la ventana, si existe, y el menú de la ventana.

Para usar estilos de ventana extendidos además de los estilos admitidos por CreateWindow, use la función CreateWindowEx .

Sintaxis

void CreateWindowA(
  [in, optional]  lpClassName,
  [in, optional]  lpWindowName,
  [in]            dwStyle,
  [in]            x,
  [in]            y,
  [in]            nWidth,
  [in]            nHeight,
  [in, optional]  hWndParent,
  [in, optional]  hMenu,
  [in, optional]  hInstance,
  [in, optional]  lpParam
);

Parámetros

[in, optional] lpClassName

Tipo: LPCTSTR

Cadena terminada en null o un átomo de clase creado por una llamada anterior a la función RegisterClass o RegisterClassEx . El átomo debe estar en la palabra de orden bajo de lpClassName; la palabra de orden superior debe ser cero. Si lpClassName es una cadena, especifica el nombre de la clase de ventana. El nombre de clase puede ser cualquier nombre registrado con RegisterClass o RegisterClassEx, siempre que el módulo que registra la clase también sea el módulo que crea la ventana. El nombre de clase también puede ser cualquiera de los nombres de clase del sistema predefinidos. Para obtener una lista de nombres de clase del sistema, vea la sección Comentarios.

[in, optional] lpWindowName

Tipo: LPCTSTR

Nombre de la ventana. Si el estilo de ventana especifica una barra de título, el título de la ventana al que apunta lpWindowName se muestra en la barra de título. Al usar CreateWindow para crear controles, como botones, casillas y controles estáticos, use lpWindowName para especificar el texto del control. Al crear un control estático con el estilo SS_ICON , use lpWindowName para especificar el nombre o el identificador del icono. Para especificar un identificador, use la sintaxis "#num".

[in] dwStyle

Tipo: DWORD

Estilo de la ventana que se va a crear. Este parámetro puede ser una combinación de los valores de estilo de ventana, además de los estilos de control indicados en la sección Comentarios.

[in] x

Tipo: int

Posición horizontal inicial de la ventana. Para una ventana emergente o superpuesta, el parámetro x es la coordenada x inicial de la esquina superior izquierda de la ventana, en coordenadas de pantalla. Para una ventana secundaria, x es la coordenada x de la esquina superior izquierda de la ventana en relación con la esquina superior izquierda del área cliente de la ventana primaria. Si este parámetro se establece en CW_USEDEFAULT, el sistema selecciona la posición predeterminada para la esquina superior izquierda de la ventana y omite el parámetro y . CW_USEDEFAULT solo es válido para ventanas superpuestas; si se especifica para una ventana emergente o secundaria, los parámetros x e y se establecen en cero.

[in] y

Tipo: int

Posición vertical inicial de la ventana. Para una ventana emergente o superpuesta, el parámetro y es la coordenada y inicial de la esquina superior izquierda de la ventana, en coordenadas de pantalla. Para una ventana secundaria, y es la coordenada y inicial de la esquina superior izquierda de la ventana secundaria en relación con la esquina superior izquierda del área cliente de la ventana primaria. Para un cuadro de lista, y es la coordenada y inicial de la esquina superior izquierda del área cliente del cuadro de lista en relación con la esquina superior izquierda del área cliente de la ventana primaria.

Si se crea una ventana superpuesta con el conjunto de bits de estilo WS_VISIBLE y el parámetro x se establece en CW_USEDEFAULT, el parámetro y determina cómo se muestra la ventana. Si el parámetro y está CW_USEDEFAULT, el administrador de ventanas llama a ShowWindow con la marca SW_SHOW después de crear la ventana. Si el parámetro y es otro valor, el administrador de ventanas llama a ShowWindow con ese valor como el parámetro nCmdShow .

[in] nWidth

Tipo: int

Ancho, en unidades de dispositivo, de la ventana. En el caso de las ventanas superpuestas, nWidth es el ancho de la ventana, en coordenadas de pantalla o CW_USEDEFAULT. Si nWidth es CW_USEDEFAULT, el sistema selecciona un ancho y alto predeterminados para la ventana; el ancho predeterminado se extiende desde la coordenada x inicial hasta el borde derecho de la pantalla y el alto predeterminado se extiende desde la coordenada y inicial hasta la parte superior del área del icono. CW_USEDEFAULT solo es válido para ventanas superpuestas; si se especifica CW_USEDEFAULT para una ventana emergente o secundaria, nWidth y nHeight se establecen en cero.

[in] nHeight

Tipo: int

Alto, en unidades de dispositivo, de la ventana. En el caso de las ventanas superpuestas, nHeight es el alto de la ventana, en coordenadas de pantalla. Si nWidth se establece en CW_USEDEFAULT, el sistema omite nHeight.

[in, optional] hWndParent

Tipo: HWND

Identificador de la ventana primaria o propietaria de la ventana que se va a crear. Para crear una ventana secundaria o una ventana propiedad, proporcione un identificador de ventana válido. Este parámetro es opcional para las ventanas emergentes.

Para crear una ventana de solo mensaje, proporcione HWND_MESSAGE o un identificador a una ventana de solo mensaje existente.

[in, optional] hMenu

Tipo: HMENU

Identificador de un menú o especifica un identificador de ventana secundaria según el estilo de ventana. Para una ventana emergente o superpuesta, hMenu identifica el menú que se va a usar con la ventana; puede ser NULL si se va a usar el menú de clase. Para una ventana secundaria, hMenu especifica el identificador de ventana secundaria, un valor entero usado por un control de cuadro de diálogo para notificar a su elemento primario sobre los eventos. La aplicación determina el identificador de ventana secundaria; debe ser único para todas las ventanas secundarias con la misma ventana primaria.

[in, optional] hInstance

Tipo: HINSTANCE

Identificador de la instancia del módulo que se va a asociar a la ventana.

[in, optional] lpParam

Tipo: LPVOID

Puntero a un valor que se va a pasar a la ventana a través de la estructura CREATESTRUCT (miembro lpCreateParams ) a la que apunta el parámetro lParam del mensaje WM_CREATE . Esta función envía este mensaje a la ventana creada antes de que se devuelva.

Si una aplicación llama a CreateWindow para crear una ventana de cliente MDI, lpParam debe apuntar a una estructura CLIENTCREATESTRUCT . Si una ventana de cliente MDI llama a CreateWindow para crear una ventana secundaria de MDI, lpParam debe apuntar a una estructura MDICREATESTRUCT . lpParam puede ser NULL si no se necesitan datos adicionales.

Devoluciones

Tipo: HWND

Si la función se ejecuta correctamente, el valor devuelto es un identificador de la nueva ventana.

Si se produce un error en la función, el valor devuelto es NULL. Para obtener información de error extendida, llame a GetLastError.

Valor devuelto

Ninguno

Observaciones

Antes de devolverlo, CreateWindow envía un mensaje WM_CREATE al procedimiento de ventana. Para ventanas secundarias, emergentes y superpuestas, CreateWindow envía WM_CREATE, WM_GETMINMAXINFO y WM_NCCREATE mensajes a la ventana. El parámetro lParam del mensaje de WM_CREATE contiene un puntero a una 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 la ventana creada es una ventana secundaria, su posición predeterminada está en la parte inferior del orden Z. Si la ventana creada es una ventana de nivel superior, su posición predeterminada está en la parte superior del orden Z (pero debajo de todas las ventanas más arriba a menos que la ventana creada esté más arriba).

Para obtener información sobre cómo controlar si la barra de tareas muestra un botón para la ventana creada, vea Administrar botones de la barra de tareas.

Para obtener información sobre cómo quitar una ventana, vea la función DestroyWindow .

Las siguientes clases de sistema predefinidas se pueden especificar en el parámetro lpClassName . Anote los estilos de control correspondientes que puede usar en el parámetro dwStyle .

Clase del sistema Significado
BUTTON Designa una pequeña ventana secundaria rectangular que representa un botón en el que el usuario puede hacer clic para activarlo o desactivarlo. Los controles de botón se pueden usar solos o en grupos, y se pueden etiquetar o aparecer sin texto. Los controles de botón suelen cambiar la apariencia cuando el usuario hace clic en ellos. Para obtener más información, consulte Botones.

Para obtener una tabla de los estilos de botón que puede especificar en el parámetro dwStyle , vea Estilos de botón.

COMBOBOX Designa un control que consta de un cuadro de lista y un campo de selección similar a un control de edición. Al usar este estilo, una aplicación debe mostrar el cuadro de lista en todo momento o habilitar un cuadro de lista desplegable. Si el cuadro de lista está visible, escribir caracteres en el campo de selección resalta la primera entrada del cuadro de lista que coincide con los caracteres tipados. Por el contrario, al seleccionar un elemento en el cuadro de lista se muestra el texto seleccionado en el campo de selección.

Para obtener más información, vea Cuadros combinados. Para obtener una tabla de los estilos de cuadro combinado que puede especificar en el parámetro dwStyle , vea Estilos de cuadro combinado.

EDIT Designa una ventana secundaria rectangular en la que el usuario puede escribir texto desde el teclado. El usuario selecciona el control y le da el foco del teclado haciendo clic o moviéndose a él presionando la tecla TAB. El usuario puede escribir texto cuando el control de edición muestra un símbolo de intercalación parpadeante; utilice el mouse para mover el cursor, seleccionar los caracteres que se van a reemplazar o colocar el cursor para insertar caracteres; o use la tecla BACKSPACE para eliminar caracteres. Para obtener más información, vea Editar controles.

Para obtener una tabla de los estilos de control de edición que puede especificar en el parámetro dwStyle , vea Editar estilos de control.

LISTBOX Designa una lista de cadenas de caracteres. Especifique este control siempre que una aplicación deba presentar una lista de nombres, como los nombres de archivo, desde los que el usuario puede elegir. El usuario puede seleccionar una cadena haciendo clic en ella. Se resalta una cadena seleccionada y se pasa un mensaje de notificación a la ventana primaria. Para obtener más información, vea Cuadros de lista.

Para obtener una tabla de los estilos de cuadro de lista que puede especificar en el parámetro dwStyle , vea Estilos de cuadro de lista.

MDICLIENT Designa una ventana de cliente MDI. Esta ventana recibe mensajes que controlan las ventanas secundarias de la aplicación MDI. Los bits de estilo recomendados son WS_CLIPCHILDREN y WS_CHILD. Especifique los estilos WS_HSCROLL y WS_VSCROLL para crear una ventana de cliente MDI que permita al usuario desplazar las ventanas secundarias de MDI a la vista.

Para obtener más información, vea Interfaz de varios documentos.

RichEdit Designa un control Microsoft Rich Edit 1.0. Esta ventana permite al usuario ver y editar texto con formato de caracteres y párrafos, y puede incluir objetos de modelo de objetos componentes (COM) incrustados. Para obtener más información, vea Controles de edición enriquecidos.

Para obtener una tabla de los estilos de control de edición enriquecidos que puede especificar en el parámetro dwStyle , vea Estilos de control de edición enriquecidos.

RICHEDIT_CLASS Designa un control Microsoft Rich Edit 2.0. Estos controles permiten al usuario ver y editar texto con formato de caracteres y párrafos, y pueden incluir objetos COM incrustados. Para obtener más información, vea Controles de edición enriquecidos.

Para obtener una tabla de los estilos de control de edición enriquecidos que puede especificar en el parámetro dwStyle , vea Estilos de control de edición enriquecidos.

SCROLLBAR Designa un rectángulo que contiene un cuadro de desplazamiento y tiene flechas de dirección en ambos extremos. La barra de desplazamiento envía un mensaje de notificación a su ventana primaria cada vez que el usuario hace clic en el control. La ventana primaria es responsable de actualizar la posición del cuadro de desplazamiento, si es necesario. Para obtener más información, vea Barras de desplazamiento.

Para obtener una tabla de los estilos de control de barra de desplazamiento que puede especificar en el parámetro dwStyle , vea Estilos de control de barra de desplazamiento.

STATIC Designa un campo de texto simple, un cuadro o un rectángulo que se usa para etiquetar, cuadro o separar otros controles. Los controles estáticos no toman ninguna entrada y no proporcionan ninguna salida. Para obtener más información, vea Controles estáticos.

Para obtener una tabla de los estilos de control estáticos que puede especificar en el parámetro dwStyle , vea Estilos de control estáticos.

 

CreateWindow se implementa como una llamada a la función CreateWindowEx , como se muestra a continuación.

#define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)

#define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)

#ifdef UNICODE
#define CreateWindow  CreateWindowW
#else
#define CreateWindow  CreateWindowA
#endif

Ejemplos

Para obtener un ejemplo, vea Usar clases de ventana.

Nota

El encabezado winuser.h define CreateWindow como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winuser.h (incluir Windows.h)

Consulte también

Acerca de la interfaz de varios documentos

Clases comunes de ventana de control

Conceptual

CreateWindowEx

DestroyWindow

EnableWindow

Otros recursos

Referencia

RegisterClass

RegisterClassEx

ShowWindow

WM_COMMAND

WM_CREATE

WM_GETMINMAXINFO

WM_NCCREATE

WM_PAINT

Windows