Mesaj în sticlă

Delphi, ai un mesaj de manevrat!

Una dintre cheile programării tradiționale Windows este gestionarea mesaje trimis de Windows către aplicații. Mai simplu spus, un mesaj este câteva informații trimise dintr-un loc în altul. În cea mai mare parte, Delphi ușurează manipularea mesajelor prin utilizarea de evenimente, un eveniment este de obicei generat ca răspuns la un mesaj Windows trimis unei aplicații.

Totuși, într-o zi, poate doriți să prelucrați unele mesaje neobișnuite, cum ar fi: CM_MOUSEENTER care se întâmplă (este postat de Windows) când cursorul mouse-ului intră în zona client a unei componente (sau a unui formular).

Gestionarea mesajelor pe cont propriu necesită câteva tehnici suplimentare de programare, acest articol este aici pentru a ne ajuta să găsim calea cea bună prin râul de mesaje și să obținem informațiile necesare.

Strategii de manipulare a mesajelor Windows cu Delphi

  • Trageți o fereastră: Fără bară de titlu! Cum poți trage o astfel de fereastră? Este ușor și distractiv: să facem o mișcare a formularului Delphi făcând clic (și glisând) în zona clientului. Ideea principală este să puneți mâna pe mesajul Windows wm_NCHitTest.
  • Cum să trimiteți informații (șir, imagine, înregistrare) între două aplicații Delphi (WM_CopyData): Aflați cum să trimiteți mesajul WM_CopyData între două aplicații Delphi pentru a schimba informații și a comunica două aplicații. Codul sursă însoțitor demonstrează cum să trimiteți un șir, o înregistrare (tip de date complexe) și chiar o grafică către o altă aplicație.
  • Windows Sticky: Această strategie vă permite să anulați formularele Delphi la marginile ecranului desktop.
  • Monitorizarea modificărilor registrului: trebuie să fiți notificat despre modificările atributelor sau conținutului unei chei de registru specificate? Apoi sunteți gata pentru acest set de instrumente cu codul dvs. Delphi.
  • Trimiterea de mesaje către aplicații care nu sunt ferestre: Această strategie este utilizată pentru a trimite mesaje (semnale) către aplicații fără ferestre, utilizând AllocateHWND și DefWindowProc. Ar trebui să înțelegeți ce face Delphi în fundal pentru a intercepta mesajele Windows, cum puteți să vă scrieți propriul instrument de gestionare a mesajelor pentru o aplicație cu ferestre și cum să obțineți un identificator de mesaj unic pe care îl puteți utiliza în siguranță în aplicațiile dvs. Există, de asemenea, o mică eroare în procedura Delphi DeallocateHWND pe care o puteți remedia pe parcurs.
  • Controlul numărului de instanțe de aplicație: în acest articol veți învăța cum să „activați o dată-rulare” o aplicație Delphi care poate verifica instanța anterioară (în curs). De-a lungul procesului, vor fi discutate mai multe tehnici de implementare a unui astfel de control; precum și cum să aduci aplicația care rulează deja în prim plan, dacă un utilizator încearcă să o ruleze „încă o dată”. Până la sfârșitul articolului, veți avea un cod de copiere pentru a controla comportamentul mai multor instanțe ale aplicației: cu opțiunea de a limita numărul de instanțe care se execută.
  • Cum să gestionați schimbarea de timp a sistemului folosind Codul Delphi: Dacă trebuie să reacționați atunci când data de sistem s-a schimbat, puteți gestiona mesajul Windows WM_TimeChange.
  • Cum să desenați text personalizat pe o bară de legendă a unui formular Delphi: Dacă doriți să adăugați un text personalizat pe bara de legendă a unui formular, fără a schimba proprietatea de legendă a formularului, trebuie să gestionați un mesaj Windows special: WM_NCPAINT (împreună cu WM_NCACTIVATE ).
  • Cum să afișați Sugestii pentru elementele de meniu: Prin proiectarea (Windows), în aplicațiile Delphi, indicii alocați elementelor de meniu nu se afișează în fereastra popup (când mouse-ul trece peste un meniu).
  • Obțineți, setați și gestionați modurile dispozitivelor de afișare (Rezoluția ecranului și profunzimea culorii): Această strategie vă permite să modificați setările modului de afișare Windows (rezoluție și profunzimea culorii) din codul Delphi. De asemenea, puteți gestiona mesajul Windows WM_DISPLAYCHANGE trimis la toate ferestrele când s-a modificat rezoluția de afișare.
  • Obțineți URL-ul curent din IE: Există o tactică Delphi pentru a prelua adresa URL completă a tuturor instanțelor Internet Explorer deschise.
  • Detectarea și prevenirea închiderii Windows: Puteți utiliza Delphi pentru a anula programatic acțiunea de închidere a Windows.
  • Afișați un dialog cu parolă: să presupunem că aveți un tip de aplicație critic pentru date în care nu doriți ca un utilizator neautor să lucreze cu datele. Ce se întâmplă dacă trebuie să afișați o casă de dialog cu parolă * înainte * aplicația este restabilită pentru a vă asigura că un utilizator autorizat îl accesează.
  • Eliminați Constrângerea Windows pe dimensiunea minimă a formei: Prin proiectarea Windows, un formular (fereastră) are o restricție de dimensiune care stabilește înălțimea minimă a formei pe înălțimea barei de legendă și lățimea la 112 pixeli (118 în XP temă).
  • Cum să detectați evenimentul OnClose (OnPopDown) al unui TPopupMenu: Din păcate, TPopupMenu nu expune un eveniment pe care îl puteți gestiona care se va declanșa atunci când meniul se închide - fie după ce un utilizator a selectat un element din meniu sau a activat un alt element UI..
  • Urmărirea mesajelor trimise către o aplicație: „... Delphi suprafețează evenimentul OnMessage pentru obiectul Aplicație. Se presupune că gestionarul de evenimente OnMessage vă permite să capturați fiecare mesaj trimis către aplicația dvs. ..."