Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   GetUpdateRec (https://www.clubdelphi.com/foros/showthread.php?t=25376)

jorodgar 21-09-2005 09:33:34

GetUpdateRec
 
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.

Código Delphi [-]
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

Cita:

Empezado por jorodgar
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 :

Código Delphi [-]
 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

Cita:

Empezado por jorodgar
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. :)


La franja horaria es GMT +2. Ahora son las 00:14:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi