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 .
[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 |
---|---|
|
Dibuja un marco (definido en la descripción de clase de la ventana) alrededor de la ventana. |
|
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. |
|
Oculta la ventana. |
|
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 ). |
|
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. |
|
Conserva la posición actual (omite los parámetros x e y ). |
|
No cambia la posición de la ventana del propietario en el orden Z. |
|
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. |
|
Igual que la marca SWP_NOOWNERZORDER . |
|
Impide que la ventana reciba el mensaje WM_WINDOWPOSCHANGING . |
|
Conserva el tamaño actual (omite los parámetros cx y cy ). |
|
Conserva el orden Z actual (omite el parámetro hWndInsertAfter ). |
|
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 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
Conceptual
Referencia