Förstå shell-namnområdestillägg
Utforskaren i Windows ger en grafisk representation av Shell-namnområdet i kombination med verktyg som gör det möjligt för användare att interagera med Shell-objekt. Med ett namnområdestillägg kan du ta alla datatexter och låta Utforskaren presentera dem för användaren som en virtuell mapp. När en användare bläddrar till den här mappen visas dina data som en trädstrukturerad hierarki med mappar och filer, ungefär som resten av Shell-namnområdet. Användare och program kan interagera med innehållet i den här virtuella mappen på ungefär samma sätt som med andra namnområdesobjekt. I det här dokumentet beskrivs hur du skapar ett namnområdestillägg.
- Hur ett namnområdestillägg fungerar
- standardobjektet för systemmappvy (DefView)
- Hur Utforskaren interagerar med ett namnområdestillägg
Så fungerar ett namnområdestillägg
I bakgrunden representeras varje mapp som Utforskaren visar av ett COM-objekt (Component Object Model) som kallas mappobjekt. Varje gång användaren interagerar med en mapp eller dess innehåll kommunicerar Gränssnittet med det associerade mappobjektet via ett av flera standardgränssnitt. Mappobjektet gör sedan vad som krävs för att svara på användarens åtgärd, och Shell uppdaterar Windows Explorer-visningen.
Majoriteten av de filer och mappar som användarna interagerar med är en del av filsystemet eller en virtuell systemmapp, till exempel papperskorgen. Annan dokumentation har diskuterat hur du kan anpassa beteendet för dessa standardmappar för att uppfylla kraven för ditt program genom att ändra registret eller genom att implementera Shell-tilläggshanterare. Att utöka gränssnittet på dessa sätt är dock mycket användbart när din information enkelt kan paketeras i form av vanliga filsystemfiler eller mappar.
Det finns ett antal situationer där lagring av data som en samling filsystemmappar och filer kan vara oönskad eller till och med omöjlig. Några exempel på den här typen av data är:
- En samling objekt som är mest effektivt paketerade i en enda fil, till exempel en databas.
- En samling objekt som lagras på en fjärrdator som inte har ett Standard Windows-filsystem. Ett exempel på sådana data är den information som lagras på en personlig digital assistent (PDA) eller digital kamera.
- En samling objekt som inte representerar lagrade data. Ett exempel på sådana data är skrivarlänkarna som finns i standardmappen Skrivare.
Ett sätt att presentera den här typen av data för en användare är att skriva ett program så att användarna kan visa och interagera med de olika objekten. Men om dina data kan visas som en mapp-/filhierarki kan en stor del av de funktioner som du behöver implementera vara användargränssnittstjänster som redan tillhandahålls av Utforskaren i Windows. En mycket effektivare metod kan vara att skriva ett namnområdestillägg och låta Utforskaren bli ditt GUI.
Om du vill implementera ett namnområdestillägg måste informationen ordnas som ett trädstrukturerat namnområde. Roten av namnområde ,, visas som en virtuell mapp i Shell-namnområdet. Rotmappen och alla dess undermappar och dataobjekt blir en del av Shell-namnområdet och Utforskaren blir ditt användargränssnitt. Du kan därför presentera din information för användaren på ett välbekant och lättillgängligt sätt med mycket mindre UI-programmering än vad som skulle krävas för ett anpassat program.
Ett namnområdestillägg består av två grundläggande komponenter:
- En datahanterare
- Ett gränssnitt mellan datahanteraren och Utforskaren
Den första komponenten i listan är helt upp till dig. Du kan lagra och hantera dina data på det sätt som är mest effektivt. Den andra komponenten är den kod som behövs för att paketera dina data som mappobjekt och hantera interaktionen med Utforskaren i Windows. Utforskaren kan sedan anropa dessa objekt så att användarna kan visa och interagera med dina data som om det vore en samling mappar och filer. Namnområdestilläggets mappobjekt måste interagera med Utforskaren som om de vore normala mappar. Innan du försöker implementera ett namnområdestillägg måste du först förstå hur Utforskaren hanterar ett mappobjekt.
Standardvyobjektet för systemmappen (DefView)
Shell tillhandahåller en standardimplementering av mappvyn, som kallas defview, så att du kan undvika mycket av arbetet med att implementera ditt eget namnområdestillägg. Eftersom vissa vyfunktioner inte kan uppnås via anpassade vyer rekommenderar vi ofta att standardobjektet för systemmappsvyn används i stället för en anpassad vy. Mer information finns i SHCreateShellFolderView.
Så interagerar Windows Utforskare med ett namnområdestillägg
Windows Explorer ger användarna ett GUI som gör att de kan utföra en mängd olika uppgifter, bland annat:
- Navigera namnområdeshierarkin och visa innehållet i mappar.
- Hantera innehållet i namnområdet genom att flytta, ta bort och kopiera objekt.
- Att hämta en mängd olika information om objekt.
- Starta program.
Windows Explorer GUI har fem grundläggande komponenter. Följande bild namnger komponenterna och visar var de vanligtvis visas i Utforskaren.
När en användare visar en mapp som tillhör ett namnområdestillägg i Utforskaren har mappobjektet minst delvis kontroll över innehållet i alla fem områdena.
Trädvy
Trädvyn ger en övergripande vy över namnområdet. Det här området är värd för en trädvykontroll som kan visa varje namnområdesmapp och mappens position i namnområdeshierarkin. En användare kan utföra flera åtgärder med trädvisningsområdet, inklusive:
- Visa eller dölja nästa nivå i namnområdet.
- Kopiera, flytta eller ta bort mappar.
- Högerklicka på en mapp för att visa en snabbmeny.
- Välja en mapp och visa dess innehåll i mappvyn.
Trädvyn kommunicerar främst med mappobjekt via deras IShellFolder- gränssnitt. När en användare till exempel klickar på plustecknet (+) bredvid mappens ikon expanderar Utforskaren visningen för att visa mappens undermappar. För att hämta den information som behövs för att uppdatera trädvyn gör Shell flera anrop till mappobjektets IShellFolder- gränssnitt för att:
- Begär mappens attribut.
- Räkna upp innehållet i mappen.
- Begär visningsnamn för varje undermapp.
- Begär en ikon som ska visas bredvid varje mapp.
Utforskaren uppdaterar sedan trädvyn för att visa den valda mappens undermappar. Om undermapparna har undermappar visas ett +-tecken bredvid mappikonen. Det finns ett antal mer avancerade uppgifter som en användare också kan utföra med trädvyn, inklusive:
- Använd Urklipp för att klippa ut eller kopiera en mapp och klistra in den i en annan mapp.
- Använd dra och släpp för att klippa ut eller kopiera en mapp och släppa den i en annan mapp.
- Använda en sökmotor för att söka efter objekt i en mapp eller dess undermappar.
- Ändra mappens egenskaper.
En mer detaljerad beskrivning av hur ett namnområdestillägg hanterar dessa användaråtgärder finns i Implementera grundläggande mappobjektgränssnitt.
Mappvy
När en användare väljer en mapp visas innehållet i mappen i mappvyn. Till viss del överlappar den normala funktionaliteten i mappvyn med trädvyn. Användare kan flytta eller kopiera mappar, ändra mappegenskaper, visa innehållet i en undermapp, visa en snabbmeny för en mapp och så vidare. Det finns dock några distinkta skillnader mellan trädvyn och mappvyn:
- Mappvyn visar endast innehållet i en enskild mapp, inte en del av eller hela namnområdeshierarkin.
- Mappvyn visar både filobjekt och mappobjekt.
- Mappvyn kan visa mycket mer information om objekt än trädvy.
- Med mappvyn kan namnområdestillägg ha nästan fullständig kontroll över vilken information som visas och hur. Endast mindre aspekter av trädvyn, till exempel mappikoner, kan ändras.
Till skillnad från trädvyn styr Utforskaren inte innehållet i mappvyn direkt. Mappvyn är ett område som Utforskaren tillhandahåller till mappobjekt. Det är mappobjektets ansvar att visa och hantera innehållet i en mapp i mappvyn. Även om de flesta mappvyer har ett ganska standardformat finns det faktiskt få begränsningar för vad som kan visas eller hur. Ett extremt fall är internetmappen, som är en webbläsare med fullständiga funktioner.
När en användare väljer en mapp som tillhör ditt namnområdestillägg skapar du ett fönster och skickar dess handtag till Utforskaren. Det här fönstret blir underordnat mappvisningsfönstret. Utforskaren tillhandahåller dimensionerna för mappvisningsfönstret men begränsar inte innehållet i det underordnade fönstret. Du kan sedan använda det underordnade fönstret för att visa mappens mappvy.
Namnområdesutvidgningar använder någon av två metoder för att skapa en mappvy.
- Använd ditt underfönster för att innehålla ett listvy element. Med den här kontrollen kan du visa innehållet i en mapp på ungefär samma sätt som Utforskaren i Windows klassisk vy.
- Använd ditt underordnade fönster som värd för en WebBrowser-kontroll och använd ett DHTML-dokument (Dynamisk HTML) för att visa innehållet i mappen.
Båda metoderna visar en mappvy som ser ut ungefär som den som visas för systemmappar. Men om du vill använda ett annat visningsschema kan du göra det.
Menyrad och verktygsfält
Precis som de flesta Windows-program ger Utforskaren användaren en samling verktyg. Ett komplett urval av verktyg finns i menyraden. De vanligare verktygen representeras också av knappar eller redigeringsrutor i ett verktygsfält. Till skillnad från många Windows-program är Windows Explorer-menyraden i själva verket en verktygsfältskontroll som har anpassats för att bete sig som en konventionell meny. Både menyraden och verktygsfältet ingår i en omlistekontroll så att användarna kan organisera de enskilda kontrollerna så att de passar deras behov.
Som standard stöder Utforskaren en standarduppsättning knappar och menyalternativ, till exempel Kopiera och Egenskaper. Ditt namnområdestillägg kan anpassa menyraden och verktygsfälten genom att ta bort standardverktyg och lägga till anpassade verktyg. När mappvyobjektet initieras skickar Utforskaren en pekare till dess IShellBrowser--gränssnitt. Det här gränssnittet stöder flera metoder som du kan anropa för att anpassa menyraden och verktygsfältet. När användaren väljer något av dina anpassade menyalternativ eller verktygsfältsknappar vidarebefordrar Utforskaren WM_COMMAND meddelanden för anpassade meny- och verktygsfältsobjekt till fönstrets fönsterprocedur.
Statusfält
Statusfältet i Utforskaren visar information om det markerade objektet. Namnområdestillägget kan använda statusfältet för att visa statusinformation, till exempel en textsträng. Du kan anpassa statusfältet genom att anropa IShellBrowser.