Se încarcă imagini sau cursorul din res-fișier - surse delphi faq

Încărcați imagini și cursoare de RES-fișiere

Imaginile și cursoare pot fi stocate în fișierul de resurse (RES) și legabil (svyazavatsya) pentru a EXE fișiere pe care aplicația. RES-fișiere pot fi create cu Editor Delphi instrumente de imagine și Atelier de resurse Borland, incluse în livrare Delphi RAD Pack. Imagini cursoare și stocate în RES-fișiere (după ambalarea lor în EXE sau DLL) pot fi extrase cu ajutorul funcțiilor API și LoadBitmap LoadCursor respectiv.

Funcția API LoadBitmap este definită după cum urmează:

Primul parametru trebuie să conțină un mâner la modulul (EXE sau DLL), conținând fișier RES de la care doriți să partajați. Delphi păstrează un mâner de rulare EXE-fișier într-o variabilă globală numită Hinstance. În exemplul următor, presupunem că modulul din care încercăm să încărcați o imagine - aplicația. Cu toate acestea, unitatea ar putea fi un alt EXE- sau de fișier DLL. Următorul exemplu încarcă o imagine numită BITMAP_1 de RES-fișier legat în EXE fișierele că aplicația:

Există un dezavantaj de a folosi un LoadBitmap apel API: LoadBitmap încă un apel API pentru Windows 3.0, și încarcă o imagine doar ca DDB (dependente de dispozitiv Bitmap). Acest lucru poate cauza probleme cu o paletă de culori atunci când încărcarea DIB (Dispozitiv Independent Bitmap) din RES-fișier. Codul de mai jos poate fi folosit pentru a extrage DIB-urile RES-fișiere. Acest cod încarcă imaginea ca o resursă comună, trece-l la un flux, iar apoi face apelul Delphi LoadFromStream, pune în aplicare în mod automat paleta.

Funcția API LoadCursor este definită după cum urmează:

Apoi se adaugă următoarele două linii pentru a forma o tratare a evenimentului OnCreate:

sau puteți modifica unul dintre cursoarele standard de Delphi așa cum se arată mai jos (constantele de cursor sunt descrise în articol de ajutor on-line cursoare Property):

Notă: În situația normală, orice resurse cursoare trebuie să fie îndepărtate cu un DeleteCursor, cu toate acestea, în Delphi nu este necesară deoarece Delphi se elimină toate cursoarele din cursoarele matrice.