Ricerca e caricamento di 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 funzioneLoadResourceusa l'handle di risorsa restituito da FindResource per caricare la risorsa in memoria. Dopo che un'applicazione carica una risorsa usando LoadResource, il sistema scaricherà la memoria associata solo quando tutti i riferimenti al relativo modulo vengono liberati tramite FreeLibrary. Le applicazioni che devono accedere ripetutamente alla stessa o a più risorse all'interno di un particolare modulo possono riscontrare rallentamenti delle prestazioni a causa del mapping di memoria eseguito nelle ripetute chiamate a LoadLibrary e FreeLibrary. 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 della tabella dei messaggi. | Nessuna azione necessaria. |
LoadAccelerators | Carica una tabella di tasti di scelta rapida. | DestroyAcceleratorTable |
LoadBitmap | Carica una risorsa bitmap. | DeleteObject |
LoadCursor | Carica una risorsa di cursore. | DestroyCursor |
LoadIcon | Carica una risorsa di icona. | DistruggiIcona |
CaricaImmagine | Carica un'icona, un cursore o una bitmap. | DestroyIcon, DestroyCursor, DeleteObject |
LoadMenu | Carica una risorsa di menu. | DestroyMenu |
LoadString | Carica un elemento della tabella delle stringhe. | Nessuna azione necessaria. |
Si notino le funzioni di rilascio 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 al termine dell'applicazione verranno rilasciate automaticamente dal sistema.