Compartir a través de


Función DeferWindowPos (winuser.h)

Novedades la estructura de posición de varias ventanas especificada para la ventana especificada. A continuación, la función devuelve un identificador a la estructura actualizada. La función EndDeferWindowPos usa la información de esta estructura para cambiar la posición y el tamaño de varias ventanas simultáneamente. La función BeginDeferWindowPos crea la estructura .

Sintaxis

HDWP DeferWindowPos(
  [in]           HDWP hWinPosInfo,
  [in]           HWND hWnd,
  [in, optional] HWND hWndInsertAfter,
  [in]           int  x,
  [in]           int  y,
  [in]           int  cx,
  [in]           int  cy,
  [in]           UINT uFlags
);

Parámetros

[in] hWinPosInfo

Tipo: HDWP

Identificador de una estructura de varias ventanas: estructura de posición que contiene información de tamaño y posición para una o varias ventanas. BeginDeferWindowPos devuelve esta estructura o la llamada más reciente a DeferWindowPos.

[in] hWnd

Tipo: HWND

Identificador de la ventana para la que se almacena información de actualización en la estructura. Todas las ventanas de una ventana múltiple: la estructura de posición debe tener el mismo elemento primario.

[in, optional] hWndInsertAfter

Tipo: HWND

Identificador de la ventana que precede a la ventana posicionada en el orden Z. Este parámetro debe ser un identificador de ventana o uno de los valores siguientes. Este parámetro se omite si la marca SWP_NOZORDER está establecida en el parámetro uFlags .

Valor Significado
HWND_BOTTOM
((HWND)1)
Places la ventana en la parte inferior del orden Z. Si el parámetro hWnd identifica una ventana superior, la ventana pierde su estado superior y se coloca en la parte inferior de todas las demás ventanas.
HWND_NOTOPMOST
((HWND)-2)
Places la ventana por encima de todas las ventanas no superiores (es decir, detrás de todas las ventanas superiores). Esta marca no tiene ningún efecto si la ventana ya es una ventana no superior.
HWND_TOP
((HWND)0)
Places la ventana en la parte superior del pedido Z.
HWND_TOPMOST
((HWND)-1)
Coloca la ventana encima de todas las ventanas no superiores. La ventana mantiene su posición superior incluso cuando está desactivada.

[in] x

Tipo: int

Coordenada X de la esquina superior izquierda de la ventana.

[in] y

Tipo: int

Coordenada Y de la esquina superior izquierda de la ventana.

[in] cx

Tipo: int

El nuevo ancho de la ventana, en píxeles.

[in] cy

Tipo: int

El nuevo alto de la ventana, en píxeles.

[in] uFlags

Tipo: UINT

Combinación de los valores siguientes que afectan al tamaño y la posición de la ventana.

Valor Significado
SWP_DRAWFRAME
0x0020
Dibuja un marco (definido en la descripción de clase de la ventana) alrededor de la ventana.
SWP_FRAMECHANGED
0x0020
Envía un mensaje WM_NCCALCSIZE a la ventana, incluso si no se cambia el tamaño de la ventana. Si no se especifica esta marca, WM_NCCALCSIZE solo se envía cuando se cambia el tamaño de la ventana.
SWP_HIDEWINDOW
0x0080
Oculta la ventana.
SWP_NOACTIVATE
0x0010
No activa la ventana. Si no se establece esta marca, la ventana se activa y se mueve a la parte superior del grupo superior o no superior (según la configuración del parámetro hWndInsertAfter ).
SWP_NOCOPYBITS
0x0100
Descarta el contenido del área cliente. Si no se especifica esta marca, el contenido válido del área de cliente se guarda y se copia en el área cliente después de cambiar el tamaño o la posición de la ventana.
SWP_NOMOVE
0x0002
Conserva la posición actual (omite los parámetros x e y ).
SWP_NOOWNERZORDER
0x0200
No cambia la posición de la ventana del propietario en el orden Z.
SWP_NOREDRAW
0x0008
No vuelve a dibujar los cambios. Si se establece esta marca, no se vuelve a pintar nada. Esto se aplica al área cliente, al área no cliente (incluida la barra de título y las barras de desplazamiento) y a cualquier parte de la ventana primaria que se haya descubierto como resultado del movimiento de la ventana. Cuando se establece esta marca, la aplicación debe invalidar o volver a dibujar explícitamente todas las partes de la ventana y la ventana primaria que necesiten volver a dibujar.
SWP_NOREPOSITION
0x0200
Igual que la marca SWP_NOOWNERZORDER .
SWP_NOSENDCHANGING
0x0400
Impide que la ventana reciba el mensaje WM_WINDOWPOSCHANGING .
SWP_NOSIZE
0x0001
Conserva el tamaño actual (omite los parámetros cx y cy ).
SWP_NOZORDER
0x0004
Conserva el orden Z actual (omite el parámetro hWndInsertAfter ).
SWP_SHOWWINDOW
0x0040
Muestra la ventana.

Valor devuelto

Tipo: HDWP

El valor devuelto identifica la estructura actualizada de varias ventanas: posición. El identificador devuelto por esta función puede diferir del identificador pasado a la función. El nuevo identificador que devuelve esta función debe pasarse durante la siguiente llamada a la función DeferWindowPos o EndDeferWindowPos .

Si no hay suficientes recursos del sistema disponibles para que la función se realice correctamente, el valor devuelto es NULL. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Si se produce un error en una llamada a DeferWindowPos , la aplicación debe abandonar la operación de posicionamiento de ventana y no llamar a EndDeferWindowPos.

Si no se especifica SWP_NOZORDER , el sistema coloca la ventana identificada por el parámetro hWnd en la posición situada después de la ventana identificada por el parámetro hWndInsertAfter . Si hWndInsertAfter es NULL o HWND_TOP, el sistema coloca la ventana hWnd en la parte superior del orden Z. Si hWndInsertAfter se establece en HWND_BOTTOM, el sistema coloca la ventana hWnd en la parte inferior del orden Z.

Todas las coordenadas de las ventanas secundarias son relativas a la esquina superior izquierda del área cliente de la ventana primaria.

Una ventana se puede crear en la parte superior estableciendo hWndInsertAfter en la marca HWND_TOPMOST y asegurándose de que la marca de SWP_NOZORDER no está establecida, o estableciendo la posición de la ventana en el orden Z para que esté por encima de las ventanas superiores existentes. Cuando una ventana no superior se hace superior, sus ventanas propiedad también devienen superiores. Sin embargo, sus propietarios no cambian.

Si no se especifica la marca SWP_NOACTIVATE ni SWP_NOZORDER (es decir, cuando la aplicación solicita que se active simultáneamente una ventana y su posición en el orden Z cambie), el valor especificado en hWndInsertAfter solo se usa en las siguientes circunstancias:

  • Ni la marca HWND_TOPMOST ni HWND_NOTOPMOST se especifican en hWndInsertAfter.
  • La ventana identificada por hWnd no es la ventana activa.
Una aplicación no puede activar una ventana inactiva sin llevarla a la parte superior del orden Z. Una aplicación puede cambiar la posición de una ventana activada en el orden Z sin restricciones, o puede activar una ventana y, a continuación, moverla a la parte superior de las ventanas superior o no superior.

Una ventana superior ya no está más arriba si se cambia de posición a la parte inferior (HWND_BOTTOM) del orden Z o después de cualquier ventana que no sea superior. Cuando una ventana superior se convierte en no superior, sus propietarios y sus ventanas propiedad también se convierten en ventanas no superiores.

Una ventana que no sea superior puede ser propietaria de una ventana superior, pero no viceversa. Cualquier ventana (por ejemplo, un cuadro de diálogo) propiedad de una ventana superior se convierte en una ventana superior para asegurarse de que todas las ventanas propiedad permanezcan por encima de su propietario.

Requisitos

Requisito Value
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)
Library User32.lib
Archivo DLL User32.dll
Conjunto de API ext-ms-win-ntuser-window-l1-1-4 (introducido en Windows 10, versión 10.0.14393)

Consulte también

BeginDeferWindowPos

Conceptual

EndDeferWindowPos

Referencia

ShowWindow

Windows