HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Képernyővédő alkalmazás készítése


Képernyővédő 2. rész

Példaprogram letöltése

8970 bájt

Tovább folytatva múlt héten elkezdett képernyővédő alkalmazásunkat, ezen a héten most megvalósítjuk azt a funkciót, mely lehetővé teszi, hogy alkalmazásunk a Képernyő tulajdonságok (Display properties) - Képernyővédő (Screen saver) ablakába is kirajzolja a képernyővédőnket. Így a felhasználó még alkalmazásunk kiválasztása előtt tájékozódhat, hogy miként néz ki, ha a mi képernyővédőnk fut.
Az elkészült programnak az EXE kiterjesztését át kell neveznünk SCR-re. Erre megkérhetjük a Delphi-t is, ha a Project - Options menüpont kiválasztása után megjelenő dialóg ablakban az Application lapon az Output settings mezőnél a Target file extension-hoz beírjuk az SCR szöveget. Ekkor a létrejövő programunk automatikusan SCR kiterjesztést kap.

Ezt a programot a C:\Windows, illetve C:\WinNT könyvtárba kell elhelyeznünk. Szintén a Project - Options menüpont kiválasztása után a Directories/Conditionals lapon az Output directory mezőbe beírhatjuk, hogy a fordításkor hová kerüljön az elkészült program állománya. Ha itt megadjuk a fenti könyvtárat, akkor a Project1.scr állomány rögtön odakerül.

A demó bemutatásához a lényegi munkát már elvégeztük: múlt héten létrehoztuk azt az algoritmust, mely az animációt kirajzolja. Ez a Draw nevű eljárás, mely a Unit1.pas-ban található. Amikor indul a képernyővédőnk, akkor is ez lesz az az eljárás, melyet a kirajzoláshoz meghívunk. Mivel most ugyanazt kell kirajzolni csak nem teljes képernyő méretben, így az eljárásunk változtatás nélkül megfelel.

Amikor a Windows számára a demó kirajzolása szükséges, akkor hívja meg a programunkat a /P paraméterrel. Amint az a mellékelt példa project forrásában is látható, ilyenkor nem indítjuk el a programunkat az Applicaiton.Run-al, sőt még a Form1 létrehozására sincs szükségünk, mivel adott már az az ablak, ahová a kirajzolást el kell végeznünk. Ez az ablak a Windows Képernyő tulajdonságok ablaka.

Létrehoztunk egy Demo nevű eljárást melyet itt meghívunk. Ez végzi el a Draw meghívását.
…
    3: begin//preview
      Application.Initialize;
      Demo(StrToInt(s2));
    end;
…
Amikor a programunkat a Windows a /P paraméterrel hívja, akkor második paraméterként átad egy számot is. Ez a szám a Képernyő tulajdonságok ablakának azonosítója (Handle). Ezt az értéket adjuk át a Demo eljárásunknak.

Az eljárásban először is vizsgáljuk, hogy a paraméterként kapott ablak látható-e már. Ha igen, akkor lekérdezzük annak méretét a GetWindowRect függvénnyel. Erre szükségünk van, hiszen a Draw eljárásunknak tudnia kell, hogy mekkora a rendelkezésre álló terület a rajzoláshoz. A rajzolás elvégzéséhez létrehozunk egy TCanvas objektumot, majd meghívjuk egy ciklusban a Draw eljárást a megfelelő paraméterekkel a kirajzolás elvégzéséhez. A ciklus mindaddig fut, amíg a Képernyő tulajdonságok ablaka látható. Mivel a Draw-ot folyamatosan kell hívni, így egy Sleep eljárás hívásával késleltetjük a programunk futását, különben a Draw túl gyorsan lenne egymás után meghívva. Amikor a képernyővédőnk "éles" helyzetben fut, akkor egy TTimer gondoskodik az időzítésről, ahogyan ezt láthattuk a múlt heti cikkben.
procedure Demo(Owner: integer);
var
  r: TRect;
  c: TCanvas;
begin
  while not IsWindowVisible(Owner) do begin
    Application.ProcessMessages;
  end;
  GetWindowRect(Owner, r);
  c:=TCanvas.Create;
  c.Handle:=GetDC(Owner);
  while IsWindowVisible(Owner) do begin
    Sleep(10);
    Application.ProcessMessages;
    Draw(c, r.Right-r.Left+1, r.Bottom-r.Top+1);
  end;
  c.Free;
end;



Cikksorozat



Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2000 évkönyv 526. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |