Ricerca e caricamento delle risorse
Prima di usare una risorsa, un'applicazione deve caricarla in memoria. Le funzioni FindResource e FindResourceEx trovano una risorsa in un modulo e restituiscono un handle ai dati delle risorse binarie. FindResource individua una risorsa in base al tipo e al nome. FindResourceEx individua la risorsa in base al tipo, al nome e alla lingua. Le informazioni su FindResource in questo argomento si applicano anche a FindResourceEx.
La funzione LoadResource usa l'handle di risorsa restituito da FindResource per caricare la risorsa in memoria. Dopo che un'applicazione carica una risorsa usando LoadResource, il sistema scarica la memoria associata solo quando tutti i riferimenti al modulo vengono liberati tramite FreeLibrary. Le applicazioni che devono accedere ripetutamente alla stessa o a molte risorse all'interno di un determinato modulo possono comportare penali per le prestazioni a causa del mapping della memoria in caso di chiamate Di LoadLibrary e FreeLibrary ripetute. Le applicazioni devono archiviare un singolo handle di modulo finché le risorse non sono più necessarie e quindi chiamare FreeLibrary. Dopo che un modulo viene scaricato dalla memoria, gli handle di risorse diventano non validi.
Un'applicazione può usare FindResource e LoadResource per trovare e caricare qualsiasi tipo di risorsa, ma queste funzioni devono essere usate solo in una di queste situazioni:
- Quando l'applicazione non può accedere alla risorsa usando una funzione specifica della risorsa esistente.
- Quando l'applicazione deve accedere alla risorsa come dati binari per le chiamate di funzione successive.
Quando possibile, un'applicazione deve usare invece una delle funzioni specifiche delle risorse seguenti per trovare e caricare le risorse in una sola chiamata:
Funzione | Azione | Per rimuovere la risorsa |
---|---|---|
FormatMessage | Carica e formatta una voce di tabella messaggi. | Non è richiesta alcuna azione. |
LoadAccelerators | Carica una tabella di tasti di scelta rapida. | DestroyAcceleratorTable |
LoadBitmap | Carica una risorsa bitmap. | DeleteObject |
LoadCursor | Carica una risorsa cursore. | DestroyCursor |
LoadIcon | Carica una risorsa icona. | DestroyIcon |
Loadimage | Carica un'icona, un cursore o una bitmap. | DestroyIcon, DestroyCursor, DeleteObject |
LoadMenu | Carica una risorsa di menu. | DestroyMenu |
LoadString | Carica una voce di tabella stringa. | Non è richiesta alcuna azione. |
Si notino le funzioni di versione nella tabella precedente. Prima di terminare, un'applicazione deve rilasciare la memoria occupata da tabelle acceleratori, bitmap, cursori, icone e menu usando le funzioni appropriate.
La memoria associata alle risorse caricate tramite FindResource e LoadResource verrà rilasciata dopo che il modulo è stato scaricato da una chiamata a FreeLibrary. Tutte le risorse che rimangono scaricate alla chiusura dell'applicazione verranno rilasciate automaticamente dal sistema.