winuser.h


RedrawWindow

La función RedrawWindow actualiza el rectángulo o región especificado en el área de cliente de una ventana.

Sintaxis

BOOL RedrawWindow(
    HWND hWnd,               // manipulador de ventana
    CONST RECT *lprcUpdate,  // dirección de estructura con el rectángulo de actualización
    HRGN hrgnUpdate,         // manipulador de región de actualización
    UINT flags               // array de banderas de retrazado
   );

Parámetros:

hWnd: identifica la ventana a redibujar. Si este parámetro es NULL, se actualiza la ventana del escritorio.

lprcUpdate: apunta a una estructura RECT que contiene las coordenadas del rectángulo de actualización. Este parámetro se ignora si el parámetro hrgnUpdate identifica una región.

hrgnUpdate: identifica una región de actualización. Si los parámetros hrgnUpdate y lprcUpdate son ambos NULL, se añade toda el área de cliente a la región de actualización.

flags: especifica una o más banderas de retrazado. Este parámetro puede ser una combinación de banderas que invalidan o validan una ventana, controla el repintado, y controlan que´ventanas se ven afectadas por RedrawWindow.

Las siguientes banderas se usan para invalidar la ventana:

Bandera (invalidación) Descripción
RDW_ERASE Hace que la ventana reciba un mensaje WM_ERASEBKGND cuando sea repintada. La bandera RDW_INVALIDATE también debe ser especificada, de otro modo RDW_ERASE no tiene efectos.
RDW_FRAME Hace que cualquier parte del área de no cliente de la ventana que se interseccione la región de actualización reciba un mensaje WM_NCPAINT. La bandera RDW_INVALIDATE debe ser especificada también, de otro modo, RDW_FRAME no tiene efectos. El mensaje WM_NCPAINT no se suele eviar durante la ejecución de RedrawWindow salvo que se especifique RDW_UPDATENOW o RDW_ERASENOW.
RDW_INTERNALPAINT Hace que se postee un mensaje WM_PAINT a la ventana aunque ninguna parte de la ventana sea ínválida.
RDW_INVALIDATE Invalida lprcUpdate o hrgnUpdate (sólo uno puede ser no nulo). Si ambos son NULL, se invalida la ventana completa.

Las banceras siguientes se usan para validar la ventana:

Bandera (validación) Descripción
RDW_NOERASE Elimina cualquier mensaje WM_ERASEBKGND pendiente.
RDW_NOFRAME Elimina cualquier mensaje WM_NCPAINT pendiente. Esta bandera debe usarse con RDW_VALIDATE y generalmente se usa con RDW_NOCHILDREN. RDW_NOFRAME debe usarse con cuidado, ya que puede hacer que partes de una ventana se pinted de forma inapropiada.
RDW_NOINTERNALPAINT Elimina cualquier mensaje WM_PAINT interno pendiente. Esta bandera no afecta a mensajes WM_PAINT resultado de un área de actualización no nula.
RDW_VALIDATE Valida lprcUpdate o hrgnUpdate (sólo una puede ser no nula). Si ambas son NULL, se valida toda la ventana. Esta bandera no afecta a los mensajes WM_PAINT internos.

Las siguientes banderas controlan cunado ocurre un repintado. RedrawWindow no repintará a no ser que se especifique una de estas banderas.

Bandera Descripción
RDW_ERASENOW Hace que las ventanas afectadas (las especificadas por las banderas RDW_ALLCHILDREN y RDW_NOCHILDREN) reciban los mensajes WM_NCPAINT y WM_ERASEBKGND, si es necesario, antes de que la función regrese. Los mensajes WM_PAINT se reciben en su momento habitual.
RDW_UPDATENOW Hace que las ventanas afectadas (las especificadas por las banderas RDW_ALLCHILDREN y RDW_NOCHILDREN) reciban los mensajes WM_NCPAINT, WM_ERASEBKGND y WM_PAINT, si es necesario, antes de que la función regrese.

por defecto, las ventanas afectadas por RedrawWindow dependen de si la ventana dada tiene el estilo WS_CLIPCHILDREN. Las ventanas hijas que no tengan el estilo WS_CLIPCHILDREN no se ven afectadas; las ventanas no-WS_CLIPCHILDREN se validan o invalidan recursivamente hasta que se encuentre una ventana WS_CLIPCHILDREN. Las siguientes banderas controlan qué ventanas resultan afectadas por RedrawWindow:

Bandera Descripción
RDW_ALLCHILDREN Incluye las ventanas hija, si existen, en la operación de repintado.
RDW_NOCHILDREN Excluye las ventanas hija, si existen, de la operación de repintado.

Valor de retorno

Si la función tiene éxito, el valor de retorno es distinto de cero.

Si la función falla, el valor de retorno es cero. Para obtener información adicional sobre el error, llamar a GetLastError.

Observaciones

Cuando se usa RedrawWindow para invalidar parte de la ventana del escritorio, esa ventana no recibe un mensaje WM_PAINT. Para repintar el escritorio, la aplicación debe usar la bandera RDW_ERASE para generar un mensaje WM_ERASEBKGND.