Condividi tramite


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.