Salve sto progettando un programma di carte (il famoso Klondike con risolutore automatico).
Vi spiego subito il mio problema con il codice:
inter.mossa() è una funzione che restituisce true fintantoché il computer è in grado di eseguire delle mosse. Questa funzione se restituisce true modifica il "tavolo", ovvero l'organizzazione delle carte nel tavolo.codice:while(inter.mossa()){ Sleep(300); RedrawWindow(win.getHWND(),NULL,NULL,RDW_UPDATENOW); }
L'intento mio era di vedere queste mosse in tempo reale (ecco il perché del ritardo Sleep), quindi aggiornando di volta in volta il contenuto della finestra.
RedrawWindow genera il messaggio WM_PAINT che io prevedo nella funzione di callback, che si occupa di disegnare il "tavolo" e quindi mostrare la situazione attuale.
Sono sicuro che WM_PAINT viene chiamato durante il ciclo, perché se minimizzo la finestra e ingrandisco, vedo che il contenuto del tavolo cambia. Ma se la finestra rimane attiva non avviene alcun cambiamento.
C'è qualche funzione per fare ciò? Mi viene da pensare che l'HDC della finestra cambi, ma ci vuole ancora qualche funzione che aggiorni la finestra con il proprio HDC.