Ikonkezelők létrehozása
A fájltípus gyakran egyéni ikonnal van társítva, hogy tagjai könnyen felismerhetők legyenek a Windows Intézőben. Az egyéni ikon fájltípushoz való hozzárendelésének legegyszerűbb módja az ikon fájljának regisztrálása. Az ily módon regisztrált ikonok azonban a fájltípus minden tagjára azonosak lesznek. Sokkal rugalmasabban rendelhet ikonokat a fájltípus tagjaihoz egy ikonkezelőimplementálásával.
Az ikonkezelő a Shell bővítménykezelőjének egy típusa, amely lehetővé teszi az ikonok dinamikus hozzárendelését egy fájltípus tagjaihoz. Minden alkalommal, amikor megjelenik egy ilyen típusú fájl, a Shell lekérdezi a kezelőt a megfelelő ikonhoz. Az ikonkezelők például különböző ikonokat rendelhetnek a fájltípus különböző tagjaihoz, vagy módosíthatják az ikont a fájl aktuális állapota alapján.
A Shell-bővítménykezelők implementálásának és regisztrálásának általános eljárásait a Rendszerhéj-bővítménykezelők létrehozása ismerteti. Ez a dokumentum az ikonkezelőkre jellemző megvalósítási szempontokra összpontosít.
- Ikonkezelők implementálása
- Az IExtractIcon interface implementálása
- Ikonkezelők regisztrálása
- Kapcsolódó témakörök
Előírás
1. lépés: Ikonkezelők implementálása
Az összes Shell-bővítménykezelőhöz hasonlóan az ikonkezelők is folyamatban lévő összetevő-objektummodell-(COM-) objektumok, amelyek DLL-ként vannak implementálva. A IUnknownmellett két adaptert is exportálniuk kell: IPersistFile és IExtractIcon.
A Shell inicializálja a kezelőt a IPersistFile felületen keresztül. Ezen a felületen kéri le a kezelő osztályazonosítóját (CLSID), és megadja a fájl nevét. A művelet többi része az IExtractIcon interfészen keresztül történik. A Shell-bővítménykezelők implementálásának általános ismertetését, beleértve az IPersistFile felületet is, tekintse meg Shell-bővítménykezelőklétrehozása című témakört. A dokumentum fennmaradó része az IExtractIcon felület implementálását ismerteti.
2. lépés: Az IExtractIcon felület implementálása
Az interfész inicializálása után a Rendszerhéj a kezelő IExtractIcon felületével kéri le a megfelelő ikont. Az interfésznek két módszere van: IExtractIcon::GetIconLocation és IExtractIcon::Extract.
Az ikonokat a fájlrendszerben található helyük azonosítja. A rendszer meghívja az IExtractIcon::GetIconLocation metódust az adatok lekéréséhez. Állítsa a szIconFile paramétert a fájlnévre. Ha a fájlban több ikon is található, állítsa piIndex az ikon indexére. Rendelje hozzá a megfelelő értékeket a két jelölőváltozóhoz. Ha nem szeretne fájlnevet megadni, vagy ha nem szeretné, hogy a Shell kinyerje az ikont, állítsa be a GIL_NOTFILENAME jelzőt a pwFlags paraméterben. Nem kell értéket hozzárendelnie szIconFile, de a kezelőnek ikonfogópontokat kell megadnia, amikor a Shell meghívja IExtractIcon::Extract.
Ha egy fájlnevet ad vissza, a Rendszerhéj általában megpróbálja betölteni az ikont a gyorsítótárából. A gyorsítótárazott ikon betöltésének megakadályozásához állítsa be a GIL_DONTCACHE jelzőt a pwFlags paraméterben. Ha egy gyorsítótárazott ikon nincs betöltve, a Rendszerhéj ezután meghívja IExtractIcon::Extract az ikonfogópont lekéréséhez.
Ha IExtractIcon::GetIconLocationadott meg egy fájlt és indexet, azokat a rendszer IExtractIcon::Extract a pszFile és nIconIndex paramétereknek továbbítja. Ha meg van adva egy fájlnév, a kezelő S_FALSE adhat vissza, hogy a Shell kinyerje az ikont. Ellenkező esetben a kezelőnek nagy és kis ikonokat kell kinyernie vagy más módon létrehoznia, és hozzá kell rendelnie a HICON-leírókat a phiconLarge és phiconSmall paraméterekhez. A Shell hozzáadja az ikonokat a saját gyorsítótárához, hogy felgyorsítsa a handler további hívásait.
3. lépés: Ikonkezelők regisztrálása
Amikor statikusan regisztrál egy ikont egy fájltípushoz, létre kell hoznia egy DefaultIcon alkulcsot a fájltípus ProgID-ja alatt. Az alapértelmezett érték az ikont tartalmazó fájlra van állítva. Ikonkezelő regisztrálásához továbbra is rendelkeznie kell az DefaultIcon alkulcsával, de az alapértelmezett értéknek "%1" értékre kell állítania. Adjon hozzá egy IconHandler alkulcsot a ProgID-alkulcs Shellex alkulcsához, és állítsa be alapértelmezett értékét a kezelő CLSID GUID azonosítójának sztring formájára. A Shell-bővítménykezelők regisztrálásának általános ismertetését Shell-bővítménykezelők létrehozásacímű témakörben talál.
Az alábbi példa módosítja az Az ikonok testreszabása beállításjegyzék-bejegyzését, hogy a .myp fájltípus mostantól egy helyi menükezelőt használjon a statikusan definiált ikon helyett.
HKEY_CLASSES_ROOT
.myp
(Default) = MyProgram.1
MyProgram.1
(Default) = MyProgram Application
DefaultIcon
(Default) = %1
Shellex
IconHandler
(Default) = {The handler's CLSID GUID}
Kapcsolódó témakörök