Simgeler Hakkında
Sistem, dosya, klasör, kısayol, uygulama ve belge gibi nesneleri temsil etmek için kullanıcı arabiriminin tamamında simgeler kullanır. Simge işlevleri, uygulamaların simgeleri oluşturmasına, yüklemesine, görüntülemesine, düzenlemesine, animasyon eklemesine ve yok etmesine olanak tanır. Dosya türleri için simgeleri belirtme hakkında bilgi için bkz. ExtractIcon.
Bu genel bakış aşağıdaki konular hakkında bilgi sağlar:
- Simgesi Etkin Nokta
- Simge Türleri
- Simge Boyutları
- Simgesi Oluşturma
- İkon Görüntüleme
- Simge Yok Etme
- Simgesi Yineleme
Simge Etkin Noktası
Simgedeki piksellerden biri, sistemin izlediği ve simgenin konumu olarak tanıdığı nokta olan etkin nokta olarak belirlenir. Simgenin etkin noktası genellikle simgenin ortasında bulunan pikseldir. Simge oluşturmak için CreateIconIndirect işlevini kullanırsanız, herhangi bir pikselin etkin nokta olmasını belirtebilirsiniz.
Simge Türleri
İşletim sistemi, herhangi bir uygulamanın istediği zaman kullanabilecekleri bir dizi standart simge sağlar. Yazılım geliştirme seti (SDK) üst bilgi dosyaları, sistem simgeleri için tanımlayıcılar içerir; tanımlayıcılar IDI_ ön ekiyle başlar.
Değer | Anlam |
---|---|
IDI_APPLICATION MAKEINTRESOURCE(32512) |
![]() |
IDI_ERROR MAKEINTRESOURCE(32513) |
![]() |
IDI_QUESTION MAKEINTRESOURCE(32514) |
![]() |
IDI_WARNING MAKEINTRESOURCE(32515) |
![]() |
IDI_INFORMATION MAKEINTRESOURCE(32516) |
![]() |
IDI_WINLOGO MAKEINTRESOURCE(32517) |
![]() |
IDI_SHIELD MAKEINTRESOURCE(32518) |
![]() |
Standart simgelerin önerilen kullanımı hakkında bilgi için bkz. Yönergeler.
Ayrıca, Windows Vista'dan başlayarak, SHGetStockIconInfo yöntemi aracılığıyla ek bir standart sistem kabuğu simgeleri kümesi kullanılabilir.
Özel simgeler belirli bir uygulamada kullanılmak üzere tasarlanmıştır ve herhangi bir tasarım olabilir. Kullanıcı dosyalardan özel simgeler yükleyebilir veya bunları çalışma zamanında oluşturabilir. Aşağıda birkaç özel simge vardır.
Simge Boyutları
Sistem dört simge boyutu kullanır:
- Sistem küçük
- Sistem büyük
- Kabuk küçük
- Kabuk büyük
- Jumbo (Windows Vista'da başlatılıyor)
sistemi küçük simgesi pencere başlığında görüntülenir.
Uygulamanız için tercih edilen simge boyutlarıyla ilgili öneriler için bkz. Simge ölçeklendirme.
Sistem küçük iconunun boyutunu değiştirmek için
- Denetim Masası'nda Görüntü'ne tıklayın ve ardından Görünüm sekmesine tıklayın.
- Resim Yazısı Düğmeleri listesinden Öğesi seçin, ardından Boyut alanını ayarlayın.
Sistem küçük simgesinin boyutunu almak için
- SM_CXSMICON ve SM_CYSMICONile GetSystemMetrics işlevini çağırın.
sistemi büyük simgesi çoğunlukla uygulamalar tarafından kullanılır, ancak Alt+Sekme iletişim kutusunda da görüntülenir. CreateIconFromResource, DrawIcon, ExtractAssociatedIcon, ExtractIcon, ExtractIconExve LoadIcon işlevlerinin tümü sistem büyük simgelerini kullanır. Sistem büyük simgesinin boyutu video sürücüsü tarafından tanımlandığından değiştirilemez.
Sistem büyük simgesinin boyutunu almak için
- GetSystemMetrics'i SM_CXICON ve SM_CYICONile çağır.
CreateIcon, CreateIconFromResourceEx, CreateIconIndirectve SHGetFileInfo işlevleri, sistem büyük olmayan boyutlardaki simgelerle çalışmak için kullanılabilir.
kabuğu küçük simgesi, Windows Gezgini'nde ve yaygın iletişim kutularında kullanılır. Şu anda bu varsayılan olarak sistemin küçük boyutuna ayarlanmıştır.
Küçük shell simgesinin boyutunu almak için
- Sistem görüntüsü listesine bir tanıtıcı almak için SHGetFileInfo işlevini
SHGFI_SHELLICONSIZE | SHGFI_SMALLICON
ile kullanın. - Ardından simge boyutunu almak için ImageList_GetIconSize işlevini çağırın.
Masaüstünde kabuk büyük simgesi kullanılır.
Büyük simgenin boyutunu değiştirmek için
- Denetim Masası'nda, Görüntü'ne tıklayın, ardından Görünüm sekmesine tıklayın,
- Öğesi listesinden Simgesi seçin, ardından Boyutu alanını ayarlayın (bu boyut kayıt defterinde, HKEY_CURRENT_USER\Control Panelaltında, Desktop\WindowMetrics\Shell Icon Size) depolanır).
- Plus! sekmesine tıklayın ve ardından Büyük Simgeler onay kutusunu işaretleyin.
Kabuk büyük simgesinin boyutunu öğrenmek için
- Sistem görüntüsü listesine bir tanıtıcı elde etmek için SHGetFileInfo işlevini, SHGFI_SHELLICONSIZE ile kullanın.
- Ardından simge boyutunu almak için ImageList_GetIconSize işlevini çağırın.
Pencere sınıfınızı kaydederken kullanılacak WNDCLASSEX yapısını doldururken, hIcon üyesini sistem büyük simgesine (genellikle 32x32) ve hIconSm üyesini sistem küçük simgesine (genellikle 16x16) ayarlayın. Sınıf simgeleri hakkında daha fazla bilgi için bkz. Sınıf Simgeleri.
Simge Oluşturma
Standart simgeler önceden tanımlanmıştır, bu nedenle bunları oluşturmak gerekli değildir. Standart bir simge kullanmak için bir uygulama, LoadImage işlevini kullanarak tutamacını edinebilir. simge tutamacı, standart veya özel bir simgeyi tanımlayan HICON türünde benzersiz bir değerdir.
Bir uygulama için özel simge oluşturmak için genellikle bir grafik uygulaması kullanır ve uygulamanın kaynak tanımı dosyasına ICON Resource eklersiniz. Çalışma zamanında, LoadIcon veya LoadImage çağırarak simge için bir tanıtıcı alabilirsiniz. Simge kaynağı, birkaç farklı görüntü cihazı için bir görüntü grubu içerebilir. LoadIcon ve LoadImage, mevcut görüntüleme cihazı için gruptan en uygun simgeyi otomatik olarak seçer.
Bir uygulama, ICONINFO yapısının içeriğine göre bir simge oluşturan CreateIconIndirect işlevini kullanarak çalışma zamanında özel bir simge de oluşturabilir. GetIconInfo işlevi, simgenin bit maskesi bitmap'i ve renk bitmap'i hakkında sıcak nokta koordinatları ve bilgileriyle yapıyı doldurur.
Uygulamalar özel simgeleri kaynak olarak uygulamalı ve çalışma zamanında simge oluşturmak yerine LoadIcon veya LoadImagekullanmalıdır. Simge kaynaklarının kullanılması cihaz bağımlılığını önler, yerelleştirmeyi basitleştirir ve uygulamaların simge şekillerini paylaşmasını sağlar.
CreateIconFromResourceEx işlevi, bir uygulamanın sistemin kaynaklarına göz atıp kaynak verilerine dayalı simgeler ve imleçler oluşturmasını sağlar. CreateIconFromResourceEx, diğer yürütülebilir dosyalardan veya DLL'lerden alınan ikili kaynak verilerini temel alan bir simge oluşturur. Bir uygulama, bu işlevden önce LookupIconIdFromDirectoryEx işlevine ve birkaç kaynak işlevine çağrılar yapmalıdır. LookupIconIdFromDirectoryEx, geçerli görüntü cihazı için en uygun simge verilerinin tanımlayıcısını döndürür.
Simge Görüntüsü
GetIconInfo işlevini kullanarak simgenin görüntüsünü alabilir ve DrawIconEx işlevini kullanarak çizebilirsiniz. Bir simgenin varsayılan görüntüsünü çizmek için, DrawIconExçağrısında DI_COMPAT bayrağını belirtin. DI_COMPAT bayrağını belirtmezseniz, DrawIconEx kullanıcının belirttiği görüntüyü kullanarak simgeyi çizer.
Sistem bir simge görüntülediğinde, .exe veya .dll dosyasından uygun simge görüntüsünü ayıklaması gerekir. Sistem simge görüntüsünü seçmek için aşağıdaki adımları kullanır:
- RT_GROUP_ICON kaynağını seçin. Bu tür birden fazla kaynak varsa, sistem kaynak şifresinde listelenen ilk kaynağı kullanır.
-
RT_GROUP_ICON kaynağından uygun RT_ICON görüntüsünü seçin. Birden fazla görüntü varsa, sistem bir görüntü seçmek için aşağıdaki ölçütleri kullanır:
- İstenen boyuta en yakın boyuta sahip resim seçilir.
- Bu boyutta iki veya daha fazla resim varsa, ekranın renk derinliğiyle eşleşen resim seçilir.
- Ekranın renk derinliğiyle tam olarak eşleşen resim yoksa, ekranın renk derinliğini aşmayan en büyük renk derinliğine sahip resim seçilir. Tümü renk derinliğini aşarsa, en düşük renk derinliğine sahip olan seçilir.
Not
Sistem, 8 veya daha fazla bpp'nin tüm renk derinliklerini eşit olarak ele alır. Bu nedenle, aynı kaynağa 16x16 256 renkli görüntü ve 16x16 16 renkli görüntü eklemenin bir avantajı yoktur; sistem yalnızca karşılaştığı ilk görüntüyü seçer. Ekran 8-bpp modundayken, sistem 256 renk simgesinin yerine 16 renkli bir simge seçer ve sistem varsayılan paletini kullanarak tüm simgeleri görüntüler.
Animasyonlu simge görüntülemek için aşağıdaki kod parçasında gösterildiği gibi statik bir denetim kullanın.
hIcon = LoadImage(NULL, "ico.ani", IMAGE_ICON, 0, 0, LR_LOADFROMFILE);
SendMessage( hStatic, STM_SETIMAGE, IMAGE_ICON, (LPARAM)(UINT)hIcon);
Simge Yok Etme
Bir uygulama, CreateIconIndirectişlevini kullanarakoluşturduğu bir simgeye artık ihtiyaç duymuyorsa simgeyi kaldırmalıdır. DestroyIcon işlevi simge tutamacını yok eder ve simge tarafından kullanılan tüm belleği serbest bırakır. Uygulamalar bu işlevi yalnızca CreateIconIndirectile oluşturulan simgeler için kullanmalıdır; diğer simgeleri yok etmek gerekli değildir.
Simge Yineleme
CopyIcon işlevi bir simge tutamacını kopyalar. Bu, bir uygulamanın veya DLL'nin başka bir modüle ait bir simge için kendi tanıtıcısını elde etmesine olanak tanır. Ardından, diğer modül serbest kalırsa, simgeyi kopyalayan uygulama simgeyi kullanmaya devam eder.
CopyImage işlevi, belirtilen kaynak simgesini temel alan yeni bir simge oluşturur. Yeni simge, kaynak simgeden daha büyük veya daha küçük olabilir.
Yürütülebilir (.exe) dosyalarındaki simge kaynaklarını ekleme, kaldırma veya değiştirme hakkında bilgi için bkz. Kaynaklar.
DuplicateIcon işlevi simgenin gerçek bir kopyasını oluşturur.