De viktigaste XFolder klassöverlagringarna är:
I den betydelse som beskrevs på föregående sida, är XFolderklass en avkomling till WPFolderklassen. Därför kan den göra allting en vanlig mapp kan. Som en ny funktion adderas för mappar, menyalternativ, snabbkommandon, namn i fönster etc.
Genom att använda polymorfism redefinierar XFolder vissa WPFolder metoder, som beskrivs nedan.
Emellertid, XFolder är då registrerad hos Skrivbordet som en WPFolder ersättning, vilket innebär att Skrivbordet använder XFolderklassen som sin standard mappklass istället för WPFolder. När detta sker, är WPFolder klassen inte längre använd direkt utan bara genom sin ersättnings (och avkomlings) klass XFolder. Titta i "Skrivbordsklasser" i "Introduktion" sektionen för mer.
Några av WPFolder metoderna som XFolderklassen överskuggar är (detta kommer förmodligen bara intressera programmerare):
Eftersom XFolder påverkar menyer mycket, är detta en av de viktigaste metoder som XFolder överskuggar. I denna metod anropar XFolder först föräldraklassens (WPFolder∩s) wpModifyPopupMenu för att få alla standard menyalternativ adderade till objektmenyn.
Den söker sedan efter XFolders Konfigurationsmapp (som måste ha objekt ID <XFOLDER_CONFIG>) och fyller den osynligt. Den går igenom alla objekt där, adderar undermenyer och menyalternativ till menyn. Om konfigurationsmappen inte hittas, visas ett meddelande och en tom mapp med den nyss nämnda ID:n skapas på Skrivbordet.
Samma sak görs för "Mappinnehåll" funktionerna och "favorit" mapparna. Dessa undermenyer fylls bara med objekt efter de har öppnats av användaren; det görs genom att fånga upp WM_INITMENU meddelandet i den underklassade mappramfönsterproceduren (se nedan). XFolder underklassar också dessa undermenyfönster (och bara dessa) för att kunna måla ikoner och för att fånga upp musknapp 2 för att öppna en mapp.
(Notera att "underklassning" här har ingenting att göra med Skrivbordsklasser, utan det är Presentation Manager terminologi för att använda en annan meddelandeprocedur för ett existerande fönster för att kunna fånga upp vissa PM meddelanden för det fönstret. Dessa görs genom att använda WinSubclassWindow API.)
XFolder modifierar också olika andra menyer (som "Sortera" undermenyn)
med denna metod, om de Globala Inställningarna tillåter detta
och adderar andra menyalternativ, om dessa är valda i de Globala Inställningarna.
wpMenuItemSelected: Denna anropas av Skrivbordet närhelst
ett menyalternativ är valt av användaren.
XFolder kontrollerar om en av dess egna (variabla) menyalternativ har valts; om så är fallet, finner den det motsvarande objektet i Konfigurationsmappen och öppnar det. Om detta objekt är av WPProgram klass utförs tidigare beskrivna trick. Om objektet är en mall, oavsett Skrivbordsklass, så öppnas den inte utan XFolder skapar ett nytt objekt från den i nuvarande mappen (via wpCreateFromTemplate).
Om det valda alternativet är ett från "mappinnehåll" undermenyn, så öppnas helt enkelt motsvarande objekt.
Om något av de andra menyalternativen som XFolder adderar till menyn är valt, så kommer XFolder självt utföra respektive handling internt.
Om inget av XFolders menyalternativ var valt, anropas förälderklassens
(WPFolders) wpMenuItemSelected metod (för att inte förhindra
standard menyalternativen från att fungera).
Först anropas förälder metoden för att få mappen öppnad. Skrivbordet kommer att skapa ett fönster med behållarkontroll och visa detta.
XFolder fångar sedan in ramfönsterhandtaget, med vilket den kan modifiera mappens fönsternamn och sedan ändra det till mappens kompletta sökväg (om förvalt i Globala Inställningar). Detta är helt enkelt ett WinSetWindowText anrop med enbart ett fåtal beräkningar för att om nödvändigt förkorta namnet.
I denna metod subklassar XFolder också mappramfönstret för att kunna hantera WM_CHAR meddelanden för mappsnabbkommandon och massor av andra saker. För underklassning föreföll denna metod bäst, då all nödvändig Skrivbords initiering har gjorts genom att anropa förälder metoden, men användaren kan inte interagera med mappen ännu, därför den kommer att fyllas med objekt först i en senare tråd.
I den nya fönsterproceduren fångar XFolder in alla WM_CHAR meddelanden (som bara förs vidare till ramfönsterproceduren om de inte har redan blivit processerade av behållaren redan, såsom markeringstangenter) och utvärderar dem enligt sin interna snabbkommandolista, som kan ändras i Globala Inställningar.
Subklassning krävs också för att introducera mappstatusfält; WM_QUERYFRAMECTLCOUNT, WM_FORMATFRAME, och WM_CALCFRAMERECT meddelanden fångas in för att ändra storleken på mappramen och dess nya behållarefönster i enlighet med det utrymme som krävs för mappens statusfält.
XFolder fångar också in underrättelsemeddelanden från ett några behållare för att tillhandahålla "Auto-bläddring i Träd" funktionen och uppdatera statusfälttexten om objektvalen har ändrats av användaren.
XFolder fångar dessutom in olika menymeddelanden, som WM_INITMENU och WM_MENUSELECT, för att kunna hantera några menyfunktioner som är inte tillgängliga genom vanliga Skrivbordsmetoder.
Alla meddelanden som inte har någon innebörd för XFolder fortsätter till den ursprungliga fönsterproceduren.
wpOpen metoden krävs också för att tillämpa
XFolders utökade sorteringsfunktion. XFolder uppdaterar behållarinställningarna
i enlighet med de sorteringskriteria, som du har specifierat.
XFldObject gör inte mycket synligt heller, utom att undertrycka OS/2:s standard menyalternativ och addera "Kopiera filnamn" funktionen. Den är dock nödvändig för att andra XFolder delar internt underrättas om några interna Skrivbords händelser, särskilt XStäng av, som beskrivs i detalj på nästa sida.
XFldDesktop klassen tillåter ändring av Skrivbordets menyalternativ och XStäng av.
Tidigare versioner ersatte också WPSystem klassen så att "System" objektet i "Systemkonfiguration" mappen innehöll fler inställningsblocksidor för XFolder∩s Globala Inställningar. Med V0.80 har detta ändrats och nu registrerar XFolder två nya klasser som härstammar från WPSystem utan att ersätta dem. De två klasserna är XFldSystem och XFldWPS för respektive "OS/2 Kärna" och "Skrivbord" objekten. Inställningarna som du specifierar här är (vanligen) lagrad i OS2.INI och utvärderad varje gång XFolder behöver dem (t.ex. när du öppnar en meny). I motsats lagras de "lokala" XFolder inställningarna för en individuell mapp i dess .CLASSINFO Utökade Attribut, där Skrivbordet också lagrar andra mappinställningar. Det görs efter XFolder klass.
Notera att alla XFolder klasser är gjorda för att interagera. Försök inte att avlägsna bara några av dem, för XFolder kan då uppträda underligt (om du har tur). Alla XFolder∩s funktioner har gjorts ganska konfigurerbara, så du skall kunna bli av med det du inte gillar -- eller så du kan göra dig av med XFolder självt.