Ver Mensaje Individual
  #2  
Antiguo 24-02-2008
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Reputación: 22
ArdiIIa Va por buen camino
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);
//Application.ProcessMessages;
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...
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita