2011-03-11 6 views
5

Uygulamamda LoadIconWithScaleDown() kullanarak simgeler oluşturuyorum. Tercih edilen işlev mevcut değilse, CreateIconFromResourceEx()'a da geri dönüyorum.LoadIconWithScaleDown ile yapmış olsaydım DestroyIcon'u aramam gerekir mi?

DestroyIcon() devletler için belgeleri:

Aşağıdaki fonksiyonları ile oluşturulan ikonlar ve imleçler için DestroyIcon çağırmak gereklidir: CreateIconFromResourceEx (LR_SHARED bayrağı olmadan denilen ise), CreateIconIndirect, ve CopyIcon. , paylaşılan simgesini yok etmek için bu işlevi kullanmayın. Paylaşılan bir simge, yüklü olduğu modülün bellekte kaldığı sürece, olarak geçerlidir. Aşağıdaki işlevler paylaşılan bir simgesi edinir.

  • LoadIcon
  • LOADIMAGE
  • CopyImage (eğer kullanırsanız LR_COPYRETURNORG bayrağı ve Himage parametre paylaşılan simgedir)
  • (eğer LR_SHARED bayrağını kullanırsanız) CreateIconFromResource
  • CreateIconFromResourceEx

Not (eğer LR_SHARED bayrağı kullanıyorsanız): Ben CreateIconFromResourceEx() için LR_SHARED geçen değilim; belki de yapmalıyım.

Bilmek istediğim, LoadIconWithScaleDown() ile yapılan simgeler için DestroyIcon() numaralı telefonu aramam gerekir mi?

+2

Belgelendirilmemiş, ağrılı. Evet oyu vermeliydim. Basitçe fonksiyon aksi halde kullanılamaz. Simge aslında paylaşıldığında DestroyIcon'un FALSE değerini döndürmesi olasılığı vardır, bu yüzden bunu bombalamayın. –

+0

@Hans Tavsiyeniz için çok teşekkürler! –

cevap

2

Evet diyeceğim çünkü geri döndüğünüz HICON dokümantasyona göre paylaşılmıyor gibi görünüyor. Windows açıkça, kolları paylaşılan simgeleri yok etmenizi istemiyor, ancak buradaki durum böyle değil ve LR_SHARED alan ancak bayrağı geçmeyen başka bir işleve geri dönüyorsanız, bu işleminizin simgenin sahibi olduğu anlamına gelir. Kullandığın zaman onu kullanmalı ve onu yok etmelisin.

+0

Teşekkürler. Bu benim sezgemin de bana anlattığı şeydi. Windows simgeleri ne zaman paylaşır? Ve kiminle ya da ne ile? –

+0

Örneğin, mesaj kutularında görünen simgeler (uyarı, hata, ünlem, vb.) Paylaşılır. Bunlara bir tanıtıcı edinebilir ve bunları varsayılan ileti kutusunun dışındaki yerlerde kullanabilirsiniz. – kprobst

+0

ve simgeler diğer işlemlere geçirilebilir mi? –

İlgili konular