Te propongo un sencillo ejercicio:
Código Delphi
[-]procedure TForm1.Button1Click(Sender: TObject);
Var I : integer;
begin
I := 0;
while i < 100 Do
Begin
Edit1.Text := IntToStr(I);
inc(i);
sleep(20);
End;
Prueba a ejecutar ese código con y sin comentar la línea //Application.ProcessMessages;
Trata de mover tu ventana cuando se está ejecutando el código, tanto de un modo u otro.
Como observarás, cuando comentas la línea, tu ventana queda "colapsado" de tal modo que hasta que no finalice el bucle, no hará otra cosa. Sin embargo, si el programa
(procesa los mensajes), hace tanto lo que está dentro del bucle como cualquier otra operación requerida por el programa.
Tradicionalmente Windows siempre ha trabajado procesando grandes colas de mensajes. Cada programa windows, envía y recibe en varios mensajes o
eventos para realizar cualquier operación. y estos mensajes son los que en este caso hacemos que se actualicen o nó.
En C supongo que el planteamiento es hacer un bucle que controle las operaciones y mensajes que procesa el programa, por ejemplo:
Pinta la ventana
Pregunta si se ha pulsado una tecla
etc....
Las funciones asimilables para este proceso además de un bucle serían
Código Delphi
[-] TranslateMessage
DispatchMessage
Mas o menos es como lo entiendo yo...