Gestionarea proprietăților ferestrelor

Uită-te la Fig. 3.10, unde este afișată imaginea completă a desktop-ului.

Gestionarea proprietăților ferestrelor

Fig. 3.10. Ferestre în fereastră

Creați un nou proiect în Delphi și plasați butonul Start din formular. Apăsând acest buton, scriem un apel către funcția familială EnunWindows care enumeră toate ferestrele:







Funcția EnurrWi ndowsProc, care va fi apelată pentru fiecare fereastră găsită, ar trebui să arate astfel:

Aici verificăm dacă fereastra este vizibilă. Dacă da, se numește funcția SetParent, care stabilește fereastra părinte. Ca primul parametru al funcției, trebuie să specificați fereastra a cărei părinte vrem să o schimbăm, iar cea de-a doua specifică noul părinte. Al doilea parametru folosește un pointer în fereastra principală a programului nostru. Astfel, tot ceea ce este pe ecran este transferat în interiorul ferestrei specificate.

Să îmbunătățim exemplul și să jucăm ceva mai mult cu ferestrele celorlalți. Plasați pe formular un buton cu titlul Eliminați meniul, evenimentul OnClick care va apela următoarea funcție:

Aceasta începe căutarea ferestrelor, dar acum pentru fiecare fereastră găsită, se va apela o altă funcție numită EnumWi ndowsProcl. Această funcție arată astfel:

Această funcție verifică, de asemenea, vizibilitatea ferestrei găsite. Dacă este vizibilă, se apelează funcția de setare a meniului SetMenu. Această funcție trebuie să treacă la următorii doi parametri:

din meniul care trebuie setat. Specificați 0, ceea ce echivalează cu ștergerea meniului.

Rulați programul și faceți clic pe butonul Eliminați meniul. În toate ferestrele, unde este utilizat meniul Windows standard, meniul va dispărea. În Delphi 7, pachetul de programe MS Office și alte produse utilizează meniuri non-standard în stilul XP. De fapt, acestea sunt panouri cu butoane, care, la apăsare, scad meniul, astfel încât nu se va mai întâmpla nimic în aceste programe.







Să modificăm codul și, dimpotrivă, să setăm meniul. Pentru a face acest lucru, plasați componenta TMainMenu pe formular și creați toate elementele din acesta. Vă puteți gândi la orice, iar manipulanții nu trebuie să fie puși, doar nume.

Acum puteți schimba funcția SetMenu la următoarele:

Astfel, pentru toate ferestrele, un meniu este instalat de la componenta TMai nMenu. Uită-te la Fig. 3.11, unde se afișează screenshot-ul programului Delphi. Fiecare fereastră are un meniu propriu unde nu era disponibil anterior. Dar cel mai interesant este că meniul a apărut pe desktop (în partea de sus) și chiar pe bara de activități.

După cum puteți vedea, este foarte ușor să configurați meniul. Dar reușirea la lucru nu este o sarcină simplă. Sistemul nu are dispozitive de tratare a evenimentelor pentru elementele din acest meniu, iar agenții care lucrează în programul nostru nu vor fi chemați.

În mod similar, puteți modifica proprietățile ferestrei. Pentru aceasta, funcția Get-WindowLong este apelată în acest fel:

Gestionarea proprietăților ferestrelor

Fig. 3.11. Imagine de ecran Delphi cu noul meniu

Funcția "Implicit" poate schimba diferite setări ale ferestrei.Funcția are următorii parametri:

• parametrul de setat. Valoarea specificată depinde de al doilea parametru.

În cazul nostru, primul parametru specifică fereastra găsită. Al doilea parametru indică faptul că trebuie să modificați stilul implicit al ferestrei. Dar în al treilea parametru există un design foarte interesant:

SEEV_DOLLIND (nr.614b_5YTE) - NUL_SAPTURE

Funcția SetWinclowLong modifică proprietatea specificată a ferestrei. Primul parametru transmite un indicator la fereastra găsită, iar în al doilea parametru tipul proprietății de interes. În al doilea parametru al funcției SetWindowLong, puteți specifica aceleași valori ca în al doilea parametru al funcției GetWindowLong.

În acest caz, obținem proprietățile standard ale ferestrei și scăpăm din aceste proprietăți antetul (W5_CAPTURE). Ca urmare, dacă fereastra avea un antet, o eliminăm. Desigur, după executarea acestui cod, titlul nu poate merge nicăieri și rămâne pe loc, dar nu va fi exact recepționat la evenimentele utilizatorilor.

Codul sursă al exemplului examinat aici este pe CD-ROM-ul din directorul "Dezinstalare".







Articole similare

Trimiteți-le prietenilor: