Kaynakları Bulma ve Yükleme
Bir kaynağı kullanmadan önce uygulamanın belleğe yüklemesi gerekir. FindResource ve FindResourceEx işlevleri modülde bir kaynak bulur ve ikili kaynak verilerine tanıtıcı döndürür. FindResource türüne ve adına göre bir kaynak bulur. FindResourceEx kaynağı türe, ada ve dile göre bulur. Bu konudaki FindResource hakkındaki bilgiler FindResourceExiçin de geçerlidir.
LoadResource işlevi, kaynağı belleğe yüklemek için FindResource tarafından döndürülen kaynak tanıtıcısını kullanır. Bir uygulama LoadResourcekullanarak bir kaynağı yükledikten sonra, sistem ancak modülüne yapılan tüm başvurular FreeLibraryaracılığı ile serbest bırakıldığında ilişkili belleği serbest bırakır. Belirli bir modüldeki aynı veya birçok kaynağa tekrar tekrar erişmesi gereken uygulamalar, yinelenen LoadLibrary ve FreeLibrary çağrıları yoluyla bellek eşlemesi nedeniyle performans cezalarına maruz kalabilir. Uygulamalar kaynaklara artık gerek kalmayıncaya kadar tek bir modül tanıtıcısı depolamalı ve ardından FreeLibraryçağırmalıdır. Bir modül bellekten kaldırıldıktan sonra kaynak tanıtıcıları geçersiz hale gelir.
Bir uygulama, herhangi bir kaynak türünü bulmak ve yüklemek için FindResource ve LoadResource kullanabilir, ancak bu işlevler şu durumlardan yalnızca birinde kullanılmalıdır:
- Uygulama var olan kaynağa özgü bir işlevi kullanarak kaynağa erişemediğinde.
- Uygulamanın sonraki işlev çağrıları için kaynağa ikili veri olarak erişmesi gerektiğinde.
Mümkün olduğunda, bir uygulama bunun yerine kaynakları tek bir çağrıda bulmak ve yüklemek için aşağıdaki kaynağa özgü işlevlerden birini kullanmalıdır:
Fonksiyon | Eylem | Kaynağı kaldırmak için |
---|---|---|
FormatMessage | İleti tablosu girdisi yükler ve biçimlendirır. | Eyleme gerek yoktur. |
YükHızlandırıcılar | Hızlandırıcı tablosunu yükler. | DestroyAcceleratorTable |
LoadBitmap | Bit eşlem kaynağını yükler. | DeleteObject |
LoadCursor | İmleç kaynağını yükler. | DestroyCursor |
LoadIcon | Simge kaynağını yükler. | DestroyIcon |
LoadImage | Simge, imleç veya bit eşlem yükler. | DestroyIcon, DestroyCursor, DeleteObject |
MenüYükle | Menü kaynağını yükler. | DestroyMenu |
LoadString | Dize tablosu girdisini yükler. | Eyleme gerek yoktur. |
Yukarıdaki tabloda yer alan yayın işlevlerine dikkat edin. Sonlandırmadan önce, bir uygulama uygun işlevleri kullanarak hızlandırıcı tabloları, bit eşlemler, imleçler, simgeler ve menüler tarafından kullanılan belleği serbest bırakmalıdır.
FindResource ve LoadResource aracılığıyla yüklenen kaynaklarla ilişkilendirilmiş bellek, FreeLibraryçağrısıyla modül kaldırıldıktan sonra serbest bırakılır. Uygulama sonlandırma sırasında kaldırılmış durumda kalan tüm kaynaklar sistem tarafından otomatik olarak serbest bırakılır.