INSTALL.CMD skriptet i &xwp; installationskatalog f”r att se hur det
„r uppbyggt.
De viktigaste &xwp; klassutbytena „r:
I den anda som beskrevs p† f”reg†ende sida, „r XFolder klassen en avkomling till WPFolder klassen. P† det s„ttet, kan den g”ra allt som en regulj„r kan. Som en ny funktion, l„gger den till nya kontextmenyposter hos alla mappar, till†ter mappsnabbkommandon, „ndringar av f”nsterrubriker, etc.
Genom att anv„nda polymorfism, omdefinierar &xwp; vissa WPFolder metoder, som „r beskrivet nedanf”r.
Emellertid, &xwp; „r sedan registrerad hos WPS som ett WPFolder utbyte, inneb„rande att WPS kommer att anv„nda XFolder klassen som sin standard mappklass, ist„llet f”r WPFolder. Genom att g”ra s†, anv„nds inte WPFolder klassen mera direkt, utan endast genom sitt utbyte (och avkomlings) klass, XFolder.
Vissa av de WPFolder metoder som XFolder class ”verskrider „r (detta „r f”rmodligen bara av intresse f”r programmerare):
wpModifyPopupMenu: Denna WPObject metod „r anropad
av WPS alldeles f”re ett objekts kontextmeny visas. Varje WPS klass l„gger till sin egen,
klass-specifika menypost h„r.
Eftersom &xwp; leker en del med menyer, „r detta en av de viktigaste metoderna vilken
&xwp; ”verskrider. I den h„r metoden, anropar &xwp; f”rst f”r„ldraklassen (WPFolder's)
wpModifyPopupMenu f”r att f† alla standard menyposter tillagda i objektets kontextmeny.
Den s”ker efter &xwp;'s konfigurationsmapp (vilken m†ste ha objekt ID
<XFOLDER_CONFIG>) och befolkar den osynligt.
Nu g†r den igenom alla objekt h„r, och l„gger d„rmed till submenyer och menyposter till kontextmenyn.
Om konfigurationsmappen inte hittas, poppar en medelandebox upp och en tom mapp med det tidigare n„mnda
ID't skapas p† skrivbordet.
Samma sak utf”rs f”r funktionen "Mappinneh†ll" och "Favorit" mappar. Emellertid, dessa submenyer
fylls med objekt endast efter att de ”ppnats av anv„ndaren; detta utf”rs genom att
snappa upp WM_INITMENU meddelandet i den subklassade mapp ramf”nsterproceduren
(se nedanf”r). &xwp; subklassar dessa submenyf”nster (och endast dessa) f”r att
kunna m†la upp ikoner och f†nga upp musknapp 2 f”r ”ppning av en mapp.
(Var v„nlig notera att "subklassning" h„r inte har n†got att g”ra med WPS klasser, men „r
Presentation Manager terminologi f”r anv„ndning av en annan meddelandeprocedur f”r ett existerande
f”nster avseende att kunna f†nga upp vissa PM meddelanden f”r f”nstret. Det g”rs med anv„ndning
av WinSubclassWindow API.)
&xwp; modifierar ocks† vissa andra menyer (s†dana som submenyn "Sortera") i den h„r metoden,
om de Globala Inst„llningarna till†ter det, och l„gger till andra menyposter, om dessa har aktiverats
i de Globala Inst„llningarna.
wpMenuItemSelected: Detta anropas fr†n WPS n„rhelst en kontextmenypost
„r vald av en anv„ndare.
&xwp; kontrollerar om n†gon av sina egna (variabel) menyposter valdes; om s† „r fallet,
hittar den sitt korresponderande objekt i konfigurationsmappen och ”ppnar den. Om objektet tillh”r
WPProgram klassen,
utf”r &xwp; sina normala tricks p† den
(se kontexthj„lpen f”r &xwp;'s Konfigurationsmapp f”r detaljer).
Om objektet „r en mapp, oberoende av vilken WPS klass,
”ppnas det inte, utan &xwp; skapar ett nytt objekt fr†n den i den aktuella mappen
(via wpCreateFromTemplate).
Om den valda posten „r ett submenyn "mappinneh†ll", kommer det korresponderande objektet helt enkelt att ”ppnas.
Om n†gon annan menypost som &xwp; lagt till i kontextmenyn „r vald, kommer &xwp; sj„lv att utf”ra respektive aktion internt.
Om ingen av &xwp; menyposter valdes, anropas f”r„ldrarklassens (WPFolder's)
wpMenuItemSelected metod (f”r att inte hindra standard menyposter fr†n att fungera).
wpMenuItemHelpSelected: Detta anropas fr†n WPS n„r du trycker F1
”ver en kontextmenypost. &xwp; kommer att visa en aktuell hj„lpsida, om n”dv„ndigt.
wpFilterPopupMenu: Med den h„r metoden, tar &xwp; bort de
standard menyposter fr†n kontextmenyn som du har specificerat i de Globala Inst„llningarna.
(Metoden anropas fr†n WPS till och med f”re wpModifyPopupMenu, s† f”rst tas posterna bort, sedan
l„ggs de nya till.)
wpclsQueryTitle:
Str„ngen XFolder (eller vad som helst som du specificerade i de Globala Inst„llningarna)
returneras f”r att ge &xwp; klassen ett unikt namn.
wpOpen: Den h„r rutinen anropas av WPS
varje g†ng en mapp (och n†got annat objekt ocks†) ”ppnas.
&xwp; m†ste ”verskrida den h„r metoden f”r att implementera ett antal funktioner.
F”rst, f”r„ldrarmetoden anropas f”r att kunna ”ppna visningen av mappen: WPS kommer att skapa ett f”nster med en containerkontroll i och visa f”nstret.
&xwp; snappar sedan upp ramf”nsterhandtaget, med vilket det d† kan modifiera
mappens f”nsterrubrik och †terst„lla den till mappens kompletta s”kv„g (om aktiverad
i de Globala Inst„llningarna). Grundl„ggande, „r detta ett enkelt WinSetWindowText
anrop, med n†gra f† ber„kningar f”r att trunkera titeln om n”dv„ndigt.
I den h„r metoden, subklassar &xwp; ocks† mappens ramf”nster f”r att kunna hantera WM_CHAR meddelanden f”r mappsnabbkommandon och massor av andra saker. F”r subklassning, verkar den h„r metoden vara den b„sta tills nu, eftersom all n”dv„ndig WPS initialisering har gjorts genom att anropa f”r„ldrarmetoden, men anv„ndaren kan inte samverka med mappen „nnu, d„rf”r att den „r endast blir fylld med objekt ("befolkad" med WPS terminologi) av en annan tr†d efter†t.
I den nya f”nsterproceduren, f†ngar &xwp; upp alla WM_CHAR meddelanden (vilka endast skickas till ramf”nsterproceduren om dom inte redan har processats av containern, som cursortangenter) och utv„rderar dom i enlighet med sin interna snabbkommandolista, vilken kan „ndras i Globala Inst„llningar.
Subklassning „r ocks† n”dv„ndigt f”r att introducera statusf„lt;
WM_QUERYFRAMECTLCOUNT, WM_FORMATFRAME, och
WM_CALCFRAMERECT meddelandena f†ngas in f”r att storleksf”r„ndra mappramen och
dess container dotterf”nster i enlighet med det utrymme som beh”vs f”r en mapps statusf„lt.
&xwp; f†ngar ocks† upp n†gra f† container notifieringsmeddelanden f”r att kunna erbjuda funktionen "Auto-scrolla Tr„dvisning" och uppdatera statusf„ltets text om valen av objekt har „ndrats av anv„ndaren.
Som till„gg, &xwp; f†ngar upp olika menymeddelanden, s†dana som WM_INITMENU
och WM_MENUSELECT, f”r att kunna hantera vissa menyfunktioner som inte kan n†s med
vanliga WPS metoder.
Alla meddelanden som inte har n†gon mening f”r &xwp; skickas till original f”nsterproceduren.
wpOpen metoden beh”vs ocks† f”r implementering av &xwp;'s ut”kade sorteringsfunktioner;
&xwp; uppdaterar container inst„llningarna i enlighet med de sorteringskriterier som du har
specificerat.
wpAddSettingsPages: Den h„r metoden anropas av WPS varje g†ng
ett objekts notbok med inst„llningar ”ppnas. &xwp; ”verskrider ocks† den metoden f”r att l„gga till
sina egna inst„llningssidor, efter att ha anropat f”r„ldrametoden, s† att original inst„llningssidorna
fortfarande finns tillg„ngliga.
XFldObject g”r inte mycket f”r synbarheten heller, undantaget att undertrycka &os2; standard menyposter och l„gga till en "Kopiera filnamn" funktion. Den beh”vs d„remot av andra &xwp; delar internt f”r att kunna tillk„nnage vissa interna WPS h„ndelser, speciellt &xshutdown; funktionen, vilken „r beskriven i detalj p† n„sta sida.
XFldDesktop klassen „r implementerad f”r att till†ta „ndring av Skrivbordets menyposter och f”r &xshutdown;, vilken „r beskriven i detalj p† n„sta sida.
Medan tidigare versioner ocks† bytte ut WPSystem klass s† att "System" objektet i "Systemkonfigurations" mappen inneh”ll flera notbokssidor f”r att accessa &xwp;'s Globala Inst„llningar, har beteendet „ndrats fr†n och med V0.80. Ist„llet, registrerar &xwp; tv† nya klasser deriverade fr†n WPSystem utan att byta ut den. Dessa tv† klasser „r XFldSystem och XFldWPS f”r "&os2; K„rna" och "Workplace Shell" objekten, respektive. De inst„llningar som du har specificerat h„r „r (f”r det mesta) lagrade i OS2.INI och utv„rderade varje g†ng som &xwp; beh”ver dom (t.ex. n„r du har ”ppnat en kontextmeny). Som kontrast, lagras de "lokala" &xwp; inst„llningarna f”r en individuelll mapp i dess .CLASSINFO Ut”kade Attribut, d„r WPS ocks† lagrar andra mappinst„llningar. Det utf”rs sedan av XFolder klassen.
Var v„nlig och notera att alla &xwp; klasser „r konstruerade f”r att samverka. F”rs”k inte att ta bort
n†gra f† av dom, eller s† kommer &xwp; kanske att bete sig underligt (om du har tur). Alla &xwp;'s funktioner
har gjorts n†gorlunda konfigureringsbara, s† du b”r kunna bli av med det som du inte gillar -- eller bli
av med &xwp; i sin helhet.