visszahívások
funkció EnumWindowsProc (Hw: HWnd; lp: lParam): Boole; stdcall; EnumWindows () függvény használatára a példát a tervezet hívás- Back.dpr, kódja, amely látható példa 6.9.
Listing 6.9. MainForm.pas - példa visszahívási
Ablakok, üzenetek, SysUtils, osztályok, grafika, vezérlők,
Forms, Dialogs, StdCtrls, ComCtrls;
WindowName, // ablak neve
WindowClass: String; // osztály neve az ablak
Megadott = osztály (TForm) lbWinInfo: TListBox; btnGetWinInfo: TButton; hdWinInfo: THeaderControl;
eljárás btnGetWinInfoClick (Sender: TObject);
eljárás FormDestroy (Sender: TObject);
eljárás lbWinInfoDrawItem (Kontroll: TWinControl;
Index: Integer; Téglalap: TRect; Állam: TOwnerDrawState);
THeaderControl; Szakasz: THeaderSection);
funkció EnumWindowsProc (Hw: HWnd;
AMainForm: Megadott): Boole; stdcall;
regisztrálja az aktív ablakok a rendszerben.>
WinName, CName: array [0..144] char;
befejezetlen Windows rendszerleíró.>
Eredmény: = True; GetWindowText (Hw, WinName, 144); // A szöveg az aktuális ablak
GetClassName (Hw, CName, 144); // Az ablak nevét osztály
tele értékei ablakok és osztály neveket. majd
ez az objektum ki a tömb objektumok ListBox1 lista.
Később ezek az értékek jelennek meg a listában.>
A WindowInfo do kezdődik
eljárás TMainForm.btnGetWinInfoClick (Sender: TObject);
Azt kérte, hogy minden ablak.>
eljárás TMainForm.FormDestroy (Sender: TObject);
i: = 0 lbWinInfo.Items.Count - 1 do
eljárás TMainForm.lbWinInfoDrawItem (Kontroll: TWinControl;
Index: Integer; Téglalap: TRect; Állam: TOwnerDrawState);
Index szám alatt. kimeneti pozíciójának minden sorban meghatározzuk
A TWindowInfo (lbWinInfo.Items.Objects [Index]) nem kezdődik
Hossz (WindowName), téglalap, dt_Left vagy dt_VCenter);
HeaderControl1 hogy meghatározza a kimeneti helyzet a következő
Rect.Left: = Rect.Left + hdWinInfo.Sections [0] .Width;
Hossz (WindowClass), téglalap, dt_Left vagy dt_VCenter);
eljárás TMainForm.hdWinInfoSectionResize (HeaderControl: THeaderControl; szakasz: THeaderSection);
lbWinInfo.Invalidate; // Újrarajzolás a ListBox1.
Ebben az alkalmazásban EnumWindows () függvényt, így a nevét az összes felső szintű ablakok, és a nevét az osztályokat, majd helyezzük egy nem szabványos felhívni objektumok listáját a fő formája. A fő formája használja ezt a nem szabványos felhívni lista ablak megjelenítéséhez nevét és az ablak osztály külön oszlopban. De mielőtt megérteni, hogyan hozhat létre egyéni listákat az oszlopok, úgy a módszerek használatával a visszahívás funkciót.
használata visszahívás
Listing 6.9 definícióját mutatja EnumWindowsProc () eljárás, amelyben az első paraméter az ablak fogantyúja. A második paraméter AUC adatok összekapcsolásával, amely lehetővé teszi, hogy továbbítja bármilyen értéket, amelynek mérete megegyezik a mérete az egész adattípus a felhasználó által meghatározott.
Emlékezzünk, hogy az eseménykezelő OnDestroy fő formája kell szabadítani minden esetben TWindowInfo osztályban.
Az alkalmazás futtatása, és a gombra kattintva formájában láthatjuk a padlón
chennuyu minden ablak információkat a lista formájában.
Bemutatás egyedi listáját
Nevei ablakok és az osztály nevét minden felső szintű ablak jelenik meg külön oszlopban az objektum neve lbWinInfo. Ez - egy példánya TListBox, ahol a stílus tulajdonság értéke lbOwnerDraw. Ha ezt a stílust TListBox.OnDrawItem esemény akkor generálódik, ha egy komponens TListBox req Dimo megjeleníti a következő adatok elem. A teljes felelősség a térképészeti adatokat rendelve a programozó, amely lehetővé teszi számára, hogy kiválassza a módot.