Delen via


Resourcebestandsindelingen

In deze sectie wordt de indeling beschreven van het binaire resourcebestand dat de resourcecompilator maakt op basis van de inhoud van het resourcedefinitiebestand. Dit bestand heeft meestal de extensie .res. De linker herformatteert het RES-bestand in een resourceobjectbestand en koppelt het vervolgens aan het uitvoerbare bestand van een toepassing.

Een binair resourcebestand bestaat uit een aantal samengevoegde resourcevermeldingen. Elke vermelding bestaat uit een resourceheader en de gegevens voor die resource. Een resourceheader is DWORD-uitgelijnd in het bestand en bestaat uit het volgende:

  • Een DWORD- die de grootte van de resourceheader bevat
  • Een DWORD- die de grootte van de resourcegegevens bevat
  • Het resourcetype
  • De resourcenaam
  • Aanvullende informatie over resources

De RESOURCEHEADER structuur beschrijft de indeling van deze header. De gegevens voor de resource volgen de resourceheader en zijn specifiek voor elk type resource. Sommige resources maken ook gebruik van een resourcespecifieke groepsheaderstructuur voor informatie over een groep resources.

Resources voor acceleratortabellen

Een acceleratortabel is één resourcevermelding in een resourcebestand. Er is geen groepskoptekst. Een ACCELTABLEENTRY structuur beschrijft elke vermelding in de acceleratortabel. Er zijn meerdere acceleratortabellen toegestaan.

Cursor- en pictogrambronnen

Het systeem verwerkt elk pictogram en elke cursor als één bestand. Deze worden echter opgeslagen in .res-bestanden en in uitvoerbare bestanden als een groep RT_GROUP_ICON pictogramresources of een RT_GROUP_CURSOR groep cursorresources. De bestandsindelingen van pictogram- en cursorbronnen zijn vergelijkbaar. In het .res-bestand volgt een resourcegroepheader alle afzonderlijke pictogram- of cursorgroeponderdelen.

De groepskoptekst voor zowel pictogram- als cursorresources bestaat uit een NEWHEADER- structuur plus een of meer RESDIR- structuren. Er is één RESDIR- structuur voor elk pictogram of elke cursor. De groepskoptekst bevat de informatie die een toepassing nodig heeft om het juiste pictogram of de juiste cursor te selecteren die moet worden weergegeven. Zowel de groepskoptekst als de gegevens die voor elk pictogram of elke cursor in de groep worden herhaald, hebben een vaste lengte. Hierdoor kan de toepassing willekeurig toegang krijgen tot de informatie.

De indeling van elk RT_ICON-pictogram of RT_CURSOR cursorresourceonderdeel lijkt sterk op de indeling van het bestand .ico/.cur. Elke afbeelding wordt opgeslagen in een BITMAPINFO structuur, gevolgd door de dib-bits (color device-independent bitmap) van het pictogram XOR masker. De monochrome DIB bits van het AND masker volgen de kleur-DIB bits. Belangrijk verschil tussen cursors en pictogrammen is dat cursors een LOCALHEADER- structuur hebben met een hotspot die is ingevoegd vóór de bitmapgegevens, terwijl pictogrammen dat niet doen.

Omdat windows Vista RT_ICON pictogram of RT_CURSOR cursorresource mogelijk PNG-gecomprimeerde afbeeldingsgegevens bevat.

Dialoogvenster Resources

Een dialoogvenster is ook één resourcevermelding in het resourcebestand. Het bestaat uit één DLGTEMPLATE dialoogvenster kopstructuur plus één DLGITEMTEMPLATE structuur voor elk besturingselement in het dialoogvenster. De DLGTEMPLATEEX en de DLGITEMTEMPLATEEX structuren beschrijven de indeling van uitgebreide dialoogvensterresources.

Lettertypebronnen

Lettertypen worden in het resourcebestand opgeslagen als een groep resources. Afzonderlijke lettertypen vormen een lettertypegroep. Een FONT-instructie resourcedefinitie-instructie in de . RC-bestand definieert elk lettertype. Elk afzonderlijk lettertype in de resource bestaat uit de volledige inhoud van het gerelateerde .fnt-bestand. Een FONTGROUPHDR structuur volgt alle afzonderlijke lettertypeonderdelen in het RES-bestand.

Lettertypebronnen worden niet toegevoegd aan de resources van een specifieke toepassing. In plaats daarvan worden ze normaal gesproken toegevoegd aan uitvoerbare bestanden met de extensie .fon. Deze bestanden zijn meestal alleen resource-DLL's in plaats van toepassingen.

Een menuresource bestaat uit een MENUHEADER structuur gevolgd door een of meer NORMALMENUITEM- of POPUPMENUITEM structuren, één voor elk menu-item in de menusjabloon. De MENUEX_TEMPLATE_HEADER en de MENUEX_TEMPLATE_ITEM structuren beschrijven de indeling van uitgebreide menubronnen.

Resources voor berichtentabel

Een berichttabel is een resource die opgemaakte tekst bevat voor weergave als een foutbericht of in een berichtvak. De hoofdstructuur in een berichttabelresource is de MESSAGE_RESOURCE_DATA structuur.

Versiebronnen

De hoofdstructuur in een versieresource is de VS_FIXEDFILEINFO structuur. Aanvullende structuren omvatten de VarFileInfo structuur voor het opslaan van taalgegevens en StringFileInfo voor door de gebruiker gedefinieerde tekenreeksgegevens. Alle tekenreeksen in een versieresource hebben de Unicode-indeling. Elk informatieblok wordt uitgelijnd op een DWORD- grens.