尋找和載入資源
使用資源之前,應用程式必須將它載入記憶體中。 FindResource 和 FindResourceEx 函式會在模組中尋找資源,並傳回二進位資源數據的句柄。 FindResource 依類型和名稱找出資源。 FindResourceEx 依類型、名稱和語言找出資源。 本主題中 FindResource 的相關信息也適用於 FindResourceEx。
LoadResource 函式會使用 findResource 傳回的資源句柄, 將資源載入記憶體中。 在應用程式使用 LoadResource載入資源之後,系統只有在所有對其模組的參考都通過 FreeLibrary釋放時,才會卸除相關的記憶體。 需要在特定模組內重複存取相同或許多資源的應用程式,可能會因為重複 LoadLibrary 和 FreeLibrary 呼叫而產生效能損失。 應用程式應該儲存單一模組句柄,直到不再需要資源,然後呼叫 FreeLibrary。 從記憶體卸除模組之後,資源控制碼會變成無效。
應用程式可以使用 FindResource 和 LoadResource 來尋找和載入任何類型的資源,但這些函式應該只用於下列其中一種情況:
- 當應用程式無法使用現有的資源特定函式來存取資源時。
- 當應用程式必須存取資源做為後續函數調用的二進位數據時。
可能的話,應用程式應該改用下列其中一個資源特定的函式,在一次呼叫中尋找和載入資源:
功能 | 行動 | 移除資源 |
---|---|---|
格式化訊息 | 載入並格式化訊息數據表項目。 | 不需要採取任何動作。 |
加載加速器 | 載入加速器表。 | DestroyAcceleratorTable |
LoadBitmap | 載入點圖資源。 | 刪除物件 |
LoadCursor | 載入游標資源。 | DestroyCursor |
載入圖標 | 載入圖示資源。 | DestroyIcon |
LoadImage | 載入圖示、游標或點陣圖。 | DestroyIconDestroyCursorDeleteObject |
載入選單 | 載入功能表資源。 | DestroyMenu |
LoadString | 載入字串表項目。 | 不需要採取任何動作。 |
請注意上表中的釋放函式。 在終止之前,應用程式應該使用適當的函式釋放加速鍵表、點陣圖、游標、圖示和功能表所佔用的記憶體。
一旦模組被 FreeLibrary呼叫卸除之後,透過 FindResource 和 LoadResource 載入的資源相關聯的記憶體就會被釋放。 系統會自動釋放任何在應用程式終止時仍未載入的資源。