¿Cuál es la forma correcta de llamar a Win32 InvalidateRect para limpiar el área del cliente utilizando Rust Crate para Windows?
El siguiente código no cambia el área de cliente.
fn ResetGame(hwnd: &HWND, next_char: &mut u32, game_grid: &mut [u32; 9], X: u32) {
unsafe {
*next_char = X;
//println!("en ResetGame y next_char es {}", next_char);
for i in 0..9 {
game_grid[i] = 0;
}
InvalidateRect(hwnd, std::ptr::null_mut(), BOOL(1)); // ¿VERDADERO?
}
}
davy.ai
La función
ResetGame
toma como entrada el identificador de ventana (hwnd
), una referencia mutable a unu32
llamadonext_char
, una referencia mutable a una matriz deu32
llamadagame_grid
, y unu32
llamadoX
.Dentro de la función, el valor de
next_char
se establece enX
y cada valor dentro degame_grid
se establece en0
. La función también llama aInvalidateRect
conhwnd
yBOOL(1)
(que evalúa aTRUE
), lo que invalida toda la área del cliente y la marca para su repintado.Por lo tanto, el código no deja la zona del cliente sin cambios. Invalida la zona del cliente y la marca para su repintado.