PDA

Ver la Versión Completa : GetUpdateRec


jorodgar
21-09-2005, 09:33:34
Leyendo la API de windows encontre que con la función GetUpdateRec se obtiene sólo el área de imagen a ser actualizada. Alguien puede mostrarme un ejemplo de uso :(


Gracias.

jorodgar
21-09-2005, 14:47:05
Mi idea es saber cual es la región de pantalla que cambia para poder enviarlo a un servidor y con ello hacer un control remoto. Gracias.

delphi.com.ar
21-09-2005, 15:11:55
Fíjate si esto puede ayudarte: http://www.clubdelphi.com/foros/showthread.php?t=23774

Saludos!

jorodgar
21-09-2005, 15:58:27
ya habia leido ese hilo antes de poner el mio. Mi duda es la misma que se plantea alli. Y no se como llamar a esa función ni como recoger valores. Sigo investigando..

jmariano
21-09-2005, 17:12:49
Por lo que he leído y por los ejemplos que he visto por ahí, decirte que la función se utiliza dentro del evento WM_PAINT y sirve, como comentaste, para recuperar el área que necesita ser actualizada, además de si es necesario actualizarla.


procedure TMiControl.WMPAINT(Var Msg: TWMPaint);
var
R: TRect;
begin
{ La siguiente sentencia comprueba si un área necesita ser actualizada
y, si es así, almacenará en la variable 'R' las coordenadas de dicho área }
if GetUpdateRect(Handle, R, False) then
begin
// Operación de dibujo para el control
end;
end;


(El último parámetro de "GetUpdateRect" sirve para indicar si el fondo del área ha de ser borrado. Si es "False" el fondo es conservado)

Espero haberte aclarado un poquito!

Saludos!

delphi.com.ar
21-09-2005, 17:20:29
ya habia leido ese hilo antes de poner el mio. Mi duda es la misma que se plantea alli. Y no se como llamar a esa función ni como recoger valores.
Yo me refería precisamente mi comentario en ese hilo, para obtener los mensajes de repintado.

Saludos!

jorodgar
21-09-2005, 18:33:02
Funciona bien pero para la ventana del formulario y lo que deseo es que me dijera si es posible el trozo de pantalla que ha cambiado.
Lo he intentado capturando el handle de la pantalla pero no funciona.
Sigo investigando. Os pongo el código :


procedure TForm1.WMPAINT(Var Msg: TWMPaint);
var
R: TRect;
p1,p2:TPoint;
c: TCanvas;
dc:HDC;
begin
{get the screen dc}
dc := GetDc(0);
if (dc = 0) then exit;
if GetUpdateRect(dc, R, True) then
begin
if IsRectEmpty(R) then exit;
p1:=R.TopLeft;
p2:=R.BottomRight;
Edit5.text:=IntTostr(p1.x);
Edit6.text:=IntTostr(p1.y);
Edit8.text:=IntTostr(p2.x);
Edit9.text:=IntTostr(p2.y);
end;
end;

delphi.com.ar
21-09-2005, 19:14:25
Funciona bien pero para la ventana del formulario y lo que deseo es que me dijera si es posible el trozo de pantalla que ha cambiado.
Lo he intentado capturando el handle de la pantalla pero no funciona.

No va a funcionar... haceme caso, probá lo que sugerí en ese hilo.

Saludos!

jorodgar
21-09-2005, 19:31:09
Entonces me temo que me constara más de lo que tenia pensado.
Gracias por tu ayuda. :)